From 3e0d52c4514268a0b8ba9d696cca32b51eb8486e Mon Sep 17 00:00:00 2001 From: ProofOfConcept Date: Thu, 9 Apr 2026 22:43:18 -0400 Subject: [PATCH] Redirect noisy warnings to debug log to stop TUI corruption MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Duplicate key warnings fire on every store load and were writing to stderr, corrupting the TUI display. Log write warnings and MCP server failures are similarly routine. Route these to dbglog. Serious errors (rkyv snapshot failures, store corruption) remain on stderr — those are real problems the user needs to see. Co-Authored-By: Proof of Concept --- src/agent/context.rs | 2 +- src/agent/mod.rs | 4 ++-- src/agent/tools/mcp_client.rs | 2 +- src/hippocampus/store/persist.rs | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/agent/context.rs b/src/agent/context.rs index 8063918..094d42e 100644 --- a/src/agent/context.rs +++ b/src/agent/context.rs @@ -801,7 +801,7 @@ impl ContextState { pub fn push_log(&mut self, section: Section, node: AstNode) { if let Some(ref log) = self.conversation_log { if let Err(e) = log.append_node(&node) { - eprintln!("warning: log: {:#}", e); + dbglog!("warning: log: {:#}", e); } } self.section_mut(section).push(node); diff --git a/src/agent/mod.rs b/src/agent/mod.rs index 0f92757..e371a53 100644 --- a/src/agent/mod.rs +++ b/src/agent/mod.rs @@ -403,7 +403,7 @@ impl Agent { if let Some(ref log) = ctx.conversation_log { let node = &ctx.conversation()[branch_idx]; if let Err(e) = log.append_node(node) { - eprintln!("warning: log: {:#}", e); + dbglog!("warning: log: {:#}", e); } } } @@ -578,7 +578,7 @@ impl Agent { } } Err(e) => { - eprintln!("warning: failed to reload identity: {:#}", e); + dbglog!("warning: failed to reload identity: {:#}", e); } } diff --git a/src/agent/tools/mcp_client.rs b/src/agent/tools/mcp_client.rs index a7348ec..e245a91 100644 --- a/src/agent/tools/mcp_client.rs +++ b/src/agent/tools/mcp_client.rs @@ -148,7 +148,7 @@ async fn ensure_init() -> Result<()> { let args: Vec<&str> = cfg.args.iter().map(|s| s.as_str()).collect(); match McpServer::spawn(&cfg.name, &cfg.command, &args).await { Ok(server) => reg.servers.push(server), - Err(e) => eprintln!("warning: MCP server {} failed: {:#}", cfg.name, e), + Err(e) => dbglog!("warning: MCP server {} failed: {:#}", cfg.name, e), } } Ok(()) diff --git a/src/hippocampus/store/persist.rs b/src/hippocampus/store/persist.rs index 5668dd2..2af3983 100644 --- a/src/hippocampus/store/persist.rs +++ b/src/hippocampus/store/persist.rs @@ -200,7 +200,7 @@ impl Store { // Report duplicate keys for (key, uuids) in &key_uuids { if uuids.len() > 1 { - eprintln!("WARNING: key '{}' has {} UUIDs (duplicate nodes)", key, uuids.len()); + dbglog!("WARNING: key '{}' has {} UUIDs (duplicate nodes)", key, uuids.len()); } }