chore(release): v5.1.4

This commit is contained in:
Amruth Pillai
2026-05-14 15:57:40 +02:00
parent 6d8d8f6e55
commit 9df2a5287d
75 changed files with 26435 additions and 12050 deletions
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+472 -203
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+473 -205
View File
File diff suppressed because it is too large Load Diff
+449 -180
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -100,12 +100,12 @@
"@types/pg": "^8.20.0",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@typescript/native-preview": "7.0.0-dev.20260513.1",
"@typescript/native-preview": "7.0.0-dev.20260514.1",
"@vitejs/plugin-react": "^6.0.1",
"babel-plugin-macros": "^3.1.0",
"nitro": "3.0.260429-beta",
"typescript": "^6.0.3",
"vite": "^8.0.12",
"vite": "^8.0.13",
"vite-plugin-pwa": "^1.3.0"
}
}
+1 -1
View File
@@ -78,7 +78,7 @@ services:
retries: 3
redis:
image: redis:7-alpine
image: redis:latest
restart: unless-stopped
command: redis-server --appendonly yes
volumes:
+1 -1
View File
@@ -22,7 +22,7 @@ services:
retries: 3
redis:
image: redis:7-alpine
image: redis:latest
restart: unless-stopped
command: redis-server --appendonly yes
networks:
+44
View File
@@ -4,6 +4,50 @@ description: "List of all notable changes and updates to Reactive Resume"
rss: true
---
<Update label="v5.1.4" description="14th May 2026">
<Note>
**Self-hosters using AI features:** saved AI providers now require `ENCRYPTION_SECRET`, and the new AI Agent
workspace also requires `REDIS_URL`. Agent attachments require S3-compatible storage for private objects; local
filesystem storage still works for the rest of the app, but rejects private agent attachments.
</Note>
## Highlights
- **New AI Agent workspace.** Added a dedicated full-screen Agent workspace for working on isolated AI draft copies of resumes. Threads include a sidebar, chat, tool activity, file attachments, and a read-only resume preview with PDF download support. [#3062](https://github.com/amruthpillai/reactive-resume/pull/3062)
<img src="/images/guides/using-ai-agent/screenshot-2.webp" alt="AI Agent workspace showing thread sidebar, chat, and resume preview" />
- **Reviewable and reversible agent edits.** Agent-applied resume patches now appear as expandable tool activity, with raw JSON Patch details, operation summaries, revert support, and clear conflict handling when the resume has changed. [#3062](https://github.com/amruthpillai/reactive-resume/pull/3062)
<img src="/images/guides/ai-agent-tools/screenshot-1.webp" alt="AI Agent chat showing an applied patch with raw JSON details" />
- **Public resumes now render with PDF.js.** Public resume pages now use the PDF.js-based viewer path, improving parity between the public page, builder preview, and exported PDF. [#3061](https://github.com/amruthpillai/reactive-resume/pull/3061)
## AI & Agent Workflows
- Added server-side AI provider management with encrypted credentials, provider testing, and provider/model capability checks. This replaces the old local AI store and keeps AI configuration centralized. [#3062](https://github.com/amruthpillai/reactive-resume/pull/3062)
- Added Agent tools for reading resume drafts, fetching public URLs, reading supported attachments, asking follow-up questions, and applying JSON Patch updates to the AI draft. [#3062](https://github.com/amruthpillai/reactive-resume/pull/3062)
- Added archive and delete actions for Agent threads, including read-only archived states, in-flight run cleanup when archiving, and ownership checks before destructive deletion. [#3062](https://github.com/amruthpillai/reactive-resume/pull/3062)
- Added attachment upload rate limits, private S3 ACLs for Agent attachments, runtime validation for streamed messages, transactional patch/action writes, and a unique message sequence index for safer Agent runs. [#3062](https://github.com/amruthpillai/reactive-resume/pull/3062)
- Added `FLAG_ALLOW_UNSAFE_AI_BASE_URL` for trusted self-hosted deployments that need private or local AI provider URLs, while still restricting provider URLs to `http` or `https`. Thanks to [@SirSKillz](https://github.com/SirSKillz). [#3059](https://github.com/amruthpillai/reactive-resume/pull/3059)
## Resume Rendering & Fonts
- Restored legacy local font names from v5.0.x by mapping them to metric-compatible bundled web fonts, preventing upgraded resumes from unexpectedly changing line breaks, page counts, or overall layout. Thanks to [@JamesGoslings](https://github.com/JamesGoslings). [#3057](https://github.com/amruthpillai/reactive-resume/pull/3057)
- Added metric-compatible aliases for `Times New Roman`, `Cambria`, `Arial`, `Garamond`, and `Calibri`, including Carlito as the Calibri-compatible target. [#3057](https://github.com/amruthpillai/reactive-resume/pull/3057)
- Improved resume preview spacing normalization and added focused coverage for the public PDF viewer and preview helpers. [#3061](https://github.com/amruthpillai/reactive-resume/pull/3061), [#3062](https://github.com/amruthpillai/reactive-resume/pull/3062)
## Self-Hosting, Docs & Maintenance
- Added a development Dockerfile plus improved Compose development services and health checks for running Reactive Resume with local dependencies. [1294d3354](https://github.com/amruthpillai/reactive-resume/commit/1294d3354)
- Updated self-hosting documentation for Redis, encrypted AI provider credentials, optional Cloudflare URL extraction, private Agent attachments, S3 path-style storage, and unsafe AI base URL behavior. [#3062](https://github.com/amruthpillai/reactive-resume/pull/3062), [#3059](https://github.com/amruthpillai/reactive-resume/pull/3059)
- Added new and refreshed guides for the AI Agent workspace, Agent tools, AI setup, builder dock, dashboard management, importing, exporting, public sharing, and private notes. [#3062](https://github.com/amruthpillai/reactive-resume/pull/3062), [affa1d664](https://github.com/amruthpillai/reactive-resume/commit/affa1d664)
- Removed a stale Custom CSS documentation link now that custom CSS is no longer part of the v5.1 renderer flow. [#3056](https://github.com/amruthpillai/reactive-resume/pull/3056)
- Added a Reactive Resume design system reference and updated dependencies across the workspace. [#3062](https://github.com/amruthpillai/reactive-resume/pull/3062)
**Full Changelog**: [v5.1.3...v5.1.4](https://github.com/amruthpillai/reactive-resume/compare/v5.1.3...v5.1.4)
</Update>
<Update label="v5.1.3" description="13th May 2026">
## Highlights
+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "reactive-resume",
"description": "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume.",
"version": "5.1.3",
"version": "5.1.4",
"private": true,
"license": "MIT",
"author": {
@@ -13,7 +13,7 @@
"type": "git",
"url": "https://github.com/amruthpillai/reactive-resume.git"
},
"packageManager": "pnpm@11.1.1+sha512.d1fdf5f73c617b64fa1a56a81c3c8dfe0e966e33a6010aa256b517ae77be21d93e05affc0de1a83b0e4f29d569f68b446ae8f068cd7247c0bb3df0fb4d7bdf9a",
"packageManager": "pnpm@11.1.2+sha512.415a1cc25974731e75455c1468371be74c5aa5fb7621b50d4056d222451609f11412f23fd602e6169f1e060466641f798597e1be961a10688836a67b16569499",
"workspaces": [
"apps/*",
"packages/*"
+1 -1
View File
@@ -28,7 +28,7 @@
},
"devDependencies": {
"@reactive-resume/config": "workspace:*",
"@typescript/native-preview": "7.0.0-dev.20260513.1",
"@typescript/native-preview": "7.0.0-dev.20260514.1",
"typescript": "^6.0.3"
}
}
+2 -2
View File
@@ -22,7 +22,7 @@
"@ai-sdk/google": "^3.0.73",
"@ai-sdk/openai": "^3.0.63",
"@ai-sdk/openai-compatible": "^2.0.47",
"@aws-sdk/client-s3": "^3.1045.0",
"@aws-sdk/client-s3": "^3.1046.0",
"@mozilla/readability": "^0.6.0",
"@orpc/client": "^1.14.3",
"@orpc/experimental-ratelimit": "^1.14.3",
@@ -54,7 +54,7 @@
"@reactive-resume/config": "workspace:*",
"@types/bcrypt": "^6.0.0",
"@types/jsdom": "^28.0.3",
"@typescript/native-preview": "7.0.0-dev.20260513.1",
"@typescript/native-preview": "7.0.0-dev.20260514.1",
"typescript": "^6.0.3"
}
}
+1 -1
View File
@@ -37,7 +37,7 @@
"@reactive-resume/config": "workspace:*",
"@types/bcrypt": "^6.0.0",
"@types/react": "^19.2.14",
"@typescript/native-preview": "7.0.0-dev.20260513.1",
"@typescript/native-preview": "7.0.0-dev.20260514.1",
"typescript": "^6.0.3"
}
}
+1 -1
View File
@@ -31,7 +31,7 @@
"devDependencies": {
"@reactive-resume/config": "workspace:*",
"@types/pg": "^8.20.0",
"@typescript/native-preview": "7.0.0-dev.20260513.1",
"@typescript/native-preview": "7.0.0-dev.20260514.1",
"drizzle-kit": "1.0.0-rc.2",
"typescript": "^6.0.3"
}
+1 -1
View File
@@ -26,7 +26,7 @@
"@reactive-resume/config": "workspace:*",
"@types/nodemailer": "^8.0.0",
"@types/react": "^19.2.14",
"@typescript/native-preview": "7.0.0-dev.20260513.1",
"@typescript/native-preview": "7.0.0-dev.20260514.1",
"typescript": "^6.0.3"
}
}
+1 -1
View File
@@ -22,7 +22,7 @@
"devDependencies": {
"@reactive-resume/config": "workspace:*",
"@types/node": "^25.7.0",
"@typescript/native-preview": "7.0.0-dev.20260513.1",
"@typescript/native-preview": "7.0.0-dev.20260514.1",
"typescript": "^6.0.3"
}
}
+1 -1
View File
@@ -19,7 +19,7 @@
},
"devDependencies": {
"@reactive-resume/config": "workspace:*",
"@typescript/native-preview": "7.0.0-dev.20260513.1",
"@typescript/native-preview": "7.0.0-dev.20260514.1",
"typescript": "^6.0.3"
}
}
+1 -1
View File
@@ -22,7 +22,7 @@
},
"devDependencies": {
"@reactive-resume/config": "workspace:*",
"@typescript/native-preview": "7.0.0-dev.20260513.1",
"@typescript/native-preview": "7.0.0-dev.20260514.1",
"typescript": "^6.0.3"
}
}
+1 -1
View File
@@ -32,7 +32,7 @@
"@react-pdf/types": "^2.11.1",
"@reactive-resume/config": "workspace:*",
"@types/react": "^19.2.14",
"@typescript/native-preview": "7.0.0-dev.20260513.1",
"@typescript/native-preview": "7.0.0-dev.20260514.1",
"typescript": "^6.0.3"
}
}
+1 -1
View File
@@ -4,7 +4,7 @@
"type": "module",
"private": true,
"dependencies": {
"@aws-sdk/client-s3": "^3.1045.0",
"@aws-sdk/client-s3": "^3.1046.0",
"bcrypt": "^6.0.0",
"sharp": "^0.34.5"
}
+1 -1
View File
@@ -22,7 +22,7 @@
},
"devDependencies": {
"@reactive-resume/config": "workspace:*",
"@typescript/native-preview": "7.0.0-dev.20260513.1",
"@typescript/native-preview": "7.0.0-dev.20260514.1",
"typescript": "^6.0.3"
}
}
+2 -2
View File
@@ -12,9 +12,9 @@
"@reactive-resume/config": "workspace:*",
"@reactive-resume/env": "workspace:*",
"@types/pg": "^8.20.0",
"@typescript/native-preview": "7.0.0-dev.20260513.1",
"@typescript/native-preview": "7.0.0-dev.20260514.1",
"drizzle-orm": "1.0.0-rc.2",
"pg": "^8.20.0",
"tsx": "^4.21.0"
"tsx": "^4.21.1"
}
}
+1 -1
View File
@@ -41,7 +41,7 @@
"@types/js-cookie": "^3.0.6",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@typescript/native-preview": "7.0.0-dev.20260513.1",
"@typescript/native-preview": "7.0.0-dev.20260514.1",
"postcss": "^8.5.14",
"tailwindcss": "^4.3.0",
"typescript": "^6.0.3"
+1 -1
View File
@@ -45,7 +45,7 @@
"devDependencies": {
"@reactive-resume/config": "workspace:*",
"@types/node": "^25.7.0",
"@typescript/native-preview": "7.0.0-dev.20260513.1",
"@typescript/native-preview": "7.0.0-dev.20260514.1",
"typescript": "^6.0.3"
}
}
+379 -780
View File
File diff suppressed because it is too large Load Diff