Skip to content

feat(tui): match Elixir Symphony STATUS dashboard layout #112

@ridermw

Description

@ridermw

Goal

The Rusty TUI dashboard should match the Elixir reference as closely as possible.

Reference screenshot:

Elixir Symphony STATUS dashboard


Current State vs Target

Header / Summary Stats

The Elixir dashboard shows a SYMPHONY STATUS block with these fields:

Field Elixir Rusty Status
Agents 19/50 (running/max) ⚠️ Partial — shows running count but not max concurrency
Throughput 658,875 tps ❌ Missing
Runtime 1m 54s ✅ Present
Tokens in 38,183,882 | out 368,361 | total 38,552,243 ⚠️ Shows total only; missing in/out breakdown
Rate Limits codex | primary n/a | secondary n/a | credits n/a ❌ Missing
Project Clickable link to project issues page ❌ Missing
Next refresh 1s countdown ❌ Missing

Running Agents Table

Column Elixir Rusty Status
ID Issue identifier (e.g. MT-725) ✅ Present (as Issue)
Stage Issue state (Todo, In Progress, Rework) ✅ Present (as State)
PID OS process ID ✅ Present
Age / Turn 1m 19s / 1 ⚠️ Shows Turns only — missing age
Tokens 1,442,520 (comma-formatted total) ✅ Present
Session Truncated session ID 019c...ac5e10 ⚠️ Missing in TUI (present in web dashboard)
Event Full event text ⚠️ Truncated to 18 chars — should show more

Backoff Queue Table

Column Elixir Rusty Status
Issue Identifier
Attempt Retry count
Due at Timestamp
Error Error message ✅ (truncated)

The backoff queue is at parity. Main gaps are in the header stats and running table.


Implementation Tasks

  1. Header block: Replace the 4-card horizontal layout with a vertical SYMPHONY STATUS block matching the Elixir format — one stat per line, labels left-aligned
  2. Add missing header fields: Throughput (tps), Rate Limits, Project link, Next refresh countdown
  3. Running table columns: Rename/reorder to ID | Stage | PID | Age / Turn | Tokens | Session | Event
  4. Age / Turn column: Combine elapsed time + turn count (e.g. 1m 19s / 2)
  5. Session column: Show truncated session ID in TUI (019c...ac5e10 format)
  6. Event column: Show full event text (or at least more than 18 chars — allow horizontal scroll or flex width)
  7. Bullet indicators: Each running row has a prefix (teal/cyan) as a status dot

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions