Back to Reactive Resume

Changelog

docs/changelog/index.mdx

5.1.030.2 KB
Original Source
<Update label="v5.1.0" description="7th May 2026"> <Note> **Self-hosters, please read before upgrading.**
  • No more Browserless / Chromium dependency. From v5.1.0 onwards, you do not need to run a printer, Browserless, or headless Chrome service alongside Reactive Resume. PDF generation is now performed entirely in your browser via @react-pdf/renderer. The BROWSERLESS_TOKEN, PRINTER_ENDPOINT, PRINTER_APP_URL, and FLAG_DEBUG_PRINTER environment variables are no longer read and can be removed from your .env.
  • Database migrations. This release ships several new schema migrations to bring the resume model up to date. They run automatically on container start, but you should back up your PostgreSQL database before upgrading in case rollback is needed.
  • Custom CSS has been removed. Because the resume PDF is no longer produced by a headless browser, raw CSS no longer applies to the exported document. A first-class template-customization story is on the roadmap for a future release. </Note>

Highlights

  • PDF generation moved fully client-side. @react-pdf/renderer now produces the exported PDF directly in your browser, and the in-builder live preview is rendered with pdfjs, so what you see in the preview is exactly what you'll download.
  • All resume templates re-ported. Azurill, Bronzor, Chikorita, Ditgar, Ditto, Gengar, Glalie, Kakuna, Lapras, Leafish, Meowth, Onyx, Pikachu, and Rhyhorn have all been re-implemented on the new renderer with section-by-section parity.

