feat(templates): add the Teal Pulse clinical CV preset - #627
Merged
DemchaAV merged 1 commit intoAug 31, 2026
Merged
Conversation
A one-page clinical sheet in five bands: a heart crossed by a flat pulse beside a letter-spaced name; a contact strip divided by short rules; a two-column body carrying the competencies as dotted lines beside the summary and the roles under badged headings; a three-column closing band for the degree, the certifications and the facts; and a tracked line under a rule that ends in a small heart. It ports a published standalone template onto the existing CvDocument with no model change. Six berths reach their sections by title, including a tagline berth whose body is drawn and whose title is not. The preset sets its own page: the design was drawn on a raster whose proportion is not A4's and every length is a share of that grid, so a caller's page size and margin are overwritten. Both vertical rules are the left border of the column to their right, so they are the grid rather than lines beside it, and the main headings are laid over their own rule with the paper knocked out behind every letter — a row cannot nest in a row cell, and the rule's visible length still has to follow the words. Past one page it behaves unlike the other ported CV presets: the bands are stacked in the page flow, so a longer CV carries the closing band onto a second page rather than losing anything, while the body row is atomic and a body taller than a page raises AtomicNodeTooLargeException. A link is drawn as its own label with the address behind it, the one deliberate departure from the ported sheet: six of 121 nodes shift sideways and 7,724 of 1,987,720 pixels change, with nothing moving vertically. Guarded by a smoke test, an exact layout snapshot and a pixel-parity gate; the examples showcase gains `cv-teal-pulse-v2`.
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
The next published CV in the promotion queue, and the first one whose design does not
fit the shape the family has been assuming. It is drawn on a page that is not A4, its
headings sit on rules rather than beside them, and it is stacked in bands rather than
built as one atomic body — so it is the case that tests whether the
CvDocumentmodeland the preset conventions hold for a sheet that was not made in their image.
They do: it lands with no model change at all.
What
cv.presets.TealPulse, composed from six package-private files — the measured geometryand type scale, the icon loader, the idioms the sheet repeats, and one per band.
Five bands: a heart crossed by a flat pulse beside a letter-spaced name; a contact
strip divided by short rules; a two-column body carrying the competencies as dotted
lines beside the summary and the roles under badged headings; a three-column closing
band for the degree, the certifications and the facts; and a tracked line under a rule
that ends in a small heart.
Three things worth naming.
The preset sets its own page. The design was drawn on a raster whose proportion is
not A4's and every length is a share of that grid, so a caller's page size and margin
are overwritten rather than followed — the opposite choice from
CharcoalGold, and madebecause this sheet is a fixed composition rather than a layout that rescales.
What happens past one page is not what the other ported CV presets do. The bands are
stacked in the page flow, so a CV with more roles than the design holds carries the
closing band onto a second page rather than losing anything; the body row itself is
atomic, so a body taller than a page raises
AtomicNodeTooLargeException. The firstdraft of this preset documented it as one-page-strict like its siblings, which was
wrong — probing it found six roles produce two pages, and both behaviours are now
pinned by tests.
A link is drawn as its own label with the address behind it — the rule set on
TerracottaRaillast week — which is the one deliberate departure from the portedsheet: writing the URL out makes the strip's gaps depend on how long a profile happens
to be called. Measured at six of 121 nodes shifting sideways and 7 724 of 1 987 720
pixels, with nothing moving vertically.
Also here: the example (
cv-teal-pulse-v2), its showcase row and its committed preview.Tests
./mvnw -B -ntp clean verify -pl :graph-compose-core,:graph-compose-render-pdf,:graph-compose-render-docx,:graph-compose-render-pptx,:graph-compose-templates,:graph-compose-testing,:graph-compose-qa,:graph-compose-coverage -am— BUILD SUCCESS.TealPulseSmokeTest(12) — identity, the canonical render, every band's text, thetagline berth drawing its body and not its title, the page override, the contact and
link targets, a link showing its label while the annotation keeps the address, a
linked role and degree, a document with nothing but an identity, an identity with no
links, the run onto a second page, and the refusal of a body taller than one.
TealPulseLayoutSnapshotTest(1) — an exact snapshot of the one-page sheet.TealPulseVisualParityTest(1) — pixel baseline, same budget and tolerance as theother CV gates.
The port was proven before the gates were written: the preset rendered against the
bundle's own fixture differs by 0 of 1 987 720 pixels, with 121 of 121 layout
nodes identical in geometry — the only differences being the eleven node names the
promotion deliberately changes.
One finding worth recording: this bundle does not reproduce its own published
preview — 46 783 pixels differ, identically on the engine it was cut against and on
this one. The cause is the engine's Latin-ligature fix: the preview's text layer reads
"Pa ent Assessment" and "medica on administra on", so it was rendered before that
landed. The published source is self-consistent and is what was ported; the preview is
stale.