Render Markdown links as clickable labels in supported terminals (#40471)

## What changed

- Render web-link labels in cyan with an underline and hide the repeated destination in recognized terminals with hyperlink support.
- Keep destinations visible for unknown terminals, multiplexers, non-terminal output, and empty labels so the URL remains usable.
- Preserve OSC 8 link targets through prose and table wrapping, streaming updates, transcript clipping, and pager scrolling.

## Testing

- Add coverage for terminal detection, label formatting and fallbacks, wrapped tables and prose, streaming parity, history output, and scrolled transcript rendering.

GitOrigin-RevId: 4a09e41e349ba299022a9c00f0c25892d9aaefe3
This commit is contained in:
Benjamin Carlsson authored and copyberry committed 2026-08-24 20:04:52 +00:00
1 parent c3d5e4418f
commit bb8cada846
17 files changed
+614 -60

No files matched your search

@@ -17,7 +17,7 @@ expression: render.lines
HyperlinkLine {
line: Line::from_iter([
Span::from("First paragraph with a "),
Span::from("link"),
Span::from("link").cyan().underlined(),
]),
hyperlinks: [
TerminalHyperlink {