Skip to content

feat(tui): cockpit chrome, adaptive glyphs, pane-wrapped full screens - #70

Merged
zaidejjo merged 3 commits into
devfrom
feat/tui-cockpit
Oct 30, 2026
Merged

zaidejjo merged 3 commits into
devfrom
feat/tui-cockpit

Conversation

@zaidejjo

Copy link
Copy Markdown
Owner

TUI cockpit polish: every full-screen view wears pane chrome (title row, accent bar, hairline rule); header rebuilt by density with hotkeys outranking meta; glyphs plumbed from config (tui.glyphs / appearance.glyphs) with palette toggle-theme and toggle-icons persisted, plus ZGIT_TUI_GLYPHS override; log refs render as whole chips inside budget; status dirs truncate at path boundaries. gofmt clean, go vet green, go test ./... green, goldens regenerated via UPDATE_GOLDEN=1.

Replaces the bordered-panel look with a data-dashboard one: panes are
rule-separated instead of boxed, so chrome costs two rows and zero
columns per pane and columns go back to content.

- glyphs: new package with nerd/unicode/ascii vocabularies and a
  conservative auto-detection (only terminals that bundle a Nerd Font
  symbol fallback, or an explicit env signal, select nerd). Nothing in
  the UI hardcodes a symbol any more.
- styles: full Catppuccin surface ramp (Crust/Mantle/Surface0-2), extra
  hues, and cockpit tokens (Rule, PaneTitle, ChipBg, TrackAdd/Del).
- components: Pane (title + accent bar + hairline rule, exact frame),
  Chip/StateChip/Segment, Hint/FitHints, and RowLine-compatible padding.
- header: two groups (panels, screens), only the active tab carries a
  fill, hotkeys are dim, count badges; the strip no longer duplicates
  the branch, and "vdev" is gone (version formatting fixed).
- status bar: prioritised segments (branch, divergence, working-tree
  counts, path, repo, provider) with a right-aligned key legend that
  degrades from the left.
- layout: panel heights charged for the two-row pane chrome; identical
  arithmetic at every breakpoint.
Log rows are a fixed grid (graph, hash, age, subject, refs) with the subject as the only bright column; refs are right-aligned chips that drop before the subject. Branch rows give the name its own column and turn tracking into a chip, so name and message stop fusing into one blob. Status rows show the real porcelain code, a bright filename and a right-aligned directory, and a clean tree is stated in the middle of the pane. RowLine now pads inside the row style, so the cursor background spans the whole row, and the cursor is drawn as an accent bar from the glyph set.
screenChrome wraps every full-screen view (PRs, Issues, Actions, Dashboard, Worktrees, Stash, Refs, Notifications) in pane chrome (title row, accent bar, hairline rule), dropping duplicated section titles.

Header rebuilt by density: hotkeys outrank the meta; brand flush-left aligned with pane bars; count badges removed so hotkeys never fuse with counts.

Glyphs plumbed: tui.glyphs config key (fallback to appearance.glyphs), palette toggle-theme/toggle-icons persisted, ZGIT_TUI_GLYPHS override via glyphs.Detect; notifications/refs/porcelain marks draw from glyphs.Current().

tree.go stops embedding ref labels in the graph (log row draws whole chips inside budget); branchLine keeps its divergence chip; status dirs truncate at path boundaries (.../structure/); goldens regenerated.
@zaidejjo
zaidejjo merged commit 86d28f4 into dev Oct 30, 2026
7 checks passed
@zaidejjo
zaidejjo deleted the feat/tui-cockpit branch October 30, 2026 00:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant