cli: TUI component wishlist — rich table, streaming, parallel tasks, tree, stub upgrades #14
Labels
No labels
needs-review
needs-review
needs-review
needs-review
needs-review
needs-review
needs-review
athena
athena-gemini
audit
clotho
clotho-gemini
codex
darbs-claude
security
wiki
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: core/go#14
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Overview
pkg/cli has a solid foundation (Table, Spinner, ProgressBar, Viewport, TextInput, InteractiveList, Layout, TUI escape hatch). This issue tracks the next wave of components that consuming packages (LEM, go-ai, core dev) need.
Prioritised by real-world usage — every item here comes from hitting a gap during actual development.
1. Rich Table (lipgloss borders + cell styling)
Current:
Tableinstyles.godoes aligned columns with ANSI header styling. No borders, no box drawing, no per-row/per-cell colouring.Want: Optional bordered table using lipgloss table rendering. Per-cell style functions (e.g. red for "unavailable", green for "healthy"). Responsive column widths (truncate to terminal width).
Consumers:
core dev health,core dev work --status,ml_backends,ml_status, any listing command.API sketch:
2. Streaming Text Renderer
Current: Nothing —
fmt.Printtoken-by-token causes flickering and can't be composed with other components.Want: Component that accepts a
chan stringorio.Readerand renders growing text in-place, with optional word-wrap and scroll-to-bottom. Think chat UI in terminal.Consumers:
lem gen distill(streaming inference),go-aiMCP tools, any LLM interaction.API sketch:
3. Parallel Task Tracker
Current:
Spinnerhandles one task.Progressoverwrites one line. No way to show N concurrent operations.Want: Multi-line display showing N tasks with individual spinners/status. Tasks can complete independently. Final summary when all done.
Consumers:
core dev pull --all(18 repos),core dev commit --all, any batch operation.API sketch:
4. Tree Renderer
Current: Nothing — dependency graphs are printed as flat text.
Want: Indented tree with box-drawing characters (├── └── │). Coloured labels. Collapsible optional.
Consumers:
core dev impact, module dependency display, directory listings.API sketch:
5. Upgrade Stubs to Real Implementations
stubs.gohas three components with comments saying "will use charmbracelet/X later":charmbracelet/huh(interactive multi-field forms)charmbracelet/filepicker(browsable file tree)The stub APIs are already designed — just need real implementations behind them. The public API should stay the same.
Priority
Notes
forge.lthn.ai/core/go/pkg/clionly — no direct charmbracelet/lipgloss imports in consuming packages_Good/_Bad/_UglyconventionCompleted by Charon in
core/cli(e360115). CLI package now lives atforge.lthn.ai/core/cli/pkg/cli, notcore/go/pkg/cli.