Navi Code: render planning as a progress line + plan card, not raw events
planning_status and plan_ready events were unhandled in the TUI chat model and
the raw CLI renderer, so they fell through to raw debug output (TUI:
"plan_ready: {...}" status lines; raw CLI: "[event: plan_ready] {msg}").

TUI:
- New renderers/planning.py: PlanningStatusRenderer renders a "⚙ Planning ·
  <label>" line (info color; dim + "(subagent)" prefix for subagent planning);
  PlanReadyRenderer renders the plan as a Panel wrapping themed Markdown, titled
  "Plan" with an accent border ("subagent plan" + dim border for subagents).
- Registered both in default_registry().
- chat_model handles the events: non-subagent planning_status rolls in place
  (Analysis → Execution plan → Plan review share one line instead of stacking);
  plan_ready consumes the pending planning line and appends the plan card;
  subagent planning is appended as its own dim line/card so it does not bleed
  into the parent turn's indicator (matching the webclient).
- chat_panel._refresh maps the new kinds to the registry.

Raw CLI (render.py): planning_status prints "[planning] <label>"; plan_ready
prints a "[plan] … [/plan]" block with the plan text.

Tests: renderer accepts/render (label, subagent prefix, plan title/content);
chat_model rolling-in-place, plan_ready consumes indicator, subagent separation.
584 passed, 1 skipped.

Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 8e862cb commit dd1d9e1594373c2b2286d21031e9433d7484d350
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 1 day ago
Showing 7 changed files
View
clients/terminal/render.py
View
clients/terminal/tui/chat_model.py
View
clients/terminal/tui/renderers/__init__.py
View
clients/terminal/tui/renderers/planning.py 0 → 100644
View
clients/terminal/tui/widgets/chat_panel.py
View
tests/clients/test_planning_renderers.py 0 → 100644
View
tests/clients/test_tui_app.py