mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-10-03 10:13:47 +10:00
docs: update v6 changelog with latest changes
This commit is contained in:
+45
-19
@@ -4,11 +4,16 @@ description: "Release notes for Reactive Resume covering new features, resume bu
|
||||
rss: true
|
||||
---
|
||||
|
||||
<Update label="v6.0.0 — Unreleased" description="2026-09-30">
|
||||
<Update label="v6.0.0 — Unreleased" description="2026-10-01">
|
||||
|
||||
{/* 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 <file>` 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)
|
||||
|
||||
<Frame caption="Resumes and letters share one Documents library">
|
||||
<img
|
||||
@@ -51,6 +55,8 @@ unreleased changes outside that commit audit.
|
||||
|
||||
## Resume editor & dates
|
||||
|
||||
- **Keep parser results tied to the open resume.** Switching documents could display another resume’s cached extracted text. Parser results now include the resume ID and reset with the rendered page. [bc92b8cf7](https://github.com/reactive-resume/reactive-resume/commit/bc92b8cf7)
|
||||
|
||||
<Frame caption="Write, Design and Check replace the builder's sidebars and dock">
|
||||
<img
|
||||
src="/images/getting-started/editor-overview.webp"
|
||||
@@ -110,7 +116,12 @@ unreleased changes outside that commit audit.
|
||||
|
||||
## Assistant & AI providers
|
||||
|
||||
- **Enable shared AI and web access for all users.** Self-hosters can set `AI_PROVIDER`, `AI_MODEL`, `AI_API_KEY` and an optional `AI_BASE_URL`, plus `WEB_ACCESS_PROVIDER`, `WEB_ACCESS_API_KEY` and an optional Firecrawl `WEB_ACCESS_API_URL`. Each globally configured integration takes precedence over personal credentials and hides their settings controls; saved personal keys remain available after shared configuration is removed. Shared credentials stay on the server and need no `ENCRYPTION_SECRET`; encrypted personal AI and web-access keys remain supported when it is set. See [Job search and AI](/self-hosting/job-search-and-ai).
|
||||
- **Choose models from provider-specific suggestions.** AI setup and settings load an optional public models.dev catalog, filter out deprecated or non-text models, and preserve exact gateway model IDs. You can still enter a model manually when suggestions are unavailable. Provider and web-access rows expose connection status and separate test actions. [5d540f75d](https://github.com/reactive-resume/reactive-resume/commit/5d540f75d), [8105889b0](https://github.com/reactive-resume/reactive-resume/commit/8105889b0)
|
||||
- **Search and read public pages from the assistant.** One optional Firecrawl, Tavily or Exa connection serves both Applications and assistant tools. Without an external connection, supported direct AI providers can use native assistant search; the built-in posting reader remains available without credentials. Connection tests check search and reading separately. [3e7849e51](https://github.com/reactive-resume/reactive-resume/commit/3e7849e51)
|
||||
- **Respect context opt-outs throughout a conversation.** Disabling document or posting context now starts fresh provider context for the next message, excluding earlier document-derived prose and tool results. Old tool approvals cannot continue after that change. [bc92b8cf7](https://github.com/reactive-resume/reactive-resume/commit/bc92b8cf7)
|
||||
- **Target role descriptions and repeated passages safely.** Proposals can address individual roles within an experience entry. A rewrite applies only when its original passage appears exactly once; suggestions for empty fields cannot overwrite newly entered content. [bc92b8cf7](https://github.com/reactive-resume/reactive-resume/commit/bc92b8cf7)
|
||||
|
||||
- **Enable shared AI and web access for all users.** Self-hosters can set `AI_PROVIDER`, `AI_MODEL`, `AI_API_KEY` and an optional `AI_BASE_URL`, plus `WEB_ACCESS_PROVIDER`, `WEB_ACCESS_API_KEY` and an optional Firecrawl `WEB_ACCESS_API_URL`. Each globally configured integration takes precedence over personal credentials and hides their settings controls; saved personal keys remain available after shared configuration is removed. Shared credentials stay on the server and need no `ENCRYPTION_SECRET`; encrypted personal AI and web-access keys remain supported when it is set. See [Job search and AI](/self-hosting/job-search-and-ai). [bec152b7e](https://github.com/reactive-resume/reactive-resume/commit/bec152b7e), [bc92b8cf7](https://github.com/reactive-resume/reactive-resume/commit/bc92b8cf7)
|
||||
|
||||
<Frame caption="The assistant works beside the document it is helping with">
|
||||
<img
|
||||
@@ -124,11 +135,13 @@ unreleased changes outside that commit audit.
|
||||
- **Improve a line without leaving its field.** Rich-text toolbars offer stronger verbs, a result, shorter wording or a custom request for selected text. The proposal stays beside the passage for review. [e1d5b9ba9](https://github.com/reactive-resume/reactive-resume/commit/e1d5b9ba9)
|
||||
- **Prepare for the application's next step.** Application actions open the relevant document and assistant with the selected job as context. Choosing a different application now carries its ID through to the owner-checked posting lookup instead of silently using another linked job. [e1d5b9ba9](https://github.com/reactive-resume/reactive-resume/commit/e1d5b9ba9), [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c)
|
||||
- **Attach files to the first message reliably.** Starting a conversation now retains attachment uploads and context choices, prevents sending during upload and carries attachments into the first message. The per-message limit counts only unsent attachments; older sent files no longer block a new message. Superseded letter-read snapshots are pruned. [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c), [2622eeff1](https://github.com/reactive-resume/reactive-resume/commit/2622eeff1), [bc1aaedf1](https://github.com/reactive-resume/reactive-resume/commit/bc1aaedf1)
|
||||
- **Use the assistant on a single server without Redis.** Conversations and providers persist in PostgreSQL, and responses stream directly when Redis is absent. Redis still enables stream resumption and shared cancellation between instances; Vercel still requires it. Saved providers and the assistant still require `ENCRYPTION_SECRET`. [6463a9e9c](https://github.com/reactive-resume/reactive-resume/commit/6463a9e9c)
|
||||
- **Use the assistant on a single server without Redis.** Conversations and providers persist in PostgreSQL, and responses stream directly when Redis is absent. Redis still enables stream resumption and shared cancellation between instances; Vercel still requires it. Personal saved providers require `ENCRYPTION_SECRET`; a server-configured shared provider can run the assistant without credential encryption. [6463a9e9c](https://github.com/reactive-resume/reactive-resume/commit/6463a9e9c)
|
||||
- **Use the intended AI provider.** Provider selection favors the most recently used enabled provider. Ollama can be saved without an API key; other providers still require one. The new-conversation composer keeps provider changes made while attachments create its draft conversation. [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c)
|
||||
|
||||
## Cover letters
|
||||
|
||||
- **Protect pending letter edits when changing documents.** Late save responses no longer replace the newly opened letter. Downloads, history and other document changes wait for pending saves and stop with a retryable error when saving fails. [bc92b8cf7](https://github.com/reactive-resume/reactive-resume/commit/bc92b8cf7)
|
||||
|
||||
<Frame caption="A letter has its own editor, recipient fields and live resume links">
|
||||
<img
|
||||
src="/images/guides/writing-a-cover-letter/letter-editor-write.webp"
|
||||
@@ -144,7 +157,10 @@ unreleased changes outside that commit audit.
|
||||
|
||||
## Applications & interviews
|
||||
|
||||
- **Search and import job postings with Firecrawl.** **Applications → Add an application** supports keyword search through optional Firecrawl Cloud or a self-hosted service. Review up to five results, choose **Use posting**, then import and check the extracted details before saving. Firecrawl also reads pasted posting URLs, while the configured AI provider extracts application fields. Without Firecrawl, or when scraping fails, the built-in URL reader remains available.
|
||||
- **Keep application notes when closing the sheet.** Notes autosave after typing and flush when the detail sheet closes. Failed saves retain the draft within the session and offer **Retry save**. [bc92b8cf7](https://github.com/reactive-resume/reactive-resume/commit/bc92b8cf7)
|
||||
- **Prepare resumes without setting up AI.** Choose an existing resume, make a copy, or import or create one for the saved job. Manual preparation opens the editor directly; the assistant opens only when a usable AI connection exists. [3e7849e51](https://github.com/reactive-resume/reactive-resume/commit/3e7849e51)
|
||||
|
||||
- **Find jobs with one optional web connection.** Applications supports keyword search through Firecrawl, Tavily or Exa. Review results, choose a posting and check its imported details before saving. Shared services or one encrypted personal connection supply search and enhanced reading; self-hosted Firecrawl is supported. The built-in public-URL reader remains available without credentials. [bec152b7e](https://github.com/reactive-resume/reactive-resume/commit/bec152b7e), [3e7849e51](https://github.com/reactive-resume/reactive-resume/commit/3e7849e51)
|
||||
|
||||
<Frame caption="The board shows each application's next step">
|
||||
<img
|
||||
@@ -155,9 +171,9 @@ unreleased changes outside that commit audit.
|
||||
|
||||
- **Track interviews on a calendar.** Add and update interviews with type, date, time, duration, location, notes and status, then view them in the Calendar and upcoming-interview list. Export an interview as an `.ics` file for a calendar app. API and MCP clients gain interview operations. Thanks to [@devzspy](https://github.com/devzspy). [#3539](https://github.com/reactive-resume/reactive-resume/pull/3539)
|
||||
- **Browse applications in a grouped list.** List becomes the default, grouped by stage with collapsible groups, filters, search, bulk actions and closed-record visibility. Board, Insights and Calendar remain available on larger screens; phones use List in place of Board and Calendar. [462db6011](https://github.com/reactive-resume/reactive-resume/commit/462db6011)
|
||||
- **Start from a job link or posting.** Add application reads a job page's own structured data without AI; extracting a pasted posting uses a connected provider. Review the detected role, company and requirements, then add the application or add it and tailor a resume. Editing the source text invalidates its previous reading. [ce0b4c606](https://github.com/reactive-resume/reactive-resume/commit/ce0b4c606), [462db6011](https://github.com/reactive-resume/reactive-resume/commit/462db6011), [31c58baed](https://github.com/reactive-resume/reactive-resume/commit/31c58baed)
|
||||
- **Save a job before preparing an application.** **Save job** defaults to Saved and accepts a link, pasted posting or manually entered role and company without AI. **Read posting** runs only when requested; review the saved description and optional AI-extracted fields, or replace incomplete text with a pasted description while retaining the original link. Reading failures preserve the draft. **Save and prepare resume** opens resume preparation without marking the job applied. [3e7849e51](https://github.com/reactive-resume/reactive-resume/commit/3e7849e51)
|
||||
- **Use one detail sheet for the job and next step.** The sheet brings together stage progression, time in stage, interview and follow-up actions, posting requirements, linked documents, attachments, contacts, tags, salary, source, notes and activity. It becomes full-screen on phones. [462db6011](https://github.com/reactive-resume/reactive-resume/commit/462db6011), [ce0b4c606](https://github.com/reactive-resume/reactive-resume/commit/ce0b4c606)
|
||||
- **Remember what you sent.** Applications retain sent resume and letter versions and the check score. Moving into an applied or later stage captures the linked document state; copied resumes for already-sent applications now route through the same snapshot behavior. History labels the resume version **Sent to** the company. [ce0b4c606](https://github.com/reactive-resume/reactive-resume/commit/ce0b4c606), [fdad39c63](https://github.com/reactive-resume/reactive-resume/commit/fdad39c63), [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c)
|
||||
- **Confirm what you actually submitted.** Preparing documents or opening the original job link leaves the job Saved. **Mark as applied**, **Already applied** and **Already interviewing** ask for the submission date and the resume, letter or attached files actually sent. The selected document versions and check score become the submission record; later letter relinking cannot replace a recorded sent version. History labels the resume version **Sent to** the company. [3e7849e51](https://github.com/reactive-resume/reactive-resume/commit/3e7849e51), [bc92b8cf7](https://github.com/reactive-resume/reactive-resume/commit/bc92b8cf7)
|
||||
- **Record how an application ends.** Close with a reason and reopen when needed. Board drops into Closed also ask for a reason; drop animations settle cards in their destination. Follow-up editing now reloads the saved date and note every time it opens. [ce0b4c606](https://github.com/reactive-resume/reactive-resume/commit/ce0b4c606), [30819e2fc](https://github.com/reactive-resume/reactive-resume/commit/30819e2fc), [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c)
|
||||
- **Read outcomes from actual stage history.** Insights adds progression, response rate, median time to first reply and tailored-versus-base resume comparisons. Active totals exclude closed applications, and weekly submissions use the sent date and exclude jobs only saved for later. [462db6011](https://github.com/reactive-resume/reactive-resume/commit/462db6011), [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c)
|
||||
- **Review CSV column matching before import.** See and adjust recognized columns, inspect the import summary and download skipped rows. Exports include closed reasons, and legacy rejected/archived values remain readable. [462db6011](https://github.com/reactive-resume/reactive-resume/commit/462db6011), [cbc76b03b](https://github.com/reactive-resume/reactive-resume/commit/cbc76b03b)
|
||||
@@ -182,7 +198,7 @@ unreleased changes outside that commit audit.
|
||||
- **Change a public address safely.** Slugs are generated at creation and edited in Link, with availability checks, validation and suggestions. The typed value remains visible while saving, Copy waits for a successful save, and old public addresses redirect for 30 days after a rename. Password protection, visitor download controls, QR codes, native sharing and a 30-day activity chart share the same tab. [060750a86](https://github.com/reactive-resume/reactive-resume/commit/060750a86), [c8df74925](https://github.com/reactive-resume/reactive-resume/commit/c8df74925), [39f30ac9a](https://github.com/reactive-resume/reactive-resume/commit/39f30ac9a), [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c)
|
||||
- **Read shared resumes comfortably on phones.** Public resumes gain a reflowed reading view with readable sections, while larger screens keep the PDF presentation. Shared experience no longer repeats a parent position already listed as a role. [cc28f7853](https://github.com/reactive-resume/reactive-resume/commit/cc28f7853), [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c)
|
||||
- **Preview and name saved versions.** History shows Now, editing sessions, named versions, imports, AI/API edits, sent versions and restores. Preview a version read-only on the page, then restore it or return to Now. Named versions can be renamed and deleted. [060750a86](https://github.com/reactive-resume/reactive-resume/commit/060750a86), [c8df74925](https://github.com/reactive-resume/reactive-resume/commit/c8df74925)
|
||||
- **Recover the state before a restore.** Restoring saves pending edits and preserves **Before restore** before replacing the document. Resume undo history resets; restore **Before restore** to go back. Session autosaves and transient kinds retain 90 days of history, while named and protected milestones remain until their document is deleted. The timeline lists the 100 most recent versions. [060750a86](https://github.com/reactive-resume/reactive-resume/commit/060750a86), [6e412c2f6](https://github.com/reactive-resume/reactive-resume/commit/6e412c2f6)
|
||||
- **Recover the state before a restore.** Restoring saves pending edits and preserves **Before restore** before replacing the document. Resume undo history resets; restore **Before restore** to go back. Session autosaves and transient kinds retain 90 days of history, while named and protected milestones remain until their document is deleted. The timeline includes all permanent checkpoints alongside the 100 most recent expiring versions. Named-version creation and restore stop if pending edits cannot be saved. [bc92b8cf7](https://github.com/reactive-resume/reactive-resume/commit/bc92b8cf7), [060750a86](https://github.com/reactive-resume/reactive-resume/commit/060750a86), [6e412c2f6](https://github.com/reactive-resume/reactive-resume/commit/6e412c2f6)
|
||||
- **Open your own password-protected resume without its visitor password.** Owner access now bypasses the public password gate for viewing and statistics while visitors still need access. Download statistics explicitly explain that repeat successful clicks can count more than once. [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c)
|
||||
|
||||
<Frame caption="Name a milestone or preview an editing session before restoring it">
|
||||
@@ -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)
|
||||
|
||||
<Frame caption="Phone editing gives entries their own screen">
|
||||
<img
|
||||
src="/images/guides/editing-on-mobile/phone-entry-screen.webp"
|
||||
@@ -233,6 +254,8 @@ unreleased changes outside that commit audit.
|
||||
|
||||
## Security & API correctness
|
||||
|
||||
- **Validate remote images before server PDF rendering.** Server image loading checks public destinations, pins validated addresses, revalidates redirects, and bounds request time and image size. This prevents remote image URLs from reaching private services. [bc92b8cf7](https://github.com/reactive-resume/reactive-resume/commit/bc92b8cf7)
|
||||
|
||||
- **Keep trashed and hidden content out of public sharing.** Trashed resumes are unavailable through public lookups, and hidden content is excluded from shared data. Script or style uploads are served as downloads rather than executable inline content. [23ea18241](https://github.com/reactive-resume/reactive-resume/commit/23ea18241), [61f481055](https://github.com/reactive-resume/reactive-resume/commit/61f481055)
|
||||
- **Store assistant attachments privately on local storage.** Local installations can now write private files under the assistant-only namespace with restrictive permissions. Public upload routes exclude that namespace; names are generated IDs rather than user filenames. [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c)
|
||||
- **Base rate limits on the server's client address.** Authentication, MCP and public resume rate limits no longer trust arbitrary forwarded-IP headers supplied by a client. The server adapter provides the address, and auth receives a sanitized header set. `FLAG_DISABLE_API_RATE_LIMIT` now consistently covers API limits as well as authentication. [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c)
|
||||
@@ -242,7 +265,10 @@ unreleased changes outside that commit audit.
|
||||
|
||||
## Self-hosting, performance & maintenance
|
||||
|
||||
- **Set up job search and AI alongside your instance.** A new [Job search and AI guide](/self-hosting/job-search-and-ai) links official Firecrawl, SearXNG and OpenAI setup instructions, explains shared services and personal keys, and includes container-network and local verification examples. SearXNG supplies JSON search results to self-hosted Firecrawl; Reactive Resume connects separately to Firecrawl and its AI provider. Docker, environment-variable and AI guides link to the setup.
|
||||
- **Use one release migration and rollback script.** Intermediate v6 migrations are consolidated into `20261001042749_v6_release`. It performs v5 data conversions before removing legacy columns; its rollback restores v5-compatible letter sections and application/history fields in one transaction. See [Upgrading to v6](/self-hosting/upgrading-to-v6). [bc92b8cf7](https://github.com/reactive-resume/reactive-resume/commit/bc92b8cf7)
|
||||
- **Run consistent workspace checks with Oxc.** Standalone Oxlint and Oxfmt replace the previous lint/format configuration. CI checks package boundaries and affected-package types, persists Turbo artifacts, and runs unit suites with one concurrent task. Dependency and translation updates are grouped with these maintenance changes. [0bdf8066c](https://github.com/reactive-resume/reactive-resume/commit/0bdf8066c), [fcfb18fe5](https://github.com/reactive-resume/reactive-resume/commit/fcfb18fe5), [3e14ecaab](https://github.com/reactive-resume/reactive-resume/commit/3e14ecaab)
|
||||
|
||||
- **Set up job search and AI alongside your instance.** A new [Job search and AI guide](/self-hosting/job-search-and-ai) covers Firecrawl, Tavily and Exa, links official Firecrawl, SearXNG and OpenAI setup instructions, explains shared services and personal keys, and includes container-network and local verification examples. SearXNG supplies JSON search results to self-hosted Firecrawl; Reactive Resume connects separately to Firecrawl and its AI provider. Docker, environment-variable and AI guides link to the setup. [bec152b7e](https://github.com/reactive-resume/reactive-resume/commit/bec152b7e), [3e7849e51](https://github.com/reactive-resume/reactive-resume/commit/3e7849e51)
|
||||
|
||||
- **Create the SeaweedFS bucket reliably in Compose.** The old `minio/mc` image returns `401 Unauthorized`, breaking bucket setup and the Docker publishing workflow. Development and production Compose switch to the AWS CLI, checking for an existing bucket before creating it and retrying failures. [#3544](https://github.com/reactive-resume/reactive-resume/pull/3544)
|
||||
- **Compress static assets and HTML on the Node server.** The server serves compressed web files and application shells to reduce transfer size. [e74403e12](https://github.com/reactive-resume/reactive-resume/commit/e74403e12)
|
||||
@@ -261,13 +287,13 @@ unreleased changes outside that commit audit.
|
||||
|
||||
## Known issues & release status
|
||||
|
||||
- **Known issues — PDF text shaping.** Forme currently lays out right-to-left lines left-to-right and then right-aligns them; characters above `U+FFFF`, including most emoji, do not draw. A fallback-font glyph can also introduce an extra space in extracted text. These limits remain unresolved; inspect exported documents that depend on them. See [engine limits](/applying-custom-styles#engine-limits). [722f5fa14](https://github.com/reactive-resume/reactive-resume/commit/722f5fa14)
|
||||
- **Known issues — mixed-direction PDF text.** The patched engine fixes the previously listed Unicode extraction, emoji and fallback-spacing regressions. Paragraph direction still needs to match the intended text: PDF readers may reorder predominantly right-to-left text in a left-to-right paragraph differently. Inspect mixed-script exports and choose the correct page language and direction. See [the patched engine notes](https://github.com/reactive-resume/reactive-resume/blob/bc92b8cf7/vendor/forme/README.md). [bc92b8cf7](https://github.com/reactive-resume/reactive-resume/commit/bc92b8cf7)
|
||||
- **Known issues — PDF style limits.** Rotation, percentage spacing, `z-index`, `max-lines`, `text-indent`, `vertical-align`, `object-position` and presence hints are unsupported; dashed and dotted borders render solid. Photo rotation is disabled. Custom Styles applies to PDFs, not Word or Markdown. [Engine limits](/applying-custom-styles#engine-limits) lists supported alternatives. [394e59e1a](https://github.com/reactive-resume/reactive-resume/commit/394e59e1a), [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c)
|
||||
- **Deliberate omissions — letters and phone views.** Letters have no public sharing link or document-wide undo stack; use typing undo, proposal Undo or History. Board and Calendar use List on phones. Whole-account ZIPs are exports of records; reimport individual document JSON files after extraction. [82fa32790](https://github.com/reactive-resume/reactive-resume/commit/82fa32790), [462db6011](https://github.com/reactive-resume/reactive-resume/commit/462db6011), [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c)
|
||||
- **Deliberate omissions — changelog granularity.** Repeated catalog extraction, dependency-only bumps, plan checkpoints, private-type cleanup and behavior-preserving refactors are grouped above. Superseded implementations, including automatic startup style conversion, are described by their final behavior. Every commit remains available in the full comparison.
|
||||
- **Deferred items — release and deployment verification.** This entry records source changes through the audited commit. Creating the v6 tag, publishing artifacts, applying production migrations, converting stored styles where required and checking the live deployment remain outside this changelog task. No release-wide runtime verification is claimed here.
|
||||
|
||||
**Full Changelog**: [v5.3.2...50af92e2f](https://github.com/reactive-resume/reactive-resume/compare/v5.3.2...50af92e2fcda1837e912606ec562bead0dc1deaf)
|
||||
**Full Changelog**: [v5.3.2...bc92b8cf7](https://github.com/reactive-resume/reactive-resume/compare/v5.3.2...bc92b8cf7f8929ffeabfe79d8585da40d8f22d6d)
|
||||
|
||||
</Update>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user