Unify existing V1 readiness signals into a compact Release Readiness Center so a local user can see whether the app is ready for first chat, diagnostics export, and release review.
Add local-only endpoint:
GET /api/release/readiness
type ReleaseReadinessStatus = "ready" | "needs_action" | "blocked";
interface ReleaseReadinessResponse {
schemaVersion: 1;
generatedAt: string;
summary: {
status: ReleaseReadinessStatus;
score: number;
topAction: string | null;
topActionLabel: string | null;
topActionHref: string | null;
canChat: boolean;
canExportDiagnostics: boolean;
};
sections: Array<{
id:
| "workspace"
| "provider"
| "index"
| "skills"
| "claude_project"
| "chat"
| "diagnostics";
label: string;
status: ReleaseReadinessStatus;
message: string;
actionLabel?: string;
actionHref?: string;
}>;
}
src/lib/release/readiness.tssrc/app/api/release/readiness/route.tssrc/lib/chat/readiness.tssrc/lib/settings/doctor-report.tssrc/app/settings/page.tsxsrc/app/chat/page.tsxsrc/app/export/page.tsxREADME.md/api/release/readiness.V1 Release Readiness panel.npx --yes tsx src/lib/release/readiness.test.tsnpx --yes tsx src/app/api/release/readiness/route.test.tsnpx --yes tsx src/lib/settings/doctor.test.tsnpx --yes tsx src/app/api/chat/status/route.test.tsnpx --yes tsx src/app/api/export/zip/route.test.tsnpx --yes tsx src/app/api/settings/local-guards.test.tsnpm run lintcmd.exe /c npm run build/settings and confirm V1 Release Readiness renders above detailed Doctor sections.Blocked or Needs action./chat and confirm blocked auth/provider states show Settings and Diagnostics links./export and confirm diagnostics readiness preview renders without triggering a download./api/release/readiness returns no raw home paths, emails, API keys, OAuth paths, Claude profile basenames, hook commands, MCP args, headers, or raw provider output.Checkpoint as feat(release): add V1 readiness center only after targeted tests, lint, build, privacy scan, and browser smoke pass.