docs(architecture): record Phase 4.5 builder polish
CI and Deploy / test (push) Failing after 2m4s
CI and Deploy / deploy (push) Has been skipped

cv-builder.md (outline-driven Content tab, DnD, rich text, preview page nav,
public-CV routing fix + deployment note), cv-theme-engine.md (rich text/ATS/
print), roadmap Phase 4.5 shipped.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
cesnimda
2026-07-18 14:48:33 +02:00
parent 582c4e07e9
commit 074c78a7ef
3 changed files with 51 additions and 15 deletions
+12 -3
View File
@@ -43,11 +43,20 @@ theme is smoke-tested automatically.
dense), `ats-classic` (single, no graphics), `nordic` (sidebar-right), `elegant` (single, editorial),
`creative` (sidebar-left, bold).
## Rich text, ATS, and print (2026-07-18)
- **Rich-text bullets** are shipped: bullets/summary support `**bold**`, `*italic*`, `__underline__`,
`[text](url)` via `ThemedCvRenderer.Inline` — everything is HTML-escaped first, then a whitelist is
re-applied, so no user tag survives. Storage stays plain text (no HTML, no sanitiser dependency).
- **ATS-friendliness** is a data flag: `CvTheme.AtsFriendly` (set on the single-column themes),
surfaced in `GET /api/cv/themes` and badged in the Customize tab. Two-column (sidebar) themes are not
flagged, as sidebar layouts can trip naive resume parsers.
- **Print quality**: the renderer emits `break-inside: avoid` on entries, `break-after: avoid` on
section headings, and widow/orphan control, so entries don't split across a page in the Playwright
PDF pass.
## Deliberately not here (yet)
- **Rich-text inside bullets.** The render model treats bullets as plain strings, so the builder's text
areas are plain text. Adding bold/italic/links means the render model carries inline runs and the
renderer emits them — a self-contained extension, no theme changes.
- **PDF page numbers.** `ShowPageNumbers` is carried through settings but the actual footer is a
Playwright `footerTemplate` concern (the PDF exporter), not CSS paged-media (Chromium's margin boxes
are unreliable). Wire it in `PlaywrightCvPdfExporter` when needed.