Bug bash round 3: calendar #1394

Open
opened 2026-10-07 19:01:08 +00:00 by kayg · 5 comments
Owner

AREA: Calendar Tab. Day/week/month/agenda views, mini-month, event create/edit/move/resize by drag and keyboard, all-day and multi-day, recurrence (exceptions, edits to this/following/all), time zones and DST changes (Europe/Berlin, Asia/Kolkata, America/New_York, Australia/Lord_Howe), reminders, invites shown, CalDAV-backed calendars, Copy link for days/weeks/events, sidebar sub-views.

Tracking issue for the 2026-10-08 night bug bash round 3. Every bug found gets its own issue, linked here.

AREA: Calendar Tab. Day/week/month/agenda views, mini-month, event create/edit/move/resize by drag and keyboard, all-day and multi-day, recurrence (exceptions, edits to this/following/all), time zones and DST changes (Europe/Berlin, Asia/Kolkata, America/New_York, Australia/Lord_Howe), reminders, invites shown, CalDAV-backed calendars, Copy link for days/weeks/events, sidebar sub-views. Tracking issue for the 2026-10-08 night bug bash round 3. Every bug found gets its own issue, linked here.
Author
Owner

Starting round 3 on job/bash3-calendar, worktree base SHA 0419170fe456b58614befcb12d9c9d255118f1c0 (branch currently behind origin/dev; I will merge origin/dev once before final gates as required).

I read CLAUDE.md, CONTEXT.md and the Calendar, deep-link, chrome, grid, Calendar Set and instant-interaction decisions in docs/DESIGN.md. I am reviewing round 1 tracker #1214 and findings #1323, #1324, #1326, #1327, #1329 and #1333 before testing. I will avoid re-filing those known findings.

Starting round 3 on `job/bash3-calendar`, worktree base SHA `0419170fe456b58614befcb12d9c9d255118f1c0` (branch currently behind `origin/dev`; I will merge `origin/dev` once before final gates as required). I read `CLAUDE.md`, `CONTEXT.md` and the Calendar, deep-link, chrome, grid, Calendar Set and instant-interaction decisions in `docs/DESIGN.md`. I am reviewing round 1 tracker #1214 and findings #1323, #1324, #1326, #1327, #1329 and #1333 before testing. I will avoid re-filing those known findings.
Author
Owner

Round 3 found and filed #1429: the Calendar view segmented control has no registered shortcut metadata on any of its five radios. A real production Calendar page with a real Journal Event loaded returned null for both data-tooltip-keys and aria-keyshortcuts on Agenda, Day, Week, Month and Year. Evidence is in artifacts/bash3-calendar/agenda-view-shortcut-mac.png and artifacts/bash3-calendar/agenda-view-shortcut-metadata.json.

The control is rendered by the shared packages/ui SegmentedControl, so I left it filed only under the shared-primitive ownership rule.

Round 3 found and filed #1429: the Calendar view segmented control has no registered shortcut metadata on any of its five radios. A real production Calendar page with a real Journal Event loaded returned null for both `data-tooltip-keys` and `aria-keyshortcuts` on Agenda, Day, Week, Month and Year. Evidence is in `artifacts/bash3-calendar/agenda-view-shortcut-mac.png` and `artifacts/bash3-calendar/agenda-view-shortcut-metadata.json`. The control is rendered by the shared `packages/ui` `SegmentedControl`, so I left it filed only under the shared-primitive ownership rule.
Author
Owner

Calendar focus-ring finding: I added a new reproduction and actual-size screenshots to the existing shared UI sweep issue #1385 (same owner rule/root as #1406, so I did not file a duplicate). In a production Playwright run at 1440 px, clicking Day leaves no :focus-visible target; pressing the Week shortcut 2 then leaves a 2 px blue ring on the old Day radio without Tab or arrow navigation. At 390 px, opening the real +1 timed-items sheet and pressing Escape also restores focus to the chip with a ring. Evidence: artifacts/bash3-calendar/calendar-shortcuts-after-keyboard-shortcut-mac.png and artifacts/bash3-calendar/calendar-shortcuts-390-light-overflow-mac.png. This is outside Calendar ownership (packages/ui/shared input modality), so it is filed only on #1385.

