You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug]: Settle shortcut keeps the settled thread open instead of moving to the next thread #16090
I searched existing issues and did not find a duplicate.
I included enough detail to reproduce or investigate the problem.
Area
apps/web
Steps to reproduce
Open a thread in the active list of the sidebar (web or desktop).
Press the thread.settle shortcut (mod+shift+s by default).
Expected behavior
The app settles the thread and opens the next active thread, the same as the sidebar Settle button or a drag onto the Settled header. If no active thread remains, it opens a new draft in the same project.
Actual behavior
The app settles the thread but keeps it open. To continue, you must select the next thread by hand.
The sidebar paths call planForwardNavigation (apps/web/src/components/Sidebar.tsx) before they settle and navigate after the settle succeeds. The shortcut handler in apps/web/src/components/ChatView.tsx (command === "thread.settle") calls settleThread only. Settle thread in the thread menu (apps/web/src/hooks/useThreadActionMenu.ts) also does not navigate.
Thanks for the clear repro and the pointer into the two code paths, @jpsirois. On main at 1604ccc9d7, settling the open thread from the sidebar already moves you forward. The settle shortcut and the chat title menu do not.
What I found
planForwardNavigation in apps/web/src/components/Sidebar.tsx picks the next card before the settle runs, then navigates only if the settle succeeds and you are still on that thread (shouldNavigateAfterThreadPark). The next card is the next active thread that is not settled, snoozed, or leaving in the same batch. If none remains, it opens a new draft in the same project. The sidebar Settle button, a drop on the Settled header, and Settle thread in the sidebar context menu all use this path.
Two other actions call settleThread and stay put:
thread.settle (mod+shift+s) in apps/web/src/components/ChatView.tsx settles the open thread and leaves it open. If that thread is already settled, the same shortcut un-settles it.
Settle thread in the chat title menu (apps/web/src/hooks/useThreadActionMenu.ts, opened from ChatHeader) does the same. That menu is always the open thread, which is the case the sidebar treats as parking the thread you are looking at.
The sidebar context menu is not part of this gap. It already calls attemptSettle.
The shortcut was added in feat(web): settle and restore threads with a keyboard shortcut #8089 as a settle/restore toggle that stays on the current thread. Moving forward would change the next press: it would settle the next thread instead of restoring the one you just settled. Restore would still work after you go back to that settled thread. The title-menu action is not a toggle, so it is a clearer candidate to follow the sidebar rule. Snooze from that same title menu also skips the forward navigation the sidebar snooze button uses.
Have the chat title Settle thread action share the sidebar attemptSettle / planForwardNavigation path.
Decide whether thread.settle should keep its stay-put toggle behavior, or also move forward after settling an active thread (with restore still available once you reopen that thread).
I have a small fix on a local branch and tested it locally: thread.settle now uses the same settle-and-advance step as the sidebar Settle button. The sidebar registers its handler, and the shortcut calls it. Without a mounted sidebar, the shortcut settles in place as before. The chat title menu stays as it is, because its comment says it stays on the thread by design.
Trade-off: a second press now settles the next thread instead of restoring the one you just settled. Restore still works when you go back to the settled thread.
Is this the direction you want? If yes, I will open the PR.
+1 to this. From the user's perspective, it doesn't make sense that I would see one behavior when using a keybind to settle and another when using a mouse click to settle. Settling is how I triage tasks, and once something is settled I don't want it in front of me any more.
Activity
juliusmarminge commentedon Oct 5, 2026
Note
Grok responding on behalf of Julius.
Triage
Thanks for the clear repro and the pointer into the two code paths, @jpsirois. On
mainat1604ccc9d7, settling the open thread from the sidebar already moves you forward. The settle shortcut and the chat title menu do not.What I found
planForwardNavigationinapps/web/src/components/Sidebar.tsxpicks the next card before the settle runs, then navigates only if the settle succeeds and you are still on that thread (shouldNavigateAfterThreadPark). The next card is the next active thread that is not settled, snoozed, or leaving in the same batch. If none remains, it opens a new draft in the same project. The sidebar Settle button, a drop on the Settled header, and Settle thread in the sidebar context menu all use this path.settleThreadand stay put:thread.settle(mod+shift+s) inapps/web/src/components/ChatView.tsxsettles the open thread and leaves it open. If that thread is already settled, the same shortcut un-settles it.apps/web/src/hooks/useThreadActionMenu.ts, opened fromChatHeader) does the same. That menu is always the open thread, which is the case the sidebar treats as parking the thread you are looking at.attemptSettle.thread.settleshortcut. Related open feat(web): settle the thread with mod+w on desktop #15688 mapsmod+wto settle but also does not navigate.Likely fix area
attemptSettle/planForwardNavigationpath.thread.settleshould keep its stay-put toggle behavior, or also move forward after settling an active thread (with restore still available once you reopen that thread).A maintainer will decide on the fix direction.
jpsirois commentedon Oct 5, 2026
I have a small fix on a local branch and tested it locally:
thread.settlenow uses the same settle-and-advance step as the sidebar Settle button. The sidebar registers its handler, and the shortcut calls it. Without a mounted sidebar, the shortcut settles in place as before. The chat title menu stays as it is, because its comment says it stays on the thread by design.Trade-off: a second press now settles the next thread instead of restoring the one you just settled. Restore still works when you go back to the settled thread.
Is this the direction you want? If yes, I will open the PR.
HerbCaudill commentedon Oct 12, 2026
+1 to this. From the user's perspective, it doesn't make sense that I would see one behavior when using a keybind to settle and another when using a mouse click to settle. Settling is how I triage tasks, and once something is settled I don't want it in front of me any more.