Skip to content

codegraff TUI: feature parity with graff REPL + rendering polish #18

@justrach

Description

@justrach

Why

The codegraff TUI (crates/codegraff-tui/) is the future home for richer agent UX (subagent observability, image previews, multi-pane workflows — see #15). But it currently lags the graff REPL on the basics: only a subset of slash commands, no autocomplete, occasional rendering artifacts when overlays open/close, no clipboard image paste, no parity with REPL features users rely on.

Without closing this gap, the TUI feels like a second-class experience and users default to graff.

What

This is a tracking issue. Each item below is a candidate sub-issue or PR.

Feature parity (port from graff REPL)

  • Slash command palette + autocomplete (covered in companion issue)
  • /model switching with the same model picker UX as graff
  • /provider management
  • /conversation browse / resume / rename / delete
  • /agent switching (forge, muse, sage)
  • /info, /usage, /dump, /compact, /help
  • Image paste (clipboard → multimodal — companion issue covers graff side)

Rendering polish (artifact hunt)

  • Audit the Frame::render path in crates/codegraff-tui/src/main.rs for places that draw without Clear first
  • Trace overlay close paths — confirm full-screen redraw happens on close, no ghost regions
  • Verify resize handling — repaint everything on Resize events, not just the dirty parts
  • Check the transcript scroll math when multiline messages truncate
  • Check that the workflow-trace pane doesn't double-print after re-rendering
  • Consider extracting main.rs (210 KB single file) into a tui/ module tree — single file makes future work harder

Out of scope for this issue (separate trackers)

Acceptance

This issue stays open until at least 80% of the parity checklist lands and an artifact-free run can be demonstrated on a recorded session. Sub-issues should reference back here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    state: inactiveNo current action needed/possible; issue fixed, out of scope, or superseded.type: featureBrand new functionality, features, pages, workflows, endpoints, etc.work: complexThe situation is complex, emergent practices used.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions