diff --git a/rust/crates/rusty-claude-cli/src/main.rs b/rust/crates/rusty-claude-cli/src/main.rs index e17ea19..e053fe0 100644 --- a/rust/crates/rusty-claude-cli/src/main.rs +++ b/rust/crates/rusty-claude-cli/src/main.rs @@ -633,34 +633,46 @@ fn format_status_report( permission_mode: &str, context: &StatusContext, ) -> String { - let mut lines = vec![format!( - "status: model={model} permission_mode={permission_mode} messages={} turns={} estimated_tokens={} latest_tokens={} cumulative_input_tokens={} cumulative_output_tokens={} cumulative_total_tokens={}", - usage.message_count, - usage.turns, - usage.estimated_tokens, - usage.latest.total_tokens(), - usage.cumulative.input_tokens, - usage.cumulative.output_tokens, - usage.cumulative.total_tokens(), - )]; - lines.push(format!(" cwd {}", context.cwd.display())); - lines.push(format!( - " session {}", - context.session_path.as_ref().map_or_else( - || "live-repl".to_string(), - |path| path.display().to_string() - ) - )); - lines.push(format!( - " config loaded {}/{} files", - context.loaded_config_files, context.discovered_config_files - )); - lines.push(format!( - " memory {} instruction files", - context.memory_file_count - )); - lines.join( + [ + format!( + "Status + Model {model} + Permission mode {permission_mode} + Messages {} + Turns {} + Estimated tokens {}", + usage.message_count, usage.turns, usage.estimated_tokens, + ), + format!( + "Usage + Latest total {} + Cumulative input {} + Cumulative output {} + Cumulative total {}", + usage.latest.total_tokens(), + usage.cumulative.input_tokens, + usage.cumulative.output_tokens, + usage.cumulative.total_tokens(), + ), + format!( + "Workspace + Cwd {} + Session {} + Config files loaded {}/{} + Memory files {}", + context.cwd.display(), + context.session_path.as_ref().map_or_else( + || "live-repl".to_string(), + |path| path.display().to_string() + ), + context.loaded_config_files, + context.discovered_config_files, + context.memory_file_count, + ), + ] + .join( " + ", ) } @@ -671,11 +683,18 @@ fn render_config_report() -> Result> { let discovered = loader.discover(); let runtime_config = loader.load()?; - let mut lines = vec![format!( - "config: loaded_files={} merged_keys={}", - runtime_config.loaded_entries().len(), - runtime_config.merged().len() - )]; + let mut lines = vec![ + format!( + "Config + Working directory {} + Loaded files {} + Merged keys {}", + cwd.display(), + runtime_config.loaded_entries().len(), + runtime_config.merged().len() + ), + "Discovered files".to_string(), + ]; for entry in discovered { let source = match entry.source { ConfigSource::User => "user", @@ -696,7 +715,8 @@ fn render_config_report() -> Result> { entry.path.display() )); } - lines.push(format!(" merged {}", runtime_config.as_json().render())); + lines.push("Merged JSON".to_string()); + lines.push(format!(" {}", runtime_config.as_json().render())); Ok(lines.join( " ", @@ -1305,15 +1325,24 @@ mod tests { memory_file_count: 4, }, ); - assert!(status.contains("model=claude-sonnet")); - assert!(status.contains("permission_mode=workspace-write")); - assert!(status.contains("messages=7")); - assert!(status.contains("latest_tokens=10")); - assert!(status.contains("cumulative_total_tokens=31")); - assert!(status.contains("cwd /tmp/project")); - assert!(status.contains("session session.json")); - assert!(status.contains("config loaded 2/3 files")); - assert!(status.contains("memory 4 instruction files")); + assert!(status.contains("Status")); + assert!(status.contains("Model claude-sonnet")); + assert!(status.contains("Permission mode workspace-write")); + assert!(status.contains("Messages 7")); + assert!(status.contains("Latest total 10")); + assert!(status.contains("Cumulative total 31")); + assert!(status.contains("Cwd /tmp/project")); + assert!(status.contains("Session session.json")); + assert!(status.contains("Config files loaded 2/3")); + assert!(status.contains("Memory files 4")); + } + + #[test] + fn config_report_uses_sectioned_layout() { + let report = super::render_config_report().expect("config report should render"); + assert!(report.contains("Config")); + assert!(report.contains("Discovered files")); + assert!(report.contains("Merged JSON")); } #[test]