From 7b9763951cbbaa366b506d1628414c6a883b7d0b Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Wed, 12 Aug 2026 22:21:23 +0900 Subject: fix(models): verify persisted-state migration write-back + numbered probe fixtures - app/store.test: the persisted-tab migration test now also asserts the migrated opencode-1/ value was ACTUALLY written back to the storage adapter (dispatch.tabs), not merely changed in memory, and that no legacy opencode/ value remains (idempotent; issue 7). - scripts/live-probe + live-probe-provider-retry: default PROBE_MODEL and usage examples updated from the obsolete 'opencode/' namespace to numbered 'opencode-1/' so generic fixtures no longer normalize the old namespace as ordinary valid data (issue 8). Verification: bun run typecheck (0 errors), bun run test (1179 passed), bun run check (clean, exit 0), bun run build (vite OK). --- src/app/store.test.ts | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/app/store.test.ts b/src/app/store.test.ts index 16d1760..e172c8f 100644 --- a/src/app/store.test.ts +++ b/src/app/store.test.ts @@ -652,6 +652,14 @@ describe("createAppStore", () => { const restored = store.tabs.find((t) => t.conversationId === "c-legacy"); expect(restored?.model).toBe("opencode-1/deepseek-v4-flash"); expect(store.activeModel).toBe("opencode-1/deepseek-v4-flash"); + // Issue 7: the migrated tab state is ACTUALLY written back to the storage + // adapter immediately (not merely kept in memory) — a re-load is now a no-op. + const persisted = JSON.parse(storage.getItem("dispatch.tabs") ?? "") as { + tabs: Array<{ conversationId: string; model: string }>; + }; + const persistedModel = persisted.tabs.find((t) => t.conversationId === "c-legacy")?.model; + expect(persistedModel).toBe("opencode-1/deepseek-v4-flash"); + expect(persisted.tabs.some((t) => t.model.startsWith("opencode/"))).toBe(false); store.dispose(); }); -- cgit v1.2.3