Repository navigation
fix(web): flush terminal dimensions when panel resizing ends - #15619
maria-rcks wants to merge 1 commit into
Conversation
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a contained web bug fix that flushes existing terminal resize notifications at panel drag completion without changing panel defaults or introducing a new capability. The implementation preserves debouncing and includes focused regression coverage for drag, observer, cancellation, and disposal paths. You can add or adjust custom eligibility rules. Learn more. |
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (7)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 2 remain after this review. 📝 WalkthroughWalkthroughThe preview panel now exposes resize completion epochs to its children. The terminal uses these epochs to refit when visible. GhosttyTerminalSurface now supports immediate flushing of pending resize notifications and debounces observer-driven notifications. ChangesRight-panel terminal resize
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Bug fix · Severity of issue fixed: Low Sequence Diagram(s)sequenceDiagram
participant useResizableWidth
participant PreviewPanelShell
participant TerminalViewport
participant GhosttyTerminalSurface
useResizableWidth->>PreviewPanelShell: resizeEpoch
PreviewPanelShell->>TerminalViewport: provide resizeEpoch
TerminalViewport->>GhosttyTerminalSurface: fit and flushResize
GhosttyTerminalSurface->>TerminalViewport: report current grid dimensions
Possibly related PRs
Suggested labels: Suggested reviewers: Merge Risk: ⚪ Minimal · up to The change flushes terminal dimensions when panel resizing ends. No concrete merge-blocking risk was found in the reviewed changes. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to The change preserves the existing session-scoped terminal resize path, with no demonstrated increase in privileges or data access. Remaining uncertainty concerns failure recovery and real shell behavior, especially for remote terminals. Retained concerns Security review detailsSecurity Blast Radius
Trust Boundaries and Controls
Hardening Proposals
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
Full details: Linked Issues checkExplanation [ Resolution After fitting on a visible panel resize epoch, call
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
Note Written by the linked-issue warning misreads the return value of the existing observer-ordering regression exercises observer fit, same-grid refit, and immediate pending-size flush without advancing the debounce timer. no code change is needed for this warning. the new flush method, epoch, and context already have explanatory comments; broader docstring additions would be outside this focused fix. |
problem
Narrowing the right-panel terminal reflows Ghostty immediately, while Bash keeps the previous column count until the 150 ms resize debounce expires. Typing immediately after releasing the divider can overwrite the prompt.
change
Publish a drag-end resize epoch through the existing shared panel sizing path. Visible nested terminals fit the committed width and flush pending PTY dimensions before paint, including split terminals and interrupted drags. Keep the existing observer and mid-drag debounce.
scope and approval
Closes #12058. Follows the accepted panel-width fix scope and adapts the focused implementation from #12068 to V2's shared
usePreviewPanelInlineSizepath, as requested in the V2 refile comment. #12830 addresses the separate attach/replay sizing path.verification
ccfe9049e43e1d2da1c5d151418cc083aa6218eb; Macroscope approved that head. CodeRabbit completed successfully; final independent reviews remain pending.Implemented by
gpt-6.1-sol(xhigh) through the Codex harness in T3 Code, on behalf of Maria.