Release Notes
Phase 7: Broker UX and Diagnostics
This release focuses on making the broker easier to start, monitor, and recover from failures — replacing multi-step manual sequences with single commands and actionable diagnostics.
🚀 One-command broker console (--broker-console)
Start the dedicated broker host and immediately land in the terminal monitoring frontend with a single command. No more manually sequencing --broker-daemon, --web-ui, and --tui separately. If the port is already owned by a healthy broker-backed dashboard, the command attaches to it instead of spawning a duplicate.
🩺 Broker doctor diagnostics (--doctor)
A new diagnostic command inspects the full chain visible to the user — Python runtime, broker PID/socket/version files, dashboard endpoint ownership, upstream Xcode bridge state, and common failure modes (stale ports, missing dashboard, version mismatch). Output is user-facing and actionable without requiring manual lsof, curl, or log inspection.
⚡ Dashboard port-conflict recovery
Startup no longer silently leaves a broker running without its requested dashboard. Port conflicts now fail fast with one explicit remediation path. The conflict classifier distinguishes:
- Foreign process on the dashboard port
- Broker-owned listener with a degraded probe
- Mixed state (live broker PID + foreign listener)
Each case surfaces the real blocker and the exact recovery command.
🖥️ TUI local-status fallback
The terminal frontend now remains useful even when the Web UI dashboard API is unavailable. It falls back to local broker state from PID/socket/version files and clearly distinguishes live dashboard-backed data from local fallback data, so you can tell at a glance whether you need to restart the broker, free a port, or just attach a client.
📖 Simplified broker UX docs and quickstart
New docs/quickstart.md presents the recommended end-to-end broker workflow in 5 steps. docs/broker-mode.md is restructured quickstart-first with a dedicated failure recovery section. docs/troubleshooting.md now references --doctor and the quickstart directly, replacing raw shell debugging instructions.
Bug Fixes / Follow-ups
--broker-consoleinterrupt normalization —Ctrl-Cnow exits cleanly with code0whether the console spawned a new host or reattached to an existing one.- Mixed-state conflict prioritization — foreign port-owner guidance is surfaced first when both a live broker PID and a foreign dashboard listener coexist, preventing users from being sent into a broker-reset loop for the wrong blocker.
- Broker-owned listener exclusion — the conflict classifier no longer treats the broker's own dashboard listener as a foreign port owner during degraded-probe scenarios.