feat(templates): add the Violet Grid banded CV preset - #631
Merged
Merged
Conversation
A one-page sheet with no page-level grid at all: a two-tone name beside the contact list, three opening lines, a six-up grid of marked skills divided by dotted rules, a strip of tools on inline discs, the roles held on a dated timeline whose dates sit outside the rail, the projects behind tinted tiles, education and languages side by side, and a tinted band closing on a quotation. Every split is local to one band, and none of the four knows about the others — which is why every horizontal arrangement is either a top-level row or a table and none of them nests: a row cannot sit inside a row's cell. Three marks are relationships rather than lengths. A section rule starts where its heading ends because it is a weighted column taking what an auto column leaves; the timeline rail is the left border of every entry but the last, so consecutive entries butt into one line that stops at the final marker; and a project's hairline is its copy's left border, so it is exactly as tall as the copy. None has to be re-measured when the content changes. Unlike its ported siblings this sheet flows: each experience entry is held together, so a longer CV runs onto a second page rather than cutting a role in half. As on the presets before it a link is drawn as its own label with the address behind it, the one deliberate departure from the ported sheet, at 1,882 of 2,173,720 pixels. Guarded by a smoke test, an exact layout snapshot and a pixel-parity gate; the examples showcase gains `cv-violet-grid-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 last CV in the promotion queue that needs no new fonts, and structurally the odd one out: a single column with no page-level grid, where four separate bands each split their own way. It is the case that tests whether the preset conventions hold for a sheet built out of local arrangements rather than one shared skeleton.
They do: it lands with no model change, reading a rated language's wording from the
CvSkill.noteadded forSlateOrange.What
cv.presets.VioletGrid, composed from five package-private files — the measured geometry and type scale, the icon loader, the idioms the sheet repeats, and one per half of the page.Every split is local to one band — the masthead splits where the contact marks begin, the timeline into dates / rail / content, a project into tile / copy, the credentials into two halves — and none of the four knows about the others. That is why every horizontal arrangement is either a top-level row or a table, and why none of them nests.
Three marks are relationships, not lengths. A section rule starts where its heading ends, because it is a weighted column taking what an auto column leaves. The timeline rail is the left border of every entry but the last, so consecutive entries butt into one unbroken line that stops at the final marker. A project's hairline is its copy's left border, so it is exactly as tall as the copy. None of the three has to be re-measured when the content changes.
Past one page it flows. Each experience entry is held together, so a longer CV runs onto a second page rather than cutting a role in half — pinned by a test, as on
TealPulse.As on the presets before it, a link is drawn as its own label with the address behind it — the one deliberate departure from the ported sheet, measured at 1 882 of 2 173 720 pixels.
Also here: the example (
cv-violet-grid-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, 1014 tests.VioletGridSmokeTest(12) — identity, the canonical render, every band's text, the two-tone name, the quotation's title staying off the sheet, the contact and link targets, a link showing its label, a linked role, project and degree, an unknown mark reported as a data error, a skill with no mark, an identity with no links, a document with nothing but an identity, and the run onto a second page.VioletGridLayoutSnapshotTest(1) andVioletGridVisualParityTest(1).The port was proven before the gates were written: the preset rendered against the bundle's own fixture differs by 0 of 2 173 720 pixels, with 140 of 140 layout nodes identical in geometry — the only differences being the six node names the promotion deliberately changes.
As with the last two, this bundle does not reproduce its own published preview — 45 526 pixels, identically on both engines. Here the cause is the engine's Latin-ligature fix: the preview's text layer reads "sofia.mar nez.design", so it was rendered before that landed. The published source is self-consistent and is what was ported.