feat(cv): rebuild section editing workflow
This commit is contained in:
@@ -20,9 +20,10 @@ which is retained only for the legacy tailored-draft flow and is not used by the
|
||||
| Identity | `Id`, `Name`, `Category`, `Description` |
|
||||
| Layout | `Layout` (`single` \| `sidebar-left` \| `sidebar-right` \| `header-band`), `SidebarWidthMm`, `SidebarSections` |
|
||||
| Palette | `Accent`, `Ink`, `Muted`, `Line`, `Paper`, `SidebarBg`, `SidebarInk`, `HeadingColor` |
|
||||
| Typography | `HeadingFont`, `BodyFont`, `NameSizePt`, `HeadingSizePt`, `BodySizePt`, `LineHeight` |
|
||||
| Typography | `HeadingFont`, `BodyFont`, `UtilityFont`, `NameSizePt`, `HeadingSizePt`, `BodySizePt`, `LineHeight` |
|
||||
| Spacing | `PageMarginMm`, `SectionGapMm`, `EntryGapMm` |
|
||||
| Styling | `HeaderStyle` (`plain`\|`band`\|`centered`\|`kicker`), `HeadingStyle` (`caps-rule`\|`underline`\|`plain`\|`bar`), `PhotoShape` (`none`\|`square`\|`rounded`\|`circle`), `DefaultIcons` |
|
||||
| Styling | `HeaderStyle` (`plain`\|`band`\|`centered`\|`kicker`), `HeadingStyle` (`caps-rule`\|`underline`\|`plain`\|`bar`), `PhotoShape` (`none`\|`square`\|`rounded`\|`circle`), `DefaultIcons`, `NumberSections` |
|
||||
| Capabilities | `SupportedSettings` controls which editor panels the template exposes |
|
||||
|
||||
The renderer computes CSS from these plus normalized variant overrides: printable palette, curated
|
||||
fonts, body/heading size, line height, spacing, page size, layout, sidebar width/content, header and
|
||||
@@ -33,19 +34,21 @@ the structured career content.
|
||||
## Adding a theme
|
||||
|
||||
1. Append one `CvTheme { … }` to `CvThemeCatalog.Themes` (`JobTrackerApi/Models/CvTheme.cs`). Only override the
|
||||
fields that differ from the defaults.
|
||||
2. Nothing else. It appears in `GET /api/cv/themes`, the Template tab and dashboard create flow.
|
||||
fields that differ from the defaults and declare its `SupportedSettings` when the defaults do not apply.
|
||||
2. Nothing else is wired manually. It appears in `GET /api/cv/themes`, the Template tab and dashboard create flow.
|
||||
`GET /api/cv/themes/{id}/preview` renders isolated in-memory sample data for a real visual thumbnail;
|
||||
preview data is never persisted.
|
||||
3. Add a focused visual/PDF regression only when the template introduces a genuinely new layout behaviour.
|
||||
|
||||
Add a `CvBuilderTests.Every_catalog_theme_renders_valid_html` already loops the whole catalog, so a new
|
||||
theme is smoke-tested automatically.
|
||||
|
||||
## Shipped themes (8)
|
||||
## Shipped themes (9)
|
||||
|
||||
`modern` (header-band), `minimal` (single), `executive` (single, serif), `technical` (sidebar-left,
|
||||
dense), `ats-classic` (single, no graphics), `nordic` (sidebar-right), `elegant` (single, editorial),
|
||||
`creative` (sidebar-left, bold).
|
||||
`creative` (sidebar-left, bold), `code` (single-column developer/editorial layout with numbered
|
||||
sections and monospaced utility details).
|
||||
|
||||
## Rich text, ATS, and print (2026-07-18)
|
||||
|
||||
@@ -60,6 +63,10 @@ dense), `ats-classic` (single, no graphics), `nordic` (sidebar-right), `elegant`
|
||||
block. Section headings avoid a following break, list items carry widow/orphan rules, and long
|
||||
names/titles/contact values/URLs/tags wrap within `minmax(0, …)` columns. Typography is not scaled
|
||||
down to mask overflow.
|
||||
- **Builder pagination**: the screen preview runs the same keep-together policy over the rendered
|
||||
section/entry/list classes before cropping real A4 or Letter frames. It uses deterministic internal
|
||||
padding for unused page space (avoiding collapsing margins), while PDF export remains native
|
||||
Chromium paged media. A long structured Code-theme browser/PDF test guards both paths.
|
||||
|
||||
## Deliberately not here (yet)
|
||||
|
||||
|
||||
+43
-1
@@ -1,4 +1,28 @@
|
||||
# Active implementation checklist — 2026-08-24
|
||||
# Career / CV improvement work — 2026-08-26
|
||||
|
||||
## Current
|
||||
|
||||
- [ ] Run the complete backend, frontend, browser, migration, PDF, Compose and diff verification matrix; fix any regressions.
|
||||
|
||||
## Next
|
||||
|
||||
- [ ] Audit remaining TODOs/dead CV code after the full regression run and document any genuine environment-only blockers.
|
||||
|
||||
## Completed
|
||||
|
||||
- [x] Rechecked branch/status, recent CV work, existing tests/build tooling, and current builder architecture.
|
||||
- [x] Traced builder persistence, shared preview/PDF rendering, AI endpoint, extraction pipeline, confidence/diff review, and reference CV assets.
|
||||
- [x] Rendered and inspected the supplied two-page reference PDF and reviewed its HTML typography/theme tokens without modifying the originals.
|
||||
- [x] Extended the backward-compatible CV settings/document model for item visibility/order, custom section types, grouped skills and compact/bullet/grouped skill rendering.
|
||||
- [x] Rebuilt content editing as independently expandable section cards with keyboard reorder controls, hide/show, guarded deletion, preset/free-text sections and reusable per-section AI review.
|
||||
- [x] Centralised template capabilities and accent tokens, added the Code theme through the registry, and made actual rendered sample thumbnails drive selection.
|
||||
- [x] Added shared A4/Letter page grouping for browser preview and Chromium PDF, including regression coverage for long multi-page Code CVs and searchable linked PDF output.
|
||||
- [x] Improved DOCX structural extraction, Norwegian headings/languages/dates, contact and website parsing, summary/skills/education fallbacks, and confidence-preserving import output.
|
||||
- [x] Benchmarked both supplied reference DOCX variants without committing personal data: 100% structural coverage and consistency, with zero suspicious locations.
|
||||
|
||||
---
|
||||
|
||||
# Previous implementation checklist — 2026-08-24
|
||||
|
||||
## Current
|
||||
|
||||
@@ -959,3 +983,21 @@ When all possible work is complete, provide:
|
||||
12. Recommended next work package
|
||||
|
||||
Do not claim a workflow works unless it was genuinely browser-tested, mock-tested or otherwise clearly identified by verification type.
|
||||
# Career / CV improvement work (2026-08-26)
|
||||
|
||||
## Current
|
||||
|
||||
- [ ] Refactor the CV document/settings model and shared renderer for section content, skill formats, template capabilities, accent tokens, and safer page breaks.
|
||||
|
||||
## Next
|
||||
|
||||
- [ ] Rebuild content editing as independently expandable section cards, including preset/free-text custom sections and per-section AI review.
|
||||
- [ ] Add the Code template through the central template registry and redesign existing template metadata/styles.
|
||||
- [ ] Strengthen extraction normalization, confidence, custom-section handling, and sanitized regression tests.
|
||||
- [ ] Run browser, PDF, responsive, build, lint, unit, integration, and migration verification; fix regressions.
|
||||
|
||||
## Completed
|
||||
|
||||
- [x] Rechecked branch/status, recent CV work, existing tests/build tooling, and current builder architecture.
|
||||
- [x] Traced builder persistence, shared preview/PDF rendering, AI endpoint, extraction pipeline, confidence/diff review, and reference CV assets.
|
||||
- [x] Rendered and inspected the supplied two-page reference PDF and reviewed its HTML typography/theme tokens without modifying the originals.
|
||||
|
||||
Reference in New Issue
Block a user