From 42cada78db1e58947074f12dcf7c8e41fc501b40 Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Sun, 2 Aug 2026 13:49:14 +0900 Subject: feat(vision): add dedicated Vision settings view, move vision model setting out of Compaction --- src/app/App.svelte | 8 +++++--- src/app/App.test.ts | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/app/App.svelte b/src/app/App.svelte index f0cd7ec..e50648a 100644 --- a/src/app/App.svelte +++ b/src/app/App.svelte @@ -125,6 +125,7 @@ { id: "cache-warming", label: "Cache Warming" }, { id: "tasks", label: "Tasks" }, { id: "compaction", label: "Compaction" }, + { id: "vision", label: "Vision" }, { id: "heartbeat", label: "Heartbeat" }, { id: "concurrency", label: "Concurrency" }, { id: "system-prompt", label: "System Prompt" }, @@ -814,8 +815,7 @@ {/key} {:else if kind === "compaction"} + can't bleed across tabs). --> {#key store.currentConversationId} {/key} -
Image compaction
+ {:else if kind === "vision"} + { store.dispose(); }); + + it("the Vision view renders the vision settings UI (image limit + compaction model)", async () => { + const ws = fakeSocket(); + const store = createAppStore({ + socketFactory: () => ws, + fetchImpl: fakeFetchImpl(), + localStorage: createFakeStorageWithViews(["vision"]), + }); + ws.resolveOpen(); + + render(App, { props: { store, onNavigate: vi.fn() } }); + + // The vision settings load (`GET /settings/vision`) seeds the inputs. + expect(await screen.findByLabelText(/Image limit/)).toBeInTheDocument(); + expect(await screen.findByLabelText(/Compaction model/)).toBeInTheDocument(); + + store.dispose(); + }); }); -- cgit v1.2.3