Skip to content

feat(tui): redesign dashboard to match design spec - #2

Draft
mdipanjan wants to merge 9 commits into
chore/lint-and-screenshotsfrom
feat/dashboard-redesign
Draft

feat(tui): redesign dashboard to match design spec#2
mdipanjan wants to merge 9 commits into
chore/lint-and-screenshotsfrom
feat/dashboard-redesign

Conversation

@mdipanjan

Copy link
Copy Markdown
Owner

Summary

Reworks the home/dashboard screen to match DESIGN.md and the reference mockup.

Stacked on chore/lint-and-screenshots (base). Review/merge that first, then this rebases onto main.

Dashboard changes

  • Faux window title bar (traffic lights + hive · session manager)
  • Filled HIVE wordmark in accent blue; removed box-drawing logo + honeycomb
  • Status legend with labels (attached/detached/idle/done/dead) + hairline divider + total count
  • SESSIONS rows: status glyph + name, right-aligned state label, selection fill + left accent bar on the focused row
  • DETAILS: lowercase labels, right-aligned values, compact relative times (3h ago, now), middle-truncated path
  • Inline cpu + mem sparklines with load-colored values (green <50, yellow <80, red >=80)
  • Footer hint bar showing current theme name

Foundations

  • Added a Red token to all 12 themes + ColorRed
  • Unified status vocabulary helpers (GetStatusLabel / GetStatusColor / GetStatusGlyph)
  • Added memory sampling (GetMemPercent + memUsageHistory tick)
  • GetThemeByKey syncs CurrentThemeIndex so the footer theme name is correct

Verification

  • gofmt, go vet, go test ./... pass
  • markdown lint passes

Follow-ups (not in this PR)

Other screens (search, switch, new-session, file picker, delete, help) still need the same polish pass.

Rework the home/dashboard screen to match DESIGN.md and the reference mockup:

- Faux window title bar (traffic lights + caption)
- Filled HIVE wordmark in accent blue; drop box-drawing logo + honeycomb
- Labeled status legend (attached/detached/idle/done/dead) + divider + count
- SESSIONS rows: status glyph + name, right-aligned label, selection fill +
  left accent bar on the focused row
- DETAILS: lowercase labels, right-aligned values, compact relative times,
  middle-truncated path
- Inline cpu + mem sparklines with load-colored values (green/yellow/red)
- Footer hint bar with current theme name

Foundations:
- Add Red token to all 12 themes + ColorRed
- Unify status vocabulary helpers (label/color/glyph)
- Add memory sampling (GetMemPercent + memUsageHistory tick)
- GetThemeByKey syncs CurrentThemeIndex so footer theme name is correct
@mdipanjan mdipanjan self-assigned this Jun 30, 2026
@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 862cfa0b-a0ed-410a-b4e2-66ff1f962830

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/dashboard-redesign

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

- Wrap modal screens in the shared window frame (title bar + centered body +
  footer) via renderChrome, matching the dashboard
- New-session dialog: lowercase labels, ○/● radio (selected tinted), wider
  fields, aligned button row
- RenderTextInput: highlight only the value + block cursor (not full width),
  start-truncate long values over a hairline underline
- RenderButtons: left-aligned, focused button gets selection fill + accent
  border; add Destructive() option (red) for the delete dialog
- Add RenderHints footer style (accent key + muted label, no colon)
- Replace the bundled bubbles filepicker with a custom dirPicker (full control
  over layout/keys/state)
- Two-column directory chooser: dirs first then files, dirs in fg, files muted,
  highlighted entry prefixed › and tinted green
- Hairline divider + dir/file legend; wrapped in the shared window chrome
- Keys: ↑↓/jk navigate, →/l open, ←/h/backspace up, enter select dir, esc cancel
- Drops go-humanize dependency (details now uses a compact relative-time helper)
- Wrap in the shared window chrome (title bar + footer)
- Safe default focus on No; Yes takes a red destructive fill when selected
- Add an explicit warning when deleting an attached session
- Footer hints in the no-colon style (←→ select, ⏎ confirm, y yes, n/esc cancel)
- Search and switch popups now render inside the shared window chrome
  (title bar + footer) via renderChrome
- Single ❯ prompt marker (remove the doubled '› >')
- Selected result keeps its real status glyph; highlight the name in accent
  instead of forcing a cyan ● (consistent status vocabulary everywhere)
- Footer hints in the no-colon style
- Group keybindings by category (navigation / actions / global) for scannability
- Render inside the shared window chrome (title bar + footer)
- Footer hints in the no-colon style (? close, esc close)
- Uppercase group headers (NAVIGATION/ACTIONS/GLOBAL), no extra indent
- Navigation group limited to move up/down
- Restore divider + 'hive vX · press ? or esc to close' line
ColorDim is reserved for fills/selection backgrounds. On themes where Dim is
nearly identical to the background (e.g. Solarized Dark), text rendered with it
was invisible (title-bar caption, subtitle, legend labels, cpu/mem labels,
session/detail secondary text). Point the Dim text style at ColorGray, which is
the readable muted role on every theme.
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