summaryrefslogtreecommitdiffhomepage
path: root/backend-handoff.md
diff options
context:
space:
mode:
Diffstat (limited to 'backend-handoff.md')
-rw-r--r--backend-handoff.md12
1 files changed, 10 insertions, 2 deletions
diff --git a/backend-handoff.md b/backend-handoff.md
index 6a1b420..b0b0494 100644
--- a/backend-handoff.md
+++ b/backend-handoff.md
@@ -5,7 +5,7 @@
> **From:** dispatch-web orchestrator · **To:** arch-rewrite orchestrator · **Courier:** the user.
> `lsp` does NOT span the repos (ORCHESTRATOR §5) — every cross-repo ask flows through here.
-_Last updated: 2026-06-06 — Slice 2 LIVE-VERIFIED end-to-end against the running backend (9/9). ✅_
+_Last updated: 2026-06-06 — Slice 3 (tabs + model selector + DaisyUI) FE-complete; no new backend asks._
---
@@ -14,7 +14,8 @@ _Last updated: 2026-06-06 — Slice 2 LIVE-VERIFIED end-to-end against the runni
| Slice | State |
|---|---|
| **Slice 1** — surface system + WS + composition root | ✅ DONE, committed, green. |
-| **Slice 2** — conversation transcript: cache + delta streaming (design §6) | ✅ DONE + **LIVE-VERIFIED** — svelte-check 0/0, **221 vitest**, biome clean, build ok; live e2e probe **9/9** against `bin/up` (see §6). |
+| **Slice 2** — conversation transcript: cache + delta streaming (design §6) | ✅ DONE + **LIVE-VERIFIED** — live e2e probe **9/9** against `bin/up` (see §6). |
+| **Slice 3** — tabs (multi-conversation) + model selector + DaisyUI/dracula | ✅ FE-COMPLETE — svelte-check 0/0, **281 vitest**, biome clean, build ok. Per-tab chat stores, one WS routed by `conversationId`, local-forget on tab close, tabs persisted to localStorage. No backend change needed. |
**Slice 2 units built** (all pure-core / injected-shell, single-owner): `core/chunks` (the one
transcript reducer) · `core/wire` (contract-conformance drift guard) · `adapters/ws` (now multiplexes
@@ -47,6 +48,13 @@ Mirrored in-repo for headless agents: `.dispatch/ui-contract.reference.md`, `.di
- ✅ Wire-types split, per-chunk `seq`, history endpoint, WS chat multiplexing, CORS — all delivered
(backend commit `812621c`).
+### 3.2a Finding — model is NOT persisted/exposed per conversation (FE handled it)
+`model` is a per-turn `ChatRequest` field only; `session-orchestrator` resolves it per `handleMessage`
+and never stores it, and `conversation-store`/`ConversationHistoryResponse` carry no model. So the FE
+**persists the selected model per tab** (localStorage). No action needed. OPTIONAL future nicety: if
+you ever persist + expose a per-conversation "last model" (e.g. on the `GET /conversations` list when
+it lands), the FE could seed a reopened tab's model from the server instead of localStorage.
+
### 3.2 FYI — non-blocking gotcha (no action required unless you publish externally)
- **`workspace:*` breaks external `file:` consumption under bun.** `transport-contract`'s deps are
`@dispatch/ui-contract`/`@dispatch/wire` at `workspace:*`; `bun install` from dispatch-web could not