chore: migrate repository links to reactive-resume/reactive-resume

This commit is contained in:
Amruth Pillai
2026-09-12 11:18:32 +02:00
parent 08e61ded7b
commit f89acb4368
88 changed files with 943 additions and 936 deletions
+2 -2
View File
@@ -20,8 +20,8 @@
"url": "https://rxresu.me"
},
"repositoryUrl": {
"url": "https://github.com/reactive-resume/app",
"wellKnown": "https://github.com/reactive-resume/app/blob/main/.github/.well-known/funding-manifest-urls"
"url": "https://github.com/reactive-resume/reactive-resume",
"wellKnown": "https://github.com/reactive-resume/reactive-resume/blob/main/.github/.well-known/funding-manifest-urls"
},
"licenses": ["spdx:MIT"],
"tags": ["data", "design", "productivity", "resume-builder"]
+2 -2
View File
@@ -1,8 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Questions and support
url: https://github.com/reactive-resume/app/discussions/categories/q-a
url: https://github.com/reactive-resume/reactive-resume/discussions/categories/q-a
about: Get help with setup, configuration, and using Reactive Resume.
- name: Security vulnerability
url: https://github.com/reactive-resume/app/security/advisories/new
url: https://github.com/reactive-resume/reactive-resume/security/advisories/new
about: Report security vulnerabilities privately.
+1 -1
View File
@@ -1,7 +1,7 @@
# Plan 27 Phase A diagnostic evidence
Date: 2026-09-06
Issue: [#3377](https://github.com/amruthpillai/reactive-resume/issues/3377)
Issue: [#3377](https://github.com/reactive-resume/reactive-resume/issues/3377)<br>
Revision: `2a4a1583b` (`origin/main` at run start)
Scope: Phase A, steps 1–2 only. No resolver, runtime behavior, or remote-source behavior changed.
+1 -1
View File
@@ -31,7 +31,7 @@ Boundaries: code/commits/PRs written normal.
## Agent skills
- Issues and specs: GitHub Issues for `reactive-resume/app`. See `docs/agents/issue-tracker.md`.
- Issues and specs: GitHub Issues for `reactive-resume/reactive-resume`. See `docs/agents/issue-tracker.md`.
- Domain docs use a multi-context layout. See `docs/agents/domain.md`.
## Overview
+1 -1
View File
@@ -48,7 +48,7 @@ LABEL org.opencontainers.image.description="A free and open-source resume builde
LABEL org.opencontainers.image.vendor="Amruth Pillai"
LABEL org.opencontainers.image.url="https://rxresu.me"
LABEL org.opencontainers.image.documentation="https://docs.rxresu.me"
LABEL org.opencontainers.image.source="https://github.com/reactive-resume/app"
LABEL org.opencontainers.image.source="https://github.com/reactive-resume/reactive-resume"
ENV NODE_ENV="production" \
PORT=3000 \
+14 -14
View File
@@ -1,7 +1,7 @@
> [!IMPORTANT]
> **Repository moved:** Reactive Resume now lives at **[`reactive-resume/app`](https://github.com/reactive-resume/app)** on GitHub.
> **Docker Hub stays at `amruthpillai/reactive-resume`.** GHCR is now available at `ghcr.io/reactive-resume/app`.
> Verified GHCR tags: `latest`, `v5`, `v5.3`, and `v5.3.0` (AMD64 and ARM64). Future GHCR updates use the new namespace; historical images remain at the old address. See [migration details](https://github.com/reactive-resume/app/issues/3503).
> **Repository moved:** Reactive Resume now lives at **[`reactive-resume/reactive-resume`](https://github.com/reactive-resume/reactive-resume)** on GitHub.
> **Docker Hub stays at `amruthpillai/reactive-resume`.** GHCR builds now publish to `ghcr.io/reactive-resume/reactive-resume`.
> Release GHCR tags: `latest`, `v5`, `v5.3`, and `v5.3.0` (AMD64 and ARM64). Future GHCR updates use the new namespace; historical images remain at the old address. See [migration details](https://github.com/reactive-resume/reactive-resume/issues/3503).
> GitHub Sponsors and Open Collective funding links remain unchanged.
<div align="center">
@@ -20,9 +20,9 @@
</p>
<p>
<img src="https://img.shields.io/github/package-json/v/reactive-resume/app?style=flat-square" alt="Reactive Resume Version">
<img src="https://img.shields.io/github/stars/reactive-resume/app?style=flat-square" alt="GitHub Stars">
<img src="https://img.shields.io/github/license/reactive-resume/app?style=flat-square" alt="License" />
<img src="https://img.shields.io/github/package-json/v/reactive-resume/reactive-resume?style=flat-square" alt="Reactive Resume Version">
<img src="https://img.shields.io/github/stars/reactive-resume/reactive-resume?style=flat-square" alt="GitHub Stars">
<img src="https://img.shields.io/github/license/reactive-resume/reactive-resume?style=flat-square" alt="License" />
<img src="https://img.shields.io/docker/pulls/amruthpillai/reactive-resume?style=flat-square" alt="Docker Pulls" />
<a href="https://discord.gg/aSyA5ZSxpb"><img src="https://img.shields.io/discord/1173518977851473940?style=flat-square&label=discord" alt="Discord" /></a>
<a href="https://crowdin.com/project/reactive-resume"><img src="https://badges.crowdin.net/reactive-resume/localized.svg?style=flat-square" alt="Crowdin" /></a>
@@ -149,7 +149,7 @@ The quickest way to run Reactive Resume locally:
```bash
# Clone the repository
git clone --depth=1 https://github.com/reactive-resume/app.git reactive-resume
git clone --depth=1 https://github.com/reactive-resume/reactive-resume.git reactive-resume
cd reactive-resume
# Start all services
@@ -203,7 +203,7 @@ Pull the latest image from Docker Hub or GitHub Container Registry:
docker pull amruthpillai/reactive-resume:latest
# GitHub Container Registry
docker pull ghcr.io/reactive-resume/app:latest
docker pull ghcr.io/reactive-resume/reactive-resume:latest
```
See the [self-hosting guide](https://docs.rxresu.me/self-hosting/docker) for complete instructions.
@@ -225,7 +225,7 @@ Other ways to support:
- Star this repository
- Report reproducible bugs and suggest actionable features
- Help other users in [GitHub Discussions](https://github.com/reactive-resume/app/discussions/categories/q-a)
- Help other users in [GitHub Discussions](https://github.com/reactive-resume/reactive-resume/discussions/categories/q-a)
- Improve documentation
- Help with translations
@@ -235,11 +235,11 @@ Other ways to support:
## Star History
<a href="https://www.star-history.com/?repos=reactive-resume%2Fapp&type=date&legend=top-left">
<a href="https://www.star-history.com/?repos=reactive-resume%2Freactive-resume&type=date&legend=top-left">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=reactive-resume/app&type=date&theme=dark&legend=top-left&sealed_token=QmaOn4Ech499R6kpQe8ONn911UjGUaJfQBT0MXlQLU9hTo-Ie7lTxIILWbBvmtzDGHk7ziWKN_N5iM5mgP8widn_FGHd9-PHNokPtSji8XLgbFpqatgyqIDPnOys-IhO40W3J0HeH07FL-Q8Bq6ArRk3LDtJDwjh4m0ya-2L59ULb7BaqxkSDuCytkCr" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=reactive-resume/app&type=date&legend=top-left&sealed_token=QmaOn4Ech499R6kpQe8ONn911UjGUaJfQBT0MXlQLU9hTo-Ie7lTxIILWbBvmtzDGHk7ziWKN_N5iM5mgP8widn_FGHd9-PHNokPtSji8XLgbFpqatgyqIDPnOys-IhO40W3J0HeH07FL-Q8Bq6ArRk3LDtJDwjh4m0ya-2L59ULb7BaqxkSDuCytkCr" />
<img alt="Star History Chart" src="https://api.star-history.com/chart?repos=reactive-resume/app&type=date&legend=top-left&sealed_token=QmaOn4Ech499R6kpQe8ONn911UjGUaJfQBT0MXlQLU9hTo-Ie7lTxIILWbBvmtzDGHk7ziWKN_N5iM5mgP8widn_FGHd9-PHNokPtSji8XLgbFpqatgyqIDPnOys-IhO40W3J0HeH07FL-Q8Bq6ArRk3LDtJDwjh4m0ya-2L59ULb7BaqxkSDuCytkCr" />
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=reactive-resume/reactive-resume&type=date&theme=dark&legend=top-left&sealed_token=QmaOn4Ech499R6kpQe8ONn911UjGUaJfQBT0MXlQLU9hTo-Ie7lTxIILWbBvmtzDGHk7ziWKN_N5iM5mgP8widn_FGHd9-PHNokPtSji8XLgbFpqatgyqIDPnOys-IhO40W3J0HeH07FL-Q8Bq6ArRk3LDtJDwjh4m0ya-2L59ULb7BaqxkSDuCytkCr" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=reactive-resume/reactive-resume&type=date&legend=top-left&sealed_token=QmaOn4Ech499R6kpQe8ONn911UjGUaJfQBT0MXlQLU9hTo-Ie7lTxIILWbBvmtzDGHk7ziWKN_N5iM5mgP8widn_FGHd9-PHNokPtSji8XLgbFpqatgyqIDPnOys-IhO40W3J0HeH07FL-Q8Bq6ArRk3LDtJDwjh4m0ya-2L59ULb7BaqxkSDuCytkCr" />
<img alt="Star History Chart" src="https://api.star-history.com/chart?repos=reactive-resume/reactive-resume&type=date&legend=top-left&sealed_token=QmaOn4Ech499R6kpQe8ONn911UjGUaJfQBT0MXlQLU9hTo-Ie7lTxIILWbBvmtzDGHk7ziWKN_N5iM5mgP8widn_FGHd9-PHNokPtSji8XLgbFpqatgyqIDPnOys-IhO40W3J0HeH07FL-Q8Bq6ArRk3LDtJDwjh4m0ya-2L59ULb7BaqxkSDuCytkCr" />
</picture>
</a>
@@ -255,7 +255,7 @@ Every contribution helps, whether it is a typo fix or a new feature.
See the [development setup guide](https://docs.rxresu.me/contributing/development) for how to run the project locally.
Maintainers review the [`status: needs triage` queue](https://github.com/reactive-resume/app/issues?q=is%3Aissue+is%3Aopen+label%3A%22status%3A+needs+triage%22)
Maintainers review the [`status: needs triage` queue](https://github.com/reactive-resume/reactive-resume/issues?q=is%3Aissue+is%3Aopen+label%3A%22status%3A+needs+triage%22)
weekly. Triaged bugs become `status: confirmed`; feature proposals become `status: accepted`; reports that need details become
`status: needs info`.
+1 -1
View File
@@ -84,7 +84,7 @@ export async function generateOpenApiSpec({ appUrl, version }: GenerateOpenApiSp
title: "Reactive Resume",
version,
description: "Reactive Resume API",
license: { name: "MIT", url: "https://github.com/reactive-resume/app/blob/main/LICENSE" },
license: { name: "MIT", url: "https://github.com/reactive-resume/reactive-resume/blob/main/LICENSE" },
contact: { name: "Amruth Pillai", email: "hello@amruthpillai.com", url: "https://amruthpillai.com" },
},
servers: [{ url: `${appUrl}/api/openapi` }],
+2 -2
View File
@@ -127,13 +127,13 @@ function createRootSeoMarkup(canonicalUrl: string) {
price: "0",
priceCurrency: "USD",
},
codeRepository: "https://github.com/reactive-resume/app",
codeRepository: "https://github.com/reactive-resume/reactive-resume",
},
{
"@type": "Project",
name: "Reactive Resume",
url: canonicalUrl,
sameAs: ["https://github.com/reactive-resume/app"],
sameAs: ["https://github.com/reactive-resume/reactive-resume"],
},
{
"@type": "FAQPage",
+2 -2
View File
@@ -20,8 +20,8 @@
"url": "https://rxresu.me"
},
"repositoryUrl": {
"url": "https://github.com/reactive-resume/app",
"wellKnown": "https://github.com/reactive-resume/app/blob/main/.github/.well-known/funding-manifest-urls"
"url": "https://github.com/reactive-resume/reactive-resume",
"wellKnown": "https://github.com/reactive-resume/reactive-resume/blob/main/.github/.well-known/funding-manifest-urls"
},
"licenses": ["spdx:MIT"],
"tags": ["data", "design", "productivity", "resume-builder"]
@@ -42,7 +42,7 @@ describe("GithubStarsButton", () => {
it("renders an anchor pointing at the project repo with rel=noopener noreferrer and target=_blank", () => {
renderButton();
const link = screen.getByRole("button") as HTMLAnchorElement;
expect(link.href).toBe("https://github.com/reactive-resume/app");
expect(link.href).toBe("https://github.com/reactive-resume/reactive-resume");
expect(link.target).toBe("_blank");
expect(link.rel).toBe("noopener noreferrer");
});
@@ -20,7 +20,7 @@ export function GithubStarsButton() {
render={
<a
target="_blank"
href="https://github.com/reactive-resume/app"
href="https://github.com/reactive-resume/reactive-resume"
aria-label={ariaLabel}
rel="noopener noreferrer"
>
@@ -24,7 +24,7 @@ describe("Copyright", () => {
it("renders the MIT license link", () => {
renderCopyright();
const link = screen.getByRole("link", { name: "MIT" });
expect(link.getAttribute("href")).toBe("https://github.com/reactive-resume/app/blob/main/LICENSE");
expect(link.getAttribute("href")).toBe("https://github.com/reactive-resume/reactive-resume/blob/main/LICENSE");
expect(link.getAttribute("rel")).toBe("noopener noreferrer");
});
+1 -1
View File
@@ -10,7 +10,7 @@ export function Copyright({ className, ...props }: Props) {
<Trans>
Licensed under{" "}
<a
href="https://github.com/reactive-resume/app/blob/main/LICENSE"
href="https://github.com/reactive-resume/reactive-resume/blob/main/LICENSE"
target="_blank"
rel="noopener noreferrer"
className="font-medium underline underline-offset-2"
@@ -189,7 +189,7 @@ describe("ImportResumeDialog — detected files without MIME metadata", () => {
});
describe("ImportResumeDialog — Set up a provider", () => {
// https://github.com/amruthpillai/reactive-resume/issues/3307
// https://github.com/reactive-resume/reactive-resume/issues/3307
it("confirms before leaving instead of navigating behind the dialog", async () => {
renderDialog();
const link = await selectWordFile();
+1 -1
View File
@@ -21,7 +21,7 @@ import "./styles.css";
const ExportPlayground = lazy(() => import("./export-playground"));
const AtsPlayground = lazy(() => import("./ats-playground"));
const githubUrl = "https://github.com/reactive-resume/app";
const githubUrl = "https://github.com/reactive-resume/reactive-resume";
const buttonClass =
"inline-flex min-h-[52px] items-center justify-center gap-3 rounded-[4px] border border-[#f1f0eb] bg-[#f1f0eb] px-[19px] py-[14px] text-[14px] font-[550] text-[#151516] [transition:background-color_150ms_ease,transform_150ms_cubic-bezier(0.23,1,0.32,1)] hover:bg-[#d9d8d2] active:transform-[scale(0.97)] max-[540px]:min-h-[49px] max-[540px]:gap-[18px] max-[540px]:px-[15px] max-[540px]:py-3 max-[540px]:text-[13px]";
const brandClass = "inline-flex shrink-0 items-center gap-[11px] font-[550] tracking-[-0.04em] max-[540px]:gap-2";
@@ -14,7 +14,7 @@ import { m } from "motion/react";
import { cn } from "@reactive-resume/utils/style";
import { wrap } from "./classes";
const githubUrl = "https://github.com/reactive-resume/app";
const githubUrl = "https://github.com/reactive-resume/reactive-resume";
const licenseUrl = `${githubUrl}/blob/main/LICENSE`;
type FooterLink = { label: string } & (
+1 -1
View File
@@ -1,6 +1,6 @@
const productionRootUrl = "https://rxresu.me/";
const appName = "Reactive Resume";
const repositoryUrl = "https://github.com/reactive-resume/app";
const repositoryUrl = "https://github.com/reactive-resume/reactive-resume";
type JsonLd = Record<string, unknown>;
@@ -47,7 +47,7 @@ describe("Footer", () => {
it("renders social media icon links to GitHub, LinkedIn, and X", () => {
const { container } = renderFooter();
const hrefs = Array.from(container.querySelectorAll<HTMLAnchorElement>("a")).map((a) => a.href);
expect(hrefs.some((h) => h.includes("github.com/reactive-resume/app"))).toBe(true);
expect(hrefs.some((h) => h.includes("github.com/reactive-resume/reactive-resume"))).toBe(true);
expect(hrefs.some((h) => h.includes("linkedin.com/in/amruthpillai"))).toBe(true);
expect(hrefs.some((h) => h.includes("x.com/KingOKings"))).toBe(true);
});
@@ -27,19 +27,19 @@ type SocialLink = {
const getResourceLinks = (): FooterLinkItem[] => [
{ url: "https://docs.rxresu.me", label: t`Documentation` },
{ url: "https://opencollective.com/reactive-resume/donate", label: t`Sponsorships` },
{ url: "https://github.com/reactive-resume/app", label: t`Source Code` },
{ url: "https://github.com/reactive-resume/reactive-resume", label: t`Source Code` },
{ url: "https://docs.rxresu.me/changelog", label: t`Changelog` },
];
const getCommunityLinks = (): FooterLinkItem[] => [
{ url: "https://github.com/reactive-resume/app/issues", label: t`Report an issue` },
{ url: "https://github.com/reactive-resume/reactive-resume/issues", label: t`Report an issue` },
{ url: "https://crowdin.com/project/reactive-resume", label: t`Translations` },
{ url: "https://reddit.com/r/reactiveresume", label: t`Subreddit` },
{ url: "https://discord.gg/aSyA5ZSxpb", label: t`Discord` },
];
const socialLinks: SocialLink[] = [
{ url: "https://github.com/reactive-resume/app", label: t`GitHub`, icon: GithubLogoIcon },
{ url: "https://github.com/reactive-resume/reactive-resume", label: t`GitHub`, icon: GithubLogoIcon },
{ url: "https://linkedin.com/in/amruthpillai", label: t`LinkedIn`, icon: LinkedinLogoIcon },
{ url: "https://x.com/KingOKings", label: t`X (Twitter)`, icon: XLogoIcon },
];
@@ -41,7 +41,7 @@ describe("blurFocusedElementOnPan", () => {
// The issue: closing a dialog restores focus to its trigger, and because react-zoom-pan-pinch
// preventDefault()s the canvas mousedown the browser never moves focus away. Space then
// activates the still-focused trigger on keyup and reopens the dialog.
// https://github.com/amruthpillai/reactive-resume/issues/3300
// https://github.com/reactive-resume/reactive-resume/issues/3300
it("stops a Space keypress after panning from re-activating the last dialog trigger", () => {
const trigger = document.createElement("button");
const openDialog = vi.fn();
@@ -8,7 +8,7 @@
* that opened the last dialog, since closing a dialog restores focus to its trigger. A Space
* keypress then activates that still-focused button on keyup and the dialog reopens.
*
* @see https://github.com/amruthpillai/reactive-resume/issues/3300
* @see https://github.com/reactive-resume/reactive-resume/issues/3300
*/
export function blurFocusedElementOnPan(): void {
if (typeof document === "undefined") return;
@@ -59,7 +59,7 @@ export function InformationSectionBuilder() {
className="text-xs"
nativeButton={false}
render={
<a href="https://github.com/reactive-resume/app" target="_blank" rel="noopener noreferrer">
<a href="https://github.com/reactive-resume/reactive-resume" target="_blank" rel="noopener noreferrer">
<Trans>Source Code</Trans>
</a>
}
@@ -71,7 +71,11 @@ export function InformationSectionBuilder() {
className="text-xs"
nativeButton={false}
render={
<a href="https://github.com/reactive-resume/app/issues" target="_blank" rel="noopener noreferrer">
<a
href="https://github.com/reactive-resume/reactive-resume/issues"
target="_blank"
rel="noopener noreferrer"
>
<Trans>Report a Bug</Trans>
</a>
}
+1 -1
View File
@@ -78,7 +78,7 @@ services:
condition: service_healthy
reactive_resume:
# image: ghcr.io/reactive-resume/app:latest
# image: ghcr.io/reactive-resume/reactive-resume:latest
build:
context: .
dockerfile: Dockerfile
+19 -16
View File
@@ -1,8 +1,8 @@
# Container publishing
The repository is `reactive-resume/app`. Docker Hub remains
The repository is `reactive-resume/reactive-resume`. Docker Hub remains
`docker.io/amruthpillai/reactive-resume`; GHCR follows the repository as
`ghcr.io/reactive-resume/app`. Do not derive Docker Hub's image name from `github.repository`.
`ghcr.io/reactive-resume/reactive-resume`. Do not derive Docker Hub's image name from `github.repository`.
## Builds and release safety
@@ -20,7 +20,7 @@ Manual canaries first run a cache-only build on each architecture, then publish,
and sign both registry images. Run one with:
```bash
gh workflow run docker-build.yml --repo reactive-resume/app --ref main -f release=false
gh workflow run docker-build.yml --repo reactive-resume/reactive-resume --ref main -f release=false
```
Both registries retain SBOMs, maximum provenance, and Cosign signatures. Publishing uses
@@ -35,29 +35,32 @@ Docker configuration with explicit empty registry credentials to prove anonymous
(a completely empty directory can still discover a system credential helper):
```bash
docker buildx imagetools inspect ghcr.io/reactive-resume/app:v5.3.0
docker buildx imagetools inspect ghcr.io/reactive-resume/reactive-resume:v5.3.0
registry_config=$(mktemp -d)
printf '%s\n' '{"auths":{"ghcr.io":{}}}' > "$registry_config/config.json"
docker --config "$registry_config" pull --platform linux/amd64 ghcr.io/reactive-resume/app:v5.3.0
docker --config "$registry_config" pull --platform linux/arm64 ghcr.io/reactive-resume/app:v5.3.0
docker --config "$registry_config" pull --platform linux/amd64 ghcr.io/reactive-resume/reactive-resume:v5.3.0
docker --config "$registry_config" pull --platform linux/arm64 ghcr.io/reactive-resume/reactive-resume:v5.3.0
rm -r "$registry_config"
```
On September 11, 2026, `latest`, `v5`, `v5.3`, and `v5.3.0` were copied to the new public
GHCR package. Both architectures were pulled anonymously; the original Cosign signature,
On September 11, 2026, `latest`, `v5`, `v5.3`, and `v5.3.0` were copied to the then-current
public GHCR package, `ghcr.io/reactive-resume/app`. Both architectures were pulled anonymously; the original Cosign signature,
SBOMs, provenance, and image digest were verified. The signed Blacksmith canary
[`canary-34582818410-1`](https://github.com/reactive-resume/app/actions/runs/34582818410)
[`canary-34582818410-1`](https://github.com/reactive-resume/reactive-resume/actions/runs/34582818410)
also passed on both registries without deploying production.
Historical v5.3.0 has digest
The original v5.3.0 at the previous GHCR address has digest
`sha256:c487ec5edcfe054bcb312fcd498f868e56f274756d0046b01c83f210855017ab`.
Copy complete image indexes rather than rebuilding historical releases or using a
single-platform pull/tag/push. Preserve embedded attestation manifests and copy attached
signatures separately. Verify the resulting digest before moving aliases. Retain the old
GHCR package for historical pulls; future updates publish under the new namespace.
GHCR packages for historical pulls; future updates publish under the new namespace.
The repository rename does not rename registry packages. Rebuilt images use the new
repository source label and signing identity; historical digests and signatures do not change.
Release aliases are mutable: pin the original digest above if you need the pre-rename artifact.
New signatures identify
`https://github.com/reactive-resume/app/.github/workflows/docker-build.yml@<ref>`.
`https://github.com/reactive-resume/reactive-resume/.github/workflows/docker-build.yml@<ref>`.
Historical signatures and image source labels retain the old repository identity. Verify
historical v5.3.0 with its original workflow identity, even at its new registry address:
@@ -68,8 +71,8 @@ cosign verify \
ghcr.io/reactive-resume/app@sha256:c487ec5edcfe054bcb312fcd498f868e56f274756d0046b01c83f210855017ab
```
On September 11, 2026, GitHub reported `use_immutable_subject: true` and subject prefix
`repo:reactive-resume@245328954/app@249995750`. Inspect actual claims when updating external
After the rename, GitHub reports `use_immutable_subject: true` and subject prefix
`repo:reactive-resume@245328954/reactive-resume@249995750`. Inspect actual claims when updating external
OIDC trust policies; the repository URL alone does not describe the subject.
## Independent migration items
@@ -79,13 +82,13 @@ OIDC trust policies; the repository URL alone does not describe the subject.
Changing that identifier creates a separate registry identity and requires its own migration.
- The old GitHub repository redirects to the new repository. Never recreate the old repository.
- The old Pages address `https://amruthpillai.github.io/reactive-resume/` returned 404 on
September 11, 2026. GitHub now reports `https://reactive-resume.github.io/app/`; repository
September 11, 2026. GitHub now reports `https://reactive-resume.github.io/reactive-resume/`; repository
redirects do not redirect Pages traffic. No active repository references use the old Pages URL.
- Confirm documentation hosting, Crowdin, Docker Hub source metadata, sponsorship access
rewards, and any external OIDC policies in their owning accounts. Repository transfer alone
does not verify those integrations.
Track availability and supported copied tags in [migration issue #3503](https://github.com/reactive-resume/app/issues/3503).
Track availability and supported copied tags in [migration issue #3503](https://github.com/reactive-resume/reactive-resume/issues/3503).
No database reset, volume deletion, or resume-data migration is required.
References: [Blacksmith Docker caching](https://docs.blacksmith.sh/blacksmith-caching/docker-builds),
+453 -453
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -17,7 +17,7 @@ These steps set up Reactive Resume for local development, whether you're contrib
<Steps>
<Step title="Clone the Repository">
```bash
git clone https://github.com/reactive-resume/app.git reactive-resume
git clone https://github.com/reactive-resume/reactive-resume.git reactive-resume
cd reactive-resume
```
</Step>
@@ -318,7 +318,7 @@ pnpm run typecheck
<Card title="Project Architecture" icon="folder-open" href="/contributing/architecture">
How the project and codebase are structured.
</Card>
<Card title="GitHub Repository" icon="github" href="https://github.com/reactive-resume/app">
<Card title="GitHub Repository" icon="github" href="https://github.com/reactive-resume/reactive-resume">
View the source code and contribute to the project.
</Card>
</CardGroup>
+2 -2
View File
@@ -106,7 +106,7 @@ If your language is not listed in the Crowdin project, you can request it to be
To request a new language:
1. Go to the [GitHub Issues](https://github.com/reactive-resume/app/issues) page
1. Go to the [GitHub Issues](https://github.com/reactive-resume/reactive-resume/issues) page
2. Click **New Issue**
3. Select the appropriate template or create a blank issue
4. Title it something like: "Add [Language Name] to Reactive Resume"
@@ -152,7 +152,7 @@ Translations submitted on Crowdin are synced to the codebase periodically. Once
<Card icon="book-open" title="Crowdin Translator Docs" href="https://support.crowdin.com/for-translators/">
Official Crowdin documentation for translators.
</Card>
<Card icon="github" title="GitHub Issues" href="https://github.com/reactive-resume/app/issues">
<Card icon="github" title="GitHub Issues" href="https://github.com/reactive-resume/reactive-resume/issues">
Report issues or request new languages.
</Card>
</CardGroup>
+3 -3
View File
@@ -177,7 +177,7 @@
{
"icon": "github",
"anchor": "Source Code",
"href": "https://github.com/reactive-resume/app"
"href": "https://github.com/reactive-resume/reactive-resume"
}
]
}
@@ -190,7 +190,7 @@
"links": [
{
"label": "Support",
"href": "https://github.com/reactive-resume/app/issues"
"href": "https://github.com/reactive-resume/reactive-resume/issues"
}
],
"primary": {
@@ -205,7 +205,7 @@
"footer": {
"socials": {
"website": "https://rxresu.me",
"github": "https://github.com/reactive-resume/app"
"github": "https://github.com/reactive-resume/reactive-resume"
}
}
}
+49 -49
View File
@@ -42,40 +42,40 @@ pass. Issue comments and state changes are recorded when explicitly directed by
| Unit | Issues | Status / current validity | Owner | Worktree / branch | Base → head | Dependencies | Evidence | Tests | PR | Next action | Blockers |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 01 account login/recovery | #3166, #3164, #3078, #3046, #2897, #2837 | blocked | audit `task_855fbee0a803` | `codex-audit-backend-01-06` | `7a98f6662` → no source change | none | zero drift; live issues remain split; #3046/#3078 have merged #3095 candidate only | auth 42, email 6, focused/full API/server suites and affected typechecks/boundaries passed in audit | — | select exact auth/mail/API boundary only after current sanitized trace | current cloud digest, provider/account method, request/status trace, controlled mailbox |
| 02 hosted v4 recovery | #3181, #2760 | merged partial unit | implementation/review chain complete | `codex/issue-3181-recovery-procedure` | `7a98f6662` → `325d1fcd1` → merge `549135bb3` | #2760 identity branch depends on 01 evidence | Unicode format-character IDs rejected across all manifest fields; bot cleanup preserved; scanner extraction and relaxed canonicalization rejected with independent evidence; four hosted threads replied/resolved | fresh coordinator 83 comparator, 381 API, 21 auth tests plus gates green; exhaustive Unicode/mutation rereview clean; all exact-head hosted checks green; approved, mergeable, zero unresolved threads | [#3460](https://github.com/amruthpillai/reactive-resume/pull/3460) | retain external recovery gate | real recovery still needs verified owner, snapshot, mapping, private delivery |
| 02 hosted v4 recovery | #3181, #2760 | merged partial unit | implementation/review chain complete | `codex/issue-3181-recovery-procedure` | `7a98f6662` → `325d1fcd1` → merge `549135bb3` | #2760 identity branch depends on 01 evidence | Unicode format-character IDs rejected across all manifest fields; bot cleanup preserved; scanner extraction and relaxed canonicalization rejected with independent evidence; four hosted threads replied/resolved | fresh coordinator 83 comparator, 381 API, 21 auth tests plus gates green; exhaustive Unicode/mutation rereview clean; all exact-head hosted checks green; approved, mergeable, zero unresolved threads | [#3460](https://github.com/reactive-resume/reactive-resume/pull/3460) | retain external recovery gate | real recovery still needs verified owner, snapshot, mapping, private delivery |
| 03 MCP registration | #3398, #3153 | blocked; historical source fix present | audit `task_855fbee0a803` | `codex-audit-backend-01-06` | `7a98f6662` → no source change | coordinate DB/startup with 05 | merged #3421 (`fe9b59e`) is present on main and current source schema/startup/auth contracts match plan, but deployed behavior is not verified | #3421 hosted checks successful; audit auth/server/API/DB tests, typechecks, boundaries passed | #3421 merged before run | obtain deployed digest/log correlation, then rerun exact Codex/Claude DCR → consent → PKCE → MCP flow | deployed digest/log correlation and exact client retest unavailable; source no-change evidence cannot prove deployment |
| 04 AI provider compatibility | #2732, #2766, #2723, #2708 | blocked | audit `task_855fbee0a803` | `codex-audit-backend-01-06` | `7a98f6662` → no source change | serialize edits to AI service | zero drift; historical #2708 Responses path and #2766 structured Test path absent; remaining tuples differ | focused API 96 and full API suites/typecheck/boundaries passed in audit | — | select wire/state/import/base-path unit only after exact current tuple fails | provider/model/base URL/path/version/action/error tuple and allowed endpoint unavailable |
| 05 AI provider migrations | #3152 | blocked | audit `task_855fbee0a803` | `codex-audit-backend-01-06` | `7a98f6662` → no source change | coordinate DB/startup with 03 | zero drift; table schema, migration, startup ordering, Docker copy path coherent; `42P01` historical cause unresolved | audit API/server/DB tests, typechecks, boundaries passed; no real PostgreSQL migration fixture | — | choose config/packaging/startup/migration repair only after disposable reproduction | affected image layout/digest, working directory, DB schema/search path/journal, fresh+upgrade DB fixture |
| 06 image storage delivery | #2684, #2778 | blocked | audit `task_855fbee0a803` | `codex-audit-backend-01-06` | `7a98f6662` → no source change | coordinate 12/15/25 renderer/image fixtures | #2684 ACL cause fixed by merged #3432 (`35cecf9`); #2778 Browserless path obsolete; current topology unproved | #3432 hosted checks successful; audit storage/upload/PDF tests, typechecks, boundaries passed | #3432 merged before run | deployment retest plus shared real-encoding/backend/render fixture before repair | deployed digest; disposable S3/Garage/SeaweedFS/MinIO/proxy and browser/server raster matrix unavailable |
| 07 AIO deployment | #2722 | docs merged; feature declined | implementation/review chain complete | `codex/issue-2722-postgres-docs` | `7a98f6662` → `171637526` → merge `ee52636c1` | none | image and repository update flows now separate through correct `reactive-resume`/`reactive_resume` log commands; clean rereview | fresh Compose/DB/docs coordinator gates and all exact-head hosted checks green; approved; zero unresolved threads | [#3457](https://github.com/amruthpillai/reactive-resume/pull/3457) | documentation complete; #2722 disposition declined | AIO implementation explicitly declined; optional Unraid host smoke unavailable |
| 08 root public resume | #2669 | merged partial unit | implementation/review chain complete | `codex/issue-2669-root-public-resume` | `38832014b` → `576fad5ef` → merge `744eaa902` | none | optional server-only root mapping is public-only, preserves password identity, rejects hostile target/Host input, and owns canonical/static metadata safely; independent review clean | 1,392 implementation tests plus disabled/enabled production E2E; post-main focused 123 tests and type/lint gates green | [#3470](https://github.com/amruthpillai/reactive-resume/pull/3470) | retain broader custom-domain/TLS issue scope | feature remains narrower than arbitrary domain/TLS registry |
| 09 external version backup | #2705 | merged | implementation/review chain complete | `codex/issue-2705-git-backup-docs` | `7a98f6662` → `4ffdd96bd` → merge `772bf1452` | none | clean round-4 rereview; command-site prose requires unused output; replies document selected revision and fresh-file fixes | fresh coordinator 152 tests plus Markdown/diff/scope and all exact-head hosted checks green; approved; zero unresolved threads | [#3458](https://github.com/amruthpillai/reactive-resume/pull/3458) | complete | DB integration/E2E unavailable; no sync/remote/whole-account restore |
| 10 legacy link routing | #2836 | skipped by maintainer | implementation/review chain complete before cancellation | `codex/issue-2836-retired-link-notices` | `7a98f6662` → hosted `3eac878d` | none | implementation was technically reviewed, then maintainer rejected product scope due redirect-lifecycle and error-handling overhead | PR closed unmerged; issue note records not-planned rationale | [#3463](https://github.com/amruthpillai/reactive-resume/pull/3463) | no further implementation | explicitly out of plan; branch/worktree retained for auditability |
| 11 job search policy | #3010 | merged | implementation/review chain complete | `codex/issue-3010-jsearch-docs` | `7a98f6662` → `1d0397884` → merge `8c5804ed0` | none | two valid wording comments fixed; independent full-diff re-review found no issues; replies carry commit evidence | 52 focused tests plus Markdown/link/diff/base/scope and all exact-head hosted checks green; approved; zero unresolved threads | [#3459](https://github.com/amruthpillai/reactive-resume/pull/3459) | complete | real provider/browser optional gate unavailable; removal motive unknown |
| 07 AIO deployment | #2722 | docs merged; feature declined | implementation/review chain complete | `codex/issue-2722-postgres-docs` | `7a98f6662` → `171637526` → merge `ee52636c1` | none | image and repository update flows now separate through correct `reactive-resume`/`reactive_resume` log commands; clean rereview | fresh Compose/DB/docs coordinator gates and all exact-head hosted checks green; approved; zero unresolved threads | [#3457](https://github.com/reactive-resume/reactive-resume/pull/3457) | documentation complete; #2722 disposition declined | AIO implementation explicitly declined; optional Unraid host smoke unavailable |
| 08 root public resume | #2669 | merged partial unit | implementation/review chain complete | `codex/issue-2669-root-public-resume` | `38832014b` → `576fad5ef` → merge `744eaa902` | none | optional server-only root mapping is public-only, preserves password identity, rejects hostile target/Host input, and owns canonical/static metadata safely; independent review clean | 1,392 implementation tests plus disabled/enabled production E2E; post-main focused 123 tests and type/lint gates green | [#3470](https://github.com/reactive-resume/reactive-resume/pull/3470) | retain broader custom-domain/TLS issue scope | feature remains narrower than arbitrary domain/TLS registry |
| 09 external version backup | #2705 | merged | implementation/review chain complete | `codex/issue-2705-git-backup-docs` | `7a98f6662` → `4ffdd96bd` → merge `772bf1452` | none | clean round-4 rereview; command-site prose requires unused output; replies document selected revision and fresh-file fixes | fresh coordinator 152 tests plus Markdown/diff/scope and all exact-head hosted checks green; approved; zero unresolved threads | [#3458](https://github.com/reactive-resume/reactive-resume/pull/3458) | complete | DB integration/E2E unavailable; no sync/remote/whole-account restore |
| 10 legacy link routing | #2836 | skipped by maintainer | implementation/review chain complete before cancellation | `codex/issue-2836-retired-link-notices` | `7a98f6662` → hosted `3eac878d` | none | implementation was technically reviewed, then maintainer rejected product scope due redirect-lifecycle and error-handling overhead | PR closed unmerged; issue note records not-planned rationale | [#3463](https://github.com/reactive-resume/reactive-resume/pull/3463) | no further implementation | explicitly out of plan; branch/worktree retained for auditability |
| 11 job search policy | #3010 | merged | implementation/review chain complete | `codex/issue-3010-jsearch-docs` | `7a98f6662` → `1d0397884` → merge `8c5804ed0` | none | two valid wording comments fixed; independent full-diff re-review found no issues; replies carry commit evidence | 52 focused tests plus Markdown/link/diff/base/scope and all exact-head hosted checks green; approved; zero unresolved threads | [#3459](https://github.com/reactive-resume/reactive-resume/pull/3459) | complete | real provider/browser optional gate unavailable; removal motive unknown |
| 12 preview/export failures | #3323, #3290, #3033, #3007, #2609 | blocked corrective work; diagnostic-ready | audit `task_1c6582ccdeae` | `codex-audit-rendering-12-19` | `7a98f6662` → no source change | renderer ownership; share observation harness with 18 | zero drift; staged-preview/error-boundary baselines remain; reports cross persistence/font/PDF/viewer/deployment boundaries | audit focused web/PDF suites, affected typechecks, boundaries, build passed | — | isolate PT Sans, browser/config, and template-selection boundaries; no shared fix | exact JSON/output/browser/config/current reproduction missing |
| 13 font/glyph/spacing | #3249, #3159, #3147, #3093, #3089, #2988 | blocked corrective work; diagnostic-ready | audit `task_1c6582ccdeae` | `codex-audit-rendering-12-19` | `7a98f6662` → no source change | serialize font sources with 14/27 | merged metrics/cache/Unicode fixes present and passing; residuals require per-font/per-symptom fixtures | audit focused PDF/font suites, affected typechecks, boundaries, build passed | — | retain regressions; create residual unit only from exact failing font fixture | missing Ropa Sans/source strings/font hashes/before-after artifacts |
| 14 RTL export layout | #3275 | blocked corrective work; diagnostic-ready | audit `task_1c6582ccdeae` | `codex-audit-rendering-12-19` | `7a98f6662` → no source change | serialize renderer/fonts with 13/27 | merged canvas-direction fix remains; broader shaping/bidi cause unproved | audit RTL/preview suites, affected typechecks, boundaries, build passed | — | run controlled same-bytes export matrix against approved shaping oracle | exact JSON/font/version and known-good reference absent |
| 15 picture fitting/style | #3168, #3088, #2794, #2782 | 15A merged; other causes blocked | implementation/review/finalization chain complete | `codex/issue-2782-picture-fit` | `7a98f6662` → `6e071ebcd` → merge `ab67831e4` | coordinate 06/25; schema/PDF owner exclusion | clean independent exact-head rereview; five threads resolved; fresh CodeRabbit approval; schema/retry fixes valid; rejected requests documented | focused tests/typechecks/boundaries/build/Biome green; exact-head hosted E2E 35/35 and all code checks green; Mintlify parser failure proven pre-existing; normal merge required no bypass | [#3461](https://github.com/amruthpillai/reactive-resume/pull/3461) | partial unit complete | delivery/centering issues still lack source revisions/assets/expected crop |
| 16 imported table borders | #3196 | merged | implementation/review chain complete | `codex/issue-3196-editable-tables` | `7a98f6662` → `b170290e9` → merge `999cd618c` | rich-text owner; Plan 19 stacked from reviewed head | table grammar/grid and link semantics now fail closed when Tiptap cannot round-trip; borderless PDF test is color-independent; final focused rereview clean | focused/broad web/PDF tests, typechecks, boundaries, build, narrow Biome, authenticated E2E, independent review, and hosted checks green | [#3464](https://github.com/amruthpillai/reactive-resume/pull/3464) | complete | historical visual equivalence lacks reporter HTML/JSON but feature contract is approved |
| 15 picture fitting/style | #3168, #3088, #2794, #2782 | 15A merged; other causes blocked | implementation/review/finalization chain complete | `codex/issue-2782-picture-fit` | `7a98f6662` → `6e071ebcd` → merge `ab67831e4` | coordinate 06/25; schema/PDF owner exclusion | clean independent exact-head rereview; five threads resolved; fresh CodeRabbit approval; schema/retry fixes valid; rejected requests documented | focused tests/typechecks/boundaries/build/Biome green; exact-head hosted E2E 35/35 and all code checks green; Mintlify parser failure proven pre-existing; normal merge required no bypass | [#3461](https://github.com/reactive-resume/reactive-resume/pull/3461) | partial unit complete | delivery/centering issues still lack source revisions/assets/expected crop |
| 16 imported table borders | #3196 | merged | implementation/review chain complete | `codex/issue-3196-editable-tables` | `7a98f6662` → `b170290e9` → merge `999cd618c` | rich-text owner; Plan 19 stacked from reviewed head | table grammar/grid and link semantics now fail closed when Tiptap cannot round-trip; borderless PDF test is color-independent; final focused rereview clean | focused/broad web/PDF tests, typechecks, boundaries, build, narrow Biome, authenticated E2E, independent review, and hosted checks green | [#3464](https://github.com/reactive-resume/reactive-resume/pull/3464) | complete | historical visual equivalence lacks reporter HTML/JSON but feature contract is approved |
| 17 list/skill pagination | #2751, #3040 | blocked corrective work; diagnostic-ready | audit `task_1c6582ccdeae` | `codex-audit-rendering-12-19` | `7a98f6662` → no source change | renderer owner shared with 13/14/18 | merged ordered-marker/wrap/level-gap fixes present; current residual not reproduced | audit focused PDF suites, typecheck, boundaries, build passed | — | retain controls; add fix only from exact failing list/skill fixture | #2751 source absent; #3040 current fixture no longer proves residual clipping |
| 18 preview/export geometry | #2683 | diagnostic merged; runtime fix blocked | implementation/review/remediation/rereview chain complete | `codex/issue-2683-preview-export-geometry` | `cdb7bdd2f` → `ce372b54b` → `5f5dca844` → merge `11d619d3d` | share output-boundary harness with 12; viewer owner exclusion | opt-in production-path E2E verifies exact disposable DB identity, persisted source/revision and export target, positive pages/ink/sentinels, measured zoom scale, stable transform/clip geometry, all formats/margins/fit/overflow, and DPR1/2; synthetic matrix did not reproduce mismatch | dedicated PostgreSQL/production-server E2E 2/2; web 949, PDF 1,073, two typechecks, collection, Biome, boundaries 1,452, diff hygiene; seven review findings remediated and focused rereview clean | [#3483](https://github.com/amruthpillai/reactive-resume/pull/3483) | retain #2683 pending original JSON/browser fixture; no runtime change from negative synthetic evidence | exact reporter JSON/PDF/browser/DPR/zoom/page settings absent; no measured first divergence |
| 19 literal rich-text whitespace | #3397 | merged | implementation/review/remediation chain complete | `codex/issue-3397-literal-whitespace` | `38832014b` → `2f6942fb7` → merge `ea97de5ec` | Plan 16 merged; coordinate DOCX/PDF/editor with 31 | literal whitespace preserved through editor transforms, clipboard/table normalization, PDF layout/textkit geometry, and DOCX; final bare `TD`/`TH` gap fixed | post-main web 102, PDF 106, DOCX 20, three typechecks, Biome, diff green; dedicated Chromium E2E 2/2 | [#3472](https://github.com/amruthpillai/reactive-resume/pull/3472) | complete | direct Word/LibreOffice visual unavailable; XML/four-space contract verified |
| 20 section restoration | #3378, #3265, #2921 | 20A merged for #2921; residuals split | implementation/review chain complete | `codex/issue-2921-hidden-section-recovery` | `7a98f6662` → `792d7f8e2` → merge `5850230f8` | 20A before 21/31; placement semantics before 29 | collapsed navigation reopens real accordion before deferred row focus/scroll; final independent review found no issues | focused tests, typechecks, boundaries, build, PO checks, diff gates, authenticated E2E, and all hosted checks green; approved/mergeable/clean | [#3462](https://github.com/amruthpillai/reactive-resume/pull/3462) | begin dependent Plan 21 when owner slot permits | #3378/#3265 need version/action/sanitized JSON; defensive fix cannot close them |
| 21 section heading visibility | #3060 | merged | implementation/review chain complete | `codex/issue-3060-section-heading-visibility` | `2a4a1583b` → `3ce4321cb` → merge `368858a56` | 20A and 34 merged; unblocks 23B and 31 | Q1–Q3 implemented across schema, builder menus, Move-to defaults, PDF/DOCX visual omission, accessibility labels, generated references, and recovery fixtures | full 19-task suite; post-main schema 103, PDF 125, DOCX 15, web 30; four typechecks, boundaries, Biome, Markdown, diff; independent review clean | [#3477](https://github.com/amruthpillai/reactive-resume/pull/3477) | complete; issue closed by merge | no remaining approved scope |
| 22 skill keyword presentation | #2785 | merged | implementation/review/remediation chain complete | `codex/issue-2785-skill-keyword-layout` | `38832014b` → `3c06c3b0b` → merge `870388192` | must precede/serialize 34 | built-in/custom inline/list schema, menus, PDF, DOCX, accessible HTML, import, locales, generated docs, and recovery hashes updated; both independent reviews clean | 1,280 affected tests and build; post-main 80 focused tests; remediation tooling 97/97, type/lint/diff green | [#3469](https://github.com/amruthpillai/reactive-resume/pull/3469) | complete; Plan 34 dispatched | no product gate |
| 23 pagination controls | #3350, #3090 | 23A and diagnostic 23B merged; 23C blocked | implementation/review/remediation chain complete | `codex/issue-3350-item-pagination` | `368858a56` → `f2769dce5` → merge `5e8284e49` | possible 23C requires renderer-safe fallback | deterministic physical-page matrix asserts every token exactly once and separates authored pages from physical overflow; installed renderer proves `wrap=false` truncates oversized items, so no unsafe control shipped | 11 focused pagination tests, PDF typecheck, Biome, boundaries, Markdown, diff; independent review gaps remediated | [#3478](https://github.com/amruthpillai/reactive-resume/pull/3478) | retain item-control issue pending safe fallback | oversized keep-together fallback is lossy; widow/orphan UI remains deferred |
| 24 date layout | #3155, #2841 | characterization merged; behavior blocked | implementation/review/remediation chain complete | `codex/issue-3155-date-layout-characterization` | `66c25efe1` → `77a549988` → merge `cdb7bdd2f` | 24B needs explicit numeric geometry; mutual exclusion with 32 | deterministic executable JSON/PNG coordinate/raster baselines cover all Q7/custom sections, nested roles, Chikorita/Ditto LTR/RTL, all 15 templates, and #2841 controls; no runtime behavior changed | 14 focused tests, PDF typecheck, Biome, boundaries, Markdown, diff after current-main integration; independent findings remediated | [#3480](https://github.com/amruthpillai/reactive-resume/pull/3480) | retain issues pending width units/bounds/default visual target | numeric width/bounds/default geometry cannot be invented |
| 18 preview/export geometry | #2683 | diagnostic merged; runtime fix blocked | implementation/review/remediation/rereview chain complete | `codex/issue-2683-preview-export-geometry` | `cdb7bdd2f` → `ce372b54b` → `5f5dca844` → merge `11d619d3d` | share output-boundary harness with 12; viewer owner exclusion | opt-in production-path E2E verifies exact disposable DB identity, persisted source/revision and export target, positive pages/ink/sentinels, measured zoom scale, stable transform/clip geometry, all formats/margins/fit/overflow, and DPR1/2; synthetic matrix did not reproduce mismatch | dedicated PostgreSQL/production-server E2E 2/2; web 949, PDF 1,073, two typechecks, collection, Biome, boundaries 1,452, diff hygiene; seven review findings remediated and focused rereview clean | [#3483](https://github.com/reactive-resume/reactive-resume/pull/3483) | retain #2683 pending original JSON/browser fixture; no runtime change from negative synthetic evidence | exact reporter JSON/PDF/browser/DPR/zoom/page settings absent; no measured first divergence |
| 19 literal rich-text whitespace | #3397 | merged | implementation/review/remediation chain complete | `codex/issue-3397-literal-whitespace` | `38832014b` → `2f6942fb7` → merge `ea97de5ec` | Plan 16 merged; coordinate DOCX/PDF/editor with 31 | literal whitespace preserved through editor transforms, clipboard/table normalization, PDF layout/textkit geometry, and DOCX; final bare `TD`/`TH` gap fixed | post-main web 102, PDF 106, DOCX 20, three typechecks, Biome, diff green; dedicated Chromium E2E 2/2 | [#3472](https://github.com/reactive-resume/reactive-resume/pull/3472) | complete | direct Word/LibreOffice visual unavailable; XML/four-space contract verified |
| 20 section restoration | #3378, #3265, #2921 | 20A merged for #2921; residuals split | implementation/review chain complete | `codex/issue-2921-hidden-section-recovery` | `7a98f6662` → `792d7f8e2` → merge `5850230f8` | 20A before 21/31; placement semantics before 29 | collapsed navigation reopens real accordion before deferred row focus/scroll; final independent review found no issues | focused tests, typechecks, boundaries, build, PO checks, diff gates, authenticated E2E, and all hosted checks green; approved/mergeable/clean | [#3462](https://github.com/reactive-resume/reactive-resume/pull/3462) | begin dependent Plan 21 when owner slot permits | #3378/#3265 need version/action/sanitized JSON; defensive fix cannot close them |
| 21 section heading visibility | #3060 | merged | implementation/review chain complete | `codex/issue-3060-section-heading-visibility` | `2a4a1583b` → `3ce4321cb` → merge `368858a56` | 20A and 34 merged; unblocks 23B and 31 | Q1–Q3 implemented across schema, builder menus, Move-to defaults, PDF/DOCX visual omission, accessibility labels, generated references, and recovery fixtures | full 19-task suite; post-main schema 103, PDF 125, DOCX 15, web 30; four typechecks, boundaries, Biome, Markdown, diff; independent review clean | [#3477](https://github.com/reactive-resume/reactive-resume/pull/3477) | complete; issue closed by merge | no remaining approved scope |
| 22 skill keyword presentation | #2785 | merged | implementation/review/remediation chain complete | `codex/issue-2785-skill-keyword-layout` | `38832014b` → `3c06c3b0b` → merge `870388192` | must precede/serialize 34 | built-in/custom inline/list schema, menus, PDF, DOCX, accessible HTML, import, locales, generated docs, and recovery hashes updated; both independent reviews clean | 1,280 affected tests and build; post-main 80 focused tests; remediation tooling 97/97, type/lint/diff green | [#3469](https://github.com/reactive-resume/reactive-resume/pull/3469) | complete; Plan 34 dispatched | no product gate |
| 23 pagination controls | #3350, #3090 | 23A and diagnostic 23B merged; 23C blocked | implementation/review/remediation chain complete | `codex/issue-3350-item-pagination` | `368858a56` → `f2769dce5` → merge `5e8284e49` | possible 23C requires renderer-safe fallback | deterministic physical-page matrix asserts every token exactly once and separates authored pages from physical overflow; installed renderer proves `wrap=false` truncates oversized items, so no unsafe control shipped | 11 focused pagination tests, PDF typecheck, Biome, boundaries, Markdown, diff; independent review gaps remediated | [#3478](https://github.com/reactive-resume/reactive-resume/pull/3478) | retain item-control issue pending safe fallback | oversized keep-together fallback is lossy; widow/orphan UI remains deferred |
| 24 date layout | #3155, #2841 | characterization merged; behavior blocked | implementation/review/remediation chain complete | `codex/issue-3155-date-layout-characterization` | `66c25efe1` → `77a549988` → merge `cdb7bdd2f` | 24B needs explicit numeric geometry; mutual exclusion with 32 | deterministic executable JSON/PNG coordinate/raster baselines cover all Q7/custom sections, nested roles, Chikorita/Ditto LTR/RTL, all 15 templates, and #2841 controls; no runtime behavior changed | 14 focused tests, PDF typecheck, Biome, boundaries, Markdown, diff after current-main integration; independent findings remediated | [#3480](https://github.com/reactive-resume/reactive-resume/pull/3480) | retain issues pending width units/bounds/default visual target | numeric width/bounds/default geometry cannot be invented |
| 25 experience company logos | #3379 | blocked implementation; contract-design-ready | audit `task_47ed7eb02d48` | `codex-audit-builder-20-34` | `7a98f6662` → no source change | 25A → 25B; coordinate 06/15 | current generic uploader has eager deletion and no reference counting/ownership validation; unsafe to reuse unchanged | audit relevant package suites/typechecks/boundaries passed | — | define asset ownership, accepted types, retention/orphan/copy/undo contract and tests | storage ownership/lifetime contract requires new decision |
| 26 secondary color | #3373 | inventory-ready; implementation blocked | audit `task_47ed7eb02d48` | `codex-audit-builder-20-34` | `7a98f6662` → no source change | 26A → 26B; serialize semantic docs with 28 | theme has three roles; primary consumers are not classified decorative vs semantic | audit schema/PDF suites and typechecks/boundaries passed | — | enumerate primary consumers and approve decorative truth table | consumer classification/visual contract not selected |
| 27 offline fonts | #3377 | diagnostic merged; production resolver blocked | implementation/review/remediation chain complete | `codex/issue-3377-offline-font-diagnostic` | `2a4a1583b` → `397d9e43b` → merge `f783908b0` | 27A informs 30A; 27B needs external gate | opt-in four-surface cold-network fixture, deterministic marker crops, tested blank/tofu classification, enforced browser download, and bounded administrator-hosted manifest evidence; no production behavior changed | helper 8, fonts 55, PDF 35, targeted TypeScript, Playwright collection, Biome, boundaries, Markdown, diff; independent findings remediated | [#3479](https://github.com/amruthpillai/reactive-resume/pull/3479) | retain issue pending host-level cold-server proof | production resolver remains blocked until controlled restart/egress evidence and asset-hosting design are proven |
| 28 basics custom styles | #3137 | merged partial unit | implementation/review/remediation complete | `codex/issue-3137-semantic-css-diagnostics` | `b85d285b6` → `28c933b55` → merge `38832014b` | serialize semantic docs/tests with 26 | gradients remain unsupported; false-positive recognition and direct-LINK assertions fixed; both threads resolved and CodeRabbit approved | main-integrated package gates plus remediation resume 47/47, PDF 10/10, typechecks, Biome, and diff green; unrelated baseline E2E flakes documented | [#3468](https://github.com/amruthpillai/reactive-resume/pull/3468) | retain residual issue until reporter names remaining failure | reporter has not named remaining failure; keep issue open |
| 27 offline fonts | #3377 | diagnostic merged; production resolver blocked | implementation/review/remediation chain complete | `codex/issue-3377-offline-font-diagnostic` | `2a4a1583b` → `397d9e43b` → merge `f783908b0` | 27A informs 30A; 27B needs external gate | opt-in four-surface cold-network fixture, deterministic marker crops, tested blank/tofu classification, enforced browser download, and bounded administrator-hosted manifest evidence; no production behavior changed | helper 8, fonts 55, PDF 35, targeted TypeScript, Playwright collection, Biome, boundaries, Markdown, diff; independent findings remediated | [#3479](https://github.com/reactive-resume/reactive-resume/pull/3479) | retain issue pending host-level cold-server proof | production resolver remains blocked until controlled restart/egress evidence and asset-hosting design are proven |
| 28 basics custom styles | #3137 | merged partial unit | implementation/review/remediation complete | `codex/issue-3137-semantic-css-diagnostics` | `b85d285b6` → `28c933b55` → merge `38832014b` | serialize semantic docs/tests with 26 | gradients remain unsupported; false-positive recognition and direct-LINK assertions fixed; both threads resolved and CodeRabbit approved | main-integrated package gates plus remediation resume 47/47, PDF 10/10, typechecks, Biome, and diff green; unrelated baseline E2E flakes documented | [#3468](https://github.com/reactive-resume/reactive-resume/pull/3468) | retain residual issue until reporter names remaining failure | reporter has not named remaining failure; keep issue open |
| 29 Onyx profile header | #2812 | blocked | audit `task_47ed7eb02d48` | `codex-audit-builder-20-34` | `7a98f6662` → no source change | placement semantics 20; accessibility order 31 | historical Onyx-only PR obsolete; no persisted generic placement owner exists | audit relevant suites/typechecks/boundaries passed | — | choose generic placement capability and produce one-page/overflow visual contract | new persisted-interface choice plus visual contract required |
| 30 ATS export evaluation | #2845 | diagnostic merged; preset not warranted | implementation/review/remediation/rereview chain complete | `codex/issue-2845-ats-export-evaluation` | `f783908b0` → `f89873f08` → `d17e188b0` → merge `10eb3bdbc` | current renderer/font diagnostics informed 30A; 30B requires measured material deficiency | occurrence-aware grouping, complete visible/link and hidden-channel coverage, portable JSZip DOCX extraction, and positive numbering fidelity now measure existing exports; two-column PDF and DOCX recover 106/106 expected occurrences, full-width PDF 105/106, and DOCX telephone-target omission is explicit | evaluator 108/108, four affected typechecks, Biome, boundaries 1,117, diff hygiene; independent review found five gaps and focused rereview found one final label gap, all remediated | [#3482](https://github.com/amruthpillai/reactive-resume/pull/3482) | retain #2845 pending vendor-side evidence; do not add preset from current measurements | no vendor accuracy claim; local extraction evidence shows no material deficiency warranting preset |
| 31 document accessibility | #2844 | HTML residual merged; public/export audit blocked | implementation/review/remediation chain complete | `codex/issue-2844-accessibility` | `cdb7bdd2f` → `acd2a9cfe` → merge `3e62a1d60` | public viewer requires duplicate-announcement/manual gate | builder mirror now has valid H3/H4 hierarchy and safe recursive rich-text list/mark/link semantics while preserving hidden/unplaced/Q3/order rules; no public/PDF/DOCX changes or conformance claim | focused 15, full web 949, web typecheck, Biome, boundaries; independent empty-summary/blank-company findings remediated | [#3481](https://github.com/amruthpillai/reactive-resume/pull/3481) | retain #2844 for public/PDF/DOCX/manual evidence | dedicated E2E environment and manual screen-reader transcript unavailable |
| 32 section date sorting | #2725 | merged | implementation/review chain complete | `codex/issue-2725-one-shot-sort` | `7a98f6662` → `5c07409ae` → merge `b85d285b6` | shared-file exclusion with 20–24; behavior independent of 24 | pure stable one-shot Experience/Education sort implemented with exact unresolved IDs, undo/persistence, and locked-state coverage; independent review found no issues | focused/full tests, typechecks, boundaries, build, catalogs, authenticated E2E, review, and hosted gates green | [#3465](https://github.com/amruthpillai/reactive-resume/pull/3465) | complete | broader autosort/preferences/custom/role behavior remains out of scope |
| 33 Europass template | #2689 | research merged; template blocked at approval gate | implementation/review chain complete for 33A | `codex/issue-2689-europass-research` | `2a4a1583b` → `57f2c30` → merge `578cb496a` | 33A → explicit visual approval → possible 33B | official-source mapping, canonical SVG direction, one-page/overflow/comparison artifacts, and corrected full-resolution geometry independently reviewed; no renderer code | XML/bounds/source mapping and 2480×3508 visual rereview passed | [#3475](https://github.com/amruthpillai/reactive-resume/pull/3475) | await explicit approval of proposed visual/product direction before 33B | canonical SVG direction, neutral naming, fluency labels, chronology gutter/date wrapping, and photo-free defaults require maintainer approval |
| 34 Gengar skill layout | #2611 | merged | implementation/review chain complete | `codex/issue-2611-gengar-skill-layout` | `870388192` → `f2186d4f7` → merge `2a4a1583b` | 22 merged; shared Skills renderer serialized before 21 | Gengar-only capability restores name → rating → proficiency → keywords in visual and semantic trees; other templates unchanged; independent review clean | 51 focused PDF tests, PDF typecheck, boundaries, Biome, diff green after current-main integration | [#3473](https://github.com/amruthpillai/reactive-resume/pull/3473) | complete | no historical screenshot parity claim |
| 35 resume import errors | #2768 | merged adjacent-fix unit | implementation/review chain complete | `codex/issue-2768-import-reproduction` | `38832014b` → `ae219f3d9` → merge `a6057abd7` | none | synthetic matrix proved and fixed empty-MIME rejection, v4 misclassification, and opaque offline-PDF messages; independent review found no product blocker; historical failure remains unproved | focused 26 web + 144 import; web typecheck/build; boundaries/Biome; E2E 13/13 plus repeats 12/12; post-main 158 tests/typecheck/Biome/diff green | [#3471](https://github.com/amruthpillai/reactive-resume/pull/3471) | retain historical needs-info issue | reporter artifact/version/error/steps absent; keep issue open |
| 30 ATS export evaluation | #2845 | diagnostic merged; preset not warranted | implementation/review/remediation/rereview chain complete | `codex/issue-2845-ats-export-evaluation` | `f783908b0` → `f89873f08` → `d17e188b0` → merge `10eb3bdbc` | current renderer/font diagnostics informed 30A; 30B requires measured material deficiency | occurrence-aware grouping, complete visible/link and hidden-channel coverage, portable JSZip DOCX extraction, and positive numbering fidelity now measure existing exports; two-column PDF and DOCX recover 106/106 expected occurrences, full-width PDF 105/106, and DOCX telephone-target omission is explicit | evaluator 108/108, four affected typechecks, Biome, boundaries 1,117, diff hygiene; independent review found five gaps and focused rereview found one final label gap, all remediated | [#3482](https://github.com/reactive-resume/reactive-resume/pull/3482) | retain #2845 pending vendor-side evidence; do not add preset from current measurements | no vendor accuracy claim; local extraction evidence shows no material deficiency warranting preset |
| 31 document accessibility | #2844 | HTML residual merged; public/export audit blocked | implementation/review/remediation chain complete | `codex/issue-2844-accessibility` | `cdb7bdd2f` → `acd2a9cfe` → merge `3e62a1d60` | public viewer requires duplicate-announcement/manual gate | builder mirror now has valid H3/H4 hierarchy and safe recursive rich-text list/mark/link semantics while preserving hidden/unplaced/Q3/order rules; no public/PDF/DOCX changes or conformance claim | focused 15, full web 949, web typecheck, Biome, boundaries; independent empty-summary/blank-company findings remediated | [#3481](https://github.com/reactive-resume/reactive-resume/pull/3481) | retain #2844 for public/PDF/DOCX/manual evidence | dedicated E2E environment and manual screen-reader transcript unavailable |
| 32 section date sorting | #2725 | merged | implementation/review chain complete | `codex/issue-2725-one-shot-sort` | `7a98f6662` → `5c07409ae` → merge `b85d285b6` | shared-file exclusion with 20–24; behavior independent of 24 | pure stable one-shot Experience/Education sort implemented with exact unresolved IDs, undo/persistence, and locked-state coverage; independent review found no issues | focused/full tests, typechecks, boundaries, build, catalogs, authenticated E2E, review, and hosted gates green | [#3465](https://github.com/reactive-resume/reactive-resume/pull/3465) | complete | broader autosort/preferences/custom/role behavior remains out of scope |
| 33 Europass template | #2689 | research merged; template blocked at approval gate | implementation/review chain complete for 33A | `codex/issue-2689-europass-research` | `2a4a1583b` → `57f2c30` → merge `578cb496a` | 33A → explicit visual approval → possible 33B | official-source mapping, canonical SVG direction, one-page/overflow/comparison artifacts, and corrected full-resolution geometry independently reviewed; no renderer code | XML/bounds/source mapping and 2480×3508 visual rereview passed | [#3475](https://github.com/reactive-resume/reactive-resume/pull/3475) | await explicit approval of proposed visual/product direction before 33B | canonical SVG direction, neutral naming, fluency labels, chronology gutter/date wrapping, and photo-free defaults require maintainer approval |
| 34 Gengar skill layout | #2611 | merged | implementation/review chain complete | `codex/issue-2611-gengar-skill-layout` | `870388192` → `f2186d4f7` → merge `2a4a1583b` | 22 merged; shared Skills renderer serialized before 21 | Gengar-only capability restores name → rating → proficiency → keywords in visual and semantic trees; other templates unchanged; independent review clean | 51 focused PDF tests, PDF typecheck, boundaries, Biome, diff green after current-main integration | [#3473](https://github.com/reactive-resume/reactive-resume/pull/3473) | complete | no historical screenshot parity claim |
| 35 resume import errors | #2768 | merged adjacent-fix unit | implementation/review chain complete | `codex/issue-2768-import-reproduction` | `38832014b` → `ae219f3d9` → merge `a6057abd7` | none | synthetic matrix proved and fixed empty-MIME rejection, v4 misclassification, and opaque offline-PDF messages; independent review found no product blocker; historical failure remains unproved | focused 26 web + 144 import; web typecheck/build; boundaries/Biome; E2E 13/13 plus repeats 12/12; post-main 158 tests/typecheck/Biome/diff green | [#3471](https://github.com/reactive-resume/reactive-resume/pull/3471) | retain historical needs-info issue | reporter artifact/version/error/steps absent; keep issue open |
## Active orchestration
@@ -246,11 +246,11 @@ pass. Issue comments and state changes are recorded when explicitly directed by
## Publication log
- Planning package: PR [#3455](https://github.com/amruthpillai/reactive-resume/pull/3455), merged as
- Planning package: PR [#3455](https://github.com/reactive-resume/reactive-resume/pull/3455), merged as
`42527ad83bdc5720bd76eef9c9da102384f21f6f` after final Plan 10 not-planned corrections and independent rereview.
- Coordinator ledger: PR [#3456](https://github.com/amruthpillai/reactive-resume/pull/3456), merged as
- Coordinator ledger: PR [#3456](https://github.com/reactive-resume/reactive-resume/pull/3456), merged as
`981d7581f5ccb7eb02177f7f449a20fe5aee3976` after completion audit and focused rereview.
- Final ledger refresh: PR [#3485](https://github.com/amruthpillai/reactive-resume/pull/3485) records the terminal
- Final ledger refresh: PR [#3485](https://github.com/reactive-resume/reactive-resume/pull/3485) records the terminal
execution snapshot; its own eventual merge commit is intentionally left to GitHub state to avoid a self-referential update.
- Merged 2026-09-06 after exact-head revalidation: #3453 (`a4bdc54b2`), #3454 (`2e711fd14`),
#3457 (`ee52636c1`), #3458 (`772bf1452`), #3459 (`8c5804ed0`), #3460 (`549135bb3`),
@@ -260,48 +260,48 @@ pass. Issue comments and state changes are recorded when explicitly directed by
#3474 (`97f34b7cc`), #3475 (`578cb496a`), #3476 (`66c25efe1`), #3477 (`368858a56`), and
#3478 (`5e8284e49`), #3479 (`f783908b0`), #3480 (`cdb7bdd2f`), #3481 (`3e62a1d60`), and
#3482 (`10eb3bdbc`), #3483 (`11d619d3d`), and CI regression fix #3484 (`778fd4b7d`).
- Plan 10: PR [#3463](https://github.com/amruthpillai/reactive-resume/pull/3463), closed unmerged by maintainer direction;
issue [#2836 comment](https://github.com/amruthpillai/reactive-resume/issues/2836#issuecomment-5556080394) records not-planned rationale.
- Plan 16: PR [#3464](https://github.com/amruthpillai/reactive-resume/pull/3464), merged as
- Plan 10: PR [#3463](https://github.com/reactive-resume/reactive-resume/pull/3463), closed unmerged by maintainer direction;
issue [#2836 comment](https://github.com/reactive-resume/reactive-resume/issues/2836#issuecomment-5556080394) records not-planned rationale.
- Plan 16: PR [#3464](https://github.com/reactive-resume/reactive-resume/pull/3464), merged as
`999cd618cb2e54826aa860c298c7114045f8ebdd` after hosted checks passed.
- Plan 32: PR [#3465](https://github.com/amruthpillai/reactive-resume/pull/3465), merged as
- Plan 32: PR [#3465](https://github.com/reactive-resume/reactive-resume/pull/3465), merged as
`b85d285b69843612e9d7f0ab802248982e7bf0ea` after latest-main integration and hosted approval.
- Recovery hash hotfix: PR [#3466](https://github.com/amruthpillai/reactive-resume/pull/3466), merged as
- Recovery hash hotfix: PR [#3466](https://github.com/reactive-resume/reactive-resume/pull/3466), merged as
`695cdb851431a0fe7a17b05bbd9630129fdd0759`; canonical fixtures refreshed after Plan 15A changed default bytes.
- Plan 23A: PR [#3467](https://github.com/amruthpillai/reactive-resume/pull/3467), merged as
- Plan 23A: PR [#3467](https://github.com/reactive-resume/reactive-resume/pull/3467), merged as
`0fbeeeb4c48993333384e4d31a0950ab8bf91b01`; relevant E2E passed and unrelated baseline flakes were documented.
- Plan 28: PR [#3468](https://github.com/amruthpillai/reactive-resume/pull/3468), merged as
- Plan 28: PR [#3468](https://github.com/reactive-resume/reactive-resume/pull/3468), merged as
`38832014b969580d217be268257040ffc4f95ff6`; gradients remain unsupported and issue #3137 stays open.
- Plan 22: PR [#3469](https://github.com/amruthpillai/reactive-resume/pull/3469), merged as
- Plan 22: PR [#3469](https://github.com/reactive-resume/reactive-resume/pull/3469), merged as
`870388192e38a34e70ba036027b20e3ec789dba0`; generated references and recovery hashes were refreshed and rereviewed.
- Plan 08: PR [#3470](https://github.com/amruthpillai/reactive-resume/pull/3470), merged as
- Plan 08: PR [#3470](https://github.com/reactive-resume/reactive-resume/pull/3470), merged as
`744eaa902eeb90ea0473cf84549d71f51e7beab5`; broader custom-domain/TLS issue scope remains open.
- Plan 35: PR [#3471](https://github.com/amruthpillai/reactive-resume/pull/3471), merged as
- Plan 35: PR [#3471](https://github.com/reactive-resume/reactive-resume/pull/3471), merged as
`a6057abd7951a05c47b4785114f3e5eff670066e`; historical issue #2768 remains open/needs-info.
- Plan 19: PR [#3472](https://github.com/amruthpillai/reactive-resume/pull/3472), merged as
- Plan 19: PR [#3472](https://github.com/reactive-resume/reactive-resume/pull/3472), merged as
`ea97de5ec4e9adced7e83d6ff02e208727961887`; issue #3397 closed.
- Plan 34: PR [#3473](https://github.com/amruthpillai/reactive-resume/pull/3473), merged as
- Plan 34: PR [#3473](https://github.com/reactive-resume/reactive-resume/pull/3473), merged as
`2a4a1583be097290906a1252045c57e73b78b1a9`; issue #2611 closed.
- Plan 19 static-analysis follow-up: PR [#3474](https://github.com/amruthpillai/reactive-resume/pull/3474), merged as
- Plan 19 static-analysis follow-up: PR [#3474](https://github.com/reactive-resume/reactive-resume/pull/3474), merged as
`97f34b7ccda73eb8d767205741d68465cbc1c0c1`.
- Plan 33A: PR [#3475](https://github.com/amruthpillai/reactive-resume/pull/3475), merged as
- Plan 33A: PR [#3475](https://github.com/reactive-resume/reactive-resume/pull/3475), merged as
`578cb496aa326751dd2ab1bea53db868daa35908`; issue #2689 remains open at its explicit visual/product gate.
- Imported-table E2E repair: PR [#3476](https://github.com/amruthpillai/reactive-resume/pull/3476), merged as
- Imported-table E2E repair: PR [#3476](https://github.com/reactive-resume/reactive-resume/pull/3476), merged as
`66c25efe18775f91640e66d1b2c6868bc70f0b55`; exact Plan 16 table topology remains enforced.
- Plan 21: PR [#3477](https://github.com/amruthpillai/reactive-resume/pull/3477), merged as
- Plan 21: PR [#3477](https://github.com/reactive-resume/reactive-resume/pull/3477), merged as
`368858a56fc9c3152b540c39829908e2c3ea04c5`; issue #3060 closed.
- Plan 23B: PR [#3478](https://github.com/amruthpillai/reactive-resume/pull/3478), merged as
- Plan 23B: PR [#3478](https://github.com/reactive-resume/reactive-resume/pull/3478), merged as
`5e8284e49fcca1fc0d56660205872038bd307c84`; issue #3350 remains open because installed renderer clips oversized
non-wrapping items.
- Plan 27A: PR [#3479](https://github.com/amruthpillai/reactive-resume/pull/3479), merged as
- Plan 27A: PR [#3479](https://github.com/reactive-resume/reactive-resume/pull/3479), merged as
`f783908b0e0054869e4ecdae3f4cad75402e2fd5`; issue #3377 remains open pending controlled cold-server egress proof.
- Plan 24A: PR [#3480](https://github.com/amruthpillai/reactive-resume/pull/3480), merged as
- Plan 24A: PR [#3480](https://github.com/reactive-resume/reactive-resume/pull/3480), merged as
`cdb7bdd2fe06d491eb57f8c1aa93fa48011acdb5`; #3155/#2841 remain open pending numeric date-column geometry.
- Plan 31 HTML residual: PR [#3481](https://github.com/amruthpillai/reactive-resume/pull/3481), merged as
- Plan 31 HTML residual: PR [#3481](https://github.com/reactive-resume/reactive-resume/pull/3481), merged as
`3e62a1d604041e3769a7fc8f5b2ec8224d0663a4`; #2844 remains open for public/export/manual accessibility evidence.
- Plan 30 diagnostic: PR [#3482](https://github.com/amruthpillai/reactive-resume/pull/3482), merged as
- Plan 30 diagnostic: PR [#3482](https://github.com/reactive-resume/reactive-resume/pull/3482), merged as
`10eb3bdbc77a903a792f1e6bfa7cba0db9dea130`; #2845 remains open pending vendor-side evidence, and current measurements do not justify a preset.
- Plan 18 diagnostic: PR [#3483](https://github.com/amruthpillai/reactive-resume/pull/3483), merged as
- Plan 18 diagnostic: PR [#3483](https://github.com/reactive-resume/reactive-resume/pull/3483), merged as
`11d619d3d9c7da87bb38463147a7aac4bc35b092`; #2683 remains open pending original JSON/browser evidence, and no synthetic mismatch justified a runtime change.
- Geometry E2E CI regression: PR [#3484](https://github.com/amruthpillai/reactive-resume/pull/3484), merged as
- Geometry E2E CI regression: PR [#3484](https://github.com/reactive-resume/reactive-resume/pull/3484), merged as
`778fd4b7d9a2de07852f32d87713c4a6187cf4d4`; ordinary baseline runs skip both destructive diagnostics unless explicitly opted in.
+4 -4
View File
@@ -35,7 +35,7 @@ Reactive Resume is a free and open-source resume builder that makes it easy to c
<AccordionGroup>
<Accordion title="Completely Free & Open Source" icon="code-branch">
Reactive Resume is licensed under MIT. You can use it for free, modify it, and even host your own instance. The
entire codebase is available on [GitHub](https://github.com/reactive-resume/app).
entire codebase is available on [GitHub](https://github.com/reactive-resume/reactive-resume).
</Accordion>
<Accordion title="Multiple Templates" icon="grid-2">
@@ -91,10 +91,10 @@ Use the hosted version, or run your own instance.
## Community & support
<CardGroup cols={2}>
<Card title="GitHub" icon="github" href="https://github.com/reactive-resume/app">
<Card title="GitHub" icon="github" href="https://github.com/reactive-resume/reactive-resume">
Star the repo, report reproducible bugs, propose features, and contribute to the project.
</Card>
<Card title="GitHub Discussions" icon="comments" href="https://github.com/reactive-resume/app/discussions/categories/q-a">
<Card title="GitHub Discussions" icon="comments" href="https://github.com/reactive-resume/reactive-resume/discussions/categories/q-a">
Ask questions about setup, configuration, and using Reactive Resume.
</Card>
<Card title="Reddit" icon="reddit" href="https://reddit.com/r/reactiveresume">
@@ -109,6 +109,6 @@ Use the hosted version, or run your own instance.
</CardGroup>
<Note>
**Need help?** Start a [GitHub Discussion](https://github.com/reactive-resume/app/discussions/categories/q-a).
**Need help?** Start a [GitHub Discussion](https://github.com/reactive-resume/reactive-resume/discussions/categories/q-a).
GitHub Issues are reserved for reproducible bugs and actionable feature proposals.
</Note>
+2 -2
View File
@@ -72,7 +72,7 @@ Before you begin, ensure you have the following installed:
<Steps>
<Step title="Clone the Repository">
```bash
git clone https://github.com/reactive-resume/app.git reactive-resume
git clone https://github.com/reactive-resume/reactive-resume.git reactive-resume
cd reactive-resume
```
</Step>
@@ -232,6 +232,6 @@ A complete list of the environment variables you can configure:
</CardGroup>
<Note>
**Having trouble?** Check our [GitHub Issues](https://github.com/reactive-resume/app/issues) or reach out via
**Having trouble?** Check our [GitHub Issues](https://github.com/reactive-resume/reactive-resume/issues) or reach out via
[email](mailto:hello@amruthpillai.com).
</Note>
@@ -77,4 +77,4 @@ problem. That requires a separate session, create, list, and reload diagnosis; a
## Questions or issues?
If you run into problems accessing v4, or have questions about migrating your resumes, open an issue on [GitHub](https://github.com/reactive-resume/app/issues).
If you run into problems accessing v4, or have questions about migrating your resumes, open an issue on [GitHub](https://github.com/reactive-resume/reactive-resume/issues).
+1 -1
View File
@@ -39,7 +39,7 @@ If the servers are under high load or unreachable:
</Step>
<Step title="Check for announcements">
For major outages or planned maintenance, announcements may be posted on our [GitHub repository](https://github.com/reactive-resume/app).
For major outages or planned maintenance, announcements may be posted on our [GitHub repository](https://github.com/reactive-resume/reactive-resume).
</Step>
</Steps>
+1 -1
View File
@@ -9,7 +9,7 @@ Reactive Resume is open-source software. The project is published under the **MI
If you are running a modified/self-hosted instance, you may have additional notices or third-party licenses that apply (for example, fonts, icons, or other bundled assets).
For the upstream repository, see: [reactive-resume/app](https://github.com/reactive-resume/app)
For the upstream repository, see: [reactive-resume/reactive-resume](https://github.com/reactive-resume/reactive-resume)
---
+6 -6
View File
@@ -23,17 +23,17 @@ two complete ResumeData objects under `onePage` and `overflow`; neither is an of
Access/revalidation date: **2026-09-06**. Research base: `b85d285b69843612e9d7f0ab802248982e7bf0ea`.
Planning authority: commit `a2557b2ad40e06e1e63eb655f286e6a78fe6bf0d`,
[Plan 33](https://github.com/amruthpillai/reactive-resume/blob/a2557b2ad40e06e1e63eb655f286e6a78fe6bf0d/plans/33-europass-template.md)
[Plan 33](https://github.com/reactive-resume/reactive-resume/blob/a2557b2ad40e06e1e63eb655f286e6a78fe6bf0d/plans/33-europass-template.md)
and its recorded decisions. Approval covers this research/proposal unit; concrete visual approval remains open.
Read-only `gh issue view 2689` confirmed the [issue](https://github.com/amruthpillai/reactive-resume/issues/2689)
Read-only `gh issue view 2689` confirmed the [issue](https://github.com/reactive-resume/reactive-resume/issues/2689)
is open, last updated 2026-08-16. Its request for a built-in option is relevant; assertions about compulsory
formats are not adopted. The linked community converter remains third-party work, not an import contract.
The complete open-PR list returned four PRs: [#3455](https://github.com/amruthpillai/reactive-resume/pull/3455)
(planning), [#3456](https://github.com/amruthpillai/reactive-resume/pull/3456) (execution ledger),
[#3467](https://github.com/amruthpillai/reactive-resume/pull/3467) (authored-page guidance), and
[#3468](https://github.com/amruthpillai/reactive-resume/pull/3468) (stylesheet diagnostics).
The complete open-PR list returned four PRs: [#3455](https://github.com/reactive-resume/reactive-resume/pull/3455)
(planning), [#3456](https://github.com/reactive-resume/reactive-resume/pull/3456) (execution ledger),
[#3467](https://github.com/reactive-resume/reactive-resume/pull/3467) (authored-page guidance), and
[#3468](https://github.com/reactive-resume/reactive-resume/pull/3468) (stylesheet diagnostics).
None proposed a Europass renderer. Pagination guidance is adjacent work; no shared source is changed here.
The schema still has 15 template IDs and no Europass ID. The plan's targeted drift check from `7a98f6662`
+4 -4
View File
@@ -28,7 +28,7 @@ planned. Follow the [Docker Compose quickstart](#quickstart-using-docker-compose
You can pull the latest app image from:
- Docker Hub: `amruthpillai/reactive-resume:latest`
- GitHub Container Registry: `ghcr.io/reactive-resume/app:latest`
- GitHub Container Registry: `ghcr.io/reactive-resume/reactive-resume:latest`
## Minimum requirements
@@ -191,7 +191,7 @@ services:
reactive-resume:
image: amruthpillai/reactive-resume:latest
# image: ghcr.io/reactive-resume/app:latest
# image: ghcr.io/reactive-resume/reactive-resume:latest
restart: unless-stopped
ports:
- "3000:3000"
@@ -216,7 +216,7 @@ volumes:
</CodeGroup>
<Tip>
Prefer pulling from Docker Hub? Keep <code>amruthpillai/reactive-resume:latest</code>. Prefer GHCR? Swap it to <code>ghcr.io/reactive-resume/app:latest</code>.
Prefer pulling from Docker Hub? Keep <code>amruthpillai/reactive-resume:latest</code>. Prefer GHCR? Swap it to <code>ghcr.io/reactive-resume/reactive-resume:latest</code>.
</Tip>
<Note>
@@ -254,7 +254,7 @@ docker compose logs -f reactive-resume
Use your platform's generic container configuration to create two separately managed containers: one for Reactive
Resume and one for PostgreSQL. No official Unraid Community Applications template is provided.
- Use the official `amruthpillai/reactive-resume:latest` or `ghcr.io/reactive-resume/app:latest` image for the
- Use the official `amruthpillai/reactive-resume:latest` or `ghcr.io/reactive-resume/reactive-resume:latest` image for the
app container.
- Map the app's container port `3000` to the host port you want to use.
- Connect both containers to a private container network. Set the host in `DATABASE_URL` to the PostgreSQL container or
+3 -3
View File
@@ -15,7 +15,7 @@ They go further than the basic setup in the [Self-hosting with Docker](/self-hos
<Info>
**Share your setup.** If you have a working configuration that isn't covered here, I'd love to include it. [Open a
pull request](https://github.com/reactive-resume/app) with your example added to this page.
pull request](https://github.com/reactive-resume/reactive-resume) with your example added to this page.
</Info>
---
@@ -352,7 +352,7 @@ services:
replicas: 1
reactive_resume:
image: ghcr.io/reactive-resume/app:latest
image: ghcr.io/reactive-resume/reactive-resume:latest
networks:
- traefik_network
- reactive_resume_network
@@ -457,7 +457,7 @@ Have a different deployment setup that works well? Consider contributing it here
- Podman configurations
- Cloud-specific deployments (AWS ECS, Google Cloud Run, Azure Container Apps)
To contribute, [open a pull request](https://github.com/reactive-resume/app) with your example added to this page. Include:
To contribute, [open a pull request](https://github.com/reactive-resume/reactive-resume) with your example added to this page. Include:
1. A brief description of when/why someone would use this setup
2. The complete Docker Compose (or equivalent) configuration
+1 -1
View File
@@ -150,7 +150,7 @@ To run the migration scripts, you need the following installed on your host mach
<Card title="Reactive Resume Source Code">
Clone the Reactive Resume repository and check out the last tag that includes the migration scripts:
```bash
git clone https://github.com/reactive-resume/app.git reactive-resume
git clone https://github.com/reactive-resume/reactive-resume.git reactive-resume
cd reactive-resume
git checkout tags/v5.0.20
pnpm install
+1 -1
View File
@@ -5,7 +5,7 @@
"description": "Reactive Resume API",
"license": {
"name": "MIT",
"url": "https://github.com/reactive-resume/app/blob/main/LICENSE"
"url": "https://github.com/reactive-resume/reactive-resume/blob/main/LICENSE"
},
"contact": {
"name": "Amruth Pillai",
@@ -188,13 +188,13 @@ function createRootSeoMarkup(canonicalUrl: string) {
price: "0",
priceCurrency: "USD",
},
codeRepository: "https://github.com/amruthpillai/reactive-resume",
codeRepository: "https://github.com/reactive-resume/reactive-resume",
},
{
"@type": "Project",
name: "Reactive Resume",
url: canonicalUrl,
sameAs: ["https://github.com/amruthpillai/reactive-resume"],
sameAs: ["https://github.com/reactive-resume/reactive-resume"],
},
{
"@type": "FAQPage",
@@ -248,7 +248,7 @@ export async function generateOpenApiSpec({ appUrl, version }: { appUrl: string;
title: "Reactive Resume",
version,
description: "Reactive Resume API",
license: { name: "MIT", url: "https://github.com/amruthpillai/reactive-resume/blob/main/LICENSE" },
license: { name: "MIT", url: "https://github.com/reactive-resume/reactive-resume/blob/main/LICENSE" },
contact: { name: "Amruth Pillai", email: "hello@amruthpillai.com", url: "https://amruthpillai.com" },
},
servers: [{ url: `${appUrl}/api/openapi` }],
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -50,7 +50,7 @@ Open [rxresu.me](https://rxresu.me) to create a resume, or follow [Creating your
<Card title="Use the hosted app" icon="rocket" href="https://rxresu.me">
Open the official Reactive Resume instance.
</Card>
<Card title="Source code" icon="github" href="https://github.com/reactive-resume/app">
<Card title="Source code" icon="github" href="https://github.com/reactive-resume/reactive-resume">
View the project repository.
</Card>
<Card title="License" icon="scale-balanced" href="/legal/license">
@@ -7,7 +7,7 @@ Reactive Resume is an open-source resume builder. The source code is public, the
## What open source means here
The project repository is on [GitHub](https://github.com/reactive-resume/app). You can read the code, report issues, contribute improvements, and see how the builder, the API, the self-hosting setup, and the documentation are put together.
The project repository is on [GitHub](https://github.com/reactive-resume/reactive-resume). You can read the code, report issues, contribute improvements, and see how the builder, the API, the self-hosting setup, and the documentation are put together.
The license is documented in [License](/legal/license).
@@ -44,7 +44,7 @@ To contribute or to understand the codebase, start with the contributor docs. Th
<Card title="Translations" icon="language" href="/contributing/translations">
Help translate the app.
</Card>
<Card title="GitHub repository" icon="github" href="https://github.com/reactive-resume/app">
<Card title="GitHub repository" icon="github" href="https://github.com/reactive-resume/reactive-resume">
Browse issues, pull requests, and source code.
</Card>
</CardGroup>
@@ -21,7 +21,7 @@ Do not treat public sharing as access control. Use password protection, or keep
## Open source and self-hosting
The source code is on [GitHub](https://github.com/reactive-resume/app), so you can read how the application works. If you need direct control over infrastructure, storage, auth providers, and deployment policy, run your own instance.
The source code is on [GitHub](https://github.com/reactive-resume/reactive-resume), so you can read how the application works. If you need direct control over infrastructure, storage, auth providers, and deployment policy, run your own instance.
Start with:
+1 -1
View File
@@ -11,7 +11,7 @@
},
"repository": {
"type": "git",
"url": "https://github.com/reactive-resume/app.git"
"url": "https://github.com/reactive-resume/reactive-resume.git"
},
"engines": {
"node": ">=24"
@@ -3,7 +3,7 @@ import { db } from "@reactive-resume/db/client";
import * as schema from "@reactive-resume/db/schema";
const CACHE_DURATION_MS = 6 * 60 * 60 * 1000; // 6 hours
const GITHUB_API_URL = "https://api.github.com/repos/reactive-resume/app";
const GITHUB_API_URL = "https://api.github.com/repos/reactive-resume/reactive-resume";
const GITHUB_REQUEST_TIMEOUT_MS = 5_000;
const GITHUB_REQUEST_MAX_ATTEMPTS = 2;
+1 -1
View File
@@ -48,7 +48,7 @@ You could wire the bridge yourself with a raw `@deepseek-ai/dsh-mcp-client` row.
## Development
This package lives in the [Reactive Resume monorepo](https://github.com/reactive-resume/app) at `packages/dsh-plugin`, next to `packages/mcp` — the server it bridges. `src/tool-names.test.ts` checks every tool the prompt guide names against `@reactive-resume/mcp/tool-names`, so renaming a tool breaks this package in the same pull request.
This package lives in the [Reactive Resume monorepo](https://github.com/reactive-resume/reactive-resume) at `packages/dsh-plugin`, next to `packages/mcp` — the server it bridges. `src/tool-names.test.ts` checks every tool the prompt guide names against `@reactive-resume/mcp/tool-names`, so renaming a tool breaks this package in the same pull request.
```bash
pnpm --filter dsh-plugin-reactive-resume test
+3 -3
View File
@@ -13,12 +13,12 @@
"author": "Amruth Pillai",
"repository": {
"type": "git",
"url": "git+https://github.com/reactive-resume/app.git",
"url": "git+https://github.com/reactive-resume/reactive-resume.git",
"directory": "packages/dsh-plugin"
},
"homepage": "https://github.com/reactive-resume/app/tree/main/packages/dsh-plugin#readme",
"homepage": "https://github.com/reactive-resume/reactive-resume/tree/main/packages/dsh-plugin#readme",
"bugs": {
"url": "https://github.com/reactive-resume/app/issues"
"url": "https://github.com/reactive-resume/reactive-resume/issues"
},
"type": "module",
"main": "dist/index.js",
@@ -73,7 +73,7 @@ const renderHeaderBoxes = async (template: Template): Promise<string[]> => {
.map((node) => nodeText(node));
};
// https://github.com/amruthpillai/reactive-resume/issues/3349: the resolved `item-header` style used
// https://github.com/reactive-resume/reactive-resume/issues/3349: the resolved `item-header` style used
// to be bound onto the first child that happened to be a literal `View`, so sections whose header
// starts with anything else lost it entirely and stacked headers only styled their first row.
describe("item-header binding", () => {
+1 -1
View File
@@ -2,7 +2,7 @@
**Planned at:** `7a98f6662ffc6fd5a1a7281c30ab3829fe3722ec` (2026-09-05). **Status:** needs_reproduction; no common current root cause proved.
**Priority:** P1 investigation. **Effort:** 1–2 days diagnosis; 0.5–2 days per proved fix. **Risk:** High: account ownership and authentication.
**Issues:** [#3166](https://github.com/amruthpillai/reactive-resume/issues/3166), [#3164](https://github.com/amruthpillai/reactive-resume/issues/3164), [#3078](https://github.com/amruthpillai/reactive-resume/issues/3078), [#3046](https://github.com/amruthpillai/reactive-resume/issues/3046), [#2897](https://github.com/amruthpillai/reactive-resume/issues/2897), [#2837](https://github.com/amruthpillai/reactive-resume/issues/2837).
**Issues:** [#3166](https://github.com/reactive-resume/reactive-resume/issues/3166), [#3164](https://github.com/reactive-resume/reactive-resume/issues/3164), [#3078](https://github.com/reactive-resume/reactive-resume/issues/3078), [#3046](https://github.com/reactive-resume/reactive-resume/issues/3046), [#2897](https://github.com/reactive-resume/reactive-resume/issues/2897), [#2837](https://github.com/reactive-resume/reactive-resume/issues/2837).
## Execution contract
+2 -2
View File
@@ -3,7 +3,7 @@
**Planned at:** `7a98f6662ffc6fd5a1a7281c30ab3829fe3722ec` (2026-09-05).
**Status:** agent-selected scoped recovery plan; production access and source availability gated. **Category:** direction.
**Priority:** P2. **Effort:** 0.5–1 day verification; recovery effort unknown until backups and policy exist. **Risk:** High: private account data and irreversible reconciliation.
**Issues:** [#3181](https://github.com/amruthpillai/reactive-resume/issues/3181), [#2760](https://github.com/amruthpillai/reactive-resume/issues/2760).
**Issues:** [#3181](https://github.com/reactive-resume/reactive-resume/issues/3181), [#2760](https://github.com/reactive-resume/reactive-resume/issues/2760).
## Execution contract
@@ -42,7 +42,7 @@ No common root cause proved. #3181 is a hosted data availability/retention decis
## Verification steps before accessing private data
1. Read both issue bodies/comments through the authenticated issue tracker and preserve a sanitized observation table with deployment/version, date range, old/new account method, and missing versus invisible records. **Verify:** `rtk proxy gh issue view 3181 --repo amruthpillai/reactive-resume --json number,title,body,comments` and corresponding command for `2760` return the intended issue. Do not paste their personal contact information into output files.
1. Read both issue bodies/comments through the authenticated issue tracker and preserve a sanitized observation table with deployment/version, date range, old/new account method, and missing versus invisible records. **Verify:** `rtk proxy gh issue view 3181 --repo reactive-resume/reactive-resume --json number,title,body,comments` and corresponding command for `2760` return the intended issue. Do not paste their personal contact information into output files.
2. Check current source drift and the owner predicate. **Verify:** `rtk proxy rg -n 'eq\(schema.resume.userId, input.userId\)|resume_slug_user_id_unique' packages/api/src/features/resume/service.ts` finds the ownership/uniqueness boundaries. In a disposable account, create `Recovery Fixture`, reload list with empty tags, then fetch by ID as owner and another user. Browser pattern: `tests/e2e/specs/resume-lifecycle.spec.ts`; API pattern: `packages/api/src/features/resume/service.test.ts`. Expected: only owner sees the created record; no historical account data involved.
3. With an authorized operator, inspect **read-only metadata** for snapshot availability, capture date, user mapping existence and counts for a verified owner. Do not expose DB URLs or row contents. Verification artifact must explicitly say `ownerVerified`, `sourceAvailable`, `sourceTimestamp`, `targetTimestamp`, and whether both versions differ. If any value is unknown, mark unknown rather than inventing it. No production query or recovery is implied by local filesystem access.
4. For #2760, compare create response's returned resume ID, authenticated session user ID, unfiltered list response, and UI display in the same session. Redact identifiers before committing evidence. **Verify:** run the service and auth-export tests below; a future regression must isolate response omitted by server versus response hidden by client. If the server returns the record, narrow follow-up to the owning web list/cache seam rather than migration.
+1 -1
View File
@@ -2,7 +2,7 @@
**Planned at:** `7a98f6662ffc6fd5a1a7281c30ab3829fe3722ec` (2026-09-05). **Status:** historical confirmed defect fixed; remaining deployment/client evidence needed.
**Priority:** P1 verification. **Effort:** 0.5–1 day local verification; operator retest dependent. **Risk:** High: OAuth security and schema evolution.
**Issues:** [#3398](https://github.com/amruthpillai/reactive-resume/issues/3398), [#3153](https://github.com/amruthpillai/reactive-resume/issues/3153).
**Issues:** [#3398](https://github.com/reactive-resume/reactive-resume/issues/3398), [#3153](https://github.com/reactive-resume/reactive-resume/issues/3153).
## Execution contract
+1 -1
View File
@@ -2,7 +2,7 @@
**Planned at:** `7a98f6662ffc6fd5a1a7281c30ab3829fe3722ec` (2026-09-05). **Status:** needs_reproduction for exact providers; current contract baseline verified.
**Priority:** P1 diagnosis. **Effort:** 1–2 days matrix; 0.5–2 days per adapter defect. **Risk:** Medium/high: external requests, private documents, credential handling.
**Issues:** [#2732](https://github.com/amruthpillai/reactive-resume/issues/2732), [#2766](https://github.com/amruthpillai/reactive-resume/issues/2766), [#2723](https://github.com/amruthpillai/reactive-resume/issues/2723), [#2708](https://github.com/amruthpillai/reactive-resume/issues/2708).
**Issues:** [#2732](https://github.com/reactive-resume/reactive-resume/issues/2732), [#2766](https://github.com/reactive-resume/reactive-resume/issues/2766), [#2723](https://github.com/reactive-resume/reactive-resume/issues/2723), [#2708](https://github.com/reactive-resume/reactive-resume/issues/2708).
## Execution contract
+1 -1
View File
@@ -2,7 +2,7 @@
**Planned at:** `7a98f6662ffc6fd5a1a7281c30ab3829fe3722ec` (2026-09-05). **Status:** needs_reproduction; database absence observed historically, migration defect unproved.
**Priority:** P1 deployment investigation. **Effort:** 0.5–1 day with deployment metadata; 1–2 days if migration repair proved. **Risk:** High: database integrity and stored credentials.
**Issues:** [#3152](https://github.com/amruthpillai/reactive-resume/issues/3152).
**Issues:** [#3152](https://github.com/reactive-resume/reactive-resume/issues/3152).
## Execution contract
+1 -1
View File
@@ -2,7 +2,7 @@
**Planned at:** `7a98f6662ffc6fd5a1a7281c30ab3829fe3722ec` (2026-09-05). **Status:** needs_reproduction after historical ACL fix; two distinct failure boundaries.
**Priority:** P1 diagnosis. **Effort:** 1–2 days controlled storage matrix; 1–2 days per proved defect. **Risk:** Medium/high: public/private object boundaries and external image fetching.
**Issues:** [#2684](https://github.com/amruthpillai/reactive-resume/issues/2684), [#2778](https://github.com/amruthpillai/reactive-resume/issues/2778).
**Issues:** [#2684](https://github.com/reactive-resume/reactive-resume/issues/2684), [#2778](https://github.com/reactive-resume/reactive-resume/issues/2778).
## Execution contract
+1 -1
View File
@@ -3,7 +3,7 @@
**Planned at:** `7a98f6662ffc6fd5a1a7281c30ab3829fe3722ec` (2026-09-05).
**Status:** AIO request declined by maintainer; bounded documentation plan ready. **Category:** docs.
**Priority:** P2 documentation. **Effort:** 0.5–1 day. **Risk:** Low; deployment commands must remain accurate.
**Issues:** [#2722](https://github.com/amruthpillai/reactive-resume/issues/2722).
**Issues:** [#2722](https://github.com/reactive-resume/reactive-resume/issues/2722).
## Execution contract
+1 -1
View File
@@ -3,7 +3,7 @@
**Planned at:** `7a98f6662ffc6fd5a1a7281c30ab3829fe3722ec` (2026-09-05).
**Status:** agent-selected self-hosted root mode; ready for future implementation. **Category:** feature.
**Priority:** P2. **Effort:** 2–4 days for optional root mode and production regression. **Risk:** High: private/public boundaries, origin and route handling.
**Issues:** [#2669](https://github.com/amruthpillai/reactive-resume/issues/2669).
**Issues:** [#2669](https://github.com/reactive-resume/reactive-resume/issues/2669).
## Execution contract
+1 -1
View File
@@ -3,7 +3,7 @@
**Planned at:** `7a98f6662ffc6fd5a1a7281c30ab3829fe3722ec` (2026-09-05).
**Status:** agent-selected documentation plan; ready for future execution. **Category:** docs.
**Priority:** P2. **Effort:** 0.5–1 day documentation and synthetic workflow verification. **Risk:** Low for documentation; private data must stay local during verification.
**Issue:** [#2705](https://github.com/amruthpillai/reactive-resume/issues/2705).
**Issue:** [#2705](https://github.com/reactive-resume/reactive-resume/issues/2705).
## Execution contract
+2 -2
View File
@@ -3,14 +3,14 @@
**Planned at:** `7a98f6662ffc6fd5a1a7281c30ab3829fe3722ec` (2026-09-05).
**Status:** superseded by maintainer decision on 2026-09-06; do not implement. **Category:** declined feature.
**Priority:** P2. **Effort:** 2–4 days for prospective notices and transaction tests. **Risk:** High: attribution, privacy and failed-request counting.
**Issue:** [#2836](https://github.com/amruthpillai/reactive-resume/issues/2836).
**Issue:** [#2836](https://github.com/reactive-resume/reactive-resume/issues/2836).
## Final disposition
Maintainer declined this feature after planning. Retired-link support is not planned because redirect lifecycle,
retention, slug reuse, ownership, privacy-safe tracking, and invalid-link error handling create disproportionate
ongoing overhead. PR #3463 was closed unmerged, and the decision is recorded in
[issue #2836](https://github.com/amruthpillai/reactive-resume/issues/2836#issuecomment-5556080394).
[issue #2836](https://github.com/reactive-resume/reactive-resume/issues/2836#issuecomment-5556080394).
Remaining content below is retained as historical planning evidence only. It is non-executable and must not be
used to start implementation.
+1 -1
View File
@@ -3,7 +3,7 @@
**Planned at:** `7a98f6662ffc6fd5a1a7281c30ab3829fe3722ec` (2026-09-05).
**Status:** agent-selected documentation plan; ready for future execution. **Category:** docs.
**Priority:** P2. **Effort:** 0.5 day documentation/history verification. **Risk:** Low: factual documentation only.
**Issue:** [#3010](https://github.com/amruthpillai/reactive-resume/issues/3010).
**Issue:** [#3010](https://github.com/reactive-resume/reactive-resume/issues/3010).
## Execution contract
+1 -1
View File
@@ -4,7 +4,7 @@
## Status and intent
- **Issues:** [#3323](https://github.com/amruthpillai/reactive-resume/issues/3323), [#3290](https://github.com/amruthpillai/reactive-resume/issues/3290), [#3033](https://github.com/amruthpillai/reactive-resume/issues/3033), [#3007](https://github.com/amruthpillai/reactive-resume/issues/3007), [#2609](https://github.com/amruthpillai/reactive-resume/issues/2609).
- **Issues:** [#3323](https://github.com/reactive-resume/reactive-resume/issues/3323), [#3290](https://github.com/reactive-resume/reactive-resume/issues/3290), [#3033](https://github.com/reactive-resume/reactive-resume/issues/3033), [#3007](https://github.com/reactive-resume/reactive-resume/issues/3007), [#2609](https://github.com/reactive-resume/reactive-resume/issues/2609).
- **Planned at:** `7a98f6662`, 2026-09-05. Priority P1; effort M per reproduced cause; risk medium. Confidence low for historical root causes, high for current source paths below.
- **Readiness:** Investigation ready; no runtime fix selected. Missing original resume/browser/deployment fixtures are material blockers to historical resolution.
- **Dependencies:** None for diagnosis. Coordinate persistence findings with the builder draft owner; font-specific findings with Plan 13. Share reproduction utilities only, unless two reports prove the same failing boundary.
+1 -1
View File
@@ -4,7 +4,7 @@
## Status
- **Issues:** [#3249](https://github.com/amruthpillai/reactive-resume/issues/3249), [#3159](https://github.com/amruthpillai/reactive-resume/issues/3159), [#3147](https://github.com/amruthpillai/reactive-resume/issues/3147), [#3093](https://github.com/amruthpillai/reactive-resume/issues/3093), [#3089](https://github.com/amruthpillai/reactive-resume/issues/3089), [#2988](https://github.com/amruthpillai/reactive-resume/issues/2988).
- **Issues:** [#3249](https://github.com/reactive-resume/reactive-resume/issues/3249), [#3159](https://github.com/reactive-resume/reactive-resume/issues/3159), [#3147](https://github.com/reactive-resume/reactive-resume/issues/3147), [#3093](https://github.com/reactive-resume/reactive-resume/issues/3093), [#3089](https://github.com/reactive-resume/reactive-resume/issues/3089), [#2988](https://github.com/reactive-resume/reactive-resume/issues/2988).
- **Planned at:** `7a98f6662`, 2026-09-05. Priority P2; effort M per isolated defect; risk high for dependency metric/glyph changes, medium for template-local geometry.
- **Confidence:** High for current code and retained regression behavior; low/medium for historical residuals without original fixtures.
- **Readiness:** Diagnostic work ready; no speculative font replacement, global line-height correction, or glyph-cache reset approved.
+2 -2
View File
@@ -4,7 +4,7 @@
## Status and evidence
- **Issue:** [#3275](https://github.com/amruthpillai/reactive-resume/issues/3275).
- **Issue:** [#3275](https://github.com/reactive-resume/reactive-resume/issues/3275).
- **Planned at:** `7a98f6662`, 2026-09-05. Priority P2; effort L; risk high for shaping/fallback changes, medium for template-local alignment.
- **Readiness/confidence:** Diagnostic plan ready; historical cause unverified. Report says self-hosted Arabic PDF direction, alignment, shaping, and section layout are inconsistent, with Hebrew/Persian also affected. It supplies a screenshot but no exact JSON, font, template, or deployment version.
- **Prior work:** #3099 addressed Rhyhorn and does not establish all-template/script correctness. #3447 corrected a separately reproduced builder canvas bug: inherited RTL canvas direction changed physical text anchors. Two Arabic-locale controls differed by 35,009 pixels before that fix, English controls matched; setting canvas context direction after resize restored exact parity. Broader exported-PDF claims remain open.
@@ -53,7 +53,7 @@ Add `<p>...</p>`, `<ol><li>...</li><li>Second 123</li></ol>`, a multi-line headi
### 1. Preserve exact report data and locate the failing surface
Read issue body/comments using `rtk proxy gh issue view 3275 --repo amruthpillai/reactive-resume --json body,comments`; do not post a comment. Required fixture: sanitized JSON retaining locale/font/styles/template, actual exported PDF, browser/build, and identified incorrect words/regions. If absent, record exact limits and run controlled diagnostics only.
Read issue body/comments using `rtk proxy gh issue view 3275 --repo reactive-resume/reactive-resume --json body,comments`; do not post a comment. Required fixture: sanitized JSON retaining locale/font/styles/template, actual exported PDF, browser/build, and identified incorrect words/regions. If absent, record exact limits and run controlled diagnostics only.
Generate browser and server PDFs from identical saved data. Compare actual preview to an independent render of each downloaded PDF. If only preview differs, retain exact PDF bytes and investigate viewer code; if both PDFs are wrong, proceed to shaping/layout. If only one generated PDF is wrong, compare selected font files/cache state before template changes.
+1 -1
View File
@@ -4,7 +4,7 @@
## Status and issue coverage
- **Issues:** [#3168](https://github.com/amruthpillai/reactive-resume/issues/3168), [#3088](https://github.com/amruthpillai/reactive-resume/issues/3088), [#2794](https://github.com/amruthpillai/reactive-resume/issues/2794), [#2782](https://github.com/amruthpillai/reactive-resume/issues/2782).
- **Issues:** [#3168](https://github.com/reactive-resume/reactive-resume/issues/3168), [#3088](https://github.com/reactive-resume/reactive-resume/issues/3088), [#2794](https://github.com/reactive-resume/reactive-resume/issues/2794), [#2782](https://github.com/reactive-resume/reactive-resume/issues/2782).
- **Planned at:** `7a98f6662`, 2026-09-05. Priority P2; effort M–L; risk medium (rendering) / high (storage and destructive cropping). Confidence medium for existing behavior, low for historical root causes.
- **Readiness:** Diagnostics ready; #2782 implementation direction ready under delegated routine judgment. No additional product answer required for the bounded fit selector. Historical reporter equivalence still requires the missing source fixture.
- **Dependencies:** Plan 06 owns upload/storage delivery if network evidence points there. Plan 13 owns font/spacing regressions. Do not duplicate either fix merely because the symptom appears near a picture.
+3 -3
View File
@@ -4,7 +4,7 @@
## Status
- **Issue:** [#3196](https://github.com/amruthpillai/reactive-resume/issues/3196).
- **Issue:** [#3196](https://github.com/reactive-resume/reactive-resume/issues/3196).
- **Planned at:** `7a98f6662`, 2026-09-05. Rendering source remains identical in the planning checkout.
- **Priority / effort / risk:** P1 / M–L / high for editor changes, medium for renderer compatibility. Incorrect normalization destroys authored structure.
- **Confidence:** High for the two controlled limitations below; low for their equivalence to the original report.
@@ -13,7 +13,7 @@
## Evidence, impact, and limits
The reporter used Ditgar on cloud, imported JSON, then updated a resume whose table lost its grid. The screenshot still shows text in three columns. No exact HTML/JSON or application version was supplied. [The maintainer's clarification](https://github.com/amruthpillai/reactive-resume/issues/3196#issuecomment-5552909919) explicitly distinguishes merged #3438, which fixed complete loss of text inside otherwise unrecognized semantic HTML wrappers. That fix does not establish border correctness. The custom-section-heading concern is separate and outside this plan.
The reporter used Ditgar on cloud, imported JSON, then updated a resume whose table lost its grid. The screenshot still shows text in three columns. No exact HTML/JSON or application version was supplied. [The maintainer's clarification](https://github.com/reactive-resume/reactive-resume/issues/3196#issuecomment-5552909919) explicitly distinguishes merged #3438, which fixed complete loss of text inside otherwise unrecognized semantic HTML wrappers. That fix does not establish border correctness. The custom-section-heading concern is separate and outside this plan.
A fresh controlled production probe at the planned source revision established:
@@ -126,7 +126,7 @@ Routine judgments do not need separate answers: preserve source while unsupporte
### 2. Obtain and classify the historical fixture
Read the existing issue through `rtk proxy gh issue view 3196 --repo amruthpillai/reactive-resume --json body,comments`. Do not post a new comment. If no source arrives, record “historical equivalence unverified” and continue only the independently authorized data-loss repair.
Read the existing issue through `rtk proxy gh issue view 3196 --repo reactive-resume/reactive-resume --json body,comments`. Do not post a new comment. If no source arrives, record “historical equivalence unverified” and continue only the independently authorized data-loss repair.
Compare source tags/styles before editing with the exported JSON after editing. Branch on the first difference: table removed → editor; markup retained but only `border` attribute present → compatibility policy; supported inline borders retained yet missing from PDF → renderer regression. For the last branch, minimize to one table, one style, one template before changing code.
+1 -1
View File
@@ -4,7 +4,7 @@
## Status and residual scope
- **Issues:** [#2751](https://github.com/amruthpillai/reactive-resume/issues/2751), [#3040](https://github.com/amruthpillai/reactive-resume/issues/3040).
- **Issues:** [#2751](https://github.com/reactive-resume/reactive-resume/issues/2751), [#3040](https://github.com/reactive-resume/reactive-resume/issues/3040).
- **Planned at:** `7a98f6662`, 2026-09-05. Priority P2; effort M; risk high for page-fragmentation changes, medium for local marker sizing. Confidence medium for current controls, low for historical equivalence.
- **Readiness:** Diagnostics ready. No new pagination policy authorized here.
- **Dependencies:** Merged #3449 ordered-marker gutters and #3434 level gaps must remain. Plan 23/#3350 owns optional item keep-together policy; do not preempt it with `wrap={false}` on skills.
+1 -1
View File
@@ -4,7 +4,7 @@
## Status and evidence
- **Issue:** [#2683](https://github.com/amruthpillai/reactive-resume/issues/2683).
- **Issue:** [#2683](https://github.com/reactive-resume/reactive-resume/issues/2683).
- **Planned at:** `7a98f6662`, 2026-09-05. Priority P2; effort M; risk medium for preview geometry, high for page sizing changes.
- **Report:** Cloud Rhyhorn playground appears to have no bottom space, while downloaded PDF has bottom space. Attachment is a video; no source JSON, page settings, browser, or exact output supplied. No comment establishes a current reproduction.
- **Confidence/readiness:** Current source high confidence; original cause low confidence. Diagnostic plan ready; implementation requires exact data or a separately reproduced defect.
+1 -1
View File
@@ -4,7 +4,7 @@
## Status and intent
- **Issue:** [#3397](https://github.com/amruthpillai/reactive-resume/issues/3397).
- **Issue:** [#3397](https://github.com/reactive-resume/reactive-resume/issues/3397).
- **Planned at:** `7a98f6662`, 2026-09-05. Priority P2; effort M–L; risk high for global HTML whitespace changes.
- **Readiness:** Known behavioral mismatch, high confidence; implementation direction approved. Preserve intentional whitespace in ordinary paragraphs/headings using the scoped persisted contract below. Tab width and existing line-break behavior use the labeled routine judgments below.
- **Dependencies:** Existing paragraph indentation and merged #3451 literal Unicode spaces must remain. Coordinate RichInput changes with Plan16 tables. No need to reimplement paragraph indentation.
+1 -1
View File
@@ -4,7 +4,7 @@
## Status and scope
- **Issues:** [#3378](https://github.com/amruthpillai/reactive-resume/issues/3378), [#3265](https://github.com/amruthpillai/reactive-resume/issues/3265), [#2921](https://github.com/amruthpillai/reactive-resume/issues/2921).
- **Issues:** [#3378](https://github.com/reactive-resume/reactive-resume/issues/3378), [#3265](https://github.com/reactive-resume/reactive-resume/issues/3265), [#2921](https://github.com/reactive-resume/reactive-resume/issues/2921).
- **Planned against:** `7a98f6662`, 2026-09-05.
- **Priority / effort / risk:** P2 / M / medium. A mistaken restore operation can duplicate section IDs or change output visibility.
- **Readiness:** #2921 describes a verified missing UI distinction. The historical removal paths in #3378 and #3265 remain unverified. Do not claim those reports fixed merely because a deliberately unplaced fixture becomes recoverable.
+1 -1
View File
@@ -2,7 +2,7 @@
## Status and decision gate
- **Issues:** [#3060](https://github.com/amruthpillai/reactive-resume/issues/3060).
- **Issues:** [#3060](https://github.com/reactive-resume/reactive-resume/issues/3060).
- **Planned at:** `7a98f6662`, 2026-09-05.
- **Priority / effort / risk:** P2 / M / medium; blank-title migration can change every existing resume.
- **Readiness:** Product direction approved (Q1, 2026-09-05): add an explicit Show heading toggle that hides heading, icon, and separator while retaining content and the builder name. Preserve empty-title localized fallback. Q2 approved (2026-09-05): Move to creates continuations with visible headings until explicitly hidden. Q3 approved: hide visual headings consistently in preview, PDF, and DOCX while retaining section labels in the screen-reader outline.
+1 -1
View File
@@ -8,7 +8,7 @@ Implement the selected section-level mode; do not add per-item overrides.
## Status
- **Issues:** [#2785](https://github.com/amruthpillai/reactive-resume/issues/2785).
- **Issues:** [#2785](https://github.com/reactive-resume/reactive-resume/issues/2785).
- **Planned at:** `7a98f6662`, 2026-09-05.
- **Priority / effort / risk:** P3 / M / medium because Skills is shared by all templates.
- **Readiness:** Direction selected above. Ready for later execution after the technical verification gates; this task remains documentation-only.
+1 -1
View File
@@ -8,7 +8,7 @@ Implement the Q10 guidance independently. Implement item controls only after pro
## Status
- **Issues:** [#3350](https://github.com/amruthpillai/reactive-resume/issues/3350), [#3090](https://github.com/amruthpillai/reactive-resume/issues/3090).
- **Issues:** [#3350](https://github.com/reactive-resume/reactive-resume/issues/3350), [#3090](https://github.com/reactive-resume/reactive-resume/issues/3090).
- **Planned at:** `7a98f6662`, 2026-09-05.
- **Priority / effort / risk:** P2 / L / high: incorrect keep-together behavior can clip content.
- **Readiness:** Direction selected above. Ready for later execution after the technical verification gates; this task remains documentation-only.
+1 -1
View File
@@ -2,7 +2,7 @@
## Status and decision gate
- **Issues:** [#3155](https://github.com/amruthpillai/reactive-resume/issues/3155), [#2841](https://github.com/amruthpillai/reactive-resume/issues/2841).
- **Issues:** [#3155](https://github.com/reactive-resume/reactive-resume/issues/3155), [#2841](https://github.com/reactive-resume/reactive-resume/issues/2841).
- **Planned at:** `7a98f6662`, 2026-09-05. Priority P3, effort M, risk medium. Q4 approved (2026-09-05): an optional dedicated left date column with entry details aligned beside it, preserving current layout by default. Q5 approved: date column follows reading start, left for LTR and right for RTL. Q6 approved: user-controlled width per section, long dates wrap within the column, and entry details stay aligned. Q7 expands support to every section type with a free-text date field, including custom equivalents. Q8 approved: support all templates, preserving each template’s current layout when disabled. Q9 approved: entries without dates leave the date column empty and retain the same detail alignment as dated entries.
- **Evidence confidence:** High for current shared rendering and existing controls; the exact historical Chikorita visual parity remains unverified. #3155 asks for left-aligned dates; a comment distinguishes an outdented fixed-width date column from simple field order. #2841 bundles date/location order, large level icons, and link underlines after a v4-to-v5 migration. A contributor's CSS suggestion is not owner approval for a new global setting.
+1 -1
View File
@@ -8,7 +8,7 @@ Use the existing uploader limits and ownership rules. The storage inventory is a
## Status
- **Issue:** [#3379](https://github.com/amruthpillai/reactive-resume/issues/3379).
- **Issue:** [#3379](https://github.com/reactive-resume/reactive-resume/issues/3379).
- **Planned at:** `7a98f6662`, 2026-09-05. Priority P3; effort L; risk medium/high because storage, export, and schema are involved.
- **Readiness:** Direction selected above. Ready for later execution after the technical verification gates; this task remains documentation-only.
- **Confidence:** High that no first-class Experience logo field exists. No decision to support arbitrary remote URLs or employer logo discovery has been made.
+1 -1
View File
@@ -8,7 +8,7 @@ Implement the explicit decorative-consumer list after source inventory; do not p
## Status
- **Issue:** [#3373](https://github.com/amruthpillai/reactive-resume/issues/3373).
- **Issue:** [#3373](https://github.com/reactive-resume/reactive-resume/issues/3373).
- **Planned at:** `7a98f6662`, 2026-09-05. Priority P3, effort M, risk medium.
- **Readiness:** Direction selected above. Ready for later execution after the technical verification gates; this task remains documentation-only.
- **Confidence:** High for missing token/UI; which elements should consume it remains unresolved.
+1 -1
View File
@@ -8,7 +8,7 @@ Inventory current source owners and define one source manifest consumed by previ
## Status
- **Issue:** [#3377](https://github.com/amruthpillai/reactive-resume/issues/3377).
- **Issue:** [#3377](https://github.com/reactive-resume/reactive-resume/issues/3377).
- **Planned at:** `7a98f6662`, 2026-09-05. Priority P2, effort L, risk high for download size, licensing, and missing glyphs.
- **Readiness:** Direction selected above. Ready for later execution after the technical verification gates; this task remains documentation-only.
- **Evidence:** Self-hosted user requests operation without Google font access. Blocking Google alone is not equivalent to being offline: the current catalog includes other CDNs too. Confidence is high for remote catalog/fallback paths, unmeasured for a fully cold offline browser/server run.
+1 -1
View File
@@ -8,7 +8,7 @@ Proceed with tested documentation examples and only reproducible advertised-bind
## Status
- **Issue:** [#3137](https://github.com/amruthpillai/reactive-resume/issues/3137).
- **Issue:** [#3137](https://github.com/reactive-resume/reactive-resume/issues/3137).
- **Planned at:** `7a98f6662`, 2026-09-05. Priority P3, effort S for verification/documentation, unresolved for new rendering capabilities; risk low for documentation and high for arbitrary CSS expansion.
- **Readiness:** Direction selected above. Ready for later execution after the technical verification gates; this task remains documentation-only.
- **Evidence:** The report bundles header branding, gradients, spacing/line breaks, and icons. On 2026-09-05 the owner explicitly stated that current Semantic CSS supports header/name/headline/contact-list/contact-item/icon/field/page/region styling, linked the guide, and requested an exact remaining template/CSS case. Confidence is high that much of the original missing selector surface now exists; historical appearance is not automatically restored.
+1 -1
View File
@@ -8,7 +8,7 @@ Add one backward-compatible template option and retain profile IDs/order/links.
## Status
- **Issue:** [#2812](https://github.com/amruthpillai/reactive-resume/issues/2812).
- **Issue:** [#2812](https://github.com/reactive-resume/reactive-resume/issues/2812).
- **Planned at:** `7a98f6662`, 2026-09-05. Priority P3, effort M, risk medium.
- **Readiness:** Direction selected above. Ready for later execution after the technical verification gates; this task remains documentation-only.
- **Evidence:** Two screenshots compare the old and new output; no source resume or dimensions are provided. High confidence in current source routing, unverified pixel parity with the older renderer.
+1 -1
View File
@@ -8,7 +8,7 @@ Measure existing PDF/DOCX first. Add a preset only for measured deficiencies and
## Status
- **Issue:** [#2845](https://github.com/amruthpillai/reactive-resume/issues/2845).
- **Issue:** [#2845](https://github.com/reactive-resume/reactive-resume/issues/2845).
- **Planned at:** `7a98f6662`, 2026-09-05. Priority P2, effort L for evaluation, risk medium/high for misleading compatibility claims.
- **Readiness:** Direction selected above. Ready for later execution after the technical verification gates; this task remains documentation-only.
- **Evidence:** The issue requests single-column standard-font PDF/DOCX, consistent dates, preview, and vendor-specific guarantees. Current DOCX and ATS checks already exist; do not implement a duplicate export path or equate the application's heuristic score with a vendor parser score.
+1 -1
View File
@@ -8,7 +8,7 @@ Reuse the existing component on public HTML only after measuring PDF.js announce
## Status and execution boundary
- **Issue:** [#2844](https://github.com/amruthpillai/reactive-resume/issues/2844).
- **Issue:** [#2844](https://github.com/reactive-resume/reactive-resume/issues/2844).
- **Planned at:** `7a98f6662`, 2026-09-05. Priority P2; effort M for the existing HTML mirror, L for export accessibility; risk medium.
- **Readiness:** Direction selected above. Ready for later execution after the technical verification gates; this task remains documentation-only.
- **Evidence confidence:** High for the source facts below; unknown for PDF tagging and assistive-technology behavior until actual output is inspected. The issue requests H1 name, H2 sections, H3 companies, H4 job titles, lists, and labels. The owner requested an exact output and acceptance criteria on 2026-08-16; the issue has not supplied a focused fixture.
+1 -1
View File
@@ -8,7 +8,7 @@ No persistent autosort or implicit sorting of roles/custom sections in this incr
## Status
- **Issue:** [#2725](https://github.com/amruthpillai/reactive-resume/issues/2725).
- **Issue:** [#2725](https://github.com/reactive-resume/reactive-resume/issues/2725).
- **Planned at:** `7a98f6662`, 2026-09-05. Priority P3, effort M, risk medium for unexpected reorder and free-form dates.
- **Readiness:** Direction selected above. Ready for later execution after the technical verification gates; this task remains documentation-only.
- **Confidence:** High that period strings are free-form and existing parsing can be reused for some cases; the selected comparator remains subject to the parser’s nullable results.
+1 -1
View File
@@ -8,7 +8,7 @@ Research and fixture mapping can proceed now. Visual approval remains a material
## Status and decision gate
- **Issue:** [#2689](https://github.com/amruthpillai/reactive-resume/issues/2689).
- **Issue:** [#2689](https://github.com/reactive-resume/reactive-resume/issues/2689).
- **Planned at:** `7a98f6662`, 2026-09-05. Priority P3, effort L, risk medium/high for unsupported standards claims and a new template surface.
- **Readiness:** Research/data mapping and visual proposal are selected by agent judgment and ready for later execution. Stop before template code for review of the actual proposed visual artifacts; their layout does not yet exist to approve.
- **Evidence:** The issue asks for a built-in Europass option and makes claims about German requirements/DIN 5008. Those claims are unverified and must not be repeated as facts. A third-party XML-to-v5 converter comment is not an official template specification or import contract.
+1 -1
View File
@@ -8,7 +8,7 @@ Keep the order name → rating → proficiency → keywords in both stacked and
## Status
- **Issue:** [#2611](https://github.com/amruthpillai/reactive-resume/issues/2611).
- **Issue:** [#2611](https://github.com/reactive-resume/reactive-resume/issues/2611).
- **Planned at:** `7a98f6662`, 2026-09-05. Priority P3, effort M, risk medium because Skills uses shared rendering.
- **Readiness:** Direction selected above. Ready for later execution after the technical verification gates; this task remains documentation-only.
- **Confidence:** High for current shared order; historical rectangle dimensions and screenshot parity remain unverified. Related-issue mentions are not additional accepted requirements.
+1 -1
View File
@@ -2,7 +2,7 @@
## Status and scope
- **Issue:** [#2768](https://github.com/amruthpillai/reactive-resume/issues/2768).
- **Issue:** [#2768](https://github.com/reactive-resume/reactive-resume/issues/2768).
- **Planned at:** `7a98f6662`, 2026-09-05. Priority P2; effort M for diagnosis; risk medium.
- **Readiness:** Ready for a controlled reproduction. No verified root cause or implementation is prescribed.
- **Evidence:** The report says both PDF and JSON import fail and quotes DOM `NotFoundError: Failed to execute removeChild on Node`. It labels Cloud but references localhost. No original file, application version, stack, browser version, or exact import format is available. On 2026-08-16 the owner requested a source file. The report does not establish that PDF extraction and JSON validation share a cause.
+1 -1
View File
@@ -1,6 +1,6 @@
# Issue execution orchestrator prompt
You are the implementation orchestrator for `amruthpillai/reactive-resume`. Execute the approved issue plans and create reviewable PRs. Keep all PRs unmerged. This instruction explicitly authorizes dynamic sub-agent delegation, isolated worktrees, ordinary repository edits, tests, commits, pushes, and PR creation within the approved plans.
You are the implementation orchestrator for `reactive-resume/reactive-resume`. Execute the approved issue plans and create reviewable PRs. Keep all PRs unmerged. This instruction explicitly authorizes dynamic sub-agent delegation, isolated worktrees, ordinary repository edits, tests, commits, pushes, and PR creation within the approved plans.
## Bootstrap
+2 -2
View File
@@ -4,8 +4,8 @@ Verified 2026-09-05 at approximately 19:21 UTC. Both PRs are open, fully reviewe
| PR | Head | Behavior and verification |
| --- | --- | --- |
| [#3453](https://github.com/amruthpillai/reactive-resume/pull/3453) | `ccd111da894cf7d44cc3dee06c937f70d91fef24` | Saves queued edits before leaving the builder; failed saves retain the draft. A 10-second navigation wait limit leaves a hanging write in flight, keeps the draft/Saving state, and shows an informational notice. Late acknowledgments and queued edits complete normally. 805 web tests, three production Chromium/PostgreSQL regressions, typecheck, build, repository checks, boundaries, independent review, and all hosted checks passed. |
| [#3454](https://github.com/amruthpillai/reactive-resume/pull/3454) | `80b0d3ab02cc4292f8a4514db8c2516adc1f9dc3` | Thumbnail pixels follow measured card size and DPR with bounded canvas memory, resolution-aware query identity, retained previous images, resize debounce, and offscreen deferral. Superseded queries cancel active PDF.js work and clean up loading tasks. Fifteen focused tests, the earlier 804-test full web baseline, typecheck, build, repository checks, boundaries, 22 production density measurements, independent reviews, and all final hosted checks passed. |
| [#3453](https://github.com/reactive-resume/reactive-resume/pull/3453) | `ccd111da894cf7d44cc3dee06c937f70d91fef24` | Saves queued edits before leaving the builder; failed saves retain the draft. A 10-second navigation wait limit leaves a hanging write in flight, keeps the draft/Saving state, and shows an informational notice. Late acknowledgments and queued edits complete normally. 805 web tests, three production Chromium/PostgreSQL regressions, typecheck, build, repository checks, boundaries, independent review, and all hosted checks passed. |
| [#3454](https://github.com/reactive-resume/reactive-resume/pull/3454) | `80b0d3ab02cc4292f8a4514db8c2516adc1f9dc3` | Thumbnail pixels follow measured card size and DPR with bounded canvas memory, resolution-aware query identity, retained previous images, resize debounce, and offscreen deferral. Superseded queries cancel active PDF.js work and clean up loading tasks. Fifteen focused tests, the earlier 804-test full web baseline, typecheck, build, repository checks, boundaries, 22 production density measurements, independent reviews, and all final hosted checks passed. |
No additional implementation or GitHub issue comments are authorized in this planning task. The 63-issue inventory excludes #3246 and #2828 because their current PRs were the two exceptions the maintainer asked to finish. That exclusion does not mean every historical claim in either report has been verified.
+1 -1
View File
@@ -5,7 +5,7 @@
"description": "Free open-source resume builder with remote MCP tools for resumes and job applications.",
"websiteUrl": "https://rxresu.me",
"repository": {
"url": "https://github.com/reactive-resume/app",
"url": "https://github.com/reactive-resume/reactive-resume",
"source": "github"
},
"version": "5.2.2",