Calendar focus-ring finding: I added a new reproduction and actual-size screenshots to the existing shared UI sweep issue #1385 (same owner rule/root as #1406, so I did not file a duplicate). In a production Playwright run at 1440 px, clicking Day leaves no `:focus-visible` target; pressing the Week shortcut `2` then leaves a 2 px blue ring on the old Day radio without Tab or arrow navigation. At 390 px, opening the real `+1` timed-items sheet and pressing Escape also restores focus to the chip with a ring. Evidence: `artifacts/bash3-calendar/calendar-shortcuts-after-keyboard-shortcut-mac.png` and `artifacts/bash3-calendar/calendar-shortcuts-390-light-overflow-mac.png`. This is outside Calendar ownership (`packages/ui`/shared input modality), so it is filed only on #1385.
Author
Owner

New Calendar finding: #1439 records a 390 px tooltip overlap. With a real Calendar Log visible in the Day view, hovering Week opens the warm shortcut tooltip over the date heading (“Thu 8 October”) in light and dark mode. Screenshot evidence: artifacts/bash3-calendar/calendar-shortcuts-clean-390-light-mac.png and artifacts/bash3-calendar/calendar-shortcuts-clean-390-dark-mac.png. Severity is cosmetic. Tooltip placement belongs to the shared UI primitive, so this Calendar job leaves the fix to that owner.

New Calendar finding: #1439 records a 390 px tooltip overlap. With a real Calendar Log visible in the Day view, hovering Week opens the warm shortcut tooltip over the date heading (“Thu 8 October”) in light and dark mode. Screenshot evidence: `artifacts/bash3-calendar/calendar-shortcuts-clean-390-light-mac.png` and `artifacts/bash3-calendar/calendar-shortcuts-clean-390-dark-mac.png`. Severity is cosmetic. Tooltip placement belongs to the shared UI primitive, so this Calendar job leaves the fix to that owner.
Author
Owner

Round 3 report

Head: 27324b5968e12f3bd4a9b64b82708f7f9fbb5809 (job/bash3-calendar). No push, deploy, or merge.

Findings

Issue Symptom Severity Disposition
#1429 View tooltip and radio omit registered shortcut metadata minor Fixed in 2c957adac; all five view options now resolve the registered combo.
#1439 At 390 px the Week tooltip covers the date heading cosmetic Filed only. Placement is owned by the shared tooltip primitive.
#1385 A view shortcut leaves a visible focus ring on the Day control and mini-month date cosmetic Reproduced and linked; existing shared UI issue, not edited here.
#1323 Event pointer move/resize can leave a ghost and fail to persist major Reproduced; existing shared TimeGrid issue, not edited here.

Existing recurrence issues #1326, #1327 and #1333 remain open from prior rounds. They were not refiled. No recurrence scope behavior was inferred.

Coverage

Flow Coverage: widths, themes, input Bugs or gaps
Day/week/month/agenda views Shortcut metadata for all five views checked at 390/820/1440, light/dark, macOS emulation. Pointer hover checked at all sizes. Day mouse selection and 2 keyboard switch checked at 1440/light. #1429 fixed. #1385 ring reproduced after the keyboard switch. Other view transitions were not each activated by touch/keyboard.
Mini-month Visible in 820/1440 light/dark screenshots; selected date state visible. No 390 interaction test. Pointer, touch, previous/next, and keyboard navigation were not fully exercised. Shortcut ring on its selected date is #1385.
Event create/edit Existing production E2E flow at desktop/light: create, edit by stable ID, and duplicate submit; exactly one create request. No 390/820/dark, two-tab, offline, or reload-mid-edit matrix.
Move/resize by drag and keyboard Existing Calendar drag E2E coverage exercised desktop pointer, touch, and keyboard paths; cross-day resize was also probed against the real server. Event move and resize persistence failed as recorded by #1323. Some legacy Log-touch helper coverage is stale.
All-day and multi-day An all-day CalDAV fixture was present in server-backed coverage. No dedicated multi-day create/move/resize flow or width/theme matrix.
Recurrence, exceptions, edit/delete scope Prior-round production API/CalDAV expansion coverage included COUNT, EXDATE, detached exceptions and BYDAY/UNTIL. This round did not repeat the full UI scope matrix. #1326/#1327 cover missing edit/delete scopes; #1333 covers moved exception rendering.
Time zones and DST Prior-round real Calendar/API fixtures covered Europe/Berlin, Asia/Kolkata, America/New_York and Australia/Lord_Howe. No width/theme/input matrix repeated in this round.
Reminders Not tested in Round 3. No reminder fixture or interaction evidence.
Invites shown Not tested in Round 3. No invite fixture or display-state evidence.
CalDAV-backed calendars Real server/API feed creation returned 201 and a real calendar row rendered once. Full feed edit/delete and viewport/theme matrix remain untested; the legacy feed E2E selectors are stale.
Copy link for days/weeks/events Not tested in Round 3. Copy action and restored deep-link view need direct verification.
Sidebar sub-views Tags, Saved searches and Settings were visible at 820/1440 light/dark. Pointer, touch, keyboard, copy-link and 390 sidebar interactions were not tested.

