Releases: Caldis/esp32-agent-dashboard
v2.9.0 — Agent kind expansion
What's New
The dashboard now recognizes 7 named agent kinds, up from 2 + "other":
| Agent | Chip Label | Accent |
|---|---|---|
| Claude Code | cc |
rust (warm) |
| Codex | cx |
teal (cool) |
| Cursor | cu |
auto (hash-based) |
| Aider | ai |
auto |
| Windsurf | ws |
auto |
| Copilot | cp |
auto |
| Qwen-Code | qw |
auto |
| Unknown | ag |
fallback accent |
Changes
- Bridge
normalize_eventaccepts all named kinds instead of collapsing to "other" - 2-letter chip labels in both scene_awaiting and scene_dashboard feed
- Theme auto-allocates deterministic hue-based accents via DJB2 hash → HSL
- Bridge CLI help updated to list all supported agents
How to use with other agents
Set the agent kind when configuring hooks:
# In your hook command, pass the agent kind as the 3rd argument:
python hook_dispatch.py post_tool_use cursor
python hook_dispatch.py stop aiderv2.8.0 — urgency accessibility (WCAG 1.4.1)
What's New
Completes the deferred D-3 accessibility finding from persona testing.
Urgency Chevron
Urgent awaiting kinds (approve, clarify) now prefix the headline with > — a luminance-independent shape cue so color-blind users can distinguish urgent from relaxed states. The teal/gold color pair sits at only 1.17:1 inter-luminance, invisible to deuteranopes (~6% of males).
"approve?"→"> approve?""clarify"→"> clarify"
This resolves WCAG 1.4.1 (Use of Color) for the awaiting scene.
v2.7.0 — persona-driven UX fixes + PUSH banner + circuit breaker
What's New
Driven by four-persona user testing (power user, newcomer, bystander, accessibility), v2.7.0 resolves 10 P0 findings across firmware, bridge, and docs.
Firmware UX (R1)
- WCAG contrast fix:
ink-mute#5A514A →ink-fade#8A807A (5.13:1 AA pass) for all secondary text - SID display: first-4 + ":" + last-2 format replaces unrecognizable last-6-of-UUID
- Visual hierarchy: agent chip 28pt → 22pt so 48pt headline stays focal
- Approve affordance: "BOOT approve · USER deny" hint row on APPROVE kind
- motion_reduced config: NVS-persisted boolean, gates breath animation + marquee scroll (WCAG 2.2.2)
Bridge (R2)
- Circuit breaker in
hook_dispatch.py: 3 consecutive timeouts in 30s → short-circuit 60s - PUSH banner: top-slide-down 3s toast overlay on PostToolUse events
- New
dash pushwire command
Docs (R3)
- Honest quickstart timing (~15 min, not 30 seconds)
- 3 new troubleshooting entries (idf-not-found, port-locked, settings-clobbered)
- Mock device path consolidated to
tools/mock_device_v1.py - Scenes table updated (5 → 7 scenes)
- Persona testing summary:
docs/user_testing/SUMMARY.md
v0.1.0 — multi-agent USB-Serial dashboard
Initial public release.
A live dashboard for AI-agent sessions on a 466x466 AMOLED panel. Watch Claude Code and Codex in real time. Approve permission prompts with a physical button. Multi-agent by design.
Highlights
- Firmware — 5 LVGL scenes (idle / sessions / prompt / tokens / status) on the Waveshare ESP32-S3-Touch-AMOLED-2.16
- Host bridge — long-running Python daemon ingesting Claude Code hooks + Codex JSONL, throttled snapshot publisher, blocking permission round-trip
- Wire format — one-line JSON over USB-Serial via esp-harness console_protocol; replies are
OK:/ERR:/EVT: - CI — bridge-roundtrip replay against a TCP mock device on every push; firmware build deferred to release-time hardware smoke
- Homepage — https://caldis.github.io/esp32-agent-dashboard/
Two upstream fixes shipped to esp-harness
Surfaced against this project's real consumer use case:
esp-harness@664b14e— tokeniser preserves inner double quotes (nested JSON survives the command parser)esp-harness@98affb0— console_protocol drains the overflow tail (one ERR per oversize line, no spuriousunknown command)
See CHANGELOG.md for the full inventory and HARNESS_GAPS.md for the running framework-gap log.
Roadmap
- v0.1 — USB-Serial multi-agent (this release)
- v1.0 — BLE NUS for Claude Desktop pairing
- v2.0 — WiFi push for headless dev boxes