[Bug]: Terminal cursor leaves top and bottom edges visible during blink off phase
Nobody has claimed this yet.
- 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
- Open the integrated terminal with a blinking cursor.
- Leave the shell idle at a prompt.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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