Open notes in standalone windows#5642
Conversation
✅ Deploy Preview for old-char canceled.
|
9657925 to
56a64a7
Compare
56a64a7 to
7314dc7
Compare
Adds a note-specific native window route and wires sidebar double-click to open the existing note view in that window. Includes regression coverage for the sidebar double-click path.
7314dc7 to
f989422
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 3 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 f989422. Configure here.
| type: "sessions", | ||
| }) satisfies Extract<Tab, { type: "sessions" }>, | ||
| [sessionId], | ||
| ); |
There was a problem hiding this comment.
Standalone note view tabs stuck
High Severity
The standalone route builds a session tab with fixed state.view: null and never updates it. TabContentNote derives the active editor view from that prop, while header tab changes only update the tabs store. Raw, transcript, and enhanced switching in a standalone note window therefore does not stick.
Reviewed by Cursor Bugbot for commit f989422. Configure here.
| } | ||
| }, []); | ||
|
|
||
| useMountEffect(() => clearPendingClick); |
There was a problem hiding this comment.
Click timeout lacks unmount cleanup
Medium Severity
useMountEffect(() => clearPendingClick) runs clearPendingClick on mount instead of registering it as effect cleanup. If the button unmounts during the 200ms single-click delay, the timer can still fire and invoke onClick afterward.
Reviewed by Cursor Bugbot for commit f989422. Configure here.
| className={cn([ | ||
| "pointer-events-none absolute inset-y-0 flex items-center", | ||
| reserveCollapsedLiveControls ? "right-[153px]" : "right-[70px]", | ||
| showSidebarTimelineHeaderGutter |
There was a problem hiding this comment.
Standalone header keeps sidebar gutter
Medium Severity
OuterHeader still applies main-window sidebar gutter padding (pl-[156px]) from shell state when standaloneWindow is true. Toggling sidebar state (e.g. mod+\) in a standalone note window shifts the header layout even though no sidebar is shown.
Reviewed by Cursor Bugbot for commit f989422. Configure here.


Adds a note-specific native window route and wires sidebar double-click to open the existing note view in that window. Includes regression coverage for the sidebar double-click path.
Note
Medium Risk
Introduces a new window lifecycle and route keyed by session id; behavior change for how users open notes from the sidebar, but reuses the existing note UI and STT/session store.
Overview
Users can open a note in its own native window instead of only in the main app tab strip. The windows plugin gains an
AppWindownotevariant (session id) that loads/app/note/{sessionId}in a resizable window (~720×820).A new TanStack route renders the existing
TabContentNoteinsideStandaloneWindowShell, passingstandaloneWindowsoOuterHeaderuses a tighter title drag region (no main-window sidebar gutters).Sidebar timeline session rows now call
windowShow({ type: "note", value: sessionId })on double-click and via "Open in New Window" in the context menu; "Open in New Tab" is removed for sessions (events unchanged).InteractiveButtondelays single-click by 200ms whenonDoubleClickis set so double-click does not also open the tab.Regression tests cover delayed single-click, double-click, and the context-menu action.
Reviewed by Cursor Bugbot for commit f989422. Bugbot is set up for automated code reviews on this repo. Configure here.
This is part 1 of 2 in a stack made with GitButler: