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.jsonfor 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).
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
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, andPeriodare 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.
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
JobCardcomponent 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.
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
- 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
- Migrated the entire project toolchain to Vite+ (
vpCLI), 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
- Added Slovenian locale support.
- Added a new
ProgressUI 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.tsto.gitignore. - Improved animation performance with
willChangestyles 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
Features & Improvements
- Refactored the component system to
@base-ui/reactacross 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.tsserver entry usingFastResponsefor 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/completionsfor 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
Fixes
- Show section titles for summary-type custom sections in the resume builder. #2744
- Prevent browser password managers and Edge autofill/save prompts from appearing on AI settings API key fields. #2719
- Replace deprecated Tailwind CSS classes: use
inset-s-*/inset-e-*instead ofstart-*/end-*. - Fix PDF downloader to work correctly in offline mode. #2743
- Make bold formatting visible for
<strong>in the resume rich text editor (uses plainfont-weight: boldfallback if the CSS variable is unset). Fixes #2730 - Prevent credentials sign-in from dropping
session_tokenSet-Cookie, improves login reliability. #2718 - Remove redundant
resume-prefix from download filename; add spacing between pages in shared view. #2709 - Normalize autocomplete tokens for login and register forms. #2714
- Fix improper chips reordering and update dependency/translations. #2711
- Fix clipping of heading in Lapras resume template.
- Remove error-causing plugins in oRPC integration.
- Remove duplicate database indexes; add index for
created_aton 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
originWithtowithHostnameto preserve localhost/127.0.0.1 sibling trust. - Updated dependencies and improved code style.
- Updated documentation and README files.
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.
Fixes
- Removed Passkey support from the authentication system due to provider compatibility issues.
- Updated dependencies to the latest versions.
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)
- 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_resumetool 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.
Features & Improvements
- Implemented Atomic Resume Patching API for fine-grained, partial updates to resumes via a new PATCH endpoint. #2692
- API endpoint
PUT /resume/{id}now returns the updated resume object rather than void, with explicit DTOs for input/output. #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
.devcontainerconfiguration 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.
Features & Improvements
- Implemented Cover Letter functionality as a custom section in the resume builder. (link)
- 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
useFormBlockerhook 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.
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
- 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
fullWidthproperty. - 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).
Features & Improvements
- Added support for printing Free-Form PDFs (no fixed page height), allowing for custom-fit page content. (link)
- 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)
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.
Features & Improvements
- Added an agent skill
skills/resume-builderfor 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)
- Alert user when content is too tall for a page for easier export troubleshooting.
Fixes
- Ditgar template now respects
fullWidthsetting. - Updated JSON Schema for proper format.
- Updated Discord server invite link.
- Updated dependencies to latest versions.
Maintenance & Fixes
- Updated translations from Crowdin.
- Added Community Spotlight section to the documentation.
- Removed
-r require-metadatafrom the Dockerfile (was not needed). - Fixed inconsistencies in Docker compose documentation examples.
- Fixed username validation to allow hyphens.
- Fixed issues with the printer service when using
getResumeScreenshotorprintResumeAsPDFendpoints.
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