The required reduced-motion, slow-network/offline, reload-mid-action, two-tab, back/forward, context-menu-key, rich-paste, cancellation, and screen-reader state matrix remains incomplete. The time-box ended with these gaps listed rather than inferred as passes.

UX gaps

Closed: view shortcut hints now show the registered key and expose it through aria-keyshortcuts. The five controls reuse the existing Calendar segmented control and shared shortcut registry.

Left: #1439 tooltip/date-heading overlap; #1385 focus ring; #1323 drag/resize persistence; recurrence gaps #1326/#1327/#1333; the untested flows listed above. The original pre-fix screenshot files were overwritten during recapture; the issue now points to clean after captures, and this before/after artifact gap is recorded in #1429.

Performance

Local Linux Chromium, 560 real Journal Logs with long Unicode titles, 1440 px. Host load average fell from 26.47 to 19.87 (one-minute value); these measurements are load-contaminated. There is no same-workload baseline. Closest generic switch_mode baseline is 316 ms p50 / 594 ms p95 visible, but it is not directly comparable.

  • View switch: 2,399.9 ms p50 / 3,728.3 ms p95.
  • Browser CPU per switch: 3,795 ms p50 / 5,530.5 ms p95.
  • Browser RSS samples: 1,034,997,760 bytes p50 / 1,202,060,697.6 bytes p95.
  • Tooltip open: 909.4 ms p50 / 1,169.54 ms p95.
  • 50-switch burst: 115,581.4 ms; RSS rose from 1,169,993,728 to 1,702,211,584 bytes.
  • Five-minute use: 26 switches; RSS fell from 1,703,141,376 to 1,256,083,456 bytes; JS heap stayed at 212,000,000 bytes.

Profile: bench/calendar-view-shortcut-1429.mjs. Result is recorded in docs/perf/baseline.json. Host load and the lack of a matching baseline prevent treating this as a confirmed regression.

Decisions

Use shortcutCombos in the Calendar route because the shared SegmentedControl does not receive Calendar scope; this keeps platform-specific display and accessibility metadata on the existing registered shortcut. No recurrence behavior was invented because the scope remains undecided. Tooltip placement was left to the shared UI owner.

Commits

  • 2c957adac — show registered shortcut hints in Calendar view tooltips; refresh exact perf pins.
  • 27324b596 — add the dense Calendar shortcut profile and record its local result.

Gates (verbatim summaries)

bun run check:

perf-lint: PASS; 0 violations; 22544 scoped exceptions
User browser caches use userStorage; only documented device/public-link exceptions remain.
Glass alpha, blur and backdrop-filter roles use packages/ui/src/tokens.css.
Text sizes and UI shape values use shared role tokens.
Keyboard focus rings use the shared focus tokens.
UI transitions and animation options use shared motion tokens or documented exceptions.
svelte-check found 0 errors and 4 warnings in 2 files

bun run test:

 Test Files  297 passed (297)
      Tests  2116 passed (2116)
   Start at  05:44:13
   Duration  526.79s (environment 28%, transform 27%, import 22%, tests 18%, setup 6%)

