Skip to content

Commit b0ff94e

Browse files
initcronclaude
andcommitted
feat: Add loading spinner and smart output visualization for UX
Implemented two major UX enhancements for aofctl: 1. Loading Spinner (#72) - Shows animated spinner while agent executes - Updates every 100ms with rotating animation - Automatically clears when execution completes - Clean visual feedback in non-interactive mode 2. Smart Output Visualization (#73) - Auto-detects output format (JSON, tables, lists, docker stats) - Beautiful Unicode table rendering with comfy-table - Colorized output with colored crate - Robust with graceful fallback to plain text - Never crashes on unexpected formats Additional improvements: - Smart docker stats --no-stream injection - Clean error-level logging by default - Token efficiency documentation - Simplified getting-started example Dependencies added: - comfy-table: 7.1 (table rendering) - colored: 2.1 (terminal colors) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 5548dc0 commit b0ff94e

19 files changed

Lines changed: 3980 additions & 25 deletions

crates/aof-core/src/tool/structured_output.rs

Lines changed: 450 additions & 0 deletions
Large diffs are not rendered by default.

crates/aof-tools/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ observability = ["reqwest", "chrono"]
2121
cicd = ["reqwest", "chrono"]
2222
security = ["reqwest", "base64", "urlencoding"]
2323
cloud = []
24-
all = ["file", "shell", "kubectl", "docker", "git", "terraform", "http", "observability", "cicd", "security", "cloud"]
24+
benchmark = ["chrono", "rand"]
25+
all = ["file", "shell", "kubectl", "docker", "git", "terraform", "http", "observability", "cicd", "security", "cloud", "benchmark"]
2526

2627
[dependencies]
2728
aof-core = { workspace = true }
@@ -37,6 +38,7 @@ chrono = { workspace = true, optional = true }
3738
which = { workspace = true }
3839
base64 = { version = "0.22", optional = true }
3940
urlencoding = { version = "2.1", optional = true }
41+
rand = { version = "0.8", optional = true }
4042

4143
[dev-dependencies]
4244
tokio = { workspace = true, features = ["test-util", "full", "macros"] }

0 commit comments

Comments
 (0)