From 3671b82cc624117476e30b95eaf7d2bc3b34ae28 Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Tue, 2 Jun 2026 13:18:57 +0900 Subject: fix(frontend): honest effort display in agent UI (gemini review) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Address two UI-accuracy issues found in review: - AgentBuilder: the per-model effort select no longer disguises an unset value as 'High'. Adds an explicit 'Inherit' option; choosing it strips the effort key so the saved TOML omits it (and the call site falls back to per-tab → default), matching displayed intent to persisted state. - ModelSelector: effort badges for models without an explicit override now reflect the actual effective effort (per-tab selector → default) instead of always showing the default constant, mirroring backend resolution. --- .../frontend/src/lib/components/AgentBuilder.svelte | 19 +++++++++++++++---- .../frontend/src/lib/components/ModelSelector.svelte | 12 ++++++++---- 2 files changed, 23 insertions(+), 8 deletions(-) (limited to 'packages/frontend/src/lib') diff --git a/packages/frontend/src/lib/components/AgentBuilder.svelte b/packages/frontend/src/lib/components/AgentBuilder.svelte index bbdb83c..f1c9cdf 100644 --- a/packages/frontend/src/lib/components/AgentBuilder.svelte +++ b/packages/frontend/src/lib/components/AgentBuilder.svelte @@ -180,7 +180,17 @@ const modelCache = new Map(); } function setEffortEntry(i: number, effort: string) { - formModels = formModels.map((m, idx) => (idx === i ? { ...m, effort } : m)); + formModels = formModels.map((m, idx) => { + if (idx !== i) return m; + // Empty string = "inherit" (no per-model override). Strip the key so + // the saved TOML omits `effort` and the call site falls back to the + // per-tab selector / default. + if (!effort) { + const { effort: _dropped, ...rest } = m; + return rest; + } + return { ...m, effort }; + }); } async function openKeyModal(i: number) { @@ -557,11 +567,12 @@ const modelCache = new Map(); {entry.model_id || "Select Model"}