Skip to content

feat: add sidebar-cv Typst theme with typography/color settings#549

Open
tamaygz wants to merge 28 commits into
DaKheera47:mainfrom
tamaygz:copilot/add-latex-template-resume-editor
Open

feat: add sidebar-cv Typst theme with typography/color settings#549
tamaygz wants to merge 28 commits into
DaKheera47:mainfrom
tamaygz:copilot/add-latex-template-resume-editor

Conversation

@tamaygz

@tamaygz tamaygz commented May 23, 2026

Copy link
Copy Markdown

This pull request introduces a new Typst Template (Sidebar CV) + a new "Typst Theme Style" section in the settings page, allowing users to customize fonts and colors for Typst-rendered PDF resumes. It adds new settings fields, updates the UI to support these customizations, and ensures the new options are handled throughout the settings logic and tests.

Settings UI and Functionality Enhancements:

  • Added a new TypstStyleSettingsSection component that provides UI controls for users to override Typst PDF resume fonts (body and heading) and colors (primary, text, background, secondary background), with live previews and color pickers. (orchestrator/src/client/pages/settings/components/TypstStyleSettingsSection.tsx)
  • Integrated the new section into the settings page navigation, section mapping, and rendering logic, including status indicators for when customizations are active. (orchestrator/src/client/pages/SettingsPage.tsx) [1] [2] [3] [4] [5] [6] [7]

Settings Data Model and State Management:

  • Extended the settings data model and form logic to include new fields for Typst font and color overrides, handling default values, null states, and form-to-settings mapping. (orchestrator/src/client/pages/SettingsPage.tsx, orchestrator/src/client/pages/settings/types.ts) [1] [2] [3] [4] [5] [6]

Tests and Defaults:

  • Updated tests to include the new Typst style fields, ensuring correct handling of default and null values in settings payloads. (orchestrator/src/server/services/auto-pdf-regeneration.test.ts) [1] [2]

New Sidebar Template:
image

Settings:
image

Copilot AI and others added 21 commits May 22, 2026 12:27
Add a new "Sidebar CV" Typst theme inspired by the user's CV design.
Features a tinted left sidebar with photo, name, headline, summary,
skills, languages, and contact details, with the main content area
on the right for professional experience and other sections.

Agent-Logs-Url: https://github.com/tamaygz/job-ops/sessions/ffb0aacb-46e9-4725-b797-661aeab6cca3

Co-authored-by: tamaygz <92460164+tamaygz@users.noreply.github.com>
- Split name across two lines with wide 8pt tracking
- Larger 26pt name, regular weight (not bold) to match original
- Bold italic headline at 12pt
- Sidebar section headings: 12pt, 2pt tracking, centered gray line
- Main section headings: 16pt, 2pt tracking, teal accent
- Entry titles: 11pt bold uppercase with pipe separator
- Date/location line: 8.5pt small caps
- Body text: paragraph style with 14pt first-line indent
- Contact block includes full name above address
- Sidebar padding and main padding adjusted for balance

Agent-Logs-Url: https://github.com/tamaygz/job-ops/sessions/594f2a8d-264d-4452-b4dc-b72043d0aea0

Co-authored-by: tamaygz <92460164+tamaygz@users.noreply.github.com>
…nder, add render test

Agent-Logs-Url: https://github.com/tamaygz/job-ops/sessions/5cdbc21b-75a7-404a-b924-11244bd099c5

Co-authored-by: tamaygz <92460164+tamaygz@users.noreply.github.com>
…ons to resolve __HEADING_FONT__ in headlineBlock

Agent-Logs-Url: https://github.com/tamaygz/job-ops/sessions/66941e30-cbe6-44db-b58a-545f85c9091b

Co-authored-by: tamaygz <92460164+tamaygz@users.noreply.github.com>
…s across pages

Agent-Logs-Url: https://github.com/tamaygz/job-ops/sessions/79257a19-1228-49e8-bf5a-f63e197cd112

Co-authored-by: tamaygz <92460164+tamaygz@users.noreply.github.com>
…ad accent code, unused helpers

Agent-Logs-Url: https://github.com/tamaygz/job-ops/sessions/c8f2791b-a148-4afc-8540-6dda89897c66

Co-authored-by: tamaygz <92460164+tamaygz@users.noreply.github.com>
…page to fix forward reference error

