Milestone v1.0: FamilySync MVP #1

Merged
luckberg merged 376 commits from gsd/v1.0-milestone into main 2026-06-10 17:39:19 -04:00
Showing only changes of commit d71b15cd02 - Show all commits
@@ -168,7 +168,7 @@ curl -N -H "Cookie: oidc-auth=<value>" https://familysync-dev.DOMAIN/api/sse/hea
|---|-----|-------|--------|-------|
| D1 | CAL-04 | Create a timed event → "Syncing…" toast → "Saved" toast → event appears in native Fastmail app on next sync | ✅ PASS (2026-06-07) | Timed create round-trips to caldav.fastmail.com (outbox rows reach `done`); appears in the app. Timezone fix applied (was 4h off). |
| D2 | CAL-07 | Create an all-day event → same Syncing→Saved flow → appears in Fastmail | ✅ PASS (2026-06-07) | All-day create round-trips to Fastmail (verified VEVENT: DTSTART/DTEND VALUE=DATE, exclusive end). Found + fixed a display off-by-one (single-day showed across 2 days — Schedule-X inclusive vs iCal exclusive end; commit d4d5327). Reload to confirm 1-day rendering. |
| D3 | CAL-04 | Create a weekly recurring event → appears in Fastmail | [ ] PENDING — operator | Not yet exercised live. Quick confirm (create one weekly recurring event). |
| D3 | CAL-04 | Create a weekly recurring event → appears in Fastmail | ✅ PASS — write correct; UX gaps backlogged | A weekly event was created and recurred in Fastmail with a valid `RRULE:FREQ=WEEKLY`. Two UX gaps surfaced (NOT write-correctness): no "repeat until/count" bound (series is unbounded → recurs into 2028+) and the end-date is the per-occurrence duration (a 2-month end made each occurrence 63 days → overlapping every day). Backlogged 999.7/999.8. Deleting the recurring series cleared the master + all occurrences from Fastmail in one delete (recurring-series delete verified). |
| D4 | CAL-05 | Edit an existing event's title and time → Syncing→Saved → change persists in Fastmail | ✅ PASS (2026-06-07) | Edit/move confirmed working; update outbox rows reach `done`; post-write refetch race fixed so the change shows without manual refresh. |
| D5 | CAL-06 | Delete an event via the two-tap confirmation dialog → Syncing→Saved → event disappears from all views on next sync | ✅ PASS (2026-06-07) | Delete confirmed working; delete cache-reconciliation fix means the event leaves the cache/UI (was lingering as a ghost). |
| D6 | D-08 | (Optional) Trigger a 412 conflict by editing the same event in Fastmail first → conflict toast appears in the app → calendar re-fetches | ✅ PASS (2026-06-07) | Observed live: a stale-etag update produced `412 conflict` (outbox id=7) and the "This event changed elsewhere" conflict toast; calendar re-syncs. |
@@ -196,13 +196,14 @@ Response body: {"ok":true,"db":"up"}
| A — Auth / session / colors | ✅ A1, A2 (transparent SSO), A3 all PASS |
| B — iOS standalone login (load-bearing) | ✅ B1B4 PASS (install + standalone launch + standalone login); B5 (Android) deferred |
| C — SSE smoke test | ⏳ DEFERRED — Phase 4 ENTRY gate (D-14), not a Phase 3 deliverable |
| D — Fastmail write round-trips | ✅ D1/D2/D4/D5/D6 PASS; D3 (weekly recurring) — one quick confirm remaining |
| D — Fastmail write round-trips | ✅ D1D6 PASS (create/all-day/recurring/edit/delete/conflict); recurring-series delete also verified |
Gate 2 is complete when all rows are PASS. Record final status here:
**Gate 2 outcome:**SUBSTANTIALLY COMPLETE (2026-06-07) — auth, session, distinct member colors,
iOS install + standalone login (load-bearing), and create/all-day/edit/delete/conflict round-trips
all verified live. Multiple blocker bugs found + fixed this session (see git log). Only one quick
functional confirm remains: D3 (create a weekly recurring event). Deferred by design: B5 (Android
install) and C (SSE smoke — Phase 4 entry gate per D-14). Phase 03 is code-complete and
live-verified; safe to close with D3 as a fast confirm and B5/C carried forward.
**Gate 2 outcome:**COMPLETE for Phase 03 scope (2026-06-07) — auth, session, distinct member
colors, iOS install + standalone login (load-bearing), and all write round-trips (create / all-day /
weekly recurring / edit / delete / 412-conflict, incl. recurring-series delete) verified live.
Many blocker bugs found + fixed this session (see git log). Recurring create writes valid RRULE;
its repeat-bound + per-occurrence-duration UX are tracked as backlog 999.7/999.8 (within the v1
"recurring create+display only" scope). Deferred by design: B5 (Android install) and C (SSE smoke —
Phase 4 entry gate per D-14). Phase 03 is code-complete and live-verified.