feat(ui): highlight active panes - #993
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Greptile SummaryThis PR adds logical workspace-surface activation and uses it to emphasize the separator belonging to the active built-in or extension pane.
Confidence Score: 4/5The implementation appears safe to merge after the non-blocking architecture documentation mismatch is corrected. Activation, layout, input routing, fixed-pane separators, and delegated metadata geometry are consistently implemented and tested; the only accepted concern is stale documentation describing the previous separator ownership model. Files Needing Attention: src/extensions/default/ui/reviewInfo/index.tsx and docs/extension-architecture.md Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart LR
Click[Primary surface click] --> Controller[Active pane controller]
Focus[Focused descendant changes] --> Resolve[Resolve owning surface]
Resolve --> Controller
Resize[Successful divider resize] --> Controller
Layout[Visible pane layout] --> Controller
Controller -->|Pane key| Active[Active pane]
Controller -->|Review or unavailable pane| Review[Review active]
Active --> Divider[Accent heavy host separator]
Review --> Inactive[Thin inactive pane separators]
Prompt To Fix All With AI### Issue 1
src/extensions/default/ui/reviewInfo/index.tsx:47
**Architecture documentation is stale**
The bundled review-info pane now has two content rows, with its separator drawn by the host. However, `docs/extension-architecture.md` still describes a fixed three-row pane that draws its own border. This mismatch could lead extension authors to rely on the obsolete ownership and geometry model.
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.Reviews (1): Last reviewed commit: "feat(ui): highlight active panes" | Re-trigger Greptile |
| title: "Review info", | ||
| placement: "top", | ||
| height: { preferred: 3, min: 3, max: 3 }, | ||
| height: { preferred: 2, min: 2, max: 2 }, |
There was a problem hiding this comment.
Architecture documentation is stale
The bundled review-info pane now has two content rows, with its separator drawn by the host. However, docs/extension-architecture.md still describes a fixed three-row pane that draws its own border. This mismatch could lead extension authors to rely on the obsolete ownership and geometry model.
Prompt To Fix With AI
This is a comment left during a code review.
Path: src/extensions/default/ui/reviewInfo/index.tsx
Line: 47
Comment:
**Architecture documentation is stale**
The bundled review-info pane now has two content rows, with its separator drawn by the host. However, `docs/extension-architecture.md` still describes a fixed three-row pane that draws its own border. This mismatch could lead extension authors to rely on the obsolete ownership and geometry model.
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
Problem
Hunk does not identify which docked pane currently owns the user's attention. This is especially unclear for interactive bottom panes such as OpenCode, where focusing the prompt leaves the host divider visually identical to an inactive pane.
Approach
theme.accentand heavy━/┃glyphs; inactive panes retaintheme.borderand thin─/│glyphs.The built-in delegated review-info pane now relies on the host separator instead of drawing its own line. No public extension API changes are required.
Visual
Inactive pane:
Active after focusing its prompt:
Verified in a 120x28 Linux PTY using the GitHub dark theme and the real
hunk-opencodeextension.Validation
bun run format:checkbun run lintbun run typecheckbun run deps:checkbun run test(2118 passed, 2 skipped)bun run test:integration(143 passed, 1 skipped)bun run test:tty-smoke(9 passed)Ctrl+Oagainsthunk-opencodePlatform tested: Linux. macOS and Windows were not tested manually; PTY suites remain Unix-only.