From 5a109e37177f6405dad73f0c7f35923b0e33cf77 Mon Sep 17 00:00:00 2001 From: Eyejoker Date: Wed, 1 Apr 2026 05:03:29 +0900 Subject: [PATCH] feat: show fallback model in status dashboard MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When global failover is active, claude-code roles now display the fallback model inline: `claude-opus-4-6 (fallback → codex)` --- src/unified-dashboard.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/unified-dashboard.ts b/src/unified-dashboard.ts index 75970fb..6cef723 100644 --- a/src/unified-dashboard.ts +++ b/src/unified-dashboard.ts @@ -591,6 +591,7 @@ function buildModelConfigSection(): string { }, ]; + const failover = getGlobalFailoverInfo(); const lines = ['ðŸĪ– *ëŠĻëļ ęĩŽė„ą*']; for (const role of roleConfigs) { if (!role.agentType && role.label === 'Arbiter') continue; @@ -600,7 +601,14 @@ function buildModelConfigSection(): string { ? process.env.CODEX_MODEL || 'codex' : process.env.CLAUDE_MODEL || 'claude'; const model = role.model || defaultModel; - lines.push(` **${role.label}** — ${type} \`${model}\``); + + // Show fallback status for claude-code roles when global failover is active + const isFallback = failover.active && type === 'claude-code'; + const fallbackModel = process.env.CODEX_MODEL || 'codex'; + const modelDisplay = isFallback + ? `\`${model}\` (fallback → \`${fallbackModel}\`)` + : `\`${model}\``; + lines.push(` **${role.label}** — ${type} ${modelDisplay}`); } // MoA status @@ -612,8 +620,6 @@ function buildModelConfigSection(): string { lines.push(` **MoA** — ${refs}`); } - // Global failover - const failover = getGlobalFailoverInfo(); if (failover.active) { lines.push(` ⚠ïļ **Failover í™œė„ą** — ${failover.reason || 'ė•Œ 눘 ė—†ėŒ'}`); }