fix(web): render powerline separators at cell edges#5607

merged4
main
GitHub fork: fix/web-terminal-powerline-glyphs
openedAug 7, 2026bySSadriG91
View on GitHubTwo-way sync enabledPR last imported 3d ago

The web terminal rendered solid Powerline separators through font fallback. Their font metrics could leave gaps between prompt segments.

Draw U+E0B0 and U+E0B2 as triangles bounded by the terminal cell, and stop text batching before those glyphs. Normal rendering and the block cursor share the same geometry. Other glyphs retain font rendering.

Validation: nine focused renderer tests, web typecheck, scoped lint, and format passed. One retained renderer regression covers cell-edge geometry and text batching; a temporary block-cursor probe also passed. Independent Claude Opus and GPT-6.1 reviews approved the source.

The integrated Browser pass exercised a real terminal at 1280×800 and DPR 2 with the default font and FreeMono: colored segments, both block-cursor directions, selection/copy, first/last columns, and ordinary scrollback. The before comparison swaps only the exact baseline renderer into the same isolated app. Selection was created through the real canvas handlers with synthetic pointer events; a trusted copy event preserved the original glyphs. Supplemental 110%/125% CSS scaling showed no extra seams; native browser zoom and an Electron launch were not verified.

Before — baseline renderer, FreeMono:

Before: font-rendered Powerline separators leave gaps

After — reviewed renderer, same font and fixture:

After: solid Powerline triangles reach the cell edges

Block cursor on the right-pointing separator:

Block cursor preserves the right-pointing triangle

Selection across the prompt:

Selection keeps the prompt geometry intact

Original contribution by @SadriG91. Maintainer takeover: Claude Opus 5.5 for tests/review, Claude Fable 5.1 for implementation, GPT-6.1 for independent review and Browser verification; Claude Code and Codex harnesses.

Checks

All checks passed

Added 1 commit

  • fix(web): render powerline separators at cell edgesce4f030
Synced from GitHub

Warning

Review limit reached

Only developers with an assigned seat can use this organization's usage-based review budget, and seats here are assigned manually. Ask an admin to assign a seat, or change the review continuation mode in Billing.

Next included review available in 1 minute.

Check out review usage here.

View limit details

Limit details: You’ve used all 10 included reviews currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Path: .coderabbit.config.ts
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 03b6cdb7-9e9d-4743-bb8b-870289e8ab44
📥 Commits

Reviewing files that changed from the base of the PR and between b72740852ffb5ab727e1ae7c042d9e89533bc341 and 9fd417571439c9f74768d059be6967c3e5495119.

📒 Files selected for processing: 2
  • apps/web/src/terminal/ghostty/renderer.test.ts
  • apps/web/src/terminal/ghostty/renderer.ts
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

Synced from GitHub

Approvability

Verdict: Approved at 9fd4175

Macroscope's review found this PR approvable — The patch is a focused renderer bug fix that replaces fallback-font rendering for two existing Powerline glyphs with cell-edge triangle geometry, while preserving ordinary glyph rendering. A targeted test covers both directions and text batching, and no production defaults or sensitive configuration are changed.

You can add or adjust custom eligibility rules. Learn more.

Added 1 commit

  • Merge branch 'main' into fix/web-terminal-powerline-glyphs21ff31f

Note

Written by claude-opus-5-5 on behalf of Maria

Hi! We are cleaning up open PRs, and this one appears to have been created with an older model (gpt-5.6-sol). If this change is really important, we recommend rebuilding the PR with a newer model if possible.

Note

Written by claude-opus-5-5 on behalf of Maria

Reopening, this was closed by mistake. Sorry for the noise!

Taking over this one. I’ll reduce the tests to the useful coverage, update the implementation against current main, and verify it before publishing the changes.

Added 2 commits

  • Merge remote-tracking branch 'origin/main' into takeover/560761c0212
  • fix(web): solid Powerline separators fill their terminal cell9fd4175