feat(desktop): add sidebar timeline setting#5366
Conversation
0bb8067 to
e88dbfc
Compare
✅ Deploy Preview for old-char canceled.
|
e88dbfc to
243f5cb
Compare
243f5cb to
6f9f4a7
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 6f9f4a7. Configure here.
| }); | ||
|
|
||
| it("hides while the chat modal is open", () => { | ||
| mocks.chatMode = "ModalOpen"; |
There was a problem hiding this comment.
Test mocks use nonexistent ModalOpen chat mode value
Medium Severity
Multiple test files mock chat.mode as "ModalOpen", but ChatMode is defined as "FloatingOpen" | "FloatingClosed". The production code checks chat.mode === "FloatingOpen", so mocking "ModalOpen" simulates a closed chat rather than an open one. This causes tests like "hides while the chat modal is open" in chat-cta.test.tsx and "closes the chat modal before going home on escape" in useTabsShortcuts.test.tsx to either fail or silently pass while testing the wrong scenario.
Additional Locations (2)
Reviewed by Cursor Bugbot for commit 6f9f4a7. Configure here.
33fd9e5 to
bace6ce
Compare
Add a persisted app setting that lets users show the timeline in the left sidebar instead of the top timeline.
Show calendar and history controls in the top row for sidebar timeline mode and restore the macOS traffic-light offset.
Remove the right-side chat panel path and open chat in an in-window modal from the floating CTA and keyboard shortcut.
Show Settings, Calendar, and Contacts titles in the sidebar chrome with a back control that matches Escape behavior.
Only fade sidebar timeline content when it can scroll past the corresponding edge.
Summarize the first user request into a chat group title while keeping an immediate fallback title.
Use the floating CTA dark surface across the in-window chat modal and its toolbar, messages, and empty states.
Replace the floating chat close icon with an expand/collapse control, make the collapsed modal resizable, and add title-area padding.
Use softer scale, blur, and shorter travel for the floating chat modal entrance and exit.
Make the top 48px of left-edge main surfaces draggable and cover the behavior in main shell tests.
Remove the titlebar calendar icon, restore the upward-scroll calendar chip, and start the sidebar timeline near today.
Add the left-edge back navigation control to calendar mode and cover it in main shell tests.
Use the main Escape shortcut action for the calendar left chrome back button.
Show the Escape-backed left chrome button on settings and contacts sidebars.
Show the Escape-backed left chrome button on settings and contacts sidebars.
Use the shared left-surface chrome condition for the back button overlay.
Show a Stop listening button in the session header when sidebar timeline mode hides the top timeline.
Keep footer accessory borders intact and only square the bottom-left corner of the main surface when bottom content attaches.
Set the session header to 48px tall and increase the title field text size.
Use the left-surface sidebar and main chrome treatment for templates.
bace6ce to
4a81d99
Compare


Add a persisted app setting that lets users show the timeline in the left sidebar instead of the top timeline.
This is part 1 of 3 in a stack made with GitButler:
Note
Medium Risk
Large desktop shell and chat UX refactor (layout modes, chat state machine, window drag) touches many surfaces; regressions in navigation, escape shortcuts, or chat open/close are likely though not security-critical.
Overview
Adds a persisted Show timeline in sidebar setting (
sidebar_timeline_enabled, default off) and rewires the main shell when it is on: the meeting timeline lives in the left sidebar instead of the top bar, with matching main surface chrome (left vs top vs default), Tauri titlebar drag regions, sidebar back/forward controls, and optional window dragging from the top of the main content area. Session headers gain a Stop listening control in this mode, and General settings are split into App vs Meetings sections with updated copy/i18n.Chat no longer uses a resizable right-hand panel or native window width expansion; it opens as a floating dark overlay (
FloatingOpen/FloatingClosed) with resize handles, expand/collapse, motion, and updated empty-state, message, input, and toolbar styling. Opening chat from the CTA usesOPENinstead ofOPEN_RIGHT_PANEL. New chats get an immediate truncated fallback title and optional AI-generated titles via a dedicated title model.Shared
CustomSidebarHeader(home, optional history) replaces ad-hoc headers on calendar, contacts, settings, templates, and contacts list chrome. The left timeline UI picks up scroll fades, Now chips, and layout tweaks for the inset chrome; calendar/contact headers add drag-region attributes for Tauri.Reviewed by Cursor Bugbot for commit 4a81d99. Bugbot is set up for automated code reviews on this repo. Configure here.