From baa6f6c9d21de2f6ffc60e00f53c61d026155933 Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Fri, 12 Jun 2026 20:38:57 +0900 Subject: feat(chat): reasoning-effort selector — sticky per-conversation thinking-depth knob MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Consume the backend's reasoning-effort handoff (wire@0.7.0 ReasoningEffort + transport-contract@0.11.0 GET/PUT /conversations/:id/reasoning-effort, ChatRequest.reasoningEffort): a 5-level selector in the sidebar Model view, under the provider + model dropdowns. null renders as 'high (default)' per the server-owned resolution chain; PUT on change (effective next turn); error + revert on 400; per-conversation re-mount incl. drafts (the draft id survives promotion, so an effort set on a draft applies from turn 1). Re-mirrored .dispatch references; GLOSSARY 'reasoning effort'; handoff updated. 616 tests green; live curl probe passed. --- src/app/App.svelte | 21 ++++- src/app/store.svelte.ts | 82 ++++++++++++++++++ src/app/store.test.ts | 97 ++++++++++++++++++++++ src/features/chat/index.ts | 13 +++ src/features/chat/reasoning-effort.test.ts | 45 ++++++++++ src/features/chat/reasoning-effort.ts | 66 +++++++++++++++ src/features/chat/ui.test.ts | 74 +++++++++++++++++ .../chat/ui/ReasoningEffortSelector.svelte | 75 +++++++++++++++++ 8 files changed, 470 insertions(+), 3 deletions(-) create mode 100644 src/features/chat/reasoning-effort.test.ts create mode 100644 src/features/chat/reasoning-effort.ts create mode 100644 src/features/chat/ui/ReasoningEffortSelector.svelte (limited to 'src') diff --git a/src/app/App.svelte b/src/app/App.svelte index 4c5a82b..dffa937 100644 --- a/src/app/App.svelte +++ b/src/app/App.svelte @@ -1,4 +1,5 @@ + +
+ Reasoning effort +
+ + {#if saving} + + {/if} +
+ {#if error} +

{error}

+ {:else if justSaved} +

Saved — applies from the next turn.

+ {:else} +

+ How long the model thinks before answering. Changing it can re-prefill the prompt cache once. +

+ {/if} +
-- cgit v1.2.3