2026-05-22 16:16 EDT / 2026-05-22 20:16 UTC
Added Handoff Sync v1 at `/admin/handoff`.
What changed
- Added Handoff Sync v1 at `/admin/handoff`.
- Added a `Handoff Sync` link to the admin topbar.
- Added deterministic `HANDOFF.md` parsing for recent dated handoff sections.
- Handoff cards now show the date heading, What changed summary, files changed, validation results, known issues, and next recommended task.
- Added an import action that creates a `ProjectEvent` from a selected handoff section and selected Project.
- Import defaults the event type to `CODEX_BRIEF` when the section source is Codex, otherwise `MILESTONE`.
- Import stores the full handoff section in `rawBody`, uses What changed as the plain-English summary, and uses Next recommended task as why it matters.
- Import touches `Project.lastActivityAt` and the parent `Brain.lastActivityAt`.
- Import revalidates `/admin`, `/admin/handoff`, the Project detail page, the Brain detail page, and the public Project page when relevant.
- Added duplicate protection for same Project, source, title, and occurredAt.
- Kept Capture Inbox v1 unchanged as the manual capture path.
Files changed
- `src/app/admin/handoff/actions.ts`
- `src/app/admin/handoff/page.tsx`
- `src/components/page-chrome.tsx`
- `src/lib/handoff-parser.ts`
- `HANDOFF.md`
- `src/lib/data.ts`
- `src/components/recent-captures-panel.tsx`
- `src/app/admin/page.tsx`
- `src/app/admin/capture/page.tsx`
Validation results
- Parser smoke check: passed. Latest handoff sections were parsed with titles, buckets, source defaults, and UTC timestamps.
- `npx prisma validate`: passed.
- `npx prisma generate`: passed and generated Prisma Client.
- `npm run typecheck`: initially caught a narrow source literal type issue in `src/lib/handoff-parser.ts`, then passed after the fix.
- `npm run lint`: passed.
- `npm run build`: passed. Build output includes `/admin/handoff`.
Known issues
- The parser expects the current structured handoff format: dated `###` headings and `####` subsections.
- Duplicate prevention is intentionally simple and checks exact Project, source, title, and occurredAt matches.
- The import Project select is grouped by Brain but does not dynamically filter from a separate Brain select.
- There are still no automated tests for the handoff import server action.
- `npm run build` still emits a Next.js workspace-root warning because multiple lockfiles exist above/in the project, but the build passes.
Next recommended task
- Add a small imported-memory marker or Recent Handoff Imports panel so it is easy to see which `HANDOFF.md` sections have already been pulled into Builder's Atlas.