summaryrefslogtreecommitdiffhomepage
path: root/src/app/App.svelte
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-22 00:36:31 +0900
committerAdam Malczewski <[email protected]>2026-06-22 00:36:31 +0900
commit250575df308469c58477a53865f8763084612e5f (patch)
tree1966514e814faf6170ac7d2e7f76ac3ecaff77f6 /src/app/App.svelte
parent3be12bccbd7eed767968e18f460693325093006a (diff)
downloaddispatch-web-250575df308469c58477a53865f8763084612e5f.tar.gz
dispatch-web-250575df308469c58477a53865f8763084612e5f.zip
feat(tabs): cross-device tab sync via conversation lifecycle
Consume the conversation lifecycle handoff ([email protected], [email protected]). Re-pinned file: deps + re-mirrored .dispatch/*.reference.md. - fetchOpenConversations() on connect: GET /conversations?status=active,idle restores the tab bar across devices (merges with localStorage — opens new tabs, removes closed ones, updates titles from backend) - conversation.statusChanged WS handler: closed → removeTabLocally (no re-POST); active → open tab + spinner; idle → update status map - conversation.compacted WS handler: dispose stale store + cache, reload history from server - TabBar shows a spinner on active conversations (statusFor prop) - closeTab refactored to use removeTabLocally (extracted cleanup) - conformance guards + WS adapter tests cover all 3 new WsServerMessage types 686 tests green.
Diffstat (limited to 'src/app/App.svelte')
-rw-r--r--src/app/App.svelte1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/app/App.svelte b/src/app/App.svelte
index 2b3b250..e065759 100644
--- a/src/app/App.svelte
+++ b/src/app/App.svelte
@@ -257,6 +257,7 @@
<TabBar
tabs={store.tabs}
activeConversationId={store.activeConversationId}
+ statusFor={(id) => store.conversationStatus(id)}
onSelect={(id) => store.selectTab(id)}
onClose={(id) => store.closeTab(id)}
onNewDraft={() => store.newDraft()}