Skip to content

v3.24.0 - Profile Core Package, Cover Letter Templates, Typed Section Editor, and Master Profile Import

Choose a tag to compare

@Gautam25Raj Gautam25Raj released this 22 Aug 15:01
· 47 commits to master since this release

v3.24.0

VeriWorkly v3.24.0 ships the new @veriworkly/profile-core monorepo package, three new cover letter templates, a branded VeriWorkly Special resume template, a registry-driven typed section editor, and one-click master profile import for portfolio users.


Highlights

  • New @veriworkly/profile-core package with a shared MasterProfile schema, normalizer, validator, migration pipeline, and document projections used by Studio, Portfolio, and the server
  • Three new cover letter templates: Minimalist, Executive, and ATS Essential
  • VeriWorkly Special resume template with a gradient accent rail and dark sidebar
  • TypedSectionEditor component replaces the old ad-hoc per-section architecture
  • Import from Master Profile in the portfolio editor pre-fills all sections in one click
  • Corrupt master profiles no longer crash the editor; the service salvages valid fields and falls back to defaults
  • 614 passing tests across server, Studio, and Portfolio before release

New features

Profile core package

  • @veriworkly/profile-core (new package): Shared workspace package containing the canonical MasterProfile Zod schema, normalizer (normalizeMasterProfile), validator (validateMasterProfile), v1-to-v2 migration pipeline, and document projections (projectToResume, projectToCoverLetter, projectToPortfolio). Common helpers for phone formatting, sanitization, and primitive coercion are also included. Studio, Portfolio, and the server now all import from this single source. The build is wired into build:profile-core and pulled into build, build:studio, build:portfolio, and build:server.

  • Server profileImportService: Rewrote document seeding to use projectToResume and projectToCoverLetter from profile-core. Removed 200+ lines of inline schema code.

  • Server masterProfileValidator: Now a thin wrapper around profile-core validateMasterProfile. Reduced from 350+ lines of inlined Zod to under 30 lines.

  • document-workspace-service.seedFromMasterProfile: New server-side method that creates either a RESUME or COVER_LETTER document from a stored master profile, handling both document kinds from a single entry point.

Cover letter templates

  • Minimalist: Full-width stacked masthead, generous whitespace, flush left type. Designed for roles where clean presentation matters more than structure.

  • Executive: Centered double-rule masthead with a traditional dateline-over-address layout. Closest to a formal business letter format.

  • ATS Essential: Classic left-aligned block letter with no decorative elements. The most parser-safe structure of the three.

SVG thumbnails for all three templates are published to both Studio and the marketing site.

VeriWorkly Special resume template

A branded template with a gradient accent rail on the left sidebar and a dark header band. Available in both web and PDF rendering modes.

TypedSectionEditor

Replaces DraggableSection and GenericCustomSection with a single registry-driven dispatch component. All 13 section types (basics, experience, education, skills, projects, certifications, achievements, awards, languages, interests, volunteer, publications, references) route through one component. Section forms gained new fields: GPA and honors in Education, employment-type picker in Experience, tech-stack tags and URL pairs in Projects, proficiency level in Languages, DOI and publisher in Publications, available-on-request toggle in References, and a character counter in Summary.

SectionVisibilitySettings was rewritten with drag-to-reorder.

Portfolio master profile import

A new Import from Master Profile button in the portfolio editor calls projectToPortfolio on the user's saved master profile and pre-fills every portfolio section. No manual copy-paste required.

Document editor improvements

  • content-identity.ts: stable identity helpers for sections and items
  • link-types.ts: typed link-kind registry (social, portfolio, other)
  • DocumentStateCard, LinksEditor, ListEditorControls, useIndexedListEditor: new editor components
  • useFlushPendingSavesOnExit: flushes pending saves before tab close to avoid data loss
  • export-dom-markers.ts: annotates the DOM with page-break hints for HTML export
  • resume-render-items.ts: per-section hydration outside the React tree, used by export tests
  • JSON import pipeline for both resume and cover letter document types
  • Field-level validation rules module
  • export-markdown fully rewritten to respect section visibility flags
  • export-html adds proper page-break markers for multi-page layouts

Studio app shell

  • MasterProfileClient rewritten with sidebar navigation, dirty-state tracking, and auto-save banner
  • EditorEntryRedirect now routes /editor to the resume list instead of a blank shell
  • Login page supports returnTo query param for post-login redirects
  • AdditionalSections adds typed section cards for achievements, awards, certifications, volunteer, interests, languages, and references
  • AppearanceAndVisibilitySections extracted as a dedicated settings panel

Analytics

  • document-events.ts: new service tracking document-create, document-open, and export events
  • auth_login_success metric added to the analytics service

Improved

  • resume-store restructured with explicit loading, dirty, and error state slices
  • Cover letter editor split into focused sub-components with a modular store
  • Portfolio EditorCommandBar gains keyboard shortcut hints
  • OpenAPI spec updated with new cover letter template enum values and version references
  • cover-letter-builder.mdx updated from 2 templates to 5 with per-template descriptions
  • Font loading moved to CSS, removing the DocumentFontLoader component that caused a flash on editor mount

Fixed

  • Corrupt master profile no longer crashes the editor. The service now salvages valid partial fields and falls back to defaults rather than throwing.
  • DocumentFontLoader flash on editor mount fixed by moving font loading to CSS.
  • Portfolio globals.css text selection styling fixed for Firefox (PR #195).

Test coverage

New contract and integration tests added in this release:

  • document-creation: resume and cover letter creation from master profile and blank, corrupt-profile recovery
  • document-import: JSON import round-trip for both document kinds
  • document-projections: 24 assertions covering all projectToResume and projectToCoverLetter field mappings
  • master-profile-migrations: v1-to-v2 migration pipeline and NewerSchemaVersionError guard
  • master-profile: 27 tests covering lifecycle read/write, backup on corrupt, partial-invalid salvage, and never-throws invariant
  • resume-export-source: HTML, Markdown, and DOCX export source purity
  • typed-sections: TypedSectionEditor renders all 13 section kinds correctly
  • master-profile-projection (Portfolio): purity, determinism, and deep-clone invariant using profile-core test utilities
  • Playwright E2E bootstrap under tests/browser/ with vitest.browser.config.ts
  • Server: master-profile-roundtrip, profile-import, and DocumentService contract tests

Full changelog

  • #195 — [Fix] [Portfolio]: Resolve text selection styling in globals.css

Contributors

Thank you to everyone who contributed code to this release:


Thank you for using VeriWorkly!