diff --git a/docs/changelog/index.mdx b/docs/changelog/index.mdx index 494d47bd8..be7525b0d 100644 --- a/docs/changelog/index.mdx +++ b/docs/changelog/index.mdx @@ -4,11 +4,16 @@ description: "Release notes for Reactive Resume covering new features, resume bu rss: true --- - + + +{/* TODO: Replace VIDEO_ID with the v6 YouTube video ID before publishing. */} +[Watch the Reactive Resume v6 video on YouTube](https://www.youtube.com/watch?v=VIDEO_ID) ## Breaking changes & upgrade actions -- **Stop v5 before upgrading the database.** Ten migrations introduce document Trash, richer version history, application outcomes, structured letters, document-bound conversations and web-access credentials, then remove `application.archived`, `resume_version.label` and the retired Firecrawl credential table. Back up the database and uploads, stop every v5 instance, and deploy v6 together. A mixed v5/v6 rolling upgrade is unsupported. Follow [Upgrading to v6](/self-hosting/upgrading-to-v6), including its rollback procedure. [cbc76b03b](https://github.com/reactive-resume/reactive-resume/commit/cbc76b03b) +- **Configure trusted reverse proxies.** Self-hosted instances behind nginx, Caddy or Traefik must set `TRUSTED_PROXIES` to the immediate proxy and trusted intermediate proxy IPs or CIDRs so authentication limits distinguish visitors. Direct connections need no setting; never include public client networks. See [Environment variables](/self-hosting/upgrading-to-v6#environment-variables). [bc92b8cf7](https://github.com/reactive-resume/reactive-resume/commit/bc92b8cf7) + +- **Stop v5 before upgrading the database.** One consolidated v6 migration introduces document Trash, richer version history, application outcomes, structured letters, document-bound conversations and web-access credentials, then removes `application.archived`, `resume_version.label` and superseded development tables. The release migration replaces the intermediate v6 migrations; installations running an earlier v6 development build need separate migration review. Back up the database and uploads, stop every v5 instance, and deploy v6 together. A mixed v5/v6 rolling upgrade is unsupported. Follow [Upgrading to v6](/self-hosting/upgrading-to-v6), including its rollback procedure. [bc92b8cf7](https://github.com/reactive-resume/reactive-resume/commit/bc92b8cf7) - **Cover letters become independent documents.** The migration saves every embedded letter, including hidden letters, as a separate letter linked to its resume's sender details and design, then removes the letter sections from the resume. Open migrated letters in **Documents**. Older imports, stale tabs, API writes and restored versions also move embedded letters into documents without creating duplicates for unchanged content. [250650953](https://github.com/reactive-resume/reactive-resume/commit/250650953) - **Convert old visual style rules manually.** PDFs now use Semantic CSS exclusively. Stored rules from the old visual style editor need the bundled `apps/server/dist/migrate-legacy-styles.mjs` script; startup does not convert them. Run its dry run first, then `--apply --backup ` on persistent storage. Unconverted documents use their template defaults. See [the conversion steps](/self-hosting/upgrading-to-v6#convert-styles-from-the-old-style-editor). Old JSON files imported through the browser are converted during import. [a325232a0](https://github.com/reactive-resume/reactive-resume/commit/a325232a0), [92459122c](https://github.com/reactive-resume/reactive-resume/commit/92459122c) - **Write structured dates in API clients.** Dated entries use `dates`, with `start`, `end`, `present` and preserved `raw` text. Saves regenerate `period` or `date` from that structure, so editing the display text alone is overwritten. Update clients to write `dates` and set `metadata.page.dateFormat` where needed. Inputs without structured dates still derive them from their text. [bda01febd](https://github.com/reactive-resume/reactive-resume/commit/bda01febd), [cbc76b03b](https://github.com/reactive-resume/reactive-resume/commit/cbc76b03b) @@ -21,17 +26,16 @@ Reactive Resume v6 rebuilds the workspace around your documents: one library, a an assistant whose edits you review, standalone cover letters, and an application tracker centered on your next step. Forme replaces the PDF engine, with browser rendering shared across previews and downloads. -This unreleased entry covers **210 commits after `v5.3.2`**, audited through -[`50af92e2f`](https://github.com/reactive-resume/reactive-resume/commit/50af92e2fcda1837e912606ec562bead0dc1deaf) -on **2026-09-30**. Publication and production deployment remain unverified. For a shorter orientation, read +This unreleased entry covers **223 commits after `v5.3.2`**, audited through +[`bc92b8cf7`](https://github.com/reactive-resume/reactive-resume/commit/bc92b8cf7f8929ffeabfe79d8585da40d8f22d6d) +on **2026-10-01**. Publication and production deployment remain unverified. For a shorter orientation, read [What's new in v6](/guides/whats-new-in-v6). -Firecrawl integration, shared AI configuration, the setup guide and the empty resume-copy dialog fix are additional -unreleased changes outside that commit audit. - ## Documents, imports & recovery -- **Recover from an empty resume-copy dialog.** Opening **Copy a resume for a job** without an existing resume previously showed an empty source list and a disabled **Create and open** button. The dialog now explains the prerequisite and offers **Import or create a resume**, including when opened directly from an application. Returning to the copy flow keeps that application selected. +- **Keep linked letter details in account backups.** Account exports now resolve each letter’s linked sender and design values, preserving what the letter currently uses instead of stale stored copies. [bc92b8cf7](https://github.com/reactive-resume/reactive-resume/commit/bc92b8cf7) + +- **Recover from an empty resume-copy dialog.** Opening **Copy a resume for a job** without an existing resume previously showed an empty source list and a disabled **Create and open** button. The dialog now explains the prerequisite and offers **Import or create a resume**, including when opened directly from an application. Returning to the copy flow keeps that application selected. Importing or creating a blank resume during preparation links it to the saved job. [bec152b7e](https://github.com/reactive-resume/reactive-resume/commit/bec152b7e), [3e7849e51](https://github.com/reactive-resume/reactive-resume/commit/3e7849e51) @@ -194,13 +210,16 @@ unreleased changes outside that commit audit. ## PDF, Word & Markdown rendering +- **Preserve Unicode text and native ligatures in PDFs.** The patched Forme 0.26 engine preserves Arabic and Hindi text, vocalized Hebrew, Japanese, Latin ligatures and emoji across fallback fonts. Native ligatures remain enabled, and right-to-left list markers no longer need reversed punctuation. Browser and server rendering use the same patched engine; unsupported glyphs still require a suitable font. [bc92b8cf7](https://github.com/reactive-resume/reactive-resume/commit/bc92b8cf7) +- **Stop exports that would lose text.** Missing fonts or engine warnings about substituted or unrendered characters now fail PDF downloads and server exports with a retryable error instead of producing a silently incomplete file. [bc92b8cf7](https://github.com/reactive-resume/reactive-resume/commit/bc92b8cf7) + - **Render every PDF through Forme.** Editor previews, browser downloads, thumbnails, template previews, public PDFs, server exports and deep checks share the new engine. The browser uses a PDF worker with a main-thread fallback, keeping rendering off the typing path when workers are available. Downloads use the same rendering path as previews. [bc28441b6](https://github.com/reactive-resume/reactive-resume/commit/bc28441b6), [c0bf1aeba](https://github.com/reactive-resume/reactive-resume/commit/c0bf1aeba), [ce2f1857f](https://github.com/reactive-resume/reactive-resume/commit/ce2f1857f) - **Map rendered content back to the editor.** Header, section, entry and field locations travel from the renderer to the preview, enabling click selection, issue pins and custom-style selection across page breaks. [def4f7216](https://github.com/reactive-resume/reactive-resume/commit/def4f7216), [f73238ba3](https://github.com/reactive-resume/reactive-resume/commit/f73238ba3), [722f5fa14](https://github.com/reactive-resume/reactive-resume/commit/722f5fa14) - **Keep authored content through pagination.** Forme could misplace splitting rows or lose entire sections when a column overflowed. Rendering retries problematic layouts and explicitly starts missing sections on a new page, preserving manually authored continuation pages. Free-form pages measure their content before choosing their final height. [722f5fa14](https://github.com/reactive-resume/reactive-resume/commit/722f5fa14), [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c) - **Keep list markers with their first line.** A list item could begin on the next page while leaving its bullet or number behind. The renderer detects orphaned markers and rerenders with a break before the affected item. [3405200cf](https://github.com/reactive-resume/reactive-resume/commit/3405200cf) - **Restore Azurill's timeline across page breaks.** Forme did not stretch the absolutely positioned line as the old renderer did, and a splitting column stretched the dot into a pill. A border-backed timeline and a wrapper around the dot preserve the line and circular marker. [ab2e263a2](https://github.com/reactive-resume/reactive-resume/commit/ab2e263a2), [1e8b638a6](https://github.com/reactive-resume/reactive-resume/commit/1e8b638a6) - **Preserve template details under the new engine.** Adapter fixes handle reversed rows, row width constraints, column gaps, transparent colors, absolute elements, image fit and shadows, borders, corner radii, imported tables and empty text. Glalie's sidebar uses one combined tint, and award titles and dates mirror on right-to-left pages. [bc28441b6](https://github.com/reactive-resume/reactive-resume/commit/bc28441b6), [722f5fa14](https://github.com/reactive-resume/reactive-resume/commit/722f5fa14), [29ab0326b](https://github.com/reactive-resume/reactive-resume/commit/29ab0326b) -- **Hyphenate according to the page language.** Forme's language patterns replace the old hyphenation dependency. Soft-hyphen decoding now applies to every supported hyphenated language, removing the former German-only gate. Fonts render with discretionary ligatures disabled to preserve extracted words. [c0bf1aeba](https://github.com/reactive-resume/reactive-resume/commit/c0bf1aeba), [6d4ceefbd](https://github.com/reactive-resume/reactive-resume/commit/6d4ceefbd), [bc28441b6](https://github.com/reactive-resume/reactive-resume/commit/bc28441b6) +- **Hyphenate according to the page language.** Forme's language patterns replace the old hyphenation dependency. Soft-hyphen decoding now applies to every supported hyphenated language, removing the former German-only gate. The current patched engine preserves extracted words with native ligatures enabled. [c0bf1aeba](https://github.com/reactive-resume/reactive-resume/commit/c0bf1aeba), [6d4ceefbd](https://github.com/reactive-resume/reactive-resume/commit/6d4ceefbd), [bc28441b6](https://github.com/reactive-resume/reactive-resume/commit/bc28441b6) - **Match authored Word page layouts more closely.** Single-column templates and explicitly full-width pages now follow the PDF's page arrangement, and sidebar placement follows the new left/right setting. Word remains a simplified layout and does not apply Custom Styles. [25306630e](https://github.com/reactive-resume/reactive-resume/commit/25306630e), [098df6023](https://github.com/reactive-resume/reactive-resume/commit/098df6023) - **Preserve useful Word links and exclude executable markup text.** Phone links previously lost their `tel:` destination, while script and style contents could enter exported text. Word export now keeps phone links and removes those elements. [461d3c4e6](https://github.com/reactive-resume/reactive-resume/commit/461d3c4e6) - **Keep Markdown's structure and experience text.** Exports now preserve nested and numbered lists, underline and strikethrough, and parent experience descriptions when roles are present. Empty roles no longer create headings; repeated parent positions are also removed from PDF, Word and the public reading view. JSON and Markdown generation failures now show retryable error messages. [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c) @@ -208,6 +227,8 @@ unreleased changes outside that commit audit. ## Mobile, accessibility & motion +- **Keep popups usable inside sheets.** Every sheet popup now renders inside a drawer viewport. Shared UI fonts are consistent across the homepage and app, and footer text no longer clips. [bec152b7e](https://github.com/reactive-resume/reactive-resume/commit/bec152b7e), [ec0932c5d](https://github.com/reactive-resume/reactive-resume/commit/ec0932c5d) +