From 31e813f57d3123b036f61d2b55fffd63307c0425 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Wed, 8 Apr 2026 16:53:23 -0400 Subject: [PATCH] Fix status bar: show per-section budget breakdown Budget display shows: sys 12% id 5% jnl 8% conv 40% = 15K/24K Old conversation log entries silently skipped (journal has context). Co-Authored-By: Proof of Concept --- src/mind/log.rs | 1 + src/user/chat.rs | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/mind/log.rs b/src/mind/log.rs index 174fd23..85dcedf 100644 --- a/src/mind/log.rs +++ b/src/mind/log.rs @@ -56,6 +56,7 @@ impl ConversationLog { if let Ok(node) = serde_json::from_str::(line) { nodes.push(node); } + // Old format entries silently skipped — journal has the context } Ok(nodes) } diff --git a/src/user/chat.rs b/src/user/chat.rs index 271db6e..8c1e8c3 100644 --- a/src/user/chat.rs +++ b/src/user/chat.rs @@ -843,7 +843,18 @@ impl ScreenView for InteractScreen { .unwrap_or_default(); } if let Ok(ctx) = self.agent.context.try_lock() { - app.status.context_budget = format!("{} tokens", ctx.tokens()); + let budget = crate::agent::context::context_budget_tokens(); + let sys = ctx.system().iter().map(|n| n.tokens()).sum::(); + let id = ctx.identity().iter().map(|n| n.tokens()).sum::(); + let jnl = ctx.journal().iter().map(|n| n.tokens()).sum::(); + let conv = ctx.conversation().iter().map(|n| n.tokens()).sum::(); + let total = sys + id + jnl + conv; + let pct = |n: usize| if budget > 0 { n * 100 / budget } else { 0 }; + app.status.context_budget = format!( + "sys {}% id {}% jnl {}% conv {}% = {}K/{}K", + pct(sys), pct(id), pct(jnl), pct(conv), + total / 1000, budget / 1000, + ); } { let mind = self.shared_mind.lock().unwrap();