Flat box-free dashboard + subscreen footers; hide dashboard cursor - #165
Conversation
Rework the dashboard footer after the grouped two-row layout proved fragile at unpredictable widths (category labels orphan once rows wrap). - Flat list of every active key, rendered as one line that wraps naturally to width — no grouping, no width-conditional dropping. buildDashboardFooterRows (FooterRow/FooterGroup) is replaced by a flat buildDashboardFooterHints + renderFooterHints; FooterGroup/FooterRow/renderFooterRows are removed. - Box-free keys: footerKey renders a bold glyph (red for destructive) instead of a filled pill, so a dense row stays light and has no padding blocks. Boxed keycaps are kept elsewhere (overlays, inline list numbers) where they aid affordance/alignment. - Hide the terminal cursor on the dashboard so it no longer parks as a block after the last key; input overlays draw their own caret and the cursor is restored on exit. - Drop the now-unused accentSoft tone; keep the named keycap color constants. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add footerHints (box-free variant of keycapHints) and use it for the coordination/project/library/topology/graveyard footer bars, so every bottom hint row matches the dashboard's box-free style. Inline list selection numbers stay boxed (keycap) as an affordance. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
@coderabbitai review |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughThe PR replaces the grouped ChangesFooter rendering refactor: flat hints model
writeFrame cursor-hide fix
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
src/tui/screens/dashboard-renderers.test.ts (1)
30-99: ⚡ Quick winAdd a narrow-terminal footer rendering test.
Current footer tests validate key selection/order, but not rendered wrapping under small
cols(where truncation risk exists). ArenderDashboardFrame(..., cols < 72, ...)assertion that all expected footer labels remain present would lock this behavior.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/tui/screens/dashboard-renderers.test.ts` around lines 30 - 99, Add a new test case within the "buildDashboardFooterHints" describe block that validates footer rendering behavior under narrow terminal conditions. Use renderDashboardFrame with a cols parameter less than 72 and assert that all expected footer hint labels remain present in the rendered output without being truncated. This test should verify that the footer wrapping behavior preserves all hints when terminal width is constrained, complementing the existing key selection and ordering tests.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/tui/screens/dashboard-renderers.ts`:
- Around line 817-822: The footer hints rendering is using contentWidth (which
has a minimum of 72) for wrapping via renderFooterHints, but then truncating to
cols on line 821. This causes hints to get hidden on narrow terminals instead of
wrapping properly. Change the renderFooterHints call to use Math.max(0, cols)
instead of footerWidth so that hints are wrapped to the actual terminal width
rather than a minimum width of 72, ensuring proper wrapping behavior on narrow
terminals.
---
Nitpick comments:
In `@src/tui/screens/dashboard-renderers.test.ts`:
- Around line 30-99: Add a new test case within the "buildDashboardFooterHints"
describe block that validates footer rendering behavior under narrow terminal
conditions. Use renderDashboardFrame with a cols parameter less than 72 and
assert that all expected footer hint labels remain present in the rendered
output without being truncated. This test should verify that the footer wrapping
behavior preserves all hints when terminal width is constrained, complementing
the existing key selection and ordering tests.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: ea927e4c-528f-47e8-98ec-c9e3638b801f
📒 Files selected for processing (7)
src/multiplexer/dashboard-state-methods.tssrc/multiplexer/dashboard-view-methods.test.tssrc/tui/render/theme.test.tssrc/tui/render/theme.tssrc/tui/screens/dashboard-renderers.test.tssrc/tui/screens/dashboard-renderers.tssrc/tui/screens/subscreen-renderers.ts
renderFooterHints was wrapping to contentWidth (min 72) but each line is truncated to cols, so on panes narrower than 72 trailing keys were clipped instead of wrapping. Wrap to cols - indent instead. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
What
A footer redesign pass after the grouped two-row layout proved fragile at unpredictable terminal widths (category labels orphan once a row wraps).
Flat, box-free footer
buildDashboardFooterRows(FooterRow/FooterGroup) → flatbuildDashboardFooterHints+renderFooterHints; the row/group machinery is removed.footerKey): a bold glyph (red for destructivex) instead of a filled pill, so a dense row stays light and there are no gray padding blocks flanking each key. Boxed keycaps are kept where they aid affordance/alignment (overlays, inline list selection numbers).footerHints, so every bottom hint bar matches.Cursor
_caret; the cursor is restored on exit.Theme
accentSofttone; keep the named keycap color constants (KEYCAP_BG/KEYCAP_FG/KEYCAP_DANGER_FG). Title-case tabs and red destructivexare retained.Presentation-only — no key bindings or behavior change; each state variant keeps its exact key set (covered by tests).
Tests
renderFooterHints/footerKey/footerHints: flat wrap to width (all hints shown), box-free rendering, red destructive key.buildDashboardFooterHints: flat ordered list + per-variant key coverage.writeFrameasserts the cursor-hide sequence.🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Improvements