Skip to content

feat(cv-v2): migrate Executive preset#61

Merged
DemchaAV merged 1 commit into
developfrom
feature/cv-v2-executive-preset
May 26, 2026
Merged

feat(cv-v2): migrate Executive preset#61
DemchaAV merged 1 commit into
developfrom
feature/cv-v2-executive-preset

Conversation

@DemchaAV
Copy link
Copy Markdown
Owner

Summary

Ports the legacy Executive CV preset (ExecutiveSlateCvTemplate) onto the v2 layered architecture. The new preset is a thin orchestrator that reuses Headline, SectionHeader.flat, and SectionDispatcher; the only preset-local piece is the inline header block (V1 splits meta and links across two rows — no existing contact widget has that exact shape).

Visual signature (preserved from V1)

  • Uppercase Poppins deep slate (rgb(24,35,51)) masthead, left-aligned.
  • Lato meta line address | phone.
  • Lato link row email | label1 | label2 with bronze (rgb(172,112,55)) underlined links + ' | ' separators.
  • Full-width 1.1pt muted rule under header.
  • Uppercase Poppins bronze module headings over a single-column body.

Theme — additive only

  • CvPalette.executive() — mid-slate ink, soft muted slate, V1 muted-rule grey.
  • CvTypography.executive() — Poppins headline + Lato body, sizes 24/9.1/10.8/9.5/9.5/9.0/9.5, line-spacing 1.25.
  • CvSpacing.executive() — 8pt page-flow, 1.1pt accent rule, 2pt paragraph top.
  • CvTheme.executive() — wires the three above + CvDecoration.classic().
  • PRIMARY_NAME and ACCENT stay preset-local (fifth/sixth tokens; same pattern as NordicClean / EditorialBlue).

Test plan

  • ./mvnw test -Dtest=com.demcha.compose.document.templates.cv.v2.presets.ExecutiveSmokeTest -pl . — 3/3
  • ./mvnw test -Dtest=com.demcha.compose.document.templates.cv.v2.presets.CvV2VisualParityTest -Dgraphcompose.visual.approve=true -pl . — first-time baseline approval (10/10)
  • ./mvnw test -Dtest=com.demcha.compose.document.templates.cv.v2.presets.CvV2VisualParityTest -pl . — 10/10 without approve (baselines locked in)
  • ./mvnw test -pl . — 936/936 full canonical suite
  • Visual review of examples/target/generated-pdfs/templates/cv/cv-executive-v2.pdf
  • CI green

Files

  • 5 modified: CvPalette.java, CvTypography.java, CvSpacing.java, CvTheme.java, CvV2VisualParityTest.java
  • 5 new: presets/Executive.java, presets/ExecutiveSmokeTest.java, two cv-v2-layered/executive-page-*.png baselines, examples/.../CvExecutiveExample.java
  • 460 insertions, 1 deletion.

Ports the legacy Executive CV preset (ExecutiveSlateCvTemplate) onto
the v2 layered architecture. The new preset is a thin orchestrator:

* CvTheme.executive() factory wires CvPalette.executive() (mid-slate
  ink, soft muted slate, V1 muted-rule grey) + CvTypography.executive()
  (Poppins headline, Lato body, 24/9.1/10.8/9.5/9.5/9.0/9.5, 1.25
  line spacing) + CvSpacing.executive() (8pt page-flow, 1.1pt rule).
* PRIMARY_NAME (deep slate rgb(24,35,51)) and ACCENT (warm bronze
  rgb(172,112,55)) stay preset-local as fifth/sixth tokens — no other
  v2 preset shares them today.
* Header is preset-local inline DSL: Headline.uppercaseLeftAligned
  with the Poppins slate name style, an inline meta paragraph
  (address | phone), an inline link row (email + custom links, with
  bronze underlined link style and ' | ' separators), and a
  full-width muted rule. V1 splits meta and links across two rows —
  no existing contact widget has that exact shape, so inline DSL
  beats a one-off widget variant.
* Module bodies reuse SectionHeader.flat (uppercase bronze title) +
  SectionDispatcher.renderBody, so the preset gets paragraph / skills
  / rows / entries dispatch for free.
* 0 copies of the dropped style() wrapper, 0 local markdown helpers,
  0 changes to shared widgets or theme records (only additive new
  factories on CvPalette / CvTypography / CvSpacing / CvTheme).

Tests:
* CvV2VisualParityTest now exercises 10 presets (added Executive),
  10/10 pass at the existing 50k pixel-diff budget against fresh
  baselines under visual-baselines/cv-v2-layered/.
* ExecutiveSmokeTest covers stable identity + default-factory and
  custom-theme render paths.
* Full canonical suite: 936/936 (was 932 — +1 parameterized parity
  case + 3 smoke tests).
@DemchaAV DemchaAV merged commit 6819ace into develop May 26, 2026
9 checks passed
@DemchaAV DemchaAV deleted the feature/cv-v2-executive-preset branch May 26, 2026 09:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant