Skip to content

fix(links): paint links in full-screen programs too, in a calmer blue (#97) - #98

Merged
Maxaubert merged 3 commits into
mainfrom
fix/97-links-on-alternate-screen
Sep 29, 2026
Merged

Maxaubert merged 3 commits into
mainfrom
fix/97-links-on-alternate-screen

Conversation

@Maxaubert

@Maxaubert Maxaubert commented Sep 28, 2026 •

Copy link
Copy Markdown
Owner

Closes #97.

A link in Claude Code's fullscreen view was clickable but never blue. The link painter skipped the alternate screen, which is where full-screen programs draw. xterm has no markers there, so the decorations the normal screen uses cannot exist.

The fix: on the alternate screen, each row xterm draws (onRender) has its link text wrapped in a span of the link colour, with the same faint underline.

  • xterm's DOM renderer replaces a row's contents whenever it draws it. So a row a TUI rewrites starts clean, and there is no smear to clean up.
  • A theme change redraws the alternate screen so the colour follows.
  • Links are found per row, because a program that owns the screen places its own text.

A calmer link blue (owner: "make the link colours less blue ... too saturated"). LINK_BLUE goes from #4ea1ff to #79a7d8: the same hue and lightness at half the saturation. On a light theme it is still moved to the 4.5:1 floor, as before. .e2e-shots/links.png was checked by eye.

Core change, so Prism gets it too through the automatic bump. Core 0.16.1, app 0.19.1. These numbers overlap with the other open PRs, and whichever merges later gets bumped again.

Verified:

  • Test first. The links e2e now enters the alternate screen in a real pwsh, prints a link, and asserts it wears the link blue. This failed on main. It also asserts that a row rewritten in place keeps no link colour.
  • Unit tests: 937 pass. Lint and typecheck pass.
  • The full e2e suite passes. edges failed once on its relaunch step, which this change does not touch, and passed on a rerun.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t

Maxaubert and others added 2 commits September 28, 2026 21:22
…ullscreen view draws (#97)

xterm has no markers, so no decorations, on the alternate screen. Each row
drawn there has its link text wrapped in a span of the link colour.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
The owner found #4ea1ff too saturated. Same hue and lightness, half the
saturation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
@Maxaubert Maxaubert changed the title fix(links): paint links in full-screen programs too (#97) fix(links): paint links in full-screen programs too, in a calmer blue (#97) Sep 28, 2026
…nate-screen

# Conflicts:
#	core/package.json
#	package-lock.json
#	package.json
@Maxaubert
Maxaubert merged commit 48f09b0 into main Sep 29, 2026
2 checks passed
@Maxaubert
Maxaubert deleted the fix/97-links-on-alternate-screen branch September 29, 2026 22:06
github-actions Bot pushed a commit that referenced this pull request Sep 29, 2026
…#97) (#98)

* fix(links): paint links on the alternate screen too, where Claude's fullscreen view draws (#97)

xterm has no markers, so no decorations, on the alternate screen. Each row
drawn there has its link text wrapped in a span of the link colour.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t

* style(links): a calmer link blue, #79a7d8 (#97)

The owner found #4ea1ff too saturated. Same hue and lightness, half the
saturation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Links in a full-screen program (Claude Code's fullscreen view) are not painted

1 participant