Bug bash: chrome #1222

Open
opened 2026-10-06 19:01:54 +00:00 by kayg · 15 comments
Owner

AREA: App shell and cross-cutting UX. Sidebar (edge resize, persistence, snap collapse, double-click reset, keyboard separator), mode tray, top bar, Tab switching, inspector popover (Cmd+I), command menu (Cmd/Ctrl+K), context menus (right-click, context-menu key, long-press on touch), toasts, warm tooltips with shortcuts, focus return after every overlay closes, reduced motion, first load and reload (no boot skeleton, no flash), offline state, 390 px everywhere, both themes. Do a 1 px alignment sweep of every route at 1440 and 390. In this bash you are the single owner of shared primitive fixes in packages/ui; other bash jobs file those for you. Do not touch EditorFormatBubble/PillGroup glass (#1210 owns it) or the sidebar header blur (#1208).

Tracking issue for the 2026-10-07 bug bash. Every bug found gets its own issue, linked here.

AREA: App shell and cross-cutting UX. Sidebar (edge resize, persistence, snap collapse, double-click reset, keyboard separator), mode tray, top bar, Tab switching, inspector popover (Cmd+I), command menu (Cmd/Ctrl+K), context menus (right-click, context-menu key, long-press on touch), toasts, warm tooltips with shortcuts, focus return after every overlay closes, reduced motion, first load and reload (no boot skeleton, no flash), offline state, 390 px everywhere, both themes. Do a 1 px alignment sweep of every route at 1440 and 390. In this bash you are the single owner of shared primitive fixes in packages/ui; other bash jobs file those for you. Do not touch EditorFormatBubble/PillGroup glass (#1210 owns it) or the sidebar header blur (#1208). Tracking issue for the 2026-10-07 bug bash. Every bug found gets its own issue, linked here.
Author
Owner

Started bash-chrome on branch job/bash-chrome at base ff53d7b8b4; origin/dev is 3601719b80 and will be merged before final gates.

Started bash-chrome on branch job/bash-chrome at base ff53d7b8b4da5a21f862d57dcc3496f8c019f647; origin/dev is 3601719b80a39f712daf07b37879b22929dfffa0 and will be merged before final gates.
Author
Owner

Finding: the real-server Playwright shell run passed setup/passkey checks, then stopped at apps/web/e2e/shell.mjs:2035 because its existing assertion expects ‘You have no notes yet.’ while the production Notes view rendered ‘No notes in this view.’ I left the expectation unchanged per the owner rule. I am recording this as a minor empty-state copy mismatch and continuing the other shell probes.

Finding: the real-server Playwright shell run passed setup/passkey checks, then stopped at apps/web/e2e/shell.mjs:2035 because its existing assertion expects ‘You have no notes yet.’ while the production Notes view rendered ‘No notes in this view.’ I left the expectation unchanged per the owner rule. I am recording this as a minor empty-state copy mismatch and continuing the other shell probes.
Author
Owner

Finding filed as #1303: desktop hover/focus exposes standalone ⋯ actions for sidebar Notes, Smart folders / saved searches, and Tag rows, plus a More action in the Notes section header, while the rows already support contextual input. Expected: no desktop ellipsis; right-click, ContextMenu / Shift+F10, or touch hold opens the menu. Evidence: /home/kayg/Developer/calternal-wt/notestatus-1209/artifacts/notestatus-1209/after/webkit/*.png. Severity: minor. I fixed it in this branch through the shared section/header and row paths; focused interaction tests cover right-click, both keyboard keys, and long-press.

Finding filed as #1303: desktop hover/focus exposes standalone ⋯ actions for sidebar Notes, Smart folders / saved searches, and Tag rows, plus a More action in the Notes section header, while the rows already support contextual input. Expected: no desktop ellipsis; right-click, ContextMenu / Shift+F10, or touch hold opens the menu. Evidence: `/home/kayg/Developer/calternal-wt/notestatus-1209/artifacts/notestatus-1209/after/webkit/*.png`. Severity: minor. I fixed it in this branch through the shared section/header and row paths; focused interaction tests cover right-click, both keyboard keys, and long-press.
Author
Owner

Finding filed as #1304: with Search / Ask open, an Update available toast docks above the page Tab Bar and covers the Search action footer at 1440 px or the Ask row at 390 px. Evidence is /home/kayg/Developer/calternal-wt/restyle-search/apps/web/artifacts/restyle-search/rerun/search-palette-empty-390-paper.png. Severity: major. The shared toaster already follows data-toast-dock; I am connecting the palette action footer and will verify the exact overlap on the production build.

Finding filed as #1304: with Search / Ask open, an `Update available` toast docks above the page Tab Bar and covers the Search action footer at 1440 px or the Ask row at 390 px. Evidence is `/home/kayg/Developer/calternal-wt/restyle-search/apps/web/artifacts/restyle-search/rerun/search-palette-empty-390-paper.png`. Severity: major. The shared toaster already follows `data-toast-dock`; I am connecting the palette action footer and will verify the exact overlap on the production build.
Author
Owner

Finding: #1315, App Sidebar resized width resets after reload (minor). A real production-server probe resized the sidebar from 248 px to 296 px, confirmed aria-valuenow=296 and the stored value, then reloaded. The app restored 248 px and had removed calternal.panel.sidebar. Evidence: artifacts/bash-chrome/sidebar-resize-reload-1305.json. The shared action writes an unowned legacy calternal.* key, which the User-storage startup cleanup removes.

Finding: #1315, App Sidebar resized width resets after reload (minor). A real production-server probe resized the sidebar from 248 px to 296 px, confirmed `aria-valuenow=296` and the stored value, then reloaded. The app restored 248 px and had removed `calternal.panel.sidebar`. Evidence: `artifacts/bash-chrome/sidebar-resize-reload-1305.json`. The shared action writes an unowned legacy `calternal.*` key, which the User-storage startup cleanup removes.
Author
Owner

Real-server accessibility finding from A11Y_ONLY=/files bun e2e/a11y.mjs: when Search opens with an empty query, axe reports aria-required-children (critical) on #search-results and scrollable-region-focusable (serious) on .results-panel in Paper and Tokyo Night. Evidence: artifacts/bash-chrome/a11y-files/search-palette-empty-a11y.txt.

Filed separately as #1319 (empty Search listbox required children) and #1320 (Search results region keyboard focus). Continuing the shell coverage and will fix both on this branch if the cause remains clear and local to Search.

Real-server accessibility finding from `A11Y_ONLY=/files bun e2e/a11y.mjs`: when Search opens with an empty query, axe reports `aria-required-children` (critical) on `#search-results` and `scrollable-region-focusable` (serious) on `.results-panel` in Paper and Tokyo Night. Evidence: `artifacts/bash-chrome/a11y-files/search-palette-empty-a11y.txt`. Filed separately as #1319 (empty Search listbox required children) and #1320 (Search results region keyboard focus). Continuing the shell coverage and will fix both on this branch if the cause remains clear and local to Search.
Author
Owner

Additional real-server accessibility findings from A11Y_ONLY=/files bun e2e/a11y.mjs:

  • Composer opens as a modal but leaves focus on body at 1440 px and 390 px in Paper, and at 1440 px in Tokyo Night (#1321).
  • At 390 px, the Share dialog and Quick Look sheet can be open while focus remains on their background file row (#1322).

Evidence: artifacts/bash-chrome/a11y-files/overlay-focus-findings.txt. The same run passed the sidebar keyboard separator and cut/paste checks, but ended with unrelated axe and share-dialog findings; its full output reports 18 findings. I will verify the exact focus paths before changing the shared overlay.

Additional real-server accessibility findings from `A11Y_ONLY=/files bun e2e/a11y.mjs`: - Composer opens as a modal but leaves focus on `body` at 1440 px and 390 px in Paper, and at 1440 px in Tokyo Night (#1321). - At 390 px, the Share dialog and Quick Look sheet can be open while focus remains on their background file row (#1322). Evidence: `artifacts/bash-chrome/a11y-files/overlay-focus-findings.txt`. The same run passed the sidebar keyboard separator and cut/paste checks, but ended with unrelated axe and share-dialog findings; its full output reports 18 findings. I will verify the exact focus paths before changing the shared overlay.
Author
Owner

#1319 fixed in dcdec22a1. In Search, an empty result set now hides the listbox popup from the accessibility tree while keeping its stable aria-controls target and the real empty state visible. Production E2E and axe passed at 390/820/1440 px in Paper and Tokyo Night with reduced motion and macOS shortcut emulation. Screenshots: artifacts/bash-chrome/search-empty-listbox-1319/.

#1319 fixed in `dcdec22a1`. In Search, an empty result set now hides the listbox popup from the accessibility tree while keeping its stable `aria-controls` target and the real empty state visible. Production E2E and axe passed at 390/820/1440 px in Paper and Tokyo Night with reduced motion and macOS shortcut emulation. Screenshots: `artifacts/bash-chrome/search-empty-listbox-1319/`.
Author
Owner

Fixed #1320 in f7a4719cd: Search results region is now a named keyboard Tab stop and retains its shared focus ring. The production-browser regression passes at 390/820/1440 px in both themes with reduced motion and macOS emulation; screenshots are under .

Fixed #1320 in f7a4719cd: Search results region is now a named keyboard Tab stop and retains its shared focus ring. The production-browser regression passes at 390/820/1440 px in both themes with reduced motion and macOS emulation; screenshots are under .
Author
Owner

Fix #1320 is in f7a4719cd. Search results now has an accessible name, a Tab stop, and the shared visible focus ring. The real-server regression passes at 390, 820 and 1440 px in both themes with reduced motion and macOS emulation; screenshots are under artifacts/bash-chrome/search-empty-listbox-1319/.

Fix #1320 is in f7a4719cd. Search results now has an accessible name, a Tab stop, and the shared visible focus ring. The real-server regression passes at 390, 820 and 1440 px in both themes with reduced motion and macOS emulation; screenshots are under `artifacts/bash-chrome/search-empty-listbox-1319/`.
Author
Owner

Filed #1331 after a real-server probe found a persistent axe aria-required-children failure in Search when real results are present. Seven options render, but the Notes group count is exposed as a labelled generic span inside the listbox. Evidence: artifacts/bash-chrome/search-listbox-group-count-1331/evidence.txt. I am fixing the Search markup and adding a production-browser regression on this branch.

Filed #1331 after a real-server probe found a persistent axe `aria-required-children` failure in Search when real results are present. Seven options render, but the Notes group count is exposed as a labelled generic span inside the listbox. Evidence: `artifacts/bash-chrome/search-listbox-group-count-1331/evidence.txt`. I am fixing the Search markup and adding a production-browser regression on this branch.
Author
Owner

Filed #1332 after the 1440 px Paper Share dialog axe scan found New link and Collect files at 3.93:1 (#75787b on #f0f1f5; 4.5:1 required). Evidence: artifacts/bash-chrome/share-pill-contrast-1332/evidence.txt. I am using the shared Pill secondary tone for neutral Share actions and will verify the dialog again.

Filed #1332 after the 1440 px Paper Share dialog axe scan found New link and Collect files at 3.93:1 (#75787b on #f0f1f5; 4.5:1 required). Evidence: `artifacts/bash-chrome/share-pill-contrast-1332/evidence.txt`. I am using the shared Pill secondary tone for neutral Share actions and will verify the dialog again.
Author
Owner

Fixed in commit 6440ec88f. ShareDialog now uses the shared secondary Pill tone for neutral actions, including New link, Collect files, Retry and Cancel. The production-browser Axe regression and 1x screenshots pass at 390/820/1440 px in Paper and Tokyo Night with macOS emulation and reduced motion. Evidence: artifacts/bash-chrome/share-pill-contrast-1332/.

Fixed in commit 6440ec88f. ShareDialog now uses the shared secondary Pill tone for neutral actions, including New link, Collect files, Retry and Cancel. The production-browser Axe regression and 1x screenshots pass at 390/820/1440 px in Paper and Tokyo Night with macOS emulation and reduced motion. Evidence: `artifacts/bash-chrome/share-pill-contrast-1332/`.
Author
Owner

Filed #1341 after screenshot inspection: in 390 px Paper, the Update available toast overlaps the Public links actions in the Share sheet. The same centered dialog is clear at 1440 px. Evidence: artifacts/bash-chrome/share-pill-contrast-1332/share-390-paper.png. I am checking the shared toast dock for a safe-area fix and will add a production regression.

Filed #1341 after screenshot inspection: in 390 px Paper, the Update available toast overlaps the Public links actions in the Share sheet. The same centered dialog is clear at 1440 px. Evidence: artifacts/bash-chrome/share-pill-contrast-1332/share-390-paper.png. I am checking the shared toast dock for a safe-area fix and will add a production regression.
Author
Owner

Final report — bash-chrome (#1222)

Branch: job/bash-chrome
Head: 5a8528e591b71fa724d1979ed4104926749bda77

Built

  • Removed desktop ellipsis buttons from shared sidebar rows and the Notes heading. Right-click, ContextMenu / Shift+F10, and touch long-press open the shared contextual menu. Full Tags rows keep their separate action button.
  • Routed sidebar panel widths through User storage, so startup cleanup does not erase a User's resize preference.
  • Fixed the shared Checkbox hit target, toast Undo lifetime, Search listbox and scroll-region accessibility, Share action contrast, and toast placement above Search and other active overlays.
  • Added regression unit and production E2E coverage. No screenshots or videos are committed.

Bug table

Issue Symptom Severity Result
#1231 Checkbox artwork intercepts pointer activation Major Fixed in 263385098
#1238 Visible Undo can expire while Sonner pauses its timer Severity not specified in the issue; correctness regression Fixed in 5eba73d59
#1303 Desktop sidebar rows and Notes heading show ellipses Minor Fixed in 47e3531d7
#1304 Update toast covers Search footer / phone Ask row Major Fixed in c1f1ecc41
#1315 Sidebar resize width resets after reload Minor Fixed in a8a5e0b67
#1319 Empty Search listbox has no required options Major Fixed in dcdec22a1
#1320 Search results region cannot receive keyboard focus Major Fixed in f7a4719cd
#1321 / #1322 Composer / touch-sheet focus appears outside the overlay Major reported Not reproduced after OverlaySurface's two-frame focus handoff; timing comments and evidence were posted, issues remain open
#1331 Search group count violates the listbox content model Major Fixed in bf9703c02
#1332 Neutral Share actions fail text contrast Major Fixed in 6440ec88f
#1341 Update toast overlaps phone Share public-link controls Major Fixed in 7472a2747; exact observer pins refreshed in 5a8528e59

Coverage

AREA flow Tested Widths, themes, and input methods; bugs found
Sidebar resize, persistence, snap collapse, double-click reset, keyboard separator Yes Production: 390 / 820 / 1440 px, Paper and Tokyo Night; pointer and keyboard, reload. #1315 fixed.
Mode tray Partial 1440 px Paper, macOS-emulated keyboard journey switched to Photos. No full width/theme or touch sweep. No new bug.
Top bar Partial Files More actions and Share paths ran at 390 / 820 / 1440 px in both themes on completed cases. No full top-bar action or shortcut-tooltip sweep.
Tab switching No Not separately tested.
Inspector Cmd+I Partial Desktop Show info by pointer at 1440 px Paper; touch Quick Look → Show info and nested Escape close at 390 px Tokyo Night. Direct Cmd+I and all overlay restore paths were not covered. #1322 was a focus-timing false positive.
Command menu Cmd/Ctrl+K Yes, selected flows Search opened by macOS Meta+K at 390 / 820 / 1440 px in both themes in the listbox and dock probes. #1319, #1320, and #1331 fixed.
Context menus: right-click, ContextMenu / Shift+F10, touch long-press Yes, unit; partial, production Shared sidebar rows, headings, saved searches have unit coverage for all three inputs. Production Share path used touch long-press at 390 px and right-click at 820 px plus 1440 px Paper. #1303 fixed.
Toasts Yes, selected flows Search dock regression passed 390 / 820 / 1440 px in both themes; Undo lifecycle has a unit regression. Share safe-area E2E passed 390 and 820 px in both themes plus 1440 px Paper. #1238, #1304, and #1341 fixed.
Warm tooltips with shortcuts No No broad shortcut-label or hover/focus tooltip audit.
Focus return after every overlay closes Partial Search Escape returned focus to its opener at 1440 px Paper; nested phone Inspector and Quick Look closed in order at 390 px Tokyo Night. Not every overlay/opening path was checked.
Reduced motion Partial Reduced-motion checks ran in the desktop and phone A11Y probes and in the Search / Share / toast E2E paths; not every route. No reduced-motion defect found.
First load/reload: no boot skeleton or flash Partial Sidebar preference restoration was checked after reload. No route-by-route first-paint flash audit.
Offline state No Offline → online recovery was not tested.
390 px everywhere, both themes Partial Sidebar, Search, toast, Share and selected Files overlays were checked in Paper and Tokyo Night. Not every route.
1 px alignment sweep of every route at 1440 and 390 px No Files Size/Kind header spacing measured 8.55 px against the 8.56 px shared gap token. The full route sweep was not completed.

A11Y evidence: the Mac-emulated production run passed 14 axe scans plus keyboard and reduced-motion checks at 1440 px Paper. Selected phone overlay scans found no serious/critical axe findings at 390 px Tokyo Night. The full filtered phone run did not finish because of a harness theme assertion; it did not confirm a product defect.

UX gaps closed

Desktop sidebar ellipses are gone while contextual actions remain available to pointer, keyboard, and touch users. Search empty and populated listbox semantics are valid, the Search scroll region is keyboard-focusable, Checkbox artwork no longer intercepts clicks, Undo expires with Sonner's paused timer, Share actions use the shared secondary Pill tone, and visible toasts clear open Search and Share controls.

UX gaps left

The broad tooltips, focus-return, first-paint, offline, all-route 390 px, and full 1440 / 390 alignment sweeps remain. The final 1440 px Tokyo Night Share-toast production case timed out during navigation; a fresh retry failed while registering its test User before reaching the cases. No post-fix screenshot for that case exists. #1321 and #1322 remain open with timing evidence and comments. The fj issue comment CLI has no attachment command; screenshots remain in artifacts/bash-chrome/ in the worktree and were not uploaded.

Performance

No benchmark profile, baseline comparison, 5-minute memory run, long-task report, or interaction-latency measurement was added. For the toast dock change, expected selection work is O(number of visible overlay dock/surface candidates) per coalesced mutation, resize, or transition event, with no per-frame measurement loop. This remains a merge-round performance gap.

Gates

bun run check (exit 0):

PASS production dependency licences: 759 locked package releases across apps/web, apps/docs and packages
perf-lint: PASS; 0 violations; 22548 scoped exceptions
svelte-check found 0 errors and 0 warnings

bun run test (exit 0):

Ran 136 tests in 0.039s
OK
Ran 8 tests across 1 file. [874.00ms]
Test Files  290 passed (290)
Tests  2053 passed (2053)
Duration  564.71s (transform 33%, environment 26%, import 20%, tests 15%, setup 6%)
bun run test exit code: 0

Focused toast regression: Test Files 1 passed (1); Tests 3 passed (3).
cargo build -p calternal-server --release succeeded in 31m 29s for the local production E2E server. No Rust source changed, so Rust fmt / clippy / tests were not run. cargo clean removed 9260 files, 3.4 GiB.

The web build wrote its static site, but the Bun build command returned 143 after a SIGTERM. Production E2E consumed the generated assets. The selected Share cases passed; the last dark desktop case remains unverified as noted above.

Decisions

  • When an active overlay has no explicit data-toast-dock, use the newest visible modal/menu/listbox top edge as the toast safe edge. Keep the established 12 px spacing and prefer explicit overlay docks.
  • Keep desktop sidebar contextual actions on the shared context-menu path; keep a visible action target for coarse pointers.
  • Use the User storage facade for resizable panel widths so startup cleanup does not remove the preference.

Files

apps/web/e2e/{a11y.mjs,search-empty-listbox-1319.mjs,share-pill-contrast-1332.mjs,sidebar-resize-persistence-1315.mjs,toast-overlay-dock-1304.mjs}; apps/web/package.json; apps/web/src/lib/actions/resizableEdge.test.ts; apps/web/src/lib/ai/TurnPanel.svelte; apps/web/src/lib/components/{AppToaster.svelte,AppToaster.svelte.test.ts,Checkbox.svelte.test.ts,SidebarLinks.svelte,SidebarLinks.svelte.test.ts,SidebarSectionHeader.svelte.test.ts,TagRow.svelte,TagRow.svelte.test.ts,app-sidebar.svelte,search-dialog.svelte}; apps/web/src/lib/files/ShareDialog.svelte; apps/web/src/lib/notes/NotesExplorer.svelte; apps/web/src/lib/search/{SavedSearchList.svelte,SavedSearchList.svelte.test.ts,SearchGroupHeading.svelte}; apps/web/src/lib/stores/{toasts.svelte.ts,toasts.svelte.test.ts}; contracts/perf/{adoption-1058.json,exceptions.json}; packages/ui/src/actions/resizableEdge.ts; packages/ui/src/components/{Checkbox.svelte,SidebarSectionHeader.svelte,calendar/AttachmentDeck.svelte}; packages/ui/src/index.ts.

For the merge round

  • cd apps/web && CALTERNAL_E2E_ASSET_OVERRIDE=1 CALTERNAL_E2E_MAC=1 bun run e2e:share-pill-contrast-1332 — complete all six Share-toast viewport/theme cases, including 1440 px Tokyo Night.
  • cd apps/web && CALTERNAL_E2E_ASSET_OVERRIDE=1 CALTERNAL_E2E_MAC=1 bun run e2e:a11y — complete the route/overlay keyboard, focus, screen-reader, and reduced-motion matrix.
  • cd apps/web && CALTERNAL_E2E_ASSET_OVERRIDE=1 CALTERNAL_E2E_MAC=1 bun run e2e:layout — complete the 1440 / 390 route alignment sweep.
  • Run cd apps/web && bun e2e/reconnect-1131.mjs with the shared prebuilt server to verify offline → online recovery.
  • Run the existing shell E2E (cd apps/web && bun run test:e2e) to confirm shell flows together after the merged branch.
# Final report — bash-chrome (#1222) Branch: `job/bash-chrome` Head: `5a8528e591b71fa724d1979ed4104926749bda77` ## Built - Removed desktop ellipsis buttons from shared sidebar rows and the Notes heading. Right-click, ContextMenu / Shift+F10, and touch long-press open the shared contextual menu. Full Tags rows keep their separate action button. - Routed sidebar panel widths through User storage, so startup cleanup does not erase a User's resize preference. - Fixed the shared Checkbox hit target, toast Undo lifetime, Search listbox and scroll-region accessibility, Share action contrast, and toast placement above Search and other active overlays. - Added regression unit and production E2E coverage. No screenshots or videos are committed. ## Bug table | Issue | Symptom | Severity | Result | |---|---|---|---| | #1231 | Checkbox artwork intercepts pointer activation | Major | Fixed in `263385098` | | #1238 | Visible Undo can expire while Sonner pauses its timer | Severity not specified in the issue; correctness regression | Fixed in `5eba73d59` | | #1303 | Desktop sidebar rows and Notes heading show ellipses | Minor | Fixed in `47e3531d7` | | #1304 | Update toast covers Search footer / phone Ask row | Major | Fixed in `c1f1ecc41` | | #1315 | Sidebar resize width resets after reload | Minor | Fixed in `a8a5e0b67` | | #1319 | Empty Search listbox has no required options | Major | Fixed in `dcdec22a1` | | #1320 | Search results region cannot receive keyboard focus | Major | Fixed in `f7a4719cd` | | #1321 / #1322 | Composer / touch-sheet focus appears outside the overlay | Major reported | Not reproduced after OverlaySurface's two-frame focus handoff; timing comments and evidence were posted, issues remain open | | #1331 | Search group count violates the listbox content model | Major | Fixed in `bf9703c02` | | #1332 | Neutral Share actions fail text contrast | Major | Fixed in `6440ec88f` | | #1341 | Update toast overlaps phone Share public-link controls | Major | Fixed in `7472a2747`; exact observer pins refreshed in `5a8528e59` | ## Coverage | AREA flow | Tested | Widths, themes, and input methods; bugs found | |---|---|---| | Sidebar resize, persistence, snap collapse, double-click reset, keyboard separator | Yes | Production: 390 / 820 / 1440 px, Paper and Tokyo Night; pointer and keyboard, reload. #1315 fixed. | | Mode tray | Partial | 1440 px Paper, macOS-emulated keyboard journey switched to Photos. No full width/theme or touch sweep. No new bug. | | Top bar | Partial | Files More actions and Share paths ran at 390 / 820 / 1440 px in both themes on completed cases. No full top-bar action or shortcut-tooltip sweep. | | Tab switching | No | Not separately tested. | | Inspector Cmd+I | Partial | Desktop Show info by pointer at 1440 px Paper; touch Quick Look → Show info and nested Escape close at 390 px Tokyo Night. Direct Cmd+I and all overlay restore paths were not covered. #1322 was a focus-timing false positive. | | Command menu Cmd/Ctrl+K | Yes, selected flows | Search opened by macOS Meta+K at 390 / 820 / 1440 px in both themes in the listbox and dock probes. #1319, #1320, and #1331 fixed. | | Context menus: right-click, ContextMenu / Shift+F10, touch long-press | Yes, unit; partial, production | Shared sidebar rows, headings, saved searches have unit coverage for all three inputs. Production Share path used touch long-press at 390 px and right-click at 820 px plus 1440 px Paper. #1303 fixed. | | Toasts | Yes, selected flows | Search dock regression passed 390 / 820 / 1440 px in both themes; Undo lifecycle has a unit regression. Share safe-area E2E passed 390 and 820 px in both themes plus 1440 px Paper. #1238, #1304, and #1341 fixed. | | Warm tooltips with shortcuts | No | No broad shortcut-label or hover/focus tooltip audit. | | Focus return after every overlay closes | Partial | Search Escape returned focus to its opener at 1440 px Paper; nested phone Inspector and Quick Look closed in order at 390 px Tokyo Night. Not every overlay/opening path was checked. | | Reduced motion | Partial | Reduced-motion checks ran in the desktop and phone A11Y probes and in the Search / Share / toast E2E paths; not every route. No reduced-motion defect found. | | First load/reload: no boot skeleton or flash | Partial | Sidebar preference restoration was checked after reload. No route-by-route first-paint flash audit. | | Offline state | No | Offline → online recovery was not tested. | | 390 px everywhere, both themes | Partial | Sidebar, Search, toast, Share and selected Files overlays were checked in Paper and Tokyo Night. Not every route. | | 1 px alignment sweep of every route at 1440 and 390 px | No | Files Size/Kind header spacing measured 8.55 px against the 8.56 px shared gap token. The full route sweep was not completed. | A11Y evidence: the Mac-emulated production run passed 14 axe scans plus keyboard and reduced-motion checks at 1440 px Paper. Selected phone overlay scans found no serious/critical axe findings at 390 px Tokyo Night. The full filtered phone run did not finish because of a harness theme assertion; it did not confirm a product defect. ## UX gaps closed Desktop sidebar ellipses are gone while contextual actions remain available to pointer, keyboard, and touch users. Search empty and populated listbox semantics are valid, the Search scroll region is keyboard-focusable, Checkbox artwork no longer intercepts clicks, Undo expires with Sonner's paused timer, Share actions use the shared secondary Pill tone, and visible toasts clear open Search and Share controls. ## UX gaps left The broad tooltips, focus-return, first-paint, offline, all-route 390 px, and full 1440 / 390 alignment sweeps remain. The final 1440 px Tokyo Night Share-toast production case timed out during navigation; a fresh retry failed while registering its test User before reaching the cases. No post-fix screenshot for that case exists. #1321 and #1322 remain open with timing evidence and comments. The `fj issue comment` CLI has no attachment command; screenshots remain in `artifacts/bash-chrome/` in the worktree and were not uploaded. ## Performance No benchmark profile, baseline comparison, 5-minute memory run, long-task report, or interaction-latency measurement was added. For the toast dock change, expected selection work is O(number of visible overlay dock/surface candidates) per coalesced mutation, resize, or transition event, with no per-frame measurement loop. This remains a merge-round performance gap. ## Gates `bun run check` (exit 0): ```text PASS production dependency licences: 759 locked package releases across apps/web, apps/docs and packages perf-lint: PASS; 0 violations; 22548 scoped exceptions svelte-check found 0 errors and 0 warnings ``` `bun run test` (exit 0): ```text Ran 136 tests in 0.039s OK Ran 8 tests across 1 file. [874.00ms] Test Files 290 passed (290) Tests 2053 passed (2053) Duration 564.71s (transform 33%, environment 26%, import 20%, tests 15%, setup 6%) bun run test exit code: 0 ``` Focused toast regression: `Test Files 1 passed (1); Tests 3 passed (3)`. `cargo build -p calternal-server --release` succeeded in 31m 29s for the local production E2E server. No Rust source changed, so Rust fmt / clippy / tests were not run. `cargo clean` removed 9260 files, 3.4 GiB. The web build wrote its static site, but the Bun build command returned 143 after a SIGTERM. Production E2E consumed the generated assets. The selected Share cases passed; the last dark desktop case remains unverified as noted above. ## Decisions - When an active overlay has no explicit `data-toast-dock`, use the newest visible modal/menu/listbox top edge as the toast safe edge. Keep the established 12 px spacing and prefer explicit overlay docks. - Keep desktop sidebar contextual actions on the shared context-menu path; keep a visible action target for coarse pointers. - Use the User storage facade for resizable panel widths so startup cleanup does not remove the preference. ## Files `apps/web/e2e/{a11y.mjs,search-empty-listbox-1319.mjs,share-pill-contrast-1332.mjs,sidebar-resize-persistence-1315.mjs,toast-overlay-dock-1304.mjs}`; `apps/web/package.json`; `apps/web/src/lib/actions/resizableEdge.test.ts`; `apps/web/src/lib/ai/TurnPanel.svelte`; `apps/web/src/lib/components/{AppToaster.svelte,AppToaster.svelte.test.ts,Checkbox.svelte.test.ts,SidebarLinks.svelte,SidebarLinks.svelte.test.ts,SidebarSectionHeader.svelte.test.ts,TagRow.svelte,TagRow.svelte.test.ts,app-sidebar.svelte,search-dialog.svelte}`; `apps/web/src/lib/files/ShareDialog.svelte`; `apps/web/src/lib/notes/NotesExplorer.svelte`; `apps/web/src/lib/search/{SavedSearchList.svelte,SavedSearchList.svelte.test.ts,SearchGroupHeading.svelte}`; `apps/web/src/lib/stores/{toasts.svelte.ts,toasts.svelte.test.ts}`; `contracts/perf/{adoption-1058.json,exceptions.json}`; `packages/ui/src/actions/resizableEdge.ts`; `packages/ui/src/components/{Checkbox.svelte,SidebarSectionHeader.svelte,calendar/AttachmentDeck.svelte}`; `packages/ui/src/index.ts`. ## For the merge round - `cd apps/web && CALTERNAL_E2E_ASSET_OVERRIDE=1 CALTERNAL_E2E_MAC=1 bun run e2e:share-pill-contrast-1332` — complete all six Share-toast viewport/theme cases, including 1440 px Tokyo Night. - `cd apps/web && CALTERNAL_E2E_ASSET_OVERRIDE=1 CALTERNAL_E2E_MAC=1 bun run e2e:a11y` — complete the route/overlay keyboard, focus, screen-reader, and reduced-motion matrix. - `cd apps/web && CALTERNAL_E2E_ASSET_OVERRIDE=1 CALTERNAL_E2E_MAC=1 bun run e2e:layout` — complete the 1440 / 390 route alignment sweep. - Run `cd apps/web && bun e2e/reconnect-1131.mjs` with the shared prebuilt server to verify offline → online recovery. - Run the existing shell E2E (`cd apps/web && bun run test:e2e`) to confirm shell flows together after the merged branch.
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#1222
No description provided.