From 684acf9032caf0d3bb33808238c365756c1329ef Mon Sep 17 00:00:00 2001 From: Ilya Popov Date: Mon, 27 Jul 2026 21:09:21 +0200 Subject: [PATCH] refactor(statusline): improve status line display and robustly handle configuration checks for budgeting --- src/agents/plugins/claude/plugin/statusline.mjs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/agents/plugins/claude/plugin/statusline.mjs b/src/agents/plugins/claude/plugin/statusline.mjs index 16dfd705..234cfce4 100644 --- a/src/agents/plugins/claude/plugin/statusline.mjs +++ b/src/agents/plugins/claude/plugin/statusline.mjs @@ -71,7 +71,7 @@ export async function getAuthHeaders(codeMieUrl) { // --- Pure functions (unit-testable, no filesystem/network access) --- export function matchBudgetRow(rows, userEmail) { - if (!Array.isArray(rows) || !userEmail) return null; + if (!Array.isArray(rows) || rows.length === 0 || !userEmail) return null; const target = `${userEmail.trim().toLowerCase()} (cli)`; return rows.find(r => r.project_name?.trim().toLowerCase() === target) ?? null; } @@ -81,7 +81,7 @@ export function formatBudgetSegment(row) { const pct = Math.round(row.total ?? 0); const reset = row.budget_reset_at ? new Date(row.budget_reset_at).toLocaleDateString() : '?'; return { - text: `$${row.current_spending.toFixed(2)} (${pct}%) resets ${reset}`, + text: `Total: $${row.current_spending.toFixed(2)} (${pct}%) resets ${reset}`, pct, }; } @@ -211,9 +211,12 @@ export async function resolveBudget({ return { budget: null, budgetError: null }; // no CodeMie config at all → skip silently } - const profile = config.profiles?.[config.activeProfile]; - const { codeMieUrl, baseUrl, userEmail } = profile ?? {}; - if (!profile || !codeMieUrl || !baseUrl || !userEmail) { + const profile = config?.profiles?.[config?.activeProfile] || config || {}; + const codeMieUrl = profile.codeMieUrl || config.codeMieUrl; + const baseUrl = profile.baseUrl || config.baseUrl || codeMieUrl; + const userEmail = profile.userEmail || config.userEmail || ''; + + if (!codeMieUrl || !baseUrl) { return { budget: null, budgetError: null }; // no CodeMie profile configured → skip silently }