qwen-code/packages/web-shell/client/utils
Shaojin Wen adf2caea39
feat(web-shell): persist the split view across refresh, per tab (#7136)
The split view (2+ sessions side by side) was lost on every refresh: its
pane set lived only in React state, and the one-shot ?split= deep link is
consumed on load. Persist the live session set to sessionStorage while the
split is the active view, and restore it on load when no ?split= deep link
is present, so a refresh brings the split back.

sessionStorage (not localStorage) is deliberate: it is scoped per browser
tab, so a split opened in its own tab and the in-window split never clobber
each other, and a fresh unrelated tab restores nothing — while still
surviving a refresh of the same tab. The ?split= URL stays the shareable,
cross-tab channel.

Only an explicit close (the split's back button) clears the persisted set;
detours to a single session keep it, so the split is treated as the user's
lasting context until they close it. Controlled hosts (which own their split
lifecycle) never auto-persist or auto-restore.

Co-authored-by: wenshao <wenshao@example.com>
2026-07-18 08:29:23 +00:00
..
ansi.ts feat(daemon): merge daemon-mode feature batch into main (#4490) 2026-06-12 00:34:49 +08:00
askUserPermission.test.ts feat(tui): Ctrl+O frozen transcript view and unified tool output rendering (#5666) 2026-07-09 23:40:29 +00:00
askUserPermission.ts feat(web-shell): add Session Overview panel and in-window split view (#6400) 2026-07-07 02:44:18 +00:00
commandDisplay.ts feat(daemon): merge daemon-mode feature batch into main (#4490) 2026-06-12 00:34:49 +08:00
composerInputState.test.ts fix(web-shell): optionally restart SSE after prompt admission (#7080) 2026-07-17 16:13:39 +00:00
composerInputState.ts fix(web-shell): optionally restart SSE after prompt admission (#7080) 2026-07-17 16:13:39 +00:00
composerModels.ts feat(web-shell): restore the full composer in split-view panes (#6510) 2026-07-08 07:01:36 +00:00
composerTag.test.ts fix(web-shell): render built-in tag icons (#7024) 2026-07-17 15:33:34 +00:00
composerTag.ts fix(web-shell): render built-in tag icons (#7024) 2026-07-17 15:33:34 +00:00
copyCommand.test.ts feat(daemon): merge daemon-mode feature batch into main (#4490) 2026-06-12 00:34:49 +08:00
copyCommand.ts feat(daemon): merge daemon-mode feature batch into main (#4490) 2026-06-12 00:34:49 +08:00
cssUrlVar.test.ts feat(web-shell): support icon chips for mention tags (#6337) 2026-07-05 13:25:32 +00:00
cssUrlVar.ts feat(web-shell): support icon chips for mention tags (#6337) 2026-07-05 13:25:32 +00:00
dialogLabels.ts refactor(web-shell): restructure chat UI (#5775) 2026-06-23 22:43:19 +08:00
dom.ts feat(daemon): merge daemon-mode feature batch into main (#4490) 2026-06-12 00:34:49 +08:00
errorDetail.ts feat(serve): add workspace MCP management (#6954) 2026-07-16 02:24:07 +00:00
escapeIntent.test.ts feat(web-shell): friendlier Esc interruption + queued-prompt UX (#6025) 2026-06-30 01:27:16 +00:00
escapeIntent.ts feat(web-shell): friendlier Esc interruption + queued-prompt UX (#6025) 2026-06-30 01:27:16 +00:00
formatRelativeTime.ts feat(daemon): merge daemon-mode feature batch into main (#4490) 2026-06-12 00:34:49 +08:00
formatRuntime.ts feat(daemon): merge daemon-mode feature batch into main (#4490) 2026-06-12 00:34:49 +08:00
formatTokenCount.ts feat(web-shell): add token-usage analytics dashboard to Daemon Status (#6388) 2026-07-06 13:43:41 +00:00
localCommandQueue.test.ts feat(web-shell): queue prompts while turns are running (#6005) 2026-06-30 14:51:28 +00:00
localCommandQueue.ts feat(web-shell): queue prompts while turns are running (#6005) 2026-06-30 14:51:28 +00:00
modelDisplay.ts feat(web-shell): polish chat UI (#5893) 2026-06-26 15:38:23 +00:00
modelEncoding.test.ts fix(web-shell): encode vision model picker selection & polish dispatch (#6236) 2026-07-03 13:51:47 +00:00
modelEncoding.ts fix(web-shell): encode vision model picker selection & polish dispatch (#6236) 2026-07-03 13:51:47 +00:00
modelSwitchMessages.test.ts feat(web-shell): polish chat UI (#5893) 2026-06-26 15:38:23 +00:00
modelSwitchMessages.ts feat(web-shell): polish chat UI (#5893) 2026-06-26 15:38:23 +00:00
queueDrain.test.ts feat(web-shell): friendlier Esc interruption + queued-prompt UX (#6025) 2026-06-30 01:27:16 +00:00
queueDrain.ts feat(web-shell): friendlier Esc interruption + queued-prompt UX (#6025) 2026-06-30 01:27:16 +00:00
sentinelMessage.ts feat(daemon): merge daemon-mode feature batch into main (#4490) 2026-06-12 00:34:49 +08:00
sessionPreparation.test.ts fix(web-shell): filter sessions by source (#6995) 2026-07-16 04:56:50 +00:00
sessionPreparation.ts fix(web-shell): filter sessions by source (#6995) 2026-07-16 04:56:50 +00:00
slashSectionPlan.test.ts feat(web-shell): improve slash command discovery (taller menu, group counts, fuzzy search) (#6267) 2026-07-03 14:56:06 +00:00
slashSectionPlan.ts feat(web-shell): improve slash command discovery (taller menu, group counts, fuzzy search) (#6267) 2026-07-03 14:56:06 +00:00
splitUrl.test.ts feat(web-shell): persist the split view across refresh, per tab (#7136) 2026-07-18 08:29:23 +00:00
splitUrl.ts feat(web-shell): persist the split view across refresh, per tab (#7136) 2026-07-18 08:29:23 +00:00
systemInfo.ts feat(daemon): merge daemon-mode feature batch into main (#4490) 2026-06-12 00:34:49 +08:00
todos.test.ts fix(web-shell): clear stale floating todos (#6425) 2026-07-07 08:59:53 +00:00
todos.ts fix(web-shell): clear stale floating todos (#6425) 2026-07-07 08:59:53 +00:00
workspace.test.ts feat(web-shell): flesh out the multi-workspace split view (cross-workspace sessions, workspace labels, responsive layout) (#6746) 2026-07-12 11:55:21 +00:00
workspace.ts feat(web-shell): flesh out the multi-workspace split view (cross-workspace sessions, workspace labels, responsive layout) (#6746) 2026-07-12 11:55:21 +00:00
workspaceColor.test.ts feat(web-shell): color-code each split pane by workspace (#6971) 2026-07-16 02:38:58 +00:00
workspaceColor.ts feat(web-shell): color-code each split pane by workspace (#6971) 2026-07-16 02:38:58 +00:00