pingdotgg / pingdotgg/t3code

[Bug]: Terminal cursor leaves top and bottom edges visible during blink off phase

Open
#11,402 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug via-triage
Dominant language
TypeScript
Stars
23k
Forks
5.9k
Avg merge
11h 14m
Merged PRs (30d)
357

Description

Before submitting
  • I searched existing issues and did not find an exact duplicate.
  • I included enough detail to investigate the problem.
Area

apps/desktop (integrated terminal rendered by apps/web)

Steps to reproduce
  1. Open the integrated terminal with a blinking cursor.
  2. Leave the shell idle at a prompt.
  3. Observe the cursor during the blink's off phase.

The reporter's screenshot shows a light theme and an idle % shell prompt after git pull completed. The command is context, not an established prerequisite.

Expected behavior

The cursor disappears completely during the off phase, leaving the terminal background and underlying text intact.

Actual behavior

Two faint horizontal lines remain at the top and bottom of the cursor cell when the cursor is off. The screenshot supplied by the reporter clearly shows these lines in the otherwise blank cell immediately after the prompt.

Impact

Cosmetic issue.

Version or commit

T3 Code desktop 0.0.40 (09e8de9c655a).

Environment

T3 Code desktop on macOS, light theme. Exact macOS version, display scale, and zoom level were not supplied.

Investigation status

The artifact is visible in the reporter's screenshot; the blinking behavior is reporter-observed. No independent interactive reproduction or root cause has been established.

Relevant rendering code is apps/web/src/terminal/ghostty/renderer.ts, with cursor repaint coverage in renderer.test.ts. Existing coverage uses a mocked canvas and does not establish that no residual pixels remain after an on/off cycle on a real canvas.

Searched open and closed issues for cursor blink, terminal border, and cursor terminal. #1939 concerns cursor positioning, and #7644 concerns stale/garbled terminal output; neither specifically describes residual top/bottom cursor edges during blinking.

Workaround

None verified.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in apps/web/src/terminal/ghostty/renderer.ts and read the cursor repaint coverage in renderer.test.ts. Reproduce or model a cursor on/off cycle, noting that the existing mocked-canvas tests do not establish real pixel cleanup. Done means the cursor disappears completely during its off phase without residual top or bottom lines.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
desktop, frontend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.