You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Calendar view header clips the date at phone width ("Tuesday, October 20, 2") with no ellipsis #13149
Claim: PM loop round 16 (priority:p3)
Session: session_01XVp19E1MYUTFM3dnkwz8gB
Account: baozhoutao (the seat's linked user as GET /user answers it; the card's assignee)
Branch: claude/issue-13149-calendar-header-narrow
Worktree: objectui-issue-13149
Domain: domain:ui
Seat: domain:ui#2
File surface:
packages/plugin-calendar/src/CalendarView.tsx, the date-title Popover trigger: at narrow widths the title is shown whole in a short format (e.g. Tue, Oct 20), or truncates with an ellipsis and the full date in title. The format comes from the same locale-aware formatter.
Tests beside it.
One .changeset/13149-calendar-header-narrow.md (@object-ui/plugin-calendarpatch).
⛔ No new package export. Stop on breach; explain in the report.
Container & model: S, mode:subagent, model: opus (default tier; no path-derived mandate)
Clause-②: no (an internal calendar header)
Responsibility: the calendar header's date button and its span carry no truncate / min-w-0 and no narrow format | the locale formatter already offers short formats | every phone-width calendar viewer ("Tuesday, October 20, 2")
Thread-read: none
Serial constraints cleared: no in-flight objectui card or open PR touches plugin-calendar (read at 08:10Z).
Claimed at: 2026-10-20T08:12Z
{
"issue": 13149,
"status": "done",
"branch": "claude/issue-13149-calendar-header-narrow",
"pr": "https://github.com/objectstack-ai/objectui/pull/13197",
"session": "session_01XVp19E1MYUTFM3dnkwz8gB",
"premise_still_valid": true,
"summary": "Premise held on origin/main f7aac4ce7a: the date-title trigger, its span and its group had no min-w-0/truncate and no narrow format. CalendarView's header group and trigger now carry min-w-0 max-w-full (nav group shrink-0), the trigger's title is the full date, and the label is drawn as a full span (hidden sm:block) plus a short span (sm:hidden), both min-w-0 truncate. The short form comes from the same toLocaleDateString(effectiveLocale) call: Tue, Oct 20 / Oct 18 - Oct 24 / Oct 2026. The wide text, accessible name and DOM-first span are unchanged. Two existing test helpers read the trigger's whole textContent and now read the full span. Patch changeset added; no new export or i18n key.",
"tests": "All on c5c57b87e2. vitest --maxWorkers=1 under os-verify-lock: new CalendarView.narrowHeader-13149 + edited defaultMonth-10799 + popoverLocale-10747 + weekStartFromLocale-11675 + app-shell PageView.refreshInPlace-10519 = 5 files, 30 passed (VERDICT command-exit 0). Every CalendarView.* test plus every plugin-calendar test that reads 'Current date' = 15 files, 122 passed, 21 skipped (pre-existing TZ describe.runIf(DRIVEN) blocks), VERDICT command-exit 0. Ablation (fix committed first; script with trap EXIT INT TERM, restore via git checkout HEAD -- PATH): both spans replaced by one plain full span, and min-w-0 max-w-full dropped from the trigger and its group. On-disk grep -c before/after: short span 1 to 0, 'min-w-0 truncate' 2 to 0, group class 1 to 0, injected span 0 to 1. Result: 3 (a) cases red, (b) control green (Tests 3 failed | 1 passed). Restore by blob hash: HEAD fbb1b2b449e1 == on-disk fbb1b2b449e1, git diff HEAD 0 lines. No dist rebuild needed: the test imports ./CalendarView from source. Closure build pnpm --filter '@object-ui/plugin-calendar^...' build exit 0. pnpm --filter @object-ui/plugin-calendar type-check exit 0 (tsc --noEmit && tsc -p tsconfig.test.json; --listFiles includes the new test). Narrowed lint: eslint --no-inline-config --format json over the 4 changed files = 4 files (JSON count), 0 errors, 24 warnings; the merge-base copy of CalendarView.tsx = 0 errors, 24 warnings. All 4 files are in the linted population (--print-config resolves). The config has no parserOptions.project, so linting is not type-aware and untouched files cannot change verdict. Exit 0 each: check:phantom-deps, self-import, unreferenced-sources, doc-example-readers, handler-key-reads, side-effects-array, element-data-source-declaration, spec-symbols, action-forward-parity, designer-field-key-parity, icon-record-names, i18n-keys, i18n-drift, i18n-designer-parity, control-bytes, check-hand-rolled-comment-mask.mjs, check-changeset-fixed.mjs, check-changeset-presence.mjs. Declared to CI: the full packages/plugin-calendar/ dir run, full pnpm test and pnpm lint. NOT MEASURED: browser at 390px, because no browser pass was run (jsdom applies no CSS, so the pins read classes). CI: in_progress at report time.",
"mcp_calls": "0 — none",
"api_writes": "3 — 1x fleet-write relay POST /repos/objectstack-ai/objectstack/dispatches (pr_create, draft, assignees baozhoutao; read-back identical, 4796 bytes), plus 1 refused attempt (exit 10 write-pace, nothing sent), plus 1x relay comment (this os-dev-report on objectui#13149); git pushes x3 are not REST; label writes 0 (objectui: no gate reads dev labels, the dispatch named none)",
"open_questions": [
{ "question": "The dispatch order conflicts with itself. 'Lock' says no whole-package-directory runs: declare each touched package's directory to CI. 'Gates' says run each touched package's dir under the lock. Which wins?", "options": ["A: declare to CI (followed here)", "B: run the dir under the lock"], "recommendation": "A, because the explicit no-whole-package-directory rule is stricter and sibling devs share the lock. The family run (15 files) covers every test that reads the header." }
],
"out_of_scope_findings": []
}
Clause-②: no. The header markup is internal to CalendarView.tsx; no export, prop or i18n key moves. No contract review is owed, and the seat read the report.
Seat review: the header group and the date-title trigger take min-w-0 max-w-full, and the nav group stays shrink-0. The title is drawn twice from the same toLocaleDateString(effectiveLocale) call: the full span from sm up, and a short span below it (Tue, Oct 20 / Oct 18 - Oct 24 / Oct 2026). Both are min-w-0 truncate. The trigger's title and accessible name stay the full date, and the full span stays first in the DOM. Two existing helpers that read the trigger's whole textContent now read the full span, a mechanical follow-on.
Pins: 3 cases cover the short form and the shrinkable chain, with a wide-screen CONTROL. The ablation (one plain span, no min-w-0 max-w-full) turned the 3 cases red with the control green, and the restore was proven by blob. The CalendarView family (15 files, 122 passed, 21 pre-existing TZ skips) is green.
Not measured: a browser pass at 390px. jsdom applies no CSS, so the pins read classes. That is accepted for a p3 layout fix whose mechanism is the standard min-w-0 chain.
Dev question (the order's lock and gates lines conflict on whole-package runs): ruled A. Declare the directory run to CI under the lock rule, which is stricter. The seat's order template is corrected for later dispatches.
Changeset: @object-ui/plugin-calendarpatch.
CI: all 36 check-runs completed on the head, 33 passed and 3 skipped.
Path fork: no governed path. Seat landing.
Findings: none.
Next: ready + auto-merge; landing is verified by content on main.
Verified by content: each of the 5 files the PR changes has the same blob at 3cec0901fe as at the accepted head c5c57b87e2. The merge message carries no model identifier.
Landed: the calendar header's date title shrinks and truncates instead of overflowing, and below sm it shows a short form (Tue, Oct 20 / Oct 18 - Oct 24 / Oct 2026). The trigger's title and accessible name stay the full date.
Activity
objectstack-fleet commentedon Oct 20, 2026
Claim: PM loop round 16 (
priority:p3)Session:
session_01XVp19E1MYUTFM3dnkwz8gBAccount:
baozhoutao(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/issue-13149-calendar-header-narrowWorktree:
objectui-issue-13149Domain:
domain:uiSeat:
domain:ui#2File surface:
packages/plugin-calendar/src/CalendarView.tsx, the date-title Popover trigger: at narrow widths the title is shown whole in a short format (e.g.Tue, Oct 20), or truncates with an ellipsis and the full date intitle. The format comes from the same locale-aware formatter..changeset/13149-calendar-header-narrow.md(@object-ui/plugin-calendarpatch).⛔ No new package export. Stop on breach; explain in the report.
Container & model:
S,mode:subagent,model: opus(default tier; no path-derived mandate)Clause-②: no (an internal calendar header)
Responsibility: the calendar header's date button and its span carry no
truncate/min-w-0and no narrow format | the locale formatter already offers short formats | every phone-width calendar viewer ("Tuesday, October 20, 2")Thread-read: none
Serial constraints cleared: no in-flight objectui card or open PR touches
plugin-calendar(read at 08:10Z).Claimed at: 2026-10-20T08:12Z
Generated by Claude Code
objectstack-fleet commentedon Oct 20, 2026
os-dev-report
{ "issue": 13149, "status": "done", "branch": "claude/issue-13149-calendar-header-narrow", "pr": "https://github.com/objectstack-ai/objectui/pull/13197", "session": "session_01XVp19E1MYUTFM3dnkwz8gB", "premise_still_valid": true, "summary": "Premise held on origin/main f7aac4ce7a: the date-title trigger, its span and its group had no min-w-0/truncate and no narrow format. CalendarView's header group and trigger now carry min-w-0 max-w-full (nav group shrink-0), the trigger's title is the full date, and the label is drawn as a full span (hidden sm:block) plus a short span (sm:hidden), both min-w-0 truncate. The short form comes from the same toLocaleDateString(effectiveLocale) call: Tue, Oct 20 / Oct 18 - Oct 24 / Oct 2026. The wide text, accessible name and DOM-first span are unchanged. Two existing test helpers read the trigger's whole textContent and now read the full span. Patch changeset added; no new export or i18n key.", "tests": "All on c5c57b87e2. vitest --maxWorkers=1 under os-verify-lock: new CalendarView.narrowHeader-13149 + edited defaultMonth-10799 + popoverLocale-10747 + weekStartFromLocale-11675 + app-shell PageView.refreshInPlace-10519 = 5 files, 30 passed (VERDICT command-exit 0). Every CalendarView.* test plus every plugin-calendar test that reads 'Current date' = 15 files, 122 passed, 21 skipped (pre-existing TZ describe.runIf(DRIVEN) blocks), VERDICT command-exit 0. Ablation (fix committed first; script with trap EXIT INT TERM, restore via git checkout HEAD -- PATH): both spans replaced by one plain full span, and min-w-0 max-w-full dropped from the trigger and its group. On-disk grep -c before/after: short span 1 to 0, 'min-w-0 truncate' 2 to 0, group class 1 to 0, injected span 0 to 1. Result: 3 (a) cases red, (b) control green (Tests 3 failed | 1 passed). Restore by blob hash: HEAD fbb1b2b449e1 == on-disk fbb1b2b449e1, git diff HEAD 0 lines. No dist rebuild needed: the test imports ./CalendarView from source. Closure build pnpm --filter '@object-ui/plugin-calendar^...' build exit 0. pnpm --filter @object-ui/plugin-calendar type-check exit 0 (tsc --noEmit && tsc -p tsconfig.test.json; --listFiles includes the new test). Narrowed lint: eslint --no-inline-config --format json over the 4 changed files = 4 files (JSON count), 0 errors, 24 warnings; the merge-base copy of CalendarView.tsx = 0 errors, 24 warnings. All 4 files are in the linted population (--print-config resolves). The config has no parserOptions.project, so linting is not type-aware and untouched files cannot change verdict. Exit 0 each: check:phantom-deps, self-import, unreferenced-sources, doc-example-readers, handler-key-reads, side-effects-array, element-data-source-declaration, spec-symbols, action-forward-parity, designer-field-key-parity, icon-record-names, i18n-keys, i18n-drift, i18n-designer-parity, control-bytes, check-hand-rolled-comment-mask.mjs, check-changeset-fixed.mjs, check-changeset-presence.mjs. Declared to CI: the full packages/plugin-calendar/ dir run, full pnpm test and pnpm lint. NOT MEASURED: browser at 390px, because no browser pass was run (jsdom applies no CSS, so the pins read classes). CI: in_progress at report time.", "mcp_calls": "0 — none", "api_writes": "3 — 1x fleet-write relay POST /repos/objectstack-ai/objectstack/dispatches (pr_create, draft, assignees baozhoutao; read-back identical, 4796 bytes), plus 1 refused attempt (exit 10 write-pace, nothing sent), plus 1x relay comment (this os-dev-report on objectui#13149); git pushes x3 are not REST; label writes 0 (objectui: no gate reads dev labels, the dispatch named none)", "open_questions": [ { "question": "The dispatch order conflicts with itself. 'Lock' says no whole-package-directory runs: declare each touched package's directory to CI. 'Gates' says run each touched package's dir under the lock. Which wins?", "options": ["A: declare to CI (followed here)", "B: run the dir under the lock"], "recommendation": "A, because the explicit no-whole-package-directory rule is stricter and sibling devs share the lock. The family run (15 files) covers every test that reads the header." } ], "out_of_scope_findings": [] }Generated by Claude Code
objectstack-fleet commentedon Oct 20, 2026
ACCEPT — PR #13197 @
c5c57b87e2496ce26a0b1079cf5df3c9c5878016·domain:uiseat 2 (session_01XVp19E1MYUTFM3dnkwz8gB)CalendarView.tsx; no export, prop or i18n key moves. No contract review is owed, and the seat read the report.min-w-0 max-w-full, and the nav group staysshrink-0. The title is drawn twice from the sametoLocaleDateString(effectiveLocale)call: the full span fromsmup, and a short span below it (Tue, Oct 20/Oct 18 - Oct 24/Oct 2026). Both aremin-w-0 truncate. The trigger'stitleand accessible name stay the full date, and the full span stays first in the DOM. Two existing helpers that read the trigger's wholetextContentnow read the full span, a mechanical follow-on.min-w-0 max-w-full) turned the 3 cases red with the control green, and the restore was proven by blob. The CalendarView family (15 files, 122 passed, 21 pre-existing TZ skips) is green.min-w-0chain.@object-ui/plugin-calendarpatch.Next: ready + auto-merge; landing is verified by content on
main.Generated by Claude Code
objectstack-fleet commentedon Oct 20, 2026
Landed ·
domain:uiseat 2 ·session_01XVp19E1MYUTFM3dnkwz8gBmain3cec0901fe.3cec0901feas at the accepted headc5c57b87e2. The merge message carries no model identifier.smit shows a short form (Tue, Oct 20/Oct 18 - Oct 24/Oct 2026). The trigger's title and accessible name stay the full date.pm:dispatchedis removed.Generated by Claude Code
fix(plugin-calendar): truncate the header date title and shorten it a…