Skip to content

fix(cv/v2): visual breathing room — entry separation + MP body left-padding#53

Merged
DemchaAV merged 1 commit into
developfrom
feature/cv-v2-entry-separation
May 24, 2026
Merged

fix(cv/v2): visual breathing room — entry separation + MP body left-padding#53
DemchaAV merged 1 commit into
developfrom
feature/cv-v2-entry-separation

Conversation

@DemchaAV
Copy link
Copy Markdown
Owner

Reader feedback after CV review of the rendered v2 PDFs:

  1. Education / Experience / Projects sections rendered as a wall of text — consecutive university entries, jobs, and projects shared the same line spacing as their internal lines, so the boundary between one entry and the next was visually invisible.

  2. In ModernProfessional preset, body text was flush with the section title (no left indent) — section title sat at the same x-coordinate as the body beneath it, making the visual hierarchy weaker than v1 had.

Fix

1. CvSpacing.entrySeparation — new spacer between consecutive multi-line entries.

  • classic preset: 6pt
  • modernProfessional preset: 8pt
  • @Deprecated 13-arg constructor preserved for backward-compat — fills new field with 6pt default

2. SectionDispatcher inserts host.spacer(0, entrySeparation) between items for:

  • EntriesSection — always (Education, Experience are multi-line)
  • RowsSection with BULLETED_STACKED style — between project items
  • Single-line styles (PLAIN, BULLETED) unaffected — already breathe via paragraphMarginTop

3. CvSpacing.modernProfessional() sectionBodyPadding left: 0 → 12pt — body text now visually indents from blue section title.

Baselines refreshed

All 6 visual-baseline PNGs refreshed via the -Dgraphcompose.visual.approve=true workflow established in #52. This commit is the first deliberate consumer of that workflow, demonstrating it works exactly as designed:

  1. Make visual change
  2. Visual parity test fails locally → check the actual vs diff PNGs
  3. Re-bless via approve flag
  4. Commit refreshed baselines alongside the code change

What's NOT changed

  • Engine and v1 surface untouched.
  • Public v2 API additions are backward-compatible (@Deprecated old ctor on CvSpacing).
  • All other section types (Paragraph, PLAIN/BULLETED rows) render identically.

Test plan

  • 3/3 CvV2VisualParityTest pass against refreshed baselines
  • All other v2 tests green
  • Re-rendered cv-modern-professional-v2.pdf — body indented, entries separated
  • CI green

⚠️ Stacked on #52 (visual-regression infra). After #52 merges, this PR's diff shrinks to just the spacing change + baseline updates.

@DemchaAV DemchaAV force-pushed the feature/cv-v2-entry-separation branch 4 times, most recently from b6b12ba to a241429 Compare May 24, 2026 19:36
… rows

Reader feedback: Education / Experience / Projects sections rendered
as a "wall of text" — consecutive university entries, jobs, and
projects shared the same line spacing as their internal lines
(title → subtitle → body), so the boundary between one entry and
the next was visually invisible.

Fix
---

- theme/CvSpacing — new field `entrySeparation` (double, points)
  controlling the vertical spacer between consecutive multi-line
  entries.
  - classic preset: 6.0pt
  - modernProfessional preset: 8.0pt (denser overall layout, bigger
    separator stands out more)
- @deprecated 13-arg constructor preserved for backward-compat —
  fills the new field with 6.0pt default so any pre-existing custom
  CvSpacing instance keeps compiling AND benefits from the
  improvement automatically.

- components/SectionDispatcher inserts `host.spacer(0, entrySeparation)`
  between items for:
  - EntriesSection — always (Education, Experience are multi-line)
  - RowsSection with BULLETED_STACKED style — between project items
    (each project is a two-line block — bold name + indented body)
  Single-line styles (PLAIN, BULLETED) are unaffected — they
  already breathe via the per-row paragraphMarginTop.

Visual diff (verified by re-rendered cv-modern-professional-v2.pdf):

  before:                          after:
    MSc Computer Science             MSc Computer Science
    University of Manchester         University of Manchester
    Distinction. Thesis: ...         Distinction. Thesis: ...
    BSc Software Engineering                                  ← gap
    Imperial College London          BSc Software Engineering
    First-class honours...           Imperial College London
                                     First-class honours...

Baselines
---------

Refreshed all 6 visual-baseline PNGs via the
`-Dgraphcompose.visual.approve=true` workflow established in #52 —
this commit is the first deliberate consumer of that workflow,
demonstrating it works as designed.

Tests
-----

- 3/3 CvV2VisualParityTest pass against refreshed baselines
- All existing v2 tests still green (CvNameTest, CvContactTest,
  CvDecorationTest, CvDocumentSlotTest, three preset smoke tests,
  WidgetSmokeTest)
- No engine / v1 surface edits
@DemchaAV DemchaAV force-pushed the feature/cv-v2-entry-separation branch from a241429 to eb87df4 Compare May 24, 2026 20:22
@DemchaAV DemchaAV merged commit 0091869 into develop May 24, 2026
9 checks passed
@DemchaAV DemchaAV deleted the feature/cv-v2-entry-separation branch May 24, 2026 20:27
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