diff --git a/docs/plans/state.json b/docs/plans/state.json index 250c344..956fdee 100644 --- a/docs/plans/state.json +++ b/docs/plans/state.json @@ -5710,6 +5710,17 @@ "docs/plans/state.json" ], "test_status": "pnpm test:run src/gateway/handlers/handlers.test.ts + pnpm typecheck passing" + }, + "dashboard-model-defaults-draft-preservation": { + "status": "completed", + "date": "2026-02-19", + "updated": "2026-02-19", + "summary": "Fixed Model Tier Defaults dropdown reset during periodic dashboard refresh by preserving unsaved form draft state (tiers, delegation, and background override settings) across Assistant Health rerenders until saved.", + "files_modified": [ + "src/gateway/ui/pages/dashboard.js", + "docs/plans/state.json" + ], + "test_status": "pnpm typecheck passing" } }, "overall_progress": { diff --git a/src/gateway/ui/pages/dashboard.js b/src/gateway/ui/pages/dashboard.js index 10d5822..0949fdd 100644 --- a/src/gateway/ui/pages/dashboard.js +++ b/src/gateway/ui/pages/dashboard.js @@ -13,6 +13,10 @@ let _lastBriefingTestAt = null; let _assistantSaveState = null; let _lastAssistantConfig = null; let _assistantManualOverrides = new Set(); +let _assistantModelDefaultsDraft = null; + +const MODEL_DEFAULT_TASK_KEYS = ['compaction', 'memory_extraction', 'classification', 'tool_summarisation', 'complex_reasoning']; +const MODEL_DEFAULT_TIER_KEYS = ['default', 'fast', 'complex', 'local']; function formatUptime(seconds) { const d = Math.floor(seconds / 86400); @@ -666,6 +670,7 @@ async function triggerDailyBriefingTest(jobName, statusEl) { function updateAssistantHealth(configData) { const el = document.getElementById('ops-assistant-health'); if (!el) {return;} + _assistantModelDefaultsDraft = readAssistantModelDefaultsDraft(el) ?? _assistantModelDefaultsDraft; const snapshot = getAssistantStateSnapshot(configData); @@ -692,7 +697,7 @@ function updateAssistantHealth(configData) { : 'not configured'; const briefingReady = dailyBriefing && Boolean(briefingOutput?.channel && briefingOutput?.peer); const playbookLikeReady = announce || (memoryDaily && memoryProactive); - const modelTier = configData?.agents?.primary_tier ?? 'default'; + const modelTier = _assistantModelDefaultsDraft?.primaryTier ?? configData?.agents?.primary_tier ?? 'default'; const delegation = configData?.agents?.delegation ?? {}; const backgroundModels = configData?.agents?.background_models ?? {}; const tiers = configData?.models ?? {}; @@ -787,10 +792,10 @@ function updateAssistantHealth(configData) {