Restyle Exposé tiles: state-tinted borders, inlined title, status pills - #150
Conversation
Adopt the dashboard card vocabulary for Exposé tiles (Direction C): - Tile border is tinted to the agent's state (bright when selected, dimmed otherwise), so the grid reads by state at a glance. - Window title is inlined into the top rule (badge · identity · context), matching the card() top-rule layout. - Status renders as an uppercase state-tinted pill on its own dedicated row (new renderAgentStatusPill/agentStatusKind helpers), so the signal stays legible at any tile width. - Responsive header: the worktree/project context stays in the top rule when it fits, else drops to its own wrapped row(s); preview lines shrink to make room. Handles dense, narrow grids. - Project scope always shows the worktree; meta scope shows project / worktree (new "project-worktree" sublabel). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Review limit reached
More reviews will be available in 11 minutes and 43 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughAdds ChangesExposé Tile Rendering Overhaul
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 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 unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 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/tmux/expose.ts`:
- Around line 203-206: The bodyRows construction unboundedly includes all
headerRows without checking if they fit within the bodyCapacity limit. When
wrapped context generates more header rows than available space, the tile
exceeds layout.tileHeight causing visual corruption. Modify the line where
bodyRows is constructed to cap headerRows by slicing it to only include rows
that fit within the remaining bodyCapacity after accounting for previewRows,
ensuring that headerRows.length plus previewRows.length does not exceed
bodyCapacity. This will prevent overflow while still preserving preview content
priority.
🪄 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: 1171dc6e-92a6-4770-9d6a-4b6c182dd7ce
📒 Files selected for processing (5)
src/tmux/expose-model.test.tssrc/tmux/expose-model.tssrc/tmux/expose-tile.test.tssrc/tmux/expose.tssrc/tui/render/agent-status.ts
- fitHeaderRows() caps header rows to the tile's body capacity so a wrapped context header can never push a tile past its height and overwrite the tile below; context rows drop first, the status pill is preserved. - Reserve the selection-marker slot whether or not selected, so the title (and the wide/narrow header breakpoint) doesn't shift as selection moves. - Top-rule dash count floors at 0 (not 2) so the rule width matches the body rows at degenerate tile widths. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Concurrent sub-agent review — additional findings beyond the CodeRabbit thread (all fixed in 7195ba1):
(The header-overflow issue CodeRabbit raised is handled on its review thread.) |
What
Brings the Exposé tiles into the dashboard's design language (Direction C, approved in design review).
▸accent badge; others = dimmed state border, so state-color and selection never conflict.▸ badge · identity · context, matching thecard()top-rule layout; rounded corners.renderAgentStatusPill/agentStatusKindhelpers in the sharedagent-statusmodule; uppercase, state-tinted.project / worktree(new"project-worktree"sublabel inexpose-model.ts).Preview (ANSI stripped)
Tests
buildTileHeader(responsive breakpoint) +drawTile(border tint, pill, height) coverage; updated the meta-scope sublabel assertion.🤖 Generated with Claude Code
Summary by CodeRabbit
Release Notes