2.7 KiB
2.7 KiB
Phase 8 — progress log
Canonical record for Phase 8 (8a public route, 8b PWA shell, 8c markdown context). Mirrored to the Apple Notes note titled "Phase 8 — Public intake + PWA + project context". Workflow: a task moves
pending → in_progress → doneas I work it; TDD red/green noted where applicable.
How to read
[ ]pending[~]in progress[x]done — TDD green + commit landed[!]blocked, needs decision
Plan 8a — Public intake links and route
- Task 1: Schema —
c99be4d. Bridge: plan assumedgetOrCreateCollectionextended existing select values; it doesn't, so addedensureCardsCreatedByRoleValuesand extendedensureActivityActionValues. Tests: 446 pass. - Task 2: Token generator —
36572d9. 24 bytes CSPRNG → base64url → 32 chars.isIntakeTokenmatches. - Task 3: Best-effort client IP —
f608931. x-forwarded-for → x-real-ip → "unknown". - Task 4: Rate limiter —
70ce019. 60 req / 5 min per opaque key, in-memory, lossy on restart. 4 unit tests. - Task 5: Token resolver and daily counter —
3ece6cb.resolveIntakeLink,isLinkUsablewith lazy date-reset,validateIntakeLinkForStepreturns 3-valued LinkState. - Task 6: Middleware carve-out —
65b0cf4./intake/:path*short-circuits before cookie check. - Task 7: Public Server Action —
9081659. token-shape → rate-limit → daily-cap →nextStep. SameInterviewStepshape as signed-in. - Task 8: Public submission route —
4004aec.POST /api/public/intake. Sibling of/api/client/intakewithcreated_by_role='anonymous'set in code. Dropped vestigialtokenHeaderline per the plan's own comment. - Task 9: Minimal intake layout
- Task 10: The public intake page
- Task 11: The public wizard
- Task 12: The "thanks" page
- Task 13: Card submitted-by badge
- Task 14: Owner actions for intake links
- Task 15: The intake links panel
- Task 16: Wire the panel into the admin page
- Task 17: Integration tests — the public route
- Task 18: Integration tests — the owner UI actions
- Task 19: Full verification
Plan 8b — PWA shell
- Task 1: The source SVG
- Task 2: The icon build script
- Task 3: The manifest
- Task 4: The service worker
- Task 5: The manifest link in the intake layout
- Task 6: Manual install verification
- Task 7: Final test run
Plan 8c — Per-project markdown context
- Task 1: Schema
- Task 2: The intake context extension
- Task 3: The prompt modules
- Task 4: The prompt tests
- Task 5: The owner editor
- Task 6: Wire the editor into the admin page
- Task 7: Full verification