feat(header): session tabs are opt-in

Default off; the changelog entry points at Settings → General →
Navigation → Session tabs and mentions the Alt+W close shortcut.
This commit is contained in:
Bohdan Triapitsyn
2026-08-25 00:50:19 +03:00
parent b6e14cbf21
commit 8458d2a446
2 changed files with 4 additions and 3 deletions
+2 -1
View File
@@ -13,7 +13,8 @@ All notable changes to this project will be documented in this file.
- **Terminal:** terminals no longer vanish or die behind your back. Opening the app in another browser tab, on another device, or after a reload now shows the terminals already running on the server instead of an empty list, and terminals sitting in background tabs are no longer closed by the server's idle cleanup while the app is open.
- Chat: @ file mentions now rank files and directories together by how well they match, so the file you typed is at the top instead of below unrelated directories. Multi-word queries match in any order, and long paths keep the folder next to the file name visible so identical-looking index.md rows are distinguishable.
- Search: Ctrl/Cmd+P now matches the whole file path, not just the file name — searching a folder name like "solo-is-a" finds the file inside it.
- **Session tabs:** the web/desktop header now shows your open sessions as browser-style tabs — every session you open joins the strip, clicking a tab switches the whole workspace (chat, project, panels), and closing one never touches the session itself. Tabs reorder by drag, scroll behind the header buttons when there are many, carry the sidebar's running/unread dot, and show the sidebar's info tooltip (project, branch, PR status) on hover. Each tab has the full session menu — on the "..." button or right-click — plus Close other tabs; renaming works right in the tab.
- **Session tabs (opt-in):** the web/desktop header can show your open sessions as browser-style tabs — turn them on in Settings → General → Navigation → Session tabs. Every session you open joins the strip, clicking a tab switches the whole workspace (chat, project, panels), and closing one (its × button, middle-click, or Alt+W — rebindable in Shortcuts) never touches the session itself. Tabs reorder by drag, scroll behind the header buttons when there are many, carry the sidebar's running/unread dot, and show the sidebar's info tooltip (project, branch, PR status) on hover. Each tab has the full session menu — on the "..." button or right-click — plus Close other tabs; renaming works right in the tab.
- Files: the editor toolbar is now always docked under the file tabs; the floating hover toolbar and its setting were removed.
- **Search in dropdowns:** every searchable picker — branches, projects, agents, models, providers, stashes, SSH hosts, skills, archived sessions — now uses one matcher: best matches come first, multi-word queries match in any order, and punctuation doesn't matter (so "gpt4o" finds "gpt-4o"). The git branch and gitmoji pickers also stopped silently dropping rows that a second, built-in filter didn't like. Sidebar session search and the Todos/Memory/Plans/Notes filters match the same way now.
- Terminal: mobile keyboards no longer capitalize the first letter of every command on iOS and Android.
- Mobile: narrowing a browser window past phone size now switches into the mobile app layout (and back when widened) instead of squeezing the desktop layout. The old/new mobile layout setting is gone — phones always get the mobile layout.
+2 -2
View File
@@ -750,7 +750,7 @@ interface UIStore {
maxLastMessageLength: number; // chars — truncate {last_message} when summarization is off
showTerminalQuickKeysOnDesktop: boolean;
/** Header session tabs (web/desktop). Off restores the plain session title. */
/** Header session tabs (web/desktop), opt-in. Off keeps the plain session title. */
sessionTabsEnabled: boolean;
persistChatDraft: boolean;
showOpenCodeUpdateNotifications: boolean;
@@ -1093,7 +1093,7 @@ export const useUIStore = create<UIStore>()(
maxLastMessageLength: 250,
showTerminalQuickKeysOnDesktop: false,
sessionTabsEnabled: true,
sessionTabsEnabled: false,
persistChatDraft: true,
showOpenCodeUpdateNotifications: !isWindowsArm64(),
agentControlToolEnabled: true,