feat(templates): render inline links in CV project-card titles#435
Merged
Conversation
EngineeringResume and SidebarPortrait hand-roll their project cards outside ProjectRenderer and emitted the card title as a flat styled run, so a [label](url) in a project title stayed literal there — unlike entry titles, project rows, and body text, which already render it as a link. Route both title runs through MarkdownInline.append so the link syntax becomes a clickable hyperlink, keeping the trailing " (stack)" run. Plain titles render byte-identically, so CV visual parity is unchanged.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
EngineeringResumeandSidebarPortraithand-roll their project cards outside theshared
ProjectRenderer, and each emitted the card title as a flat styled run(
rich.style(label.title(), …)). So a[label](url)in a project title stayedliteral text there — the last CV surface still bypassing the inline-link path that
entry titles, subtitles, project rows, and body text already route through. A link
that renders everywhere else silently failed to render in these two presets' project
cards.
What changed
EngineeringResume.addProjectsandSidebarPortrait.addProjectsListnow build thetitle run with
MarkdownInline.append(rich, label.title(), titleStyle)instead of araw
rich.style(...), mirroring howProjectRenderer.titleThenBody/.inlinealready do it. The trailing
" (" + label.stack() + ")"run and the plain body runare untouched, so only the title becomes link-aware.
CHANGELOG.md—### Public APIbullet under## v2.1.0 — in progressrecordingthat project-card titles now accept inline
[text](url)links in these two presets,next to the sibling entry-title entry.
Backward-compatible by construction: for a title without inline-Markdown syntax,
MarkdownInline.appendfinds no link match and collapses to a single base-styled run— byte-identical to the old
rich.style(...).Verification
./mvnw -B -ntp clean verify -pl :graph-compose-templates,:graph-compose-qa -am→BUILD SUCCESS (qa suite 672 tests, 0 failures).
ProjectTitleLinkTest(mirrorsEntryTitleLinkTest): a[Acme Corp](https://acme.example) (Java, PDFBox)project label composes to anExternalLinkTargetrun ("Acme Corp"→https://acme.example) in bothpresets; the
" (Java, PDFBox)"stack run survives; and a plain title staysnon-link (backward-compat control). Reverting the production edit turns the link run
back into flat text, so the guard goes red.
CvV2VisualParityTest— 16/16 in non-approve mode against reactor-builttemplates: pixel-identical to the committed baselines, no re-bless.
Lane: templates — two CV presets (
cv.presets) + one qa wiring test; no sharedwidget, theme, or engine change.