feat(ui): render markdown in the details pane #62

Merged
deadstyle merged 4 commits from feature/59-markdown-details into develop 2026-10-08 15:24:45 -05:00
Owner

Refs #59. PR and issue bodies now render as formatted markdown in the Details pane, including the ★ Renovate details.

  • Links show their text and are clickable terminal hyperlinks (http, https, mailto only); URLs are never printed inline.
  • Renovate update tables draw as columns when they fit and stack as Header: value lines when they don't; hidden HTML comments and the renovate-debug blob no longer show.
  • Lists, task boxes, quotes, rules, bold/italic and code render styled and wrapped to the pane width.

Decisions

Opus: goldmark parser with our own Lip Gloss renderer in internal/ui/markdown, over glamour (about 15 extra modules, can't hide link URLs). ADR 0014.

Verification

make fmt-check lint test build: lint 0 issues., go test -race ./... all ok. make check's shellcheck step can't run on this machine (shellcheck isn't installed), so CI is the gate for it. TUI layout: reasoned from the code and unit-tested on the rendered strings; not observed in a live terminal.

Review

Three fresh reviewers (standards, comments, spec), a fixer round, and a second adversarial review. Fixed: unresolved escapes and entities, unsafe link schemes, raw control and bidi characters, lost text in HTML blocks and header-only tables, glued punctuation wrapping, tiny-width overflow, links in tables, weak tests (mutation-checked). Declined: grapheme-cluster splitting, input-size cap, and one \&amp; edge case. Autolinks (<https://…>) show their URL because it is their text.

Docs

ADR 0014 added; CLAUDE.md and docs/architecture.md list the new package. design.md unchanged.

🤖 Generated with Claude Code

https://claude.ai/code/session_019b9RTiV9JwxuGqkP8pRiKS

Refs #59. PR and issue bodies now render as formatted markdown in the Details pane, including the ★ Renovate details. - Links show their text and are clickable terminal hyperlinks (http, https, mailto only); URLs are never printed inline. - Renovate update tables draw as columns when they fit and stack as `Header: value` lines when they don't; hidden HTML comments and the `renovate-debug` blob no longer show. - Lists, task boxes, quotes, rules, bold/italic and code render styled and wrapped to the pane width. ## Decisions Opus: goldmark parser with our own Lip Gloss renderer in `internal/ui/markdown`, over glamour (about 15 extra modules, can't hide link URLs). ADR 0014. ## Verification `make fmt-check lint test build`: lint `0 issues.`, `go test -race ./...` all `ok`. `make check`'s shellcheck step can't run on this machine (shellcheck isn't installed), so CI is the gate for it. TUI layout: reasoned from the code and unit-tested on the rendered strings; not observed in a live terminal. ## Review Three fresh reviewers (standards, comments, spec), a fixer round, and a second adversarial review. Fixed: unresolved escapes and entities, unsafe link schemes, raw control and bidi characters, lost text in HTML blocks and header-only tables, glued punctuation wrapping, tiny-width overflow, links in tables, weak tests (mutation-checked). Declined: grapheme-cluster splitting, input-size cap, and one `\&amp;` edge case. Autolinks (`<https://…>`) show their URL because it is their text. ## Docs ADR 0014 added; CLAUDE.md and `docs/architecture.md` list the new package. `design.md` unchanged. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_019b9RTiV9JwxuGqkP8pRiKS
Links are clickable terminal hyperlinks, raw HTML comments are dropped,
and tables fit the pane or stack. Opus chose goldmark with our own
renderer over glamour (ADR 0014).

Refs #59

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019b9RTiV9JwxuGqkP8pRiKS
Decode escapes and entities, hyperlink only http/https/mailto, strip
control characters, keep links clickable in tables, wrap code blocks,
and keep the width guarantee at tiny widths.

Refs #59

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019b9RTiV9JwxuGqkP8pRiKS
fix(ui): keep text in HTML blocks, harden markdown tests
All checks were successful
ci / check (pull_request) Successful in 2m24s
c49f911e27
Refs #59

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019b9RTiV9JwxuGqkP8pRiKS
deadstyle merged commit 86906f433e into develop 2026-10-08 15:24:45 -05:00
deadstyle deleted branch feature/59-markdown-details 2026-10-08 15:24:45 -05:00
Sign in to join this conversation.
No description provided.