Agent-Logs-Url: https://github.com/tamaygz/job-ops/sessions/4c63970e-d825-45ae-a351-c3473f101e47

Co-authored-by: tamaygz <92460164+tamaygz@users.noreply.github.com>
…, check all 5 style settings in badge

Agent-Logs-Url: https://github.com/tamaygz/job-ops/sessions/24cbe393-7096-4927-b73a-9b1388367b26

Co-authored-by: tamaygz <92460164+tamaygz@users.noreply.github.com>
Agent-Logs-Url: https://github.com/tamaygz/job-ops/sessions/f4e27866-ad7d-422a-8969-d5a98cd86e1c

Co-authored-by: tamaygz <92460164+tamaygz@users.noreply.github.com>
Agent-Logs-Url: https://github.com/tamaygz/job-ops/sessions/f4e27866-ad7d-422a-8969-d5a98cd86e1c

Co-authored-by: tamaygz <92460164+tamaygz@users.noreply.github.com>
Copilot AI and others added 6 commits May 25, 2026 06:15
… merge conflict

Agent-Logs-Url: https://github.com/tamaygz/job-ops/sessions/db209ea8-96f7-467e-b1ca-866de661dace

Co-authored-by: tamaygz <92460164+tamaygz@users.noreply.github.com>
- types.ts: add LatexResumeOrderedSectionKey type, sectionOrder field in LatexResumeDocument, and type aliases (ResumeRenderDocument, NormalizeResumeJsonOptions, etc.)
- document.ts: add ORDERABLE_SECTION_KEYS, getOrderedSectionKeys(), improved stripHtml preserving bold/italic tags, sectionOrder field in normalizeResumeJsonToLatexDocument, buildResumeRenderDocument alias
- index.ts: export buildResumeRenderDocument alongside normalizeResumeJsonToLatexDocument
- typst.ts: add escapeRawTypst + HTML-aware escapeTypstText, renderOrderedCoreSections, convertDocFieldsToTypst; wire sectionOrder into buildTypstDocument; use convertDocFieldsToTypst for adapted themes
- typst.test.ts: add section ordering, HTML formatting, and convertDocFieldsToTypst tests; import convertDocFieldsToTypst
- document.test.ts: add "preserves basic formatting tags and strips other HTML tags" test

Agent-Logs-Url: https://github.com/tamaygz/job-ops/sessions/fad5eadd-65e5-48a3-8dda-1d0de30b38e6

Co-authored-by: tamaygz <92460164+tamaygz@users.noreply.github.com>
…, kanban, section-ordering)

