mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-10-04 02:33:47 +10:00
docs(changelog): add release notes for v6.0.0 with breaking changes and new features
This commit is contained in:
+220
-3
@@ -4,6 +4,226 @@ description: "Release notes for Reactive Resume covering new features, resume bu
|
||||
rss: true
|
||||
---
|
||||
|
||||
<Update label="v6.0.0 — Unreleased" description="2026-09-30">
|
||||
|
||||
## Breaking changes & upgrade actions
|
||||
|
||||
- **Stop v5 before upgrading the database.** Seven migrations introduce document Trash, richer version history, application outcomes, structured letters and document-bound conversations, then remove `application.archived` and `resume_version.label`. 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)
|
||||
- **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)
|
||||
- **Close applications with a reason.** Replace `rejected` and `archived` with `status: "closed"` and `closedReason`: `not-selected`, `withdrew`, `accepted-other` or `no-response`. Application lists include closed records; replace `includeArchived` with client-side status filtering. Older CSV exports still import rejected and archived records as closed. [ce0b4c606](https://github.com/reactive-resume/reactive-resume/commit/ce0b4c606), [cbc76b03b](https://github.com/reactive-resume/reactive-resume/commit/cbc76b03b)
|
||||
- **Update deletion, history and letter integrations.** Resume and letter deletion now moves records to Trash; permanent deletion uses the documents purge operation. Version clients use `kind` and `name` instead of `label`. Resume PDF downloads no longer accept a `cover-letter` target, old signed letter targets return `404`, and `POST /cover-letters/from-resume` / `copy_embedded_cover_letter` are removed. Download letters through the cover-letter API. See [API changes](/self-hosting/upgrading-to-v6#api-changes) and [MCP changes](/self-hosting/upgrading-to-v6#mcp-changes). [a568f64b4](https://github.com/reactive-resume/reactive-resume/commit/a568f64b4), [060750a86](https://github.com/reactive-resume/reactive-resume/commit/060750a86), [250650953](https://github.com/reactive-resume/reactive-resume/commit/250650953)
|
||||
- **Start assistant conversations for a document.** Replace `/agent/threads/for-resume` with `POST /agent/threads`, passing `resumeId` or `coverLetterId`. Conversation archiving and `/agent/actions/{id}/revert` are removed. The web assistant now proposes edits for review. [6463a9e9c](https://github.com/reactive-resume/reactive-resume/commit/6463a9e9c)
|
||||
- **Switch Vercel projects to Services.** Set the project's Framework Preset to **Services** before deploying v6. Static assets use the frontend service; application shells, APIs, authentication, uploads and MCP use the backend service. Include `apps/web/dist-prerender` beside `dist` in custom server deployments to serve the localized marketing HTML. [725be158c](https://github.com/reactive-resume/reactive-resume/commit/725be158c), [b399e289d](https://github.com/reactive-resume/reactive-resume/commit/b399e289d)
|
||||
|
||||
Reactive Resume v6 rebuilds the workspace around your documents: one library, a **Write / Design / Check** editor,
|
||||
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
|
||||
[What's new in v6](/guides/whats-new-in-v6).
|
||||
|
||||
## Documents, imports & recovery
|
||||
|
||||
<Frame caption="Resumes and letters share one Documents library">
|
||||
<img src="/images/guides/managing-documents/documents-grid.webp" alt="Documents with All, Resumes and Letters tabs, search, sorting, tag filters and a grid of resume and letter cards." />
|
||||
</Frame>
|
||||
|
||||
- **Manage resumes and letters together.** **Documents** replaces the separate dashboards with All, Resumes and Letters tabs, grid and list views, search, tags, sorting and application links. Old dashboard links redirect to the matching document type. [a568f64b4](https://github.com/reactive-resume/reactive-resume/commit/a568f64b4), [daa7d331f](https://github.com/reactive-resume/reactive-resume/commit/daa7d331f)
|
||||
- **Start every document from one dialog.** **New** offers import, a resume copied for a job, a blank resume, a sample resume or a cover letter. Drop files directly onto Documents to import them. Blank resumes can name themselves from the headline until you rename them; imports use the person's name or headline. [daa7d331f](https://github.com/reactive-resume/reactive-resume/commit/daa7d331f), [d4406c729](https://github.com/reactive-resume/reactive-resume/commit/d4406c729)
|
||||
- **Recover deleted documents from Trash.** Moving a document to Trash offers Undo and disables public access. Restore it or delete it permanently before its 30-day retention ends. Expired documents and their files are purged when their owner next opens the library. Trashed resumes keep their addresses reserved; locked documents must be unlocked before trashing or changing their details. [a568f64b4](https://github.com/reactive-resume/reactive-resume/commit/a568f64b4), [d4406c729](https://github.com/reactive-resume/reactive-resume/commit/d4406c729)
|
||||
- **Import LinkedIn's data export without AI.** Import a LinkedIn ZIP to bring in profile details, experience, education, skills, languages and certifications entirely in the browser. The parser reads only the six relevant CSV files, caps each at 5 MB, escapes text and preserves unfamiliar end dates instead of calling them Present. Thanks to [@Syed-Ali-Abbas-Zaidi](https://github.com/Syed-Ali-Abbas-Zaidi). [#3538](https://github.com/reactive-resume/reactive-resume/pull/3538)
|
||||
- **See what an import brought in.** An import note in the editor reports sections, entries and dates needing review. Dismiss it when finished. [11fe2b7a2](https://github.com/reactive-resume/reactive-resume/commit/11fe2b7a2)
|
||||
- **Keep consecutive imports independent.** JSON Resume and LinkedIn imports previously shared nested defaults, allowing one import's sections to leak into the next. Each now starts from a deep copy. JSON Resume plain-text fields are escaped before entering rich text. [fb756026f](https://github.com/reactive-resume/reactive-resume/commit/fb756026f), [acdb9d88d](https://github.com/reactive-resume/reactive-resume/commit/acdb9d88d)
|
||||
- **Reimport individual documents from account backups.** Account-export JSON wrappers are recognized, and letter files include their format marker. Dropping a complete account ZIP explains how to extract and import individual resume or letter files. Legacy `.doc` files now receive an explicit instruction to save as `.docx`. [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c)
|
||||
- **Export every document without filename collisions.** Documents with the same name previously overwrote each other inside the account ZIP. Export filenames now include their IDs, and the archive also includes application records. [a9c4b84d3](https://github.com/reactive-resume/reactive-resume/commit/a9c4b84d3), [55db11aea](https://github.com/reactive-resume/reactive-resume/commit/55db11aea)
|
||||
|
||||
## Resume editor & dates
|
||||
|
||||
<Frame caption="Write, Design and Check replace the builder's sidebars and dock">
|
||||
<img src="/images/getting-started/editor-overview.webp" alt="The v6 resume editor with Write, Design and Check modes, editable Basics on the left and the rendered resume page on the right." />
|
||||
</Frame>
|
||||
|
||||
- **Work in three focused modes.** **Write** edits content, **Design** controls its appearance, and **Check** reviews it. The page remains visible beside the panel, with mode shortcuts `1`, `2` and `3`, save status and a zoom bar. Selecting a rendered block opens the corresponding section or entry. [f2a76b2f6](https://github.com/reactive-resume/reactive-resume/commit/f2a76b2f6), [a82741f42](https://github.com/reactive-resume/reactive-resume/commit/a82741f42)
|
||||
- **Edit entries in place.** Basics, contact fields, summary, sections, entries and experience roles live in the Write panel. Sections follow print order; their menus handle hiding, duplication, headings, columns and movement between pages or columns. New entries start as editable drafts. Field stacks now use one column, with dates sharing a full row. [a82741f42](https://github.com/reactive-resume/reactive-resume/commit/a82741f42), [0a5323520](https://github.com/reactive-resume/reactive-resume/commit/0a5323520), [16008a95d](https://github.com/reactive-resume/reactive-resume/commit/16008a95d)
|
||||
- **Keep unsaved resume changes on the device.** Failed saves and interrupted sessions retain a local draft for recovery on the next visit. Save status distinguishes saved, saving, offline and failed states. Undo grows from 50 to 200 steps and groups rapid typing in one field. Recovery also checks that the draft belongs to the current account. [639abf12b](https://github.com/reactive-resume/reactive-resume/commit/639abf12b), [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c)
|
||||
- **Reconnect live edits after a stream failure.** A missing retry dependency left the editor disconnected from other-tab, AI and MCP changes until reload. The subscription now reconnects. [18597a6de](https://github.com/reactive-resume/reactive-resume/commit/18597a6de)
|
||||
- **Enter dates consistently.** Use year-only or month-and-year dates and an explicit Present state. Existing date text upgrades when read; ambiguous phrases such as “Summer 2016” keep printing unchanged until edited. Choose short, long, numeric or ISO formatting in Design, and use structured values for sorting and checks. [bda01febd](https://github.com/reactive-resume/reactive-resume/commit/bda01febd)
|
||||
- **Keep Present labels consistent within a language.** The label's casing previously depended on surrounding date text. It now follows the language alone. [03c3a8884](https://github.com/reactive-resume/reactive-resume/commit/03c3a8884)
|
||||
- **Find document actions in the name menu.** Rename, Duplicate, Lock editing, Notes, Details, Print and Move to Trash share the document menu. Details shows creation and edit dates, template, language, page count and sharing state; private notes use the standard rich-text editor. A donation link appears after a successful download. [22dbbdc54](https://github.com/reactive-resume/reactive-resume/commit/22dbbdc54), [01e87a6f1](https://github.com/reactive-resume/reactive-resume/commit/01e87a6f1)
|
||||
- **Download from the editor bar with fewer controls.** The trimmed bar keeps the main modes, assistant, history, sharing and PDF download. Share marks a publicly shared resume, and `⌘/Ctrl P` downloads its PDF; printing moves to the document menu. [5b84bf800](https://github.com/reactive-resume/reactive-resume/commit/5b84bf800), [f2a76b2f6](https://github.com/reactive-resume/reactive-resume/commit/f2a76b2f6)
|
||||
- **Keep editing state stable.** Returning to Design preserves its scroll position; the custom-section menu lists available types directly when all built-in sections are in use. Phone page marks hide the small Editing label, and photo controls explain the engine's rotation limit. [a6676b326](https://github.com/reactive-resume/reactive-resume/commit/a6676b326), [3c71b4e7c](https://github.com/reactive-resume/reactive-resume/commit/3c71b4e7c), [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c)
|
||||
|
||||
## Design, templates & custom styles
|
||||
|
||||
- **Preview templates with your own content.** The redesigned gallery renders all 15 existing templates using your resume, with one-column, two-column and ATS-safe filters. Hover, focus or hold a card to preview its appearance; selecting applies it with Undo. This release changes the gallery and renderer, not the template count. [1ef7c9fa1](https://github.com/reactive-resume/reactive-resume/commit/1ef7c9fa1), [85352ee11](https://github.com/reactive-resume/reactive-resume/commit/85352ee11)
|
||||
- **Choose familiar resume typography.** Five presets use EB Garamond, Tinos, Source Serif 4 with Source Sans 3, Carlito and Lato. Body presets use available Regular/Bold weights. **Custom** opens the exact font controls and shows an existing custom pairing; unavailable weights are replaced with supported ones. [d3ed651d6](https://github.com/reactive-resume/reactive-resume/commit/d3ed651d6), [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c)
|
||||
- **Adjust design through grouped controls.** Template, Type, Color, Page and Advanced collect font size, density, accents, margins, paper, language, icons, link underlines and exact values. Accent choices show contrast on white and offer a darker shade when contrast is low. Reset restores template defaults. [1ef7c9fa1](https://github.com/reactive-resume/reactive-resume/commit/1ef7c9fa1)
|
||||
- **Fit overflow without deleting content.** Page warnings report how many lines spill beyond the planned pages and offer **Fit**. Fit tightens density, then margins, then text size, rerendering after each step and stopping at 9 pt. The complete adjustment is one undo step; content that still cannot fit needs editing. [1ef7c9fa1](https://github.com/reactive-resume/reactive-resume/commit/1ef7c9fa1)
|
||||
- **Choose the sidebar's side.** Two-column templates support a left or right sidebar, alongside width controls; PDF and Word exports follow the choice, including mirrored right-to-left layouts. [098df6023](https://github.com/reactive-resume/reactive-resume/commit/098df6023)
|
||||
- **Style a selected element directly from the page.** Pick a section, entry or field to insert or open its Semantic CSS rule, with the matching element outlined. Custom Styles uses ordinary CSS text without requiring a visible `@version` line, readable dark-mode syntax colors and functioning toolbar icons. [cfb272229](https://github.com/reactive-resume/reactive-resume/commit/cfb272229), [31fb57609](https://github.com/reactive-resume/reactive-resume/commit/31fb57609), [5dc67c3bd](https://github.com/reactive-resume/reactive-resume/commit/5dc67c3bd), [b775cbc15](https://github.com/reactive-resume/reactive-resume/commit/b775cbc15)
|
||||
- **Undo stylesheet typing within the code editor.** The editor previously routed typing undo to resume-wide history. It now keeps its own typing history, reports fatal stylesheet limits and explains unsupported PDF styles. Unsupported declarations or selectors may still be skipped. [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c)
|
||||
- **Apply heading text styles even when an icon is present.** Icon-bearing headings previously passed only color into their text. Font size, weight, style, spacing, line height, alignment, decoration and text transform now reach the title as well. [677ff17c1](https://github.com/reactive-resume/reactive-resume/commit/677ff17c1)
|
||||
|
||||
<Frame caption="Pick an entry on the rendered page to edit its custom CSS">
|
||||
<img src="/images/guides/applying-custom-styles/pick-an-entry-on-the-page.webp" alt="Custom Styles editing an education entry's color, with the selected entry outlined on the rendered resume." />
|
||||
</Frame>
|
||||
|
||||
## Check mode & the public ATS checker
|
||||
|
||||
<Frame caption="Check connects findings to the lines they affect">
|
||||
<img src="/images/guides/checking-your-resume/check-mode-overview.webp" alt="Check mode with a live readability score, Issues, Job match and Writing tabs, fix actions and numbered findings on the resume page." />
|
||||
</Frame>
|
||||
|
||||
- **Review issues where they appear.** Check replaces the builder's ATS panel with a live score, verdict, category groups and numbered issue cards pinned to the page. Fixes either apply with Undo or open the relevant field; ignore decisions persist with the resume. Two-column layouts receive a reading-order explanation and a Keep option. [e26ce08fc](https://github.com/reactive-resume/reactive-resume/commit/e26ce08fc), [565424631](https://github.com/reactive-resume/reactive-resume/commit/565424631)
|
||||
- **Compare the resume against its job posting.** Job match uses a linked application or pasted posting, highlights covered terms on the page and lets you add missing terms to Skills or dismiss them. A pasted posting can become an application. [565424631](https://github.com/reactive-resume/reactive-resume/commit/565424631), [1608d5690](https://github.com/reactive-resume/reactive-resume/commit/1608d5690)
|
||||
- **Review writing changes before applying them.** Opt-in AI writing reviews return passage-level rewrites with old and new text, reasons, Accept, Reject and Accept all. Changed passages invalidate stale proposals; accepting resume proposals supports Undo. [1608d5690](https://github.com/reactive-resume/reactive-resume/commit/1608d5690), [565424631](https://github.com/reactive-resume/reactive-resume/commit/565424631)
|
||||
- **Inspect what a parser reads.** Switch between the rendered page and text extracted from its PDF in reading order. Deep checks of the exported PDF pin findings to their source lines while the resume remains unchanged, and a pin opens the full report. [565424631](https://github.com/reactive-resume/reactive-resume/commit/565424631), [6c2bc74f9](https://github.com/reactive-resume/reactive-resume/commit/6c2bc74f9)
|
||||
- **Continue from a public check into editing.** The rebuilt public ATS checker accepts a resume and optional posting, groups readability and layout findings, and offers **Fix these in the editor**. The file waits in the browser through sign-up and imports after sign-in. The score describes text extraction reliability; it does not predict hiring outcomes. Resume drop targets now distinguish checker files from document imports. [d9ed63f72](https://github.com/reactive-resume/reactive-resume/commit/d9ed63f72), [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c)
|
||||
|
||||
<Frame caption="The public checker offers a direct path from findings to an editable resume">
|
||||
<img src="/images/guides/using-the-ats-checker/report-and-fix.webp" alt="An ATS report grouped by readability, layout and posting terms, followed by a Fix these in the editor button." />
|
||||
</Frame>
|
||||
|
||||
## Assistant & AI providers
|
||||
|
||||
<Frame caption="The assistant works beside the document it is helping with">
|
||||
<img src="/images/guides/using-the-assistant/assistant-beside-the-page.webp" alt="The resume editor with an Assistant panel beside the rendered page, suggested starting prompts and a document context chip." />
|
||||
</Frame>
|
||||
|
||||
- **Ask for help inside a resume or letter.** A document-bound Assistant replaces the Agents workspace, builder AI sheet and application copilot panel. Open it with the sparkle button or `⌘/Ctrl J`; past conversations and old Agents links lead back to the document. Context controls decide whether to share the document and job posting. [6463a9e9c](https://github.com/reactive-resume/reactive-resume/commit/6463a9e9c), [e1d5b9ba9](https://github.com/reactive-resume/reactive-resume/commit/e1d5b9ba9)
|
||||
- **Accept or reject each proposed edit.** The assistant shows changed passages on the page with a reason and can ask a clarifying question. It does not apply edits automatically. Stale proposals cannot overwrite text changed since the suggestion; accepted resume edits enter undo history, and accepted letter edits offer an Undo toast. [6463a9e9c](https://github.com/reactive-resume/reactive-resume/commit/6463a9e9c), [e1d5b9ba9](https://github.com/reactive-resume/reactive-resume/commit/e1d5b9ba9)
|
||||
- **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 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
|
||||
|
||||
<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" alt="A standalone letter editor with recipient name, company, date, linked resume details and a live letter preview." />
|
||||
</Frame>
|
||||
|
||||
- **Write letters on the shared editor shell.** Letters open at `/builder/letter/<id>` with Write and Design, autosave, document actions, an assistant, downloads and history. Recipient name, company and date are structured; existing free-form letters retain their layout. [fdad39c63](https://github.com/reactive-resume/reactive-resume/commit/fdad39c63), [82fa32790](https://github.com/reactive-resume/reactive-resume/commit/82fa32790)
|
||||
- **Keep sender details linked, or use your own.** A linked letter follows its resume's contact details and can match its design. Switch those links off to edit independent values; when the resume is permanently deleted, the letter retains its copied values. Linked sender changes produce a device-local notice. [fdad39c63](https://github.com/reactive-resume/reactive-resume/commit/fdad39c63), [82fa32790](https://github.com/reactive-resume/reactive-resume/commit/82fa32790)
|
||||
- **Give a letter its own typography, colors and page settings.** Independent letter design expands beyond choosing a template to include Type, Color and Page controls. Sender headers render in all 15 templates, including Azurill's full-width letter page. [49422e98f](https://github.com/reactive-resume/reactive-resume/commit/49422e98f), [aa9a5113c](https://github.com/reactive-resume/reactive-resume/commit/aa9a5113c), [17d25c5ff](https://github.com/reactive-resume/reactive-resume/commit/17d25c5ff)
|
||||
- **Draft from a resume and posting.** An empty letter offers a streaming AI draft based on its linked resume and application, with a Stop action and length controls. Existing letter content is preserved until you choose to change it. [fdad39c63](https://github.com/reactive-resume/reactive-resume/commit/fdad39c63), [82fa32790](https://github.com/reactive-resume/reactive-resume/commit/82fa32790)
|
||||
- **Download matching application documents.** Download a letter as PDF, Word, Markdown or JSON, or download the resume and letter as two matching PDFs. A resume's download panel can include its application's linked letter in the same selected format. Letters also gain named versions and safe restore history. [82fa32790](https://github.com/reactive-resume/reactive-resume/commit/82fa32790), [fdad39c63](https://github.com/reactive-resume/reactive-resume/commit/fdad39c63)
|
||||
|
||||
## Applications & interviews
|
||||
|
||||
<Frame caption="The board shows each application's next step">
|
||||
<img src="/images/guides/tracking-job-applications/applications-board-view.webp" alt="Application board columns for Saved, Applied, Screening and Interview, with next-step labels on job cards." />
|
||||
</Frame>
|
||||
|
||||
- **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)
|
||||
- **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)
|
||||
- **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)
|
||||
|
||||
<Frame caption="Schedule interviews and take them into your own calendar">
|
||||
<img src="/images/guides/scheduling-interviews/applications-calendar-view.webp" alt="An application interview calendar with color-coded interview types and an upcoming-interview list showing times, durations and locations." />
|
||||
</Frame>
|
||||
|
||||
## Sharing, downloads & version history
|
||||
|
||||
<Frame caption="Sharing and all four export formats live in one panel">
|
||||
<img src="/images/guides/exporting-your-resume/share-sheet-download-tab.webp" alt="Share and export with Link, Download and History tabs, PDF, Word, Markdown and JSON formats, an editable filename and a non-blocking Check warning." />
|
||||
</Frame>
|
||||
|
||||
- **Share and export from one panel.** Link, Download and History replace the separate sharing, statistics, export and version-history surfaces. On phones the panel becomes a full-height bottom sheet. Download explains each format, accepts a custom filename, shows progress and retry states, and reports open Check issues without blocking export. [c8df74925](https://github.com/reactive-resume/reactive-resume/commit/c8df74925)
|
||||
- **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)
|
||||
- **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">
|
||||
<img src="/images/guides/undoing-changes-and-version-history/history-tab.webp" alt="History with a field to name the current version and a timeline containing Now, a named milestone, an Editing session and Created." />
|
||||
</Frame>
|
||||
|
||||
## PDF, Word & Markdown rendering
|
||||
|
||||
- **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)
|
||||
- **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)
|
||||
- **Choose profile icons by complete network names.** Substring matches could assign the wrong social-network icon. Matching now uses complete names. [54a9bfc30](https://github.com/reactive-resume/reactive-resume/commit/54a9bfc30)
|
||||
|
||||
## Mobile, accessibility & motion
|
||||
|
||||
<Frame caption="Phone editing gives entries their own screen">
|
||||
<img src="/images/guides/editing-on-mobile/phone-entry-screen.webp" alt="A phone experience editor with stacked fields, structured dates, a Present switch and a rich-text description." />
|
||||
</Frame>
|
||||
|
||||
- **Edit comfortably across phone and tablet layouts.** Phones use dedicated entry screens, a Write/Page switch and a Design sheet over the live PDF. Tablets use a panel drawer; narrow application detail sheets become full-screen. Rich-text controls dock above the phone keyboard with a Done action. [f2a76b2f6](https://github.com/reactive-resume/reactive-resume/commit/f2a76b2f6), [62572a20c](https://github.com/reactive-resume/reactive-resume/commit/62572a20c), [5f7ed15a5](https://github.com/reactive-resume/reactive-resume/commit/5f7ed15a5)
|
||||
- **Keep touch targets, labels and keyboard focus visible.** Primary touch controls reach 44 px, tinted descriptions remain readable, password fields gain show/hide controls, and two-factor code fields are named. Segmented controls, radios, checkboxes, switches, accordions and toasts regain focus rings; application sheets stop clipping them. Form labels, overlay focus return and tablet interactions receive accessibility fixes. [dcddc5639](https://github.com/reactive-resume/reactive-resume/commit/dcddc5639), [62572a20c](https://github.com/reactive-resume/reactive-resume/commit/62572a20c), [a6ef340c0](https://github.com/reactive-resume/reactive-resume/commit/a6ef340c0), [eaccd1d5c](https://github.com/reactive-resume/reactive-resume/commit/eaccd1d5c), [708a95617](https://github.com/reactive-resume/reactive-resume/commit/708a95617), [c6c51e5b2](https://github.com/reactive-resume/reactive-resume/commit/c6c51e5b2)
|
||||
- **Keep overlay interactions working during transitions.** Closing content stays mounted through its exit animation, bottom sheets accept mouse presses inside their content, and guarded form closes use the same unsaved-change check. Design-sheet scrolling no longer shifts the whole phone sheet. [08c513ca2](https://github.com/reactive-resume/reactive-resume/commit/08c513ca2), [09134035a](https://github.com/reactive-resume/reactive-resume/commit/09134035a), [31c58baed](https://github.com/reactive-resume/reactive-resume/commit/31c58baed), [d3ed651d6](https://github.com/reactive-resume/reactive-resume/commit/d3ed651d6)
|
||||
- **Make navigation and manipulation feel consistent.** Shared motion timing governs page fades, press responses, arriving content, swaps, expand/collapse, overlays and drag lift/drop. Phone surfaces push, rise and swipe; active tabs use a moving indicator. Page navigation no longer waits for avoidable network requests, and opening the assistant avoids rerendering the page every animation frame. [b48a9c214](https://github.com/reactive-resume/reactive-resume/commit/b48a9c214), [982e688e6](https://github.com/reactive-resume/reactive-resume/commit/982e688e6), [d9979bbc8](https://github.com/reactive-resume/reactive-resume/commit/d9979bbc8), [0bc128ff3](https://github.com/reactive-resume/reactive-resume/commit/0bc128ff3), [7827ff11b](https://github.com/reactive-resume/reactive-resume/commit/7827ff11b), [d1aabaecb](https://github.com/reactive-resume/reactive-resume/commit/d1aabaecb), [8e0a76bcb](https://github.com/reactive-resume/reactive-resume/commit/8e0a76bcb), [500cabaf4](https://github.com/reactive-resume/reactive-resume/commit/500cabaf4), [2a71d74e7](https://github.com/reactive-resume/reactive-resume/commit/2a71d74e7)
|
||||
- **Honor reduced motion throughout the workspace.** Motion animations become instant when the preference is enabled, and preview updates swap immediately. [e3d72ab0e](https://github.com/reactive-resume/reactive-resume/commit/e3d72ab0e), [538fd316a](https://github.com/reactive-resume/reactive-resume/commit/538fd316a)
|
||||
|
||||
## Settings, appearance & public pages
|
||||
|
||||
- **Use the Desk & Paper visual system.** Warm desk surfaces, paper pages, revised typography and color tokens replace the old app chrome. A self-hosted Material Symbols subset supplies interface icons, and the app sidebar and rail use the brand mark. Light, Dark and System appearance are available. [0f934bd84](https://github.com/reactive-resume/reactive-resume/commit/0f934bd84), [4485825df](https://github.com/reactive-resume/reactive-resume/commit/4485825df), [55a328436](https://github.com/reactive-resume/reactive-resume/commit/55a328436), [f82e9f33f](https://github.com/reactive-resume/reactive-resume/commit/f82e9f33f)
|
||||
- **Find settings in three pages that save as you go.** Account gathers profile and security, Preferences gathers appearance, language and motion, and AI & developer gathers providers, API keys and MCP. Old settings URLs redirect, and project links move to the settings footer. [9f809890e](https://github.com/reactive-resume/reactive-resume/commit/9f809890e), [01e87a6f1](https://github.com/reactive-resume/reactive-resume/commit/01e87a6f1)
|
||||
- **Recover sign-in and security changes reliably.** Backup codes accept the displayed hyphenated form; signup, reset and password-change forms enforce the server's eight-character minimum. Passkeys can be renamed and removal asks for confirmation. Unlinking a sign-in provider refreshes the account list, and custom OAuth appears only when its configuration is usable. [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c)
|
||||
- **Leave no cached account data after sign-out.** Signing out from the avatar menu previously retained the query cache. It now clears cached data. [741b08029](https://github.com/reactive-resume/reactive-resume/commit/741b08029)
|
||||
- **Explore the rebuilt landing page.** One scroll-driven story demonstrates writing, design, checks and exports. A new FAQ, localized prerendered HTML and revised canonical, OpenGraph and structured metadata improve search and answer-engine descriptions. Android Chromium no longer flickers the Design scene. [b399e289d](https://github.com/reactive-resume/reactive-resume/commit/b399e289d), [f8981502f](https://github.com/reactive-resume/reactive-resume/commit/f8981502f), [d6f03a3e6](https://github.com/reactive-resume/reactive-resume/commit/d6f03a3e6)
|
||||
- **Install with current app screenshots.** PWA images now show the redesigned workspace and are included in the Vercel frontend output. [49fcc630d](https://github.com/reactive-resume/reactive-resume/commit/49fcc630d)
|
||||
- **Follow documentation that matches v6.** Guides are rewritten around Documents, the new editor, structured dates, proposals, letters, applications and consolidated settings, with refreshed screenshots and upgrade instructions. OpenAPI, JSON schema and Semantic CSS references are regenerated; translation catalogs follow the new interface. The unregistered `ckb-IR` catalog is removed. [d46b4b581](https://github.com/reactive-resume/reactive-resume/commit/d46b4b581), [26044b534](https://github.com/reactive-resume/reactive-resume/commit/26044b534), [25131b3a8](https://github.com/reactive-resume/reactive-resume/commit/25131b3a8), [328bf73ce](https://github.com/reactive-resume/reactive-resume/commit/328bf73ce)
|
||||
|
||||
## Security & API correctness
|
||||
|
||||
- **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)
|
||||
- **Resolve API keys and bearer tokens consistently.** MCP uses the shared user resolver, and an unusable API-key header no longer prevents checking valid bearer authentication. [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c)
|
||||
- **Keep resume text literal in page metadata.** Replacement-pattern characters in authored text previously changed metadata substitution results. Escaped replacement handling preserves that text. [861feb22e](https://github.com/reactive-resume/reactive-resume/commit/861feb22e)
|
||||
- **Return documented resume API results.** Locked update, patch, restore and delete operations return `403`; a resume can be duplicated using only its ID; list queries accept one tag or repeated tags. The schema resources use the live schema, and development health reports the package version instead of `0.0.0`. [9a803305c](https://github.com/reactive-resume/reactive-resume/commit/9a803305c), [cbc76b03b](https://github.com/reactive-resume/reactive-resume/commit/cbc76b03b)
|
||||
|
||||
## Self-hosting, performance & maintenance
|
||||
|
||||
- **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)
|
||||
- **Drain active requests during shutdown.** `SIGTERM` and `SIGINT` stop accepting new HTTP connections and wait for active requests before exit. Deployment smoke tooling follows the v6 workflows. [50af92e2f](https://github.com/reactive-resume/reactive-resume/commit/50af92e2f)
|
||||
- **Compile more of the interface with React Compiler.** Builder, assistant, settings, applications, command palette, homepage and checker components lose redundant manual memoization where the compiler can handle them. Babel remains on a compatible major so components actually compile. [218aad51a](https://github.com/reactive-resume/reactive-resume/commit/218aad51a), [73a3dfc42](https://github.com/reactive-resume/reactive-resume/commit/73a3dfc42), [59337fcd5](https://github.com/reactive-resume/reactive-resume/commit/59337fcd5), [c0e9d3fc6](https://github.com/reactive-resume/reactive-resume/commit/c0e9d3fc6)
|
||||
- **Run CI on GitHub runners by default.** Blacksmith becomes opt-in through `USE_BLACKSMITH=true`. Database-backed cover-letter and MCP OAuth suites now receive isolated database configuration in CI instead of silently skipping. Playwright launches Node directly so it can stop its server process. [a7f182948](https://github.com/reactive-resume/reactive-resume/commit/a7f182948), [8a2fa2645](https://github.com/reactive-resume/reactive-resume/commit/8a2fa2645), [685fcab60](https://github.com/reactive-resume/reactive-resume/commit/685fcab60)
|
||||
- **Keep checks focused on regressions and data safety.** Test cleanup removes duplicated markup assertions, mock-shape checks and expensive render permutations while retaining security, ownership, persistence and public-contract checks. Per-template PDF smoke tests check that visible sections reach a page; core browser journeys and deterministic assistant tests remain. CI stops collecting unused unit coverage. [c0c798471](https://github.com/reactive-resume/reactive-resume/commit/c0c798471), [48b27802f](https://github.com/reactive-resume/reactive-resume/commit/48b27802f), [8a2fa2645](https://github.com/reactive-resume/reactive-resume/commit/8a2fa2645)
|
||||
- **Keep contributor setup aligned with the workspace.** pnpm updates to 12.8.1, dependency upgrades and deduplication refresh the stack, and `dotenvx` is available through pnpm for development. Generated documentation blocks use MDX comments, and repository guidance describes the React SPA, source-consumed packages and current deployment layout. [8ded9de46](https://github.com/reactive-resume/reactive-resume/commit/8ded9de46), [d0d20ce0f](https://github.com/reactive-resume/reactive-resume/commit/d0d20ce0f), [36ba314e2](https://github.com/reactive-resume/reactive-resume/commit/36ba314e2), [#3537](https://github.com/reactive-resume/reactive-resume/pull/3537), [883045b14](https://github.com/reactive-resume/reactive-resume/commit/883045b14), [6cfcdea32](https://github.com/reactive-resume/reactive-resume/commit/6cfcdea32)
|
||||
|
||||
## Removed
|
||||
|
||||
- **Retire the previous workspace surfaces.** The compact document view, collapsible app sidebar, old builder sidebars/dock, separate template gallery dialog, application table, Rejected/Archive actions and separate Agents workspace give way to the workflows described above. Old document, settings and Agents routes redirect during the 6.0 releases. [f2a76b2f6](https://github.com/reactive-resume/reactive-resume/commit/f2a76b2f6), [daa7d331f](https://github.com/reactive-resume/reactive-resume/commit/daa7d331f), [462db6011](https://github.com/reactive-resume/reactive-resume/commit/462db6011), [e1d5b9ba9](https://github.com/reactive-resume/reactive-resume/commit/e1d5b9ba9)
|
||||
- **Retire automatic AI editing and old conversation controls.** The UI removes conversation archiving, token counts, the application fit-score field and AI-draft copy/blank-draft actions. Reviewable proposals replace automatically applied edits; attachments, sources and transcript copying remain. Existing application copilot API operations remain available to integrations. [e1d5b9ba9](https://github.com/reactive-resume/reactive-resume/commit/e1d5b9ba9), [6463a9e9c](https://github.com/reactive-resume/reactive-resume/commit/6463a9e9c)
|
||||
- **Retire the previous PDF and style stack.** Remove `@react-pdf/renderer`, `@react-pdf/hyphenate`, `react-pdf-html`, PDF-specific Phosphor dependencies and their patches. Legacy per-slot styling and stylesheet activation are removed. Semantic CSS drops `revert`, `unset`, `vw`/`vh`, `|=`/`$=` attribute matching, `:nth-child(... of ...)` and the old analyzer; use supported PDF-oriented CSS. [c0bf1aeba](https://github.com/reactive-resume/reactive-resume/commit/c0bf1aeba), [a325232a0](https://github.com/reactive-resume/reactive-resume/commit/a325232a0), [394e59e1a](https://github.com/reactive-resume/reactive-resume/commit/394e59e1a)
|
||||
- **Remove unused internal UI and duplicate infrastructure.** Old chat/sidebar primitives, shadcn color aliases, unused export surfaces, dependencies and Turbo tasks are removed. Shared helpers now handle history, confirmations, HTML escaping, cookies, signatures and AI errors; client-only code loses obsolete SSR guards. [3a69dfc4d](https://github.com/reactive-resume/reactive-resume/commit/3a69dfc4d), [f8767c32f](https://github.com/reactive-resume/reactive-resume/commit/f8767c32f), [e368e5955](https://github.com/reactive-resume/reactive-resume/commit/e368e5955), [a42cacc05](https://github.com/reactive-resume/reactive-resume/commit/a42cacc05), [eae7de3fb](https://github.com/reactive-resume/reactive-resume/commit/eae7de3fb)
|
||||
|
||||
## 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 — 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)
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="v5.3.2" description="26th September 2026">
|
||||
## Highlights
|
||||
|
||||
@@ -542,7 +762,6 @@ rss: true
|
||||
- Used the compact brand icon on the first-paint and loading screens for a cleaner startup. [82d96124](https://github.com/reactive-resume/reactive-resume/commit/82d96124)
|
||||
- **PDF list rendering fixes**: bullet alignment and margins, nested list layout, page breaks that keep the marker with its item, and text that continues after a line break. [#3202](https://github.com/reactive-resume/reactive-resume/pull/3202), [#3198](https://github.com/reactive-resume/reactive-resume/pull/3198), [#3178](https://github.com/reactive-resume/reactive-resume/pull/3178), [#3186](https://github.com/reactive-resume/reactive-resume/pull/3186)
|
||||
- Kept the server running through transient Postgres disconnects (for example, idle drops from serverless Postgres providers like Neon) by handling database pool errors and reconnecting on the next query. Thanks to [@helder-mattos](https://github.com/helder-mattos). [#3172](https://github.com/reactive-resume/reactive-resume/pull/3172)
|
||||
- Fixed the Atlas Cloud sponsor logo so the whole logo reliably opens the sponsor site in a new tab. [#3170](https://github.com/reactive-resume/reactive-resume/pull/3170)
|
||||
|
||||
## Localization & Maintenance
|
||||
|
||||
@@ -557,7 +776,6 @@ rss: true
|
||||
|
||||
- **Better multilingual PDF rendering.** PDF generation now uses script-aware Noto fallback stacks for Korean, Japanese, Traditional and Simplified Chinese, Arabic, Hebrew, and Thai, so non-Latin resumes render more reliably in the live preview and exported PDFs. [#3158](https://github.com/reactive-resume/reactive-resume/pull/3158)
|
||||
- **Hide Link Underline setting.** Resume page settings now include a dedicated **Hide Link Underline** option that is saved with the resume and respected by PDF templates. [5fb4976ec](https://github.com/reactive-resume/reactive-resume/commit/5fb4976ec), [#3134](https://github.com/reactive-resume/reactive-resume/issues/3134)
|
||||
- **Sponsor placements.** The landing page and docs now include optional sponsor placements for Atlas Cloud, controlled by a new feature flag so deployments can opt in when appropriate. [f14d8ce69](https://github.com/reactive-resume/reactive-resume/commit/f14d8ce69)
|
||||
|
||||
## Resume Builder & Rendering
|
||||
|
||||
@@ -570,7 +788,6 @@ rss: true
|
||||
|
||||
- Fixed AI resume analysis when model responses wrap JSON in Markdown code fences. [#3142](https://github.com/reactive-resume/reactive-resume/pull/3142)
|
||||
- Added `FLAG_DISABLE_API_RATE_LIMIT` for trusted self-hosted deployments that need to disable authentication API rate limiting, and documented it in the Docker self-hosting guide. [#3149](https://github.com/reactive-resume/reactive-resume/pull/3149)
|
||||
- Added `FLAG_SHOW_SPONSORS`, sponsor assets, landing-page placement, docs navigation, and README sponsor information for Atlas Cloud. [f14d8ce69](https://github.com/reactive-resume/reactive-resume/commit/f14d8ce69)
|
||||
- Fixed the MCP PDF download test mock to match the current tool behavior. [#3144](https://github.com/reactive-resume/reactive-resume/pull/3144)
|
||||
|
||||
## Localization & Maintenance
|
||||
|
||||
@@ -5,15 +5,6 @@ description: "The sponsors whose support funds ongoing development and hosting o
|
||||
|
||||
Sponsors pay for hosting, maintenance, and ongoing development, which is what keeps Reactive Resume free and independent. Thank you to everyone who chips in.
|
||||
|
||||
## Atlas Cloud
|
||||
|
||||
<img src="/images/sponsors/atlas-cloud-logo-black.svg" alt="Atlas Cloud" width="360" className="block dark:hidden" />
|
||||
<img src="/images/sponsors/atlas-cloud-logo-white.svg" alt="Atlas Cloud" width="360" className="hidden dark:block" />
|
||||
|
||||
[Atlas Cloud](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=reactive-resume) supports Reactive Resume as a project sponsor. Atlas Cloud provides a unified AI platform for developers, with access to hundreds of models for chat, image generation, video generation, media processing, and GPU cloud workloads through one API key, one endpoint, and one billing account.
|
||||
|
||||
Learn more at [atlascloud.ai](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=reactive-resume).
|
||||
|
||||
## Sponsor Reactive Resume
|
||||
|
||||
If Reactive Resume has helped you, you can support its development through [GitHub Sponsors](https://github.com/sponsors/AmruthPillai) or [Open Collective](https://opencollective.com/reactive-resume/donate).
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
<svg role="img" aria-labelledby="atlas-cloud-logo-title" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1224 792">
|
||||
<title id="atlas-cloud-logo-title">Atlas Cloud</title>
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
clip-path: url(#clippath);
|
||||
}
|
||||
|
||||
.cls-2 {
|
||||
fill: none;
|
||||
}
|
||||
|
||||
.cls-2, .cls-3 {
|
||||
stroke-width: 0px;
|
||||
}
|
||||
|
||||
.cls-4 {
|
||||
clip-path: url(#clippath-1);
|
||||
}
|
||||
|
||||
.cls-5 {
|
||||
clip-path: url(#clippath-2);
|
||||
}
|
||||
|
||||
.cls-3 {
|
||||
fill: #000;
|
||||
}
|
||||
</style>
|
||||
<clipPath id="clippath">
|
||||
<rect class="cls-2" x="20.73" y="315.14" width="1182.55" height="161.72"/>
|
||||
</clipPath>
|
||||
<clipPath id="clippath-1">
|
||||
<rect class="cls-2" x="20.73" y="315.14" width="1182.55" height="161.72"/>
|
||||
</clipPath>
|
||||
<clipPath id="clippath-2">
|
||||
<rect class="cls-2" x="20.73" y="315.14" width="1182.55" height="161.72"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g class="cls-1">
|
||||
<path class="cls-3" d="M104.38,315.14L20.73,476.86c38.73-15.32,70.03-17.6,98.12-16.26l-12.85-28.4c-5.63-.57-21.86-.57-29.57,1.45l27.95-62.14s42.06,91.31,42.13,91.32c8.09,1.27,29.8,8.55,41.52,14.03l-83.66-161.72Z"/>
|
||||
</g>
|
||||
<polygon class="cls-3" points="207.87 323.37 207.87 361.57 189.68 361.57 189.68 381.76 207.87 381.76 207.87 471.35 234.07 471.35 234.07 381.76 252.87 381.76 252.87 361.57 234.07 361.57 234.07 323.37 207.87 323.37"/>
|
||||
<rect class="cls-3" x="268.07" y="323.37" width="26.19" height="147.98"/>
|
||||
<g class="cls-4">
|
||||
<path class="cls-3" d="M340.48,416.95c0,13.6,9.79,33.39,33.39,33.39,14.6,0,24.2-7.6,29.2-17.59,2.6-4.8,3.8-10,4.2-15.4.2-5.2-.8-10.6-3-15.4-4.6-10.4-14.8-19.4-30.6-19.4-21.2,0-33.19,17.2-33.19,34.19v.2ZM433.26,471.35h-26.19v-15.8c-7,12.8-21.6,19.2-36.99,19.2-35.2,0-55.8-27.4-55.8-58.4,0-34.6,25-58.19,55.8-58.19,20,0,32.19,10.6,36.99,19.4v-16h26.19v109.78Z"/>
|
||||
<path class="cls-3" d="M506.87,391.16c-.2-5.8-3.2-11.8-13.4-11.8-8.8,0-12.99,5.6-12.99,11,.2,7,8.2,10.79,18.6,13.8,17.6,4.8,36.6,10,36.8,33.59.4,22.6-18.6,36.99-41.59,36.99-17,0-40-8.8-41.99-35.39h26.19c1,11.8,11.2,14.2,16.2,14.2,8.2,0,15.2-5.4,15-12.8,0-9.4-8.2-12-28.4-18.99-14.8-4.6-26.79-12.8-26.99-28.6,0-21.6,18.19-35,39.39-35,14.8,0,36.8,6.6,39,33h-25.8Z"/>
|
||||
<path class="cls-3" d="M760.26,421.76c-9,30.59-37.8,52.39-72.39,52.39-45.19,0-77.59-35.8-77.59-76.99s30.59-76.58,77.39-76.58c42.59.2,66.79,31.59,72.59,53.19h-31.4c-4.6-10.19-17.8-26.79-41.39-26.99-28.8,0-47.39,24.2-47.39,50.39s19.4,50.79,47.6,50.79c26.39,0,38.39-20.8,41.19-26.19h31.4Z"/>
|
||||
</g>
|
||||
<rect class="cls-3" x="779.68" y="323.37" width="26.19" height="147.98"/>
|
||||
<g class="cls-5">
|
||||
<path class="cls-3" d="M852.09,416.56c0,19.2,14.59,33.39,32.59,33.39s32.4-14.2,32.4-33.6-14.4-33.59-32.4-33.59-32.59,14.2-32.59,33.59v.2ZM825.89,416.15c0-28,20.6-57.79,58.79-57.79s58.79,29.79,58.79,57.99-20.59,58.19-58.79,58.19-58.79-29.79-58.79-58.19v-.2Z"/>
|
||||
<path class="cls-3" d="M1064.87,471.35h-24.6v-14.6c-4.6,8.6-14.4,18.2-34.19,18-36-.2-42.79-27.6-42.79-46.8v-66.39h26.19v59.79c0,16.2,5.4,28.99,23.99,28.8,18.8,0,25.2-12.4,25.2-28v-60.59h26.2v109.78Z"/>
|
||||
<path class="cls-3" d="M1111.28,416.35c0,18.6,13.4,33.8,33.59,33.8,9.6,0,18.2-3.8,24.4-10,6.2-6.2,9.8-14.8,9.39-24.4,0-9.6-3.8-17.8-9.8-23.6-6-6-14.39-9.6-23.79-9.6-21.4,0-33.8,16.4-33.8,33.59v.2ZM1203.27,471.35h-25v-15.8c-4.8,8.2-15.2,19.2-37.6,19.2-33.79,0-55.59-26.4-55.59-58.4,0-35.59,25.4-58.19,55.19-58.19,21,0,32.8,11.19,36.8,17.59v-52.39h26.2v147.98Z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 3.5 KiB |
@@ -1,55 +0,0 @@
|
||||
<svg role="img" aria-labelledby="atlas-cloud-logo-title" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1224 792">
|
||||
<title id="atlas-cloud-logo-title">Atlas Cloud</title>
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
clip-path: url(#clippath);
|
||||
}
|
||||
|
||||
.cls-2 {
|
||||
fill: none;
|
||||
}
|
||||
|
||||
.cls-2, .cls-3 {
|
||||
stroke-width: 0px;
|
||||
}
|
||||
|
||||
.cls-4 {
|
||||
clip-path: url(#clippath-1);
|
||||
}
|
||||
|
||||
.cls-5 {
|
||||
clip-path: url(#clippath-2);
|
||||
}
|
||||
|
||||
.cls-3 {
|
||||
fill: #fff;
|
||||
}
|
||||
</style>
|
||||
<clipPath id="clippath">
|
||||
<rect class="cls-2" x="20.73" y="315.14" width="1182.55" height="161.72"/>
|
||||
</clipPath>
|
||||
<clipPath id="clippath-1">
|
||||
<rect class="cls-2" x="20.73" y="315.14" width="1182.55" height="161.72"/>
|
||||
</clipPath>
|
||||
<clipPath id="clippath-2">
|
||||
<rect class="cls-2" x="20.73" y="315.14" width="1182.55" height="161.72"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g class="cls-1">
|
||||
<path class="cls-3" d="M104.38,315.14L20.73,476.86c38.73-15.32,70.03-17.6,98.12-16.26l-12.85-28.4c-5.63-.57-21.86-.57-29.57,1.45l27.95-62.14s42.06,91.31,42.13,91.32c8.09,1.27,29.8,8.55,41.52,14.03l-83.66-161.72Z"/>
|
||||
</g>
|
||||
<polygon class="cls-3" points="207.87 323.37 207.87 361.57 189.68 361.57 189.68 381.76 207.87 381.76 207.87 471.35 234.07 471.35 234.07 381.76 252.87 381.76 252.87 361.57 234.07 361.57 234.07 323.37 207.87 323.37"/>
|
||||
<rect class="cls-3" x="268.07" y="323.37" width="26.19" height="147.98"/>
|
||||
<g class="cls-4">
|
||||
<path class="cls-3" d="M340.48,416.95c0,13.6,9.79,33.39,33.39,33.39,14.6,0,24.2-7.6,29.2-17.59,2.6-4.8,3.8-10,4.2-15.4.2-5.2-.8-10.6-3-15.4-4.6-10.4-14.8-19.4-30.6-19.4-21.2,0-33.19,17.2-33.19,34.19v.2ZM433.26,471.35h-26.19v-15.8c-7,12.8-21.6,19.2-36.99,19.2-35.2,0-55.8-27.4-55.8-58.4,0-34.6,25-58.19,55.8-58.19,20,0,32.19,10.6,36.99,19.4v-16h26.19v109.78Z"/>
|
||||
<path class="cls-3" d="M506.87,391.16c-.2-5.8-3.2-11.8-13.4-11.8-8.8,0-12.99,5.6-12.99,11,.2,7,8.2,10.79,18.6,13.8,17.6,4.8,36.6,10,36.8,33.59.4,22.6-18.6,36.99-41.59,36.99-17,0-40-8.8-41.99-35.39h26.19c1,11.8,11.2,14.2,16.2,14.2,8.2,0,15.2-5.4,15-12.8,0-9.4-8.2-12-28.4-18.99-14.8-4.6-26.79-12.8-26.99-28.6,0-21.6,18.19-35,39.39-35,14.8,0,36.8,6.6,39,33h-25.8Z"/>
|
||||
<path class="cls-3" d="M760.26,421.76c-9,30.59-37.8,52.39-72.39,52.39-45.19,0-77.59-35.8-77.59-76.99s30.59-76.58,77.39-76.58c42.59.2,66.79,31.59,72.59,53.19h-31.4c-4.6-10.19-17.8-26.79-41.39-26.99-28.8,0-47.39,24.2-47.39,50.39s19.4,50.79,47.6,50.79c26.39,0,38.39-20.8,41.19-26.19h31.4Z"/>
|
||||
</g>
|
||||
<rect class="cls-3" x="779.68" y="323.37" width="26.19" height="147.98"/>
|
||||
<g class="cls-5">
|
||||
<path class="cls-3" d="M852.09,416.56c0,19.2,14.59,33.39,32.59,33.39s32.4-14.2,32.4-33.6-14.4-33.59-32.4-33.59-32.59,14.2-32.59,33.59v.2ZM825.89,416.15c0-28,20.6-57.79,58.79-57.79s58.79,29.79,58.79,57.99-20.59,58.19-58.79,58.19-58.79-29.79-58.79-58.19v-.2Z"/>
|
||||
<path class="cls-3" d="M1064.87,471.35h-24.6v-14.6c-4.6,8.6-14.4,18.2-34.19,18-36-.2-42.79-27.6-42.79-46.8v-66.39h26.19v59.79c0,16.2,5.4,28.99,23.99,28.8,18.8,0,25.2-12.4,25.2-28v-60.59h26.2v109.78Z"/>
|
||||
<path class="cls-3" d="M1111.28,416.35c0,18.6,13.4,33.8,33.59,33.8,9.6,0,18.2-3.8,24.4-10,6.2-6.2,9.8-14.8,9.39-24.4,0-9.6-3.8-17.8-9.8-23.6-6-6-14.39-9.6-23.79-9.6-21.4,0-33.8,16.4-33.8,33.59v.2ZM1203.27,471.35h-25v-15.8c-4.8,8.2-15.2,19.2-37.6,19.2-33.79,0-55.59-26.4-55.59-58.4,0-35.59,25.4-58.19,55.19-58.19,21,0,32.8,11.19,36.8,17.59v-52.39h26.2v147.98Z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 3.5 KiB |
Reference in New Issue
Block a user