Conversation
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
Add sidebarOpen and isMobileViewport reactive state driven by
matchMedia('min-width: 768px'). Includes toggleSidebar() and
closeSidebar() methods with proper listener cleanup.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- ThreeColumnLayout: sidebar becomes fixed overlay below 768px with backdrop, mobile nav drawer for route switching, accessible button backdrop with aria-label - app.css: extract --header-height and --status-bar-height variables, bump header to 44px on pointer:coarse devices - StatusBar: use CSS variable for height, hide stats on mobile Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add hamburger button: toggles sidebar on sessions route, navigates back to sessions on mobile non-session routes, toggles sidebar on desktop non-session routes - Wrap nav labels in spans for CSS targeting, hide below 1024px - Add aria-label to all nav buttons for screen reader accessibility when labels are visually hidden - Hide ProjectTypeahead on mobile to prevent overflow - Touch targets enlarged to 44px on pointer:coarse devices Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add route+viewport-aware 'b' shortcut matching hamburger behavior - Auto-close sidebar on mobile session select via isMobileViewport - CodeBlock: constrain max-width on mobile for horizontal scroll - SessionBreadcrumb: hide metadata (time, tokens, ID) on mobile Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- UIStore: toggle, close, idempotency, isMobileViewport default, matchMedia initialization on narrow and wide viewports - Keyboard: route-aware 'b' shortcut (sessions toggle, mobile nav-back, desktop toggle), modal/input guards Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
090ed60 to
cdd092d
Compare
roborev: Combined Review (
|
- Hamburger always visible (no conditional class:visible). On non-session routes it's a no-op toggle on desktop, navigates back to sessions on mobile. - Fall back to addListener/removeListener for older Safari/WebKit that lack addEventListener on MediaQueryList. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
roborev: Combined Review (
|
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
roborev: Combined Review (
|
|
Thank you! I will review this |
|
Cool, looks good here! Merging this |

Summary
bkeyboard shortcut. On desktop, pressingbhides the sidebar and shows the hamburger to reopen it.pointer: coarsedevices per Apple HIG.matchMedialistener in UIStore tracks the 768px breakpoint, auto-closing sidebar on mobile and auto-opening on desktop resize. Includes proper cleanup.<button>witharia-labelinstead of a plain div.No new dependencies. No changes to the Go backend. Desktop layout (>= 1024px) is unchanged.
Test plan
cd frontend && npx vitest run-- 740/740 tests pass (10 new tests added)cd frontend && npx vite build-- builds cleanlygo vet -tags fts5 ./...-- no issuesbto toggle sidebar at all widths; hamburger appears when sidebar is closed