Merge upstream commits:
- 4d86871 Profile items in header (DaKheera47#553)
- e183cdd Show bold text in local PDF renderers (DaKheera47#551)
- 199ad9c fix: kanban horizontal auto-scroll (DaKheera47#550)
- 60107ef chore: release 0.8.0
- 239dde3 Ordering resume sections (DaKheera47#545)

Conflict resolutions:
- types.ts: keep LatexResumeStyle/LatexResumeStyleOverrides (our feature)
- document.ts: keep buildStyle/normalizeColorToHex/componentToHex/clamp (our feature)
- document.test.ts: keep color normalization test (our feature)
- index.ts: use NormalizeResumeJsonOptions, keep LatexResumeStyleOverrides import
- typst.ts: keep LatexResumeStyleOverrides import, simplified tagStack.pop(), normalizeTypstDocumentPicturePath; remove duplicate renderOrderedCoreSections brought in by merge
- typst.test.ts: keep picture path normalization tests (our feature)

Co-authored-by: tamaygz <92460164+tamaygz@users.noreply.github.com>
… resolveTypstStyleOverrides return type

Agent-Logs-Url: https://github.com/tamaygz/job-ops/sessions/b3e79194-7bbc-4a92-9a61-53ab3e09f241

Co-authored-by: tamaygz <92460164+tamaygz@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@tamaygz tamaygz marked this pull request as ready for review May 25, 2026 07:34
…aths in settings/index.test.tsx

Agent-Logs-Url: https://github.com/tamaygz/job-ops/sessions/0418b07a-41f6-4e0a-98d6-f26d1433b952

Co-authored-by: tamaygz <92460164+tamaygz@users.noreply.github.com>
@tamaygz tamaygz changed the title Copilot/add latex template resume editor feat: add sidebar-cv Typst theme with typography/color settings May 25, 2026
@DaKheera47 DaKheera47 requested a review from Copilot May 26, 2026 14:15

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a new Typst resume theme (“Sidebar CV”) and introduces end-to-end support for user-configurable Typst typography/color overrides via Settings, flowing through settings storage, PDF fingerprinting/regeneration, and the Typst renderer.

Changes:

  • Added a new adapted Typst theme (sidebar-cv) and updated theme metadata generation.
  • Introduced Typst style override settings (fonts + colors) in the shared settings model/registry and integrated a new Settings UI section to manage them.
  • Wired style overrides into Typst PDF generation, PDF fingerprinting, and auto-regeneration; expanded renderer support for resume-derived style metadata and picture path normalization.

Reviewed changes

Copilot reviewed 28 out of 29 changed files in this pull request and generated no comments.

Show a summary per file
File Description
shared/src/types/settings.ts Extends AppSettings with Typst style override setting keys.
shared/src/testing/factories.ts Updates createAppSettings test factory to include new Typst style settings.
shared/src/settings-registry.ts Adds Typst style settings definitions + exports HEX_COLOR_REGEX.
shared/src/generated/typst-themes.ts Adds sidebar-cv to generated Typst theme values/labels/descriptions.
orchestrator/src/server/tailoring-flow.test.ts Updates mocked fingerprint context to include new Typst style fields.
orchestrator/src/server/services/resume-renderer/typst.ts Adds style placeholder replacement, picture path normalization, and style override plumbing through Typst rendering.
orchestrator/src/server/services/resume-renderer/typst.test.ts Adds coverage for style placeholders, section ordering, picture path normalization, and sidebar theme render smoke test.
orchestrator/src/server/services/resume-renderer/typst-themes/sidebar-cv/theme.json Introduces the new theme manifest.
orchestrator/src/server/services/resume-renderer/typst-themes/sidebar-cv/main.typ Adds the new Sidebar CV Typst template using shared style placeholders.
orchestrator/src/server/services/resume-renderer/typst-themes/compact/theme.json Removes unused accent token from native theme tokens.
orchestrator/src/server/services/resume-renderer/typst-themes/compact/main.typ Updates compact template to use shared font/color placeholders.
orchestrator/src/server/services/resume-renderer/typst-themes/clean-print-cv/main.typ Applies shared font/color placeholders to adapted clean-print-cv template.
orchestrator/src/server/services/resume-renderer/typst-themes/classic/theme.json Removes unused accent token from native theme tokens.
orchestrator/src/server/services/resume-renderer/typst-themes/classic/main.typ Updates classic template to use shared font/color placeholders.
orchestrator/src/server/services/resume-renderer/types.ts Adds resume style metadata types + typstStyleOverrides plumbing types.
orchestrator/src/server/services/resume-renderer/index.ts Passes typstStyleOverrides through renderResumePdf to Typst renderer.
orchestrator/src/server/services/resume-renderer/document.ts Extracts/normalizes resume design typography/colors into document.style.
orchestrator/src/server/services/resume-renderer/document.test.ts Adds tests for style extraction and color normalization fallbacks.
orchestrator/src/server/services/pdf.ts Resolves Typst style overrides from settings and supplies them during Typst rendering.
orchestrator/src/server/services/pdf-fingerprint.ts Includes Typst style settings in fingerprint context/fingerprint for Typst renderer.
orchestrator/src/server/services/pdf-fingerprint.test.ts Updates fingerprint test context for new Typst style fields.
orchestrator/src/server/services/auto-pdf-regeneration.ts Adds new Typst style keys to settings invalidation set for regeneration.
orchestrator/src/server/services/auto-pdf-regeneration.test.ts Updates auto-regeneration tests for expanded fingerprint context.
orchestrator/src/client/pages/settings/types.ts Adds TypstStyleValues derived-settings shape for the UI.
orchestrator/src/client/pages/settings/index.tsx Integrates new “Typst Theme Style” section and maps form/state to new setting fields.
orchestrator/src/client/pages/settings/index.test.tsx Updates settings page tests for the new SettingsPage module path.
orchestrator/src/client/pages/settings/components/TypstStyleSettingsSection.tsx Adds UI controls for Typst font/color overrides with previews and pickers.
orchestrator/src/client/App.tsx Updates Settings page import to the new pages/settings entry.
orchestrator/src/client/App.test.tsx Updates Settings page mock path to match the new import.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

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.

3 participants