Resume Builder

  • Pixel-accurate live preview. The builder preview is now rendered with pdfjs against the same document tree used for export, eliminating the long-standing "looks fine in the preview but breaks in the PDF" class of bugs.
  • TanStack Form everywhere. All 35 form-bearing surfaces in the app — login, register, forgot-password, resume sections, settings, and dialogs — have been migrated to TanStack Form. react-hook-form and @hookform/* packages have been removed.
  • TanStack Query is the single source of truth for resume state. The previous standalone Zustand resume store has been retired; optimistic updates, refetching, and error recovery now flow through one cache, behaving consistently across tabs and reloads.
  • Native page format and margins. Page size and margin controls are now expressed directly to @react-pdf/renderer, replacing the Puppeteer-specific printMarginTemplates workaround.

Self-Hosting

  • One-service deployment. Self-hosted Compose files no longer need a printer: service block. The minimum stack is now just Reactive Resume + PostgreSQL (with optional S3-compatible storage and SMTP).
  • /api/health simplified. The health endpoint now reports database and storage only, returning HTTP 503 if either dependency is unhealthy. There is no longer a printer field to monitor.
  • Updated documentation. The Self-Hosting, Quickstart, Development, Architecture, and Legal pages have all been refreshed to describe the simplified single-service deployment.

Authentication & AI

  • Better Auth retained end-to-end with all nine plugins — passkeys, two-factor authentication, OAuth (Google / GitHub / LinkedIn / custom), API keys, dynamic OAuth client registration, dashboard, sentinel, and admin. Existing sessions and logins carry over after the upgrade.
  • AI features carry over (Resume Analysis, AI Chat with JSON Patch tool calls, PDF / DOCX import) with the same provider matrix (OpenAI, Google Gemini, Anthropic, Ollama, OpenRouter). The AI router and service layer have been cleanly decoupled from the jobs / tailor flow for a more modular surface.

Removed

  • Custom CSS option in the resume builder. With rendering bound to @react-pdf/renderer, raw CSS no longer applies to the exported PDF. A structured customization API will return in a future release.
  • PRINTER_* and BROWSERLESS_* environment variables, the printer/{resumeId} route, the getByIdForPrinter server function, and the printer-token signing code are all gone.

Maintenance

  • Removed dead printer-token utilities and the legacy public RPC surface for printer-only resume reads.
  • Tightened the boundary between server-only and client-only code: server modules (database, storage, auth) are lazy-imported so they no longer leak into the client bundle.
  • Reverse-proxy timeout guidance in the nginx example has been simplified now that no long-running PDF generation request flows through the proxy.

Full Changelog: v5.0.20...v5.1.0 </Update>

<Update label="v5.0.20" description="27th April 2026"> ## Features & Improvements - Added the new **Meowth** resume template (compact ATS-friendly layout with an inline three-column entry header), thanks to [@JamesGoslings](https://github.com/JamesGoslings). [#2923](https://github.com/amruthpillai/reactive-resume/pull/2923) - Added support for custom icon colors on section items, thanks to [@Ruzenie](https://github.com/Ruzenie). [#2928](https://github.com/amruthpillai/reactive-resume/pull/2928) - Improved account-related email UX with better templates for password reset and email verification. [b87f2007](https://github.com/amruthpillai/reactive-resume/commit/b87f2007) - Consolidated separate settings pages into a single **Integrations** page for a more streamlined configuration flow. [5d8126d4](https://github.com/amruthpillai/reactive-resume/commit/5d8126d4)

Fixes

  • Added a targeted Chinese localization fix for the Skills section title (zh-CN). #2931
  • Allowed MCP localhost loopback only for local MCP clients, improving local integration behavior while keeping external access restrictions intact. 623ca5c6

Maintenance & Localization

  • Updated dependencies and lockfile, including cleanup of unused exports (Knip). e1bccbcc
  • Synced translation catalogs from Crowdin. #2922, #2925, #2926, #2932, #2934, #2935
  • Updated docs to list Meowth alongside existing templates. #2929

Full Changelog: v5.0.19...v5.0.20 </Update>

<Update label="v5.0.19" description="25th April 2026"> ## Highlights - Added **OpenRouter** as an AI provider, thanks to [@iagodemacedo](https://github.com/iagodemacedo). [#2906](https://github.com/amruthpillai/reactive-resume/pull/2906) - Added Chinese font options, thanks to [@Platinum1154](https://github.com/Platinum1154). [#2905](https://github.com/amruthpillai/reactive-resume/pull/2905) - Added text color support to the rich text editor, including DOCX export handling for colored text, thanks to [@Platinum1154](https://github.com/Platinum1154). [#2903](https://github.com/amruthpillai/reactive-resume/pull/2903) - Fixed MCP tool names for Claude Desktop compatibility. [#2885](https://github.com/amruthpillai/reactive-resume/pull/2885) - Improved Docker-based local development support and refreshed self-hosting setup guidance. [849aad64](https://github.com/amruthpillai/reactive-resume/commit/849aad64), [c0387298](https://github.com/amruthpillai/reactive-resume/commit/c0387298)

Fixes & Security

  • Thank you to @shaxbozaka for running a security audit on Reactive Resume and helping make the app more secure.
  • Hardened auth, OAuth, AI URL validation, printer/export endpoints, resume access controls, Browserless configuration, and public route exposure. a42dbcd4
  • Removed the public RPC surface for the printer-only resume fetch endpoint by moving it behind a server function, further shrinking the attack surface for getByIdForPrinter, thanks to @shaxbozaka.
  • Corrected Computer Modern Sans italic font file mappings, thanks to @russellbrenner. #2881
  • Improved email handling and user lookup in OAuth configuration, thanks to @VedantBhawsar. #2874
  • Aligned role period text in experience items, thanks to @JamesGoslings. #2908
  • Reduced resume preview wheel zoom sensitivity, thanks to @GoldenSection0618. #2911
  • Prevented orphaned section headings at page breaks, thanks to @5queezer. #2851
  • Added top margin handling for subsequent PDF pages, based on feedback from @trigger-xyz. bbc38d2f

Maintenance & Localization

  • Updated dependencies and lockfile, including security-focused package pins and Vite+ version pins. c6e8df0a, 847d69b6, 9b3916d4
  • Added SECURITY.md. 9e1e593d
  • Added focused tests for auth, printer/export, URL validation, form edge cases, rich text DOCX output, font handling, and CSS sanitization hardening. d0af9f4b
  • Synced translation catalogs from Crowdin and moved syncing to GitHub Actions. #2886, #2918

New Contributors

Full Changelog: v5.0.17...v5.0.19 </Update>

<Update label="v5.0.18" description="14th April 2026"> ## Features & Improvements - Re-enabled **Passkeys** across authentication flows, including passkey sign-in on the login page and passkey management in account settings.

Maintenance

  • Updated dependencies and lockfile.
  • Synced translation catalogs from Crowdin. </Update>
<Update label="v5.0.17" description="9th April 2026"> ## Features & Improvements - Added **Resume Analysis** in the resume builder right sidebar: run an on-demand AI review for an overall score (0 to 100), a dimension scorecard, strengths, and prioritized suggestions. Results are saved per resume and reload after refresh. - When AI features are disabled, the analysis section shows a short notice with a link to **AI Settings** so you can enable your provider and model first. - Improved the **MCP server** experience: updated tools, resources, and prompts; added an MCP server card at `/.well-known/mcp/server-card.json` for compatible clients; refreshed the **Using the MCP server** guide.

Fixes

  • Fixed #2865, incorrect spacing between resume section items in shared layouts.
  • Fixed #2868 affecting resume item presentation and linked titles in shared item components.

Maintenance & CI

  • Downgraded the Cosign installer action to v3 in the Docker build workflow for more reliable image signing.
  • Synced translation catalogs from Crowdin. #2864
  • Dependency and lockfile updates (including changes bundled with MCP and analysis work). </Update>
<Update label="v5.0.16" description="4th April 2026"> ## Features & Improvements - Updated shared resume item layouts (Experience, Education, Awards, Certifications, Publications, References, Volunteer) for better alignment and spacing consistency. - Generated printer pages now set a meaningful document title from the resume owner's name (`<Name> - Resume`) for cleaner PDF metadata and tab titles. [#2863](https://github.com/amruthpillai/reactive-resume/pull/2863)

Fixes

  • Fixed #2733, where date ranges could appear on a separate line unexpectedly in resume items. #2862
  • Adjusted Experience section form field ordering/labels so Location, Position, and Period are mapped and displayed correctly.

Maintenance & Localization

  • Synced translation catalogs across all supported locales.
  • Updated dependencies and lockfile, including AI SDK, TipTap, TanStack Query, and Vite+ package aliases. </Update>
<Update label="v5.0.15" description="1st April 2026"> ## Features & Improvements - Added **LinkedIn sign-in** support for self-hosted instances, including sign-in on the auth page and account linking in settings. - Improved the sign-in experience by showing loading placeholders while social login providers are being fetched. - Resume builder panel sizes are now persisted more reliably, making the layout feel more consistent between sessions. - Added clearer labels for resume sorting and filtering controls on the dashboard.

Fixes

  • Improved autosave reliability in the resume builder:
    • Unsaved edits are flushed before page unload.
    • You now get a clear persistent warning if changes fail to save (for example, due to network issues).
  • Strengthened authentication defaults by increasing the minimum password length requirement to 8 characters.
  • Improved reliability around resume deletion and server-side error handling for create/update operations.
  • Fixed a rare language mix-up during printing/export when multiple print jobs run at the same time, so each PDF/screenshot now reliably uses the correct locale.
  • Improved print stability under heavy usage by reusing in-progress PDF and screenshot generation requests for the same resume instead of starting duplicate jobs.
  • Hardened printer token signing and token/session/API-key verification paths for better security.
  • Improved resilience in AI tailoring output parsing and JSON Resume import normalization.
  • Printer service now provides descriptive error messages ("Failed to generate PDF" / "Failed to capture screenshot") instead of generic internal server errors.
  • Job descriptions in the job detail sheet now render HTML formatting (headings, lists, bold text) instead of showing raw tags.
  • Fixed the "Tailor Resume" button being incorrectly disabled when AI is not configured — the dialog already supports plain resume duplication as a fallback.
  • Fixed the tailor resume flow to open the resume builder in a new tab while keeping the job listing open for reference, instead of navigating away and auto-opening the application page.
  • Apply option links in the job detail sheet are now validated before rendering, preventing malformed or potentially unsafe URLs.
  • Improved job card loading skeletons to match the actual card layout (logo, title, badges) for a smoother loading experience.
  • Centered the "Configure Job Search" empty state on the page.
  • Extracted the JobCard component into its own file for better code organization.

Docs & Localization

  • Updated self-hosting and environment variable documentation to include LinkedIn OAuth configuration.
  • Synced translations across locales for the latest authentication and save-status messaging. </Update>
<Update label="v5.0.14" description="24th March 2026"> ## Features - Implemented OAuth 2.1 support for MCP authentication, thanks to @5queezer. [#2829](https://github.com/amruthpillai/reactive-resume/pull/2829) - Migrated from using Biome to Oxlint/Oxfmt for linting and formatting, with a new autofix CI workflow. [#2822](https://github.com/amruthpillai/reactive-resume/pull/2822)

Fixes

  • Fixed an issue with the slider component for "Sidebar Width" in the resume builder. #2830 </Update>
<Update label="v5.0.13" description="19th March 2026"> ## Features & Improvements - Added **Job Listings with AI-Powered Resume Tailoring**, a major new feature that integrates job search (via JSearch API) directly into the dashboard with AI-driven resume tailoring to match job descriptions. [#2788](https://github.com/amruthpillai/reactive-resume/pull/2788) - Search for jobs with filters for location (city, state, country), employment type, remote status, and more. - View detailed job listings in a slide-out panel with apply links and tags. - Tailor your resume to a specific job posting using AI — rewrites skills, experience, and references for optimal fit. - Per-user API quota management with usage tracking in settings. - Pagination with 30 results per page. - Added **DOCX resume export** — generate and download tailored resumes as Word documents. [#2788](https://github.com/amruthpillai/reactive-resume/pull/2788) - Migrated the entire project toolchain to **Vite+** (`vp` CLI), unifying Vite, Vitest, Oxlint, and Oxfmt under a single developer experience. - Migrated from **Biome to Oxlint/Oxfmt** for linting and formatting, with a new autofix CI workflow. [#2822](https://github.com/amruthpillai/reactive-resume/pull/2822) - Added **Slovenian** locale support. - Added a new `Progress` UI component.

Fixes

  • Fixed type issues in auth client and configuration.
  • Used RTL-friendly CSS classes across the app for improved bidirectional layout support.
  • Removed dead code and unused imports.
  • Updated route tree generation and added routeTree.gen.ts to .gitignore.
  • Improved animation performance with willChange styles on animation components.

Maintenance & Dependencies

  • Updated dependencies across the board, including @typescript/native-preview, vite-plus, and others.
  • Added database migrations for missing indexes.
  • Synced translations from Crowdin. #2820, #2824
  • Updated French translation for 'Volunteer' to 'Bénévolat'. #2823
  • Multiple translation and language updates across all locales.

New Contributors

  • @lukadfagundes
  • @Hephaisto-dev </Update>
<Update label="v5.0.12" description="17th March 2026"> ## Features & Improvements - Refactored the component system to `@base-ui/react` across the app for standardized UI behavior (dialogs, menus, accordions, comboboxes, switches, etc.). - Improved auth infrastructure with Better Auth dashboard/sentinel integration and expanded IP/header handling for proxied deployments. - Added a dedicated `src/server.ts` server entry using `FastResponse` for better runtime compatibility. - Sidebar button list now scrolls internally on overflow.

Fixes

  • Printer endpoint now resolves to IP when using chromedp, improving compatibility with proxied deployments.
  • Switched OpenAI integration to chat/completions for resume import and AI features.
  • AI PDF/DOCX resume parsing is now more robust via direct file send (multimodal input).
  • Resume import normalization hardened: section defaults merged, required fields enforced, missing IDs/flags autogenerated.
  • Fixed UI migration regressions (accordion behavior, button interaction, right sidebar scrollbar).
  • Fixed multi-page PDF crashes and Gemini API ingestion errors.
  • Fixed role title styling, role spacing, and issues with skills item rendering and template headings.

Maintenance & Dependencies

  • Updated dependencies and lockfile.
  • Synced translation strings across locales, including multiple contributions from Crowdin.
  • General dependency and code style improvements, plus removal of redundant indexes and plugins.

New Contributors

  • @yang-summer
  • @FrancocDev
  • @obitton
  • @jondycz </Update>
<Update label="v5.0.10" description="24th February 2026"> ## Fixes - Show section titles for summary-type custom sections in the resume builder. [#2744](https://github.com/amruthpillai/reactive-resume/pull/2744) - Prevent browser password managers and Edge autofill/save prompts from appearing on AI settings API key fields. [#2719](https://github.com/amruthpillai/reactive-resume/pull/2719) - Replace deprecated Tailwind CSS classes: use `inset-s-*`/`inset-e-*` instead of `start-*`/`end-*`. - Fix PDF downloader to work correctly in offline mode. [#2743](https://github.com/amruthpillai/reactive-resume/pull/2743) - Make bold formatting visible for `<strong>` in the resume rich text editor (uses plain `font-weight: bold` fallback if the CSS variable is unset). Fixes [#2730](https://github.com/amruthpillai/reactive-resume/issues/2730) - Prevent credentials sign-in from dropping `session_token` Set-Cookie, improves login reliability. [#2718](https://github.com/amruthpillai/reactive-resume/pull/2718) - Remove redundant `resume-` prefix from download filename; add spacing between pages in shared view. [#2709](https://github.com/amruthpillai/reactive-resume/pull/2709) - Normalize autocomplete tokens for login and register forms. [#2714](https://github.com/amruthpillai/reactive-resume/pull/2714) - Fix improper chips reordering and update dependency/translations. [#2711](https://github.com/amruthpillai/reactive-resume/issues/2711) - Fix clipping of heading in Lapras resume template. - Remove error-causing plugins in oRPC integration. - Remove duplicate database indexes; add index for `created_at` on user and resume tables.

Features & Improvements

  • Added feature flag: FLAG_DISABLE_IMAGE_PROCESSING (allows disabling image processing site-wide).
  • Updated Discord invite link in the app and documentation.
  • Added comprehensive codebase and architecture documentation in CLAUDE.md.
  • Synced latest translations from Crowdin (multiple language updates and additions).

Maintenance & Other

  • Refactored auth utility from originWith to withHostname to preserve localhost/127.0.0.1 sibling trust.
  • Updated dependencies and improved code style.
  • Updated documentation and README files. </Update>
<Update label="v5.0.9" description="9th February 2026"> ## Features & Improvements - Added Computer Modern web fonts to the font selector, allowing users to choose from LaTeX-style "Computer Modern" fonts for a classic scientific look. - Updated dependencies to the latest versions. </Update> <Update label="v5.0.8" description="9th February 2026"> ## Fixes - Removed Passkey support from the authentication system due to provider compatibility issues. - Updated dependencies to the latest versions. </Update> <Update label="v5.0.7" description="9th February 2026"> ## Features & Improvements - Introduced a new **MCP (Model Context Protocol) server** for managing and editing resumes from MCP-compatible AI tools (Claude Desktop, Cursor, Codex, and others). Supports listing, reading, creating, deleting, locking/unlocking, and patching resumes via natural language. [(guide)](/guides/using-the-mcp-server) - Added an **AI Chat** panel to the resume builder, allowing conversational resume modifications through tool-calling (JSON Patch operations applied to the resume in real time with visual feedback). - Added a system prompt and `patch_resume` tool for structured, minimal-diff resume edits via RFC 6902 JSON Patch. - Chat history is now persisted per resume in localStorage.

Fixes

  • Fixed rendering issues in the Lapras and Onyx resume templates.
  • Improved Combobox and ScrollArea UI components.
  • Fixed skills item rendering in shared resume components.
  • Updated authentication configuration and route handling.
  • Updated JSON Schema to match the latest resume data model.

Maintenance

  • Updated dependencies to latest versions. </Update>
<Update label="v5.0.6" description="8th February 2026"> ## Features & Improvements - Implemented Atomic Resume Patching API for fine-grained, partial updates to resumes via a new PATCH endpoint. [#2692](https://github.com/amruthpillai/reactive-resume/pull/2692) - API endpoint `PUT /resume/{id}` now returns the updated resume object rather than void, with explicit DTOs for input/output. [#2688](https://github.com/amruthpillai/reactive-resume/pull/2688) - Added error logging for API server errors (server-side only) to improve debugging and reliability. - Refactored and cleaned up imports/exports for clarity and maintainability. - Added `.devcontainer` configuration for improved contributor development environment. - Added build status badge and documentation link to README.

Fixes

  • General bug fixes and minor improvements.
  • Synced latest translations from Crowdin (notably: French, other languages).
  • Updated dependencies to latest versions. </Update>
<Update label="v5.0.5" description="31st January 2026"> ## Features & Improvements - Implemented Cover Letter functionality as a custom section in the resume builder. [(link)](/guides/adding-a-cover-letter) - Added full-screen mode to the rich text editor for distraction-free writing. - Introduced a new custom section type: `summary`, enabling users to add extra summary sections. - Added `useFormBlocker` hook to prevent dialogs from being closed with unsaved form changes.

Fixes

  • Fixed keyword spacing issue in the interests section. #2631
  • Fixed AI connection test and improved error reporting for AI provider issues. </Update>
<Update label="v5.0.4" description="28th January 2026"> ## Features & Improvements - Brought back Undo/Redo functionality in the resume builder for an improved editing experience. - Sidebar builder now arranges dynamically based on the section type in each template. [#2564](https://github.com/amruthpillai/reactive-resume/pull/2603) - Added PWA (Progressive Web App) support and updated PDF example file links in documentation.

Fixes

  • Removed extra spacing when proficiency is empty. #2607
  • Fixed Pikachu template: header/page picture rendering, and respect for fullWidth property.
  • General template improvements for layout and rendering consistency.
  • Fixed GitHub OAuth login for users migrated from previous versions.
  • Improved printer service communication and reduced resource usage for more reliable PDF generation.
  • Fixed "empty" Git merge remnants in codebase.

Maintenance

  • Synced translations from Crowdin (Afrikaans, Persian, Portuguese/Brazilian, others).
  • Updated translation sources and configuration.
  • Updated package dependencies and fixed self-hosting guide links in README.
  • Removed dead code and updated screenshots.
  • Other bug fixes and minor improvements (#2542, #2573, #2598). </Update>
<Update label="v5.0.3" description="25th January 2026"> ## Features & Improvements - Added support for printing Free-Form PDFs (no fixed page height), allowing for custom-fit page content. [(link)](/guides/selecting-page-format) - Allow overriding the default endpoint for all AI providers, not just Ollama; default endpoint now visible in AI settings. - Updated the chip input component: supports adding, editing, removing, and reordering keywords for skills and other sections. - Improved RTL support across the app, thanks to @obreo. [(link)](https://github.com/amruthpillai/reactive-resume/pull/2583)

Fixes

  • Updated translation configuration to remove line numbers, reducing unnecessary diffs.
  • Homepage video optimized for faster loading without quality loss.
  • Increased screenshot TTL for resumes to reduce unnecessary regenerations.
  • Updated dependencies and translations to latest versions. </Update>
<Update label="v5.0.2" description="24th January 2026"> ## Features & Improvements - Added an agent skill `skills/resume-builder` for agentic AI assistants, enabling resume construction through conversational AI. - Added a guide for how to fit content on a page when exporting to PDF. [(link)](/guides/fitting-content-on-a-page) - Alert user when content is too tall for a page for easier export troubleshooting.

Fixes

  • Ditgar template now respects fullWidth setting.
  • Updated JSON Schema for proper format.
  • Updated Discord server invite link.
  • Updated dependencies to latest versions. </Update>
<Update label="v5.0.1" description="23th January 2026"> ## Maintenance & Fixes - Updated translations from Crowdin. - Added Community Spotlight section to the documentation. - Removed `-r require-metadata` from the Dockerfile (was not needed). - Fixed inconsistencies in Docker compose documentation examples. - Fixed username validation to allow hyphens. - Fixed issues with the printer service's screenshot and PDF endpoints. </Update> <Update label="v5.0.0" description="22th January 2026"> This release is a major overhaul of Reactive Resume. The app has been completely redesigned and rebuilt from scratch for a more intuitive, user-friendly experience.

Highlights:

  • 2 new resume templates: Ditgar and Lapras
  • Passkeys for authentication
  • Entirely new user interface and refreshed design
  • API access and reference docs
  • AI Integration with OpenAI, Google, Anthropic, and Ollama
  • Improved font selector with real-time preview
  • Expanded and improved documentation, with more how-to guides
  • Redesigned template gallery with detailed views
  • Resume import from PDF/DOCX (requires AI Integration)
  • Stronger infrastructure for better reliability and scalability
  • Drag-and-drop for moving items between sections and pages
  • Powerful new CSS Editor with autocompletion and highlighting
  • Custom sections now support typed extension for finer control
  • Icon style selector for indicators (stars, circles, custom, etc.)
  • Sidebar width adjustment and full-width page support

And much more! Explore the new version and share your feedback via contact or GitHub issues. </Update>