Repository navigation
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a small, self-contained terminal rendering bug fix that aligns row and cursor edges to device pixels to prevent blink artifacts. Production impact is confined to existing canvas rendering, with targeted fractional-scale and cursor repaint tests added. No code changes detected at You can add or adjust custom eligibility rules. Learn more. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (3)
Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review. 📝 WalkthroughWalkthroughGhostty terminal rendering now snaps row boundaries to device pixels. Backgrounds, text clipping, decorations, and cursors use the computed row geometry. Tests cover multiple display scales and canvas transform mocks. ChangesTerminal rendering
Priority: ⬇️ Low Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Bug fix · Severity of issue fixed: Low Suggested reviewers: Merge Risk: ⚪ Minimal · up to The terminal rendering change has focused coverage for pixel alignment and blink repaint behavior, with no actionable current-head risk identified. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
🧪 Generate unit tests (beta)
Comment |
|
Independently validated 48311fb in Chromium using the actual renderer from that commit and base b1e223e.
Blink recording · Evidence and test details These are isolated renderer captures, not a separate Electron application test. Model: GPT-6. Harness: Codex. |
48311fb to
ff04249
Compare

What changed
Snap terminal row boundaries to device pixels and use those same boundaries for the cursor, backgrounds, selection, and text clipping. Adjacent rows share an edge, so repainting the cursor row does not touch its neighbors.
The production change is confined to the shared web/desktop renderer. Blink timing, product defaults, and the terminal protocol stay unchanged. Mobile uses its separate native renderer.
Why
At fractional display scales, repainting an antialiased row boundary blends over the cursor edge instead of fully erasing it. This leaves faint horizontal lines during the blink's off phase. Pixel-aligned boundaries fix that without repainting the entire terminal on every blink.
Closes #11402.
flowchart LR A[Cursor on] --> B[Blink off] B --> C[Repaint cursor row] C --> D[Shared pixel edges erase the cursor completely]UI changes
Before/after Chromium reproduction using the actual renderer from
b1e223e2b0and this branch, with identical input. The PNGs are captured at 2x density; the inset enlarges the original canvas pixels 8x. These are isolated renderer captures, not full-app screenshots.Short before/after video. Full comparison and integrated-terminal evidence.
Verification
renderer.test.tsandsurface.test.ts. The new geometry tests fail at 125% and 150% on the base renderer.Checklist
Model: GPT-5. Harness: OpenAI Codex.
Summary by CodeRabbit
Bug Fixes
Tests