This release includes 3 breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+1 more
Affected surfaces
Summary
AI summaryUpdates Self-Hosting & Environment, App Runtime & Architecture, and AI & Agent Workflows across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Dedicated Hono server runtime built for auth, RPC, MCP, OpenAPI, uploads, schema JSON, SEO endpoints, health checks, and web app. Dedicated Hono server runtime built for auth, RPC, MCP, OpenAPI, uploads, schema JSON, SEO endpoints, health checks, and web app. Source: granite4.1:8b-q6_K@2026-05-19 Confidence: high |
— |
| Feature | Medium |
Clearer self-hosting runtime model with Docker building both web and server, running node apps/server/dist/index.mjs. Clearer self-hosting runtime model with Docker building both web and server, running node apps/server/dist/index.mjs. Source: granite4.1:8b-q6_K@2026-05-19 Confidence: high |
— |
| Feature | Medium |
Safer Agent restore behavior storing resume snapshot before patch application for rollbacks. Safer Agent restore behavior storing resume snapshot before patch application for rollbacks. Source: granite4.1:8b-q6_K@2026-05-19 Confidence: low |
— |
| Feature | Medium |
Added SERVER_PORT environment variable for local development, proxying API routes to Hono server on SERVER_PORT. Added SERVER_PORT environment variable for local development, proxying API routes to Hono server on SERVER_PORT. Source: granite4.1:8b-q6_K@2026-05-19 Confidence: low |
— |
| Feature | Medium |
Improves Agent restore safety by storing a resume snapshot before applying patches, enabling exact rollbacks and marking later patches as rolled back. Improves Agent restore safety by storing a resume snapshot before applying patches, enabling exact rollbacks and marking later patches as rolled back. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Feature | Medium |
Moves startup checks (database migrations, local storage writability) into the server process, running them on application start. Moves startup checks (database migrations, local storage writability) into the server process, running them on application start. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Feature | Medium |
Introduces `FLAG_ALLOW_UNSAFE_OAUTH_REDIRECT_URI` for trusted self‑hosted deployments needing arbitrary redirect URIs; remains disabled by default on public instances. Introduces `FLAG_ALLOW_UNSAFE_OAUTH_REDIRECT_URI` for trusted self‑hosted deployments needing arbitrary redirect URIs; remains disabled by default on public instances. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Feature | Low |
Adds `robots.txt`, `sitemap.xml`, `llms.txt`, structured data helpers, and SEO‑focused server responses. Adds `robots.txt`, `sitemap.xml`, `llms.txt`, structured data helpers, and SEO‑focused server responses. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Feature | Low |
Replaces stored inverse JSON patches with `snapshot_data` on agent actions; legacy actions without snapshots remain non‑restorable. Replaces stored inverse JSON patches with `snapshot_data` on agent actions; legacy actions without snapshots remain non‑restorable. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Feature | Low |
Updates Agent UI and documentation to use "Restore" terminology, clarifying that restoring an older action rolls back that action and subsequent patches. Updates Agent UI and documentation to use "Restore" terminology, clarifying that restoring an older action rolls back that action and subsequent patches. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Feature | Low |
Keeps unsafe/private AI provider base URLs behind the flag `FLAG_ALLOW_UNSAFE_AI_BASE_URL`; public HTTPS providers remain the default safe path. Keeps unsafe/private AI provider base URLs behind the flag `FLAG_ALLOW_UNSAFE_AI_BASE_URL`; public HTTPS providers remain the default safe path. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Feature | Low |
Adds direct PDF.js canvas preview and thumbnail rendering via legacy PDF.js entrypoints, with tests preventing browser preview imports of the modern PDF.js runtime. Adds direct PDF.js canvas preview and thumbnail rendering via legacy PDF.js entrypoints, with tests preventing browser preview imports of the modern PDF.js runtime. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Feature | Low |
Simplifies shared sidebar summary handling for PDF templates and adds focused coverage for featured summary behavior. Simplifies shared sidebar summary handling for PDF templates and adds focused coverage for featured summary behavior. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Deprecation | Low |
Removes `OAUTH_DYNAMIC_CLIENT_REDIRECT_HOSTS`; dynamic OAuth client registration now defaults to allowing app origin and loopback callbacks. Removes `OAUTH_DYNAMIC_CLIENT_REDIRECT_HOSTS`; dynamic OAuth client registration now defaults to allowing app origin and loopback callbacks. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Deprecation | Low |
Removes documented overrides `BETTER_AUTH_URL` and `BETTER_AUTH_SECRET`; auth metadata, JWKS, and OAuth callbacks are now derived from `APP_URL` and `AUTH_SECRET`. Removes documented overrides `BETTER_AUTH_URL` and `BETTER_AUTH_SECRET`; auth metadata, JWKS, and OAuth callbacks are now derived from `APP_URL` and `AUTH_SECRET`. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Refactor | Medium |
Updates production Dockerfile to copy `apps/web/dist`, `apps/server/dist`, server dependencies, and migrations into the runtime image; start command is now `node apps/server/dist/index.mjs`. Updates production Dockerfile to copy `apps/web/dist`, `apps/server/dist`, server dependencies, and migrations into the runtime image; start command is now `node apps/server/dist/index.mjs`. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Refactor | Medium |
Moves API, auth, MCP, OpenAPI, and static route ownership from the web app to `apps/server`. Moves API, auth, MCP, OpenAPI, and static route ownership from the web app to `apps/server`. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Refactor | Medium |
Changes web app build to a Vite/TanStack Router SPA output under `apps/web/dist`; Hono server serves the built app with static fallback responses. Changes web app build to a Vite/TanStack Router SPA output under `apps/web/dist`; Hono server serves the built app with static fallback responses. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Refactor | Medium |
Introduces package‑boundary rules in Turborepo with per‑workspace `turbo.json` to enforce ownership of browser, server, domain, adapter, and infra packages. Introduces package‑boundary rules in Turborepo with per‑workspace `turbo.json` to enforce ownership of browser, server, domain, adapter, and infra packages. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Refactor | Medium |
Reorganizes API implementation into feature‑owned modules under `packages/api/src/features/*`. Reorganizes API implementation into feature‑owned modules under `packages/api/src/features/*`. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Refactor | Medium |
Adds migration that populates `agent_actions.snapshot_data` and drops `agent_actions.inverse_operations`. Adds migration that populates `agent_actions.snapshot_data` and drops `agent_actions.inverse_operations`. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Refactor | Medium |
Moves browser PDF preview code to `apps/web/src/features/resume/preview` and public resume viewer code to `apps/web/src/features/resume/public`. Moves browser PDF preview code to `apps/web/src/features/resume/preview` and public resume viewer code to `apps/web/src/features/resume/public`. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Refactor | Medium |
Introduces explicit generation adapters `@reactive-resume/pdf/browser` and `@reactive-resume/pdf/server`. Introduces explicit generation adapters `@reactive-resume/pdf/browser` and `@reactive-resume/pdf/server`. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Refactor | Low |
Modifies `compose.yml` to use the published image by default and load app configuration via `.env` instead of inline environment blocks. Modifies `compose.yml` to use the published image by default and load app configuration via `.env` instead of inline environment blocks. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Refactor | Low |
Adjusts `compose.dev.yml` to expose ports 3000 and 3001, adds an app profile, and health‑checks the Hono server port. Adjusts `compose.dev.yml` to expose ports 3000 and 3001, adds an app profile, and health‑checks the Hono server port. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Refactor | Low |
Eliminates Cloudflare URL extraction environment variables; Live Agent web research now relies on the selected AI provider's native web search capabilities. Eliminates Cloudflare URL extraction environment variables; Live Agent web research now relies on the selected AI provider's native web search capabilities. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Refactor | Low |
Renames Crowdin token example from `CROWDIN_PERSONAL_TOKEN` to `CROWDIN_API_TOKEN`. Renames Crowdin token example from `CROWDIN_PERSONAL_TOKEN` to `CROWDIN_API_TOKEN`. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Refactor | Low |
Splits focused domains into new packages: `@reactive-resume/docx`, `@reactive-resume/mcp`, and `@reactive-resume/resume`. Splits focused domains into new packages: `@reactive-resume/docx`, `@reactive-resume/mcp`, and `@reactive-resume/resume`. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Refactor | Low |
Moves development‑only scripts from `packages/scripts` to a `tooling` directory, keeping workspace packages free of private repo tooling. Moves development‑only scripts from `packages/scripts` to a `tooling` directory, keeping workspace packages free of private repo tooling. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Refactor | Low |
Modifies Agent tool docs to describe provider‑native `web_search` behavior instead of app‑owned URL fetching. Modifies Agent tool docs to describe provider‑native `web_search` behavior instead of app‑owned URL fetching. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Refactor | Low |
Updates Knip configuration so server runtime dependencies imported by the built bundle are treated as intentional dependencies. Updates Knip configuration so server runtime dependencies imported by the built bundle are treated as intentional dependencies. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Other | Low |
affected_surface affected_surface Source: granite4.1:8b-q6_K@2026-05-19 Confidence: low |
— |
Full changelog
Highlights
- Dedicated Hono server runtime. Reactive Resume now builds a separate
apps/serverapp that mounts auth, RPC, MCP, OpenAPI, uploads, schema JSON, SEO endpoints, health checks, and the built web app from one Node.js process. ecc1fd9a8, 9033da082 - Clearer self-hosting runtime model. The Docker image now builds both
webandserver, runsnode apps/server/dist/index.mjs, and keeps/api/healthpointed at the production server port. ecc1fd9a8 - Safer Agent restore behavior. Agent edits now store a resume snapshot before applying a patch, so restoring an action can roll the draft back to the exact prior state and mark later agent patches as rolled back. d961e6535
Self-Hosting & Environment
- Added
SERVER_PORTfor local development. Vite serves the web app onPORTand proxies API, MCP, upload, well-known, and schema routes to the Hono server onSERVER_PORT. - Updated the production Dockerfile to copy
apps/web/dist,apps/server/dist, server package dependencies, and migrations into the runtime image. The production start command is nownode apps/server/dist/index.mjs. - Updated
compose.ymlto use the published image by default and load app configuration through.envinstead of embedding the main app environment block inline. - Updated
compose.dev.ymlto expose both3000and3001, add an app profile, and health-check the Hono server port. - Startup checks now run from the server process, including database migrations and local storage writability validation when S3-compatible storage is not configured.
- Removed
OAUTH_DYNAMIC_CLIENT_REDIRECT_HOSTS. Dynamic OAuth client registration now allows the app origin and loopback callbacks by default. - Added
FLAG_ALLOW_UNSAFE_OAUTH_REDIRECT_URIfor trusted self-hosted deployments that intentionally need arbitrary redirect URIs, including custom schemes, private hosts, or non-loopbackhttp://callbacks. Keep this disabled on public or multi-tenant instances. 445359ebe - Removed the documented
BETTER_AUTH_URLandBETTER_AUTH_SECREToverride path. Auth metadata, JWKS, and OAuth callback URLs are now derived fromAPP_URLandAUTH_SECRET. - Removed Cloudflare URL extraction environment variables. Live Agent web research now depends on the selected AI provider and model supporting native web search.
- Renamed the Crowdin token example from
CROWDIN_PERSONAL_TOKENtoCROWDIN_API_TOKEN.
App Runtime & Architecture
- Moved API/auth/MCP/OpenAPI/static route ownership out of the web app and into
apps/server. - Changed the web app build to a Vite/TanStack Router SPA output under
apps/web/dist, with the Hono server serving the built app and static fallback responses. - Added
robots.txt,sitemap.xml,llms.txt, structured data helpers, and server-owned SEO responses. 8fcf0ec64 - Added package-boundary rules to Turborepo and per-workspace
turbo.jsonfiles to enforce browser, server, domain, adapter, and infra ownership. - Split focused domains into new packages:
@reactive-resume/docx,@reactive-resume/mcp, and@reactive-resume/resume. - Moved development-only scripts from
packages/scriptstotoolingso workspace packages contain app/runtime code rather than private repo tooling. - Reorganized API implementation into feature-owned modules under
packages/api/src/features/*.
AI & Agent Workflows
- Replaced stored inverse JSON patches with
snapshot_dataon agent actions. Legacy actions without snapshots remain non-restorable. - Added a migration that adds
agent_actions.snapshot_dataand dropsagent_actions.inverse_operations. - Updated Agent UI and docs from "Revert" language to "Restore" language to clarify that restoring an older action rolls back that action and later applied agent patches.
- Updated Agent tool documentation to describe provider-native
web_searchbehavior instead of app-owned URL fetching. - Kept unsafe/private AI provider base URLs behind
FLAG_ALLOW_UNSAFE_AI_BASE_URL, with public HTTPS provider URLs remaining the default safe path.
Resume Rendering & Exports
- Moved browser PDF preview code into
apps/web/src/features/resume/previewand public resume viewer code intoapps/web/src/features/resume/public. - Added direct PDF.js canvas preview and thumbnail rendering through legacy PDF.js entrypoints, with tests that prevent browser preview code from importing the modern PDF.js runtime. 7cade6980
- Added explicit
@reactive-resume/pdf/browserand@reactive-resume/pdf/servergeneration adapters. - Simplified shared sidebar summary handling for PDF templates and added focused coverage for featured summary behavior. 17f351171
Docs & Maintenance
- Added new use-case docs for free, open-source, self-hosted, privacy-focused, export/share, AI, and API/MCP resume workflows.
- Rewrote contributor architecture docs around the new monorepo runtime, package ownership model, and boundary checks.
- Updated self-hosting Docker and SSO docs for the Hono runtime, removed environment variables, OAuth redirect safety, provider-native Agent web research, and local development ports.
- Added and updated architecture notes, plans, and specs for the Hono migration, monorepo reorganization, Docker tagging, manifest-only PWA behavior, unsafe OAuth redirect policy, and Agent snapshot restore design.
- Updated Knip configuration so server runtime dependencies that are imported by the built server bundle are treated as intentional dependencies.
Full Changelog: v5.1.4...v5.1.5
Breaking Changes
- Removed `OAUTH_DYNAMIC_CLIENT_REDIRECT_HOSTS`; dynamic OAuth clients now allow app origin and loopback callbacks by default.
- Removed documented `BETTER_AUTH_URL` and `BETTER_AUTH_SECRET` overrides; auth metadata, JWKS, and OAuth callback URLs are derived from `APP_URL` and `AUTH_SECRET`.
- Removed Cloudflare URL extraction environment variables; Live Agent web research now relies on the selected AI provider's native web search capability.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About reactive-resume
A one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever. Try it out today!
Related context
Beta — feedback welcome: [email protected]