cargo fmt --check: exit 0, no output. No Rust crate changed, so crate Clippy/tests were not run. cargo clean output: Removed 1 file, 356B total. Production bun run build succeeded; build output was deleted after verification. Web check reported four existing selector warnings in Mail/Money.

For the merge round

Run cd apps/web && bun run test:e2e:calendar && bun run test:e2e:calendar-view-switcher against the combined branch to verify Calendar navigation and the five view tooltip/accessibility keys. Run the full E2E suite once under the merge-round policy; no single all-E2E package script is defined. No API route changed, so the adversarial endpoint matrices are not applicable to this patch.

Screenshots remain uncommitted under artifacts/bash3-calendar/, including calendar-shortcuts-clean-{390,820,1440}-{light,dark}-mac.png, calendar-shortcuts-after-mouse-click-mac.png, and calendar-shortcuts-after-keyboard-shortcut-mac.png.

## Round 3 report Head: `27324b5968e12f3bd4a9b64b82708f7f9fbb5809` (`job/bash3-calendar`). No push, deploy, or merge. ### Findings | Issue | Symptom | Severity | Disposition | |---|---|---|---| | #1429 | View tooltip and radio omit registered shortcut metadata | minor | Fixed in `2c957adac`; all five view options now resolve the registered combo. | | #1439 | At 390 px the Week tooltip covers the date heading | cosmetic | Filed only. Placement is owned by the shared tooltip primitive. | | #1385 | A view shortcut leaves a visible focus ring on the Day control and mini-month date | cosmetic | Reproduced and linked; existing shared UI issue, not edited here. | | #1323 | Event pointer move/resize can leave a ghost and fail to persist | major | Reproduced; existing shared TimeGrid issue, not edited here. | Existing recurrence issues #1326, #1327 and #1333 remain open from prior rounds. They were not refiled. No recurrence scope behavior was inferred. ### Coverage | Flow | Coverage: widths, themes, input | Bugs or gaps | |---|---|---| | Day/week/month/agenda views | Shortcut metadata for all five views checked at 390/820/1440, light/dark, macOS emulation. Pointer hover checked at all sizes. Day mouse selection and `2` keyboard switch checked at 1440/light. | #1429 fixed. #1385 ring reproduced after the keyboard switch. Other view transitions were not each activated by touch/keyboard. | | Mini-month | Visible in 820/1440 light/dark screenshots; selected date state visible. No 390 interaction test. | Pointer, touch, previous/next, and keyboard navigation were not fully exercised. Shortcut ring on its selected date is #1385. | | Event create/edit | Existing production E2E flow at desktop/light: create, edit by stable ID, and duplicate submit; exactly one create request. | No 390/820/dark, two-tab, offline, or reload-mid-edit matrix. | | Move/resize by drag and keyboard | Existing Calendar drag E2E coverage exercised desktop pointer, touch, and keyboard paths; cross-day resize was also probed against the real server. | Event move and resize persistence failed as recorded by #1323. Some legacy Log-touch helper coverage is stale. | | All-day and multi-day | An all-day CalDAV fixture was present in server-backed coverage. | No dedicated multi-day create/move/resize flow or width/theme matrix. | | Recurrence, exceptions, edit/delete scope | Prior-round production API/CalDAV expansion coverage included COUNT, EXDATE, detached exceptions and BYDAY/UNTIL. | This round did not repeat the full UI scope matrix. #1326/#1327 cover missing edit/delete scopes; #1333 covers moved exception rendering. | | Time zones and DST | Prior-round real Calendar/API fixtures covered Europe/Berlin, Asia/Kolkata, America/New_York and Australia/Lord_Howe. | No width/theme/input matrix repeated in this round. | | Reminders | Not tested in Round 3. | No reminder fixture or interaction evidence. | | Invites shown | Not tested in Round 3. | No invite fixture or display-state evidence. | | CalDAV-backed calendars | Real server/API feed creation returned 201 and a real calendar row rendered once. | Full feed edit/delete and viewport/theme matrix remain untested; the legacy feed E2E selectors are stale. | | Copy link for days/weeks/events | Not tested in Round 3. | Copy action and restored deep-link view need direct verification. | | Sidebar sub-views | Tags, Saved searches and Settings were visible at 820/1440 light/dark. | Pointer, touch, keyboard, copy-link and 390 sidebar interactions were not tested. | The required reduced-motion, slow-network/offline, reload-mid-action, two-tab, back/forward, context-menu-key, rich-paste, cancellation, and screen-reader state matrix remains incomplete. The time-box ended with these gaps listed rather than inferred as passes. ### UX gaps Closed: view shortcut hints now show the registered key and expose it through `aria-keyshortcuts`. The five controls reuse the existing Calendar segmented control and shared shortcut registry. Left: #1439 tooltip/date-heading overlap; #1385 focus ring; #1323 drag/resize persistence; recurrence gaps #1326/#1327/#1333; the untested flows listed above. The original pre-fix screenshot files were overwritten during recapture; the issue now points to clean after captures, and this before/after artifact gap is recorded in #1429. ### Performance Local Linux Chromium, 560 real Journal Logs with long Unicode titles, 1440 px. Host load average fell from 26.47 to 19.87 (one-minute value); these measurements are load-contaminated. There is no same-workload baseline. Closest generic `switch_mode` baseline is 316 ms p50 / 594 ms p95 visible, but it is not directly comparable. - View switch: 2,399.9 ms p50 / 3,728.3 ms p95. - Browser CPU per switch: 3,795 ms p50 / 5,530.5 ms p95. - Browser RSS samples: 1,034,997,760 bytes p50 / 1,202,060,697.6 bytes p95. - Tooltip open: 909.4 ms p50 / 1,169.54 ms p95. - 50-switch burst: 115,581.4 ms; RSS rose from 1,169,993,728 to 1,702,211,584 bytes. - Five-minute use: 26 switches; RSS fell from 1,703,141,376 to 1,256,083,456 bytes; JS heap stayed at 212,000,000 bytes. Profile: `bench/calendar-view-shortcut-1429.mjs`. Result is recorded in `docs/perf/baseline.json`. Host load and the lack of a matching baseline prevent treating this as a confirmed regression. ### Decisions Use `shortcutCombos` in the Calendar route because the shared SegmentedControl does not receive Calendar scope; this keeps platform-specific display and accessibility metadata on the existing registered shortcut. No recurrence behavior was invented because the scope remains undecided. Tooltip placement was left to the shared UI owner. ### Commits - `2c957adac` — show registered shortcut hints in Calendar view tooltips; refresh exact perf pins. - `27324b596` — add the dense Calendar shortcut profile and record its local result. ### Gates (verbatim summaries) `bun run check`: ```text perf-lint: PASS; 0 violations; 22544 scoped exceptions User browser caches use userStorage; only documented device/public-link exceptions remain. Glass alpha, blur and backdrop-filter roles use packages/ui/src/tokens.css. Text sizes and UI shape values use shared role tokens. Keyboard focus rings use the shared focus tokens. UI transitions and animation options use shared motion tokens or documented exceptions. svelte-check found 0 errors and 4 warnings in 2 files ``` `bun run test`: ```text Test Files 297 passed (297) Tests 2116 passed (2116) Start at 05:44:13 Duration 526.79s (environment 28%, transform 27%, import 22%, tests 18%, setup 6%) ``` `cargo fmt --check`: exit 0, no output. No Rust crate changed, so crate Clippy/tests were not run. `cargo clean` output: `Removed 1 file, 356B total`. Production `bun run build` succeeded; build output was deleted after verification. Web check reported four existing selector warnings in Mail/Money. ### For the merge round Run `cd apps/web && bun run test:e2e:calendar && bun run test:e2e:calendar-view-switcher` against the combined branch to verify Calendar navigation and the five view tooltip/accessibility keys. Run the full E2E suite once under the merge-round policy; no single all-E2E package script is defined. No API route changed, so the adversarial endpoint matrices are not applicable to this patch. Screenshots remain uncommitted under `artifacts/bash3-calendar/`, including `calendar-shortcuts-clean-{390,820,1440}-{light,dark}-mac.png`, `calendar-shortcuts-after-mouse-click-mac.png`, and `calendar-shortcuts-after-keyboard-shortcut-mac.png`.
Commenting is not possible because the repository is archived.
No labels
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal-v0#1394
No description provided.