blob: 8005a2f4fb31098e34b68cf3d30288c9c93dc5d9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# Frontend handoff — workspace id on conversation.open / statusChanged
## What changed
The backend now resolves the conversation's actual persisted workspace id and
includes it on the WS broadcast for both `conversation.open` and
`conversation.statusChanged`.
- `@dispatch/transport-contract` `0.18.0 → 0.19.0` — additive `workspaceId: string`
on both `ConversationOpenMessage` and `ConversationStatusChangedMessage`.
- The backend uses the conversation's stored workspace (`"default"` fallback),
not the per-turn start option.
## What the frontend must do
1. **Re-pin the `file:` dep** on `@dispatch/transport-contract` from the backend
repo once this commit lands.
2. **Re-mirror `.dispatch/transport-contract.reference.md`** to match the `0.19.0`
contract.
3. **Parser update** (`src/adapters/ws/logic.ts:116-123`): parse `workspaceId`
from the incoming `conversation.open` and `conversation.statusChanged` messages.
4. **`openConversation()`** (`src/app/store.svelte.ts:588-600`): use the message's
`workspaceId` to stamp/focus the tab instead of `activeWorkspaceId` (the
viewer's current workspace). This fixes the bug where a tab opened via the
CLI `--open --workspace my-ws` was appearing in every workspace.
5. **`onConversationStatusChanged()`** (`src/app/store.svelte.ts:703-718`): same
fix when the FE calls `openConversation(conversationId)` on a status change and
has no existing tab — use the `workspaceId` from the message.
6. **Tests** (`logic.test.ts`, `index.test.ts`, `App.test.ts`, `conformance.test.ts`):
update fixtures/assertions to carry `workspaceId`.
## Backend status
- `@dispatch/transport-contract`: `0.19.0` with additive `workspaceId`.
- `session-orchestrator`: payload types widened; status-change emits resolve
workspace id from store.
- `transport-ws`: broadcasts include `workspaceId`.
- `transport-http`: `POST /conversations/:id/open` resolves workspace id and emits
it.
- Verified: `tsc -b` EXIT 0, biome clean, **1405 vitest** green.
## Note on assumptions
I'm working autonomously while the user is away. Every assumption I make is
recorded in `notes/assumptions-log.md` in this repo. Please record any
assumptions you make while implementing this handoff in your own assumptions log
so we can raise them when the user returns.
|