Files
familysync/.planning/STATE.md
T

5.3 KiB
Raw Blame History

gsd_state_version, milestone, milestone_name, status, stopped_at, last_updated, last_activity, progress
gsd_state_version milestone milestone_name status stopped_at last_updated last_activity progress
1.0 v1.0 milestone planning Phase 03 UI-SPEC approved 2026-06-05T21:08:16.025Z 2026-06-05 -- Phase 2 completed
total_phases completed_phases total_plans completed_plans percent
6 2 9 9 33

Project State

Project Reference

See: .planning/PROJECT.md (updated 2026-06-03)

Core value: One color-coded family calendar (shared + personal) and shared lists from a single low-friction PWA — cross-ecosystem, no app store Current focus: Phase 03 — event-write-back + PWA install (next)

Current Position

Phase: 3 (event-write-back + PWA install) — NOT STARTED Plan: Not started Status: Phase 2 (calendar-display) COMPLETE & verified (human UAT approved); Phase 3 ready to plan Last activity: 2026-06-05 -- Phase 2 completed

Progress: [███░░░░░░░] 33% (2 of 6 phases complete)

Performance Metrics

Velocity:

  • Total plans completed: 5
  • Average duration: -
  • Total execution time: 0 hours

By Phase:

Phase Plans Total Avg/Plan
02 5 - -

Recent Trend:

  • Last 5 plans: -
  • Trend: -

Updated after each plan completion

Accumulated Context

Decisions

Decisions are logged in PROJECT.md Key Decisions table. Recent decisions affecting current work:

  • CAL-08 RESOLVED → GO (Phase 1): per-member Fastmail app password reaches all of that account's calendars; no cross-account ACL needed. Unified view stands; no shared-only fallback. See CAL-08-DECISION.md.
  • D-14 (2026-06-04): Phase 1 Gate 2 (live Authelia/Pangolin) deferred. SSE-over-Pangolin smoke = hard gate before Phase 4; live AUTH smoke incl. iOS standalone-PWA folded into Phase 3. Phases 23 build behind a dev-auth bypass. Tracked in 01-HUMAN-UAT.md + docs/deployment.md.
  • D-15 (2026-06-04): Validate real topology via local Newt connector + test subdomain through Pangolin (Mode A), not an Unraid deploy; Unraid reserved for go-live.
  • CalDAV locked: Fastmail does not expose calendars over JMAP. CalDAV via tsdav is the only protocol. No reconsideration.
  • Identity: Use oidc_iss + oidc_sub as stable composite key. Never email.
  • Real-time transport: Prefer SSE over WebSocket (proxy-resilient through Pangolin). SSE pass-through STILL UNVERIFIED — gate before Phase 4 (D-14).
  • Recurring events: Create + display only in v1 (CALDAV:expand on server side). Single-occurrence edit deferred to v1.x.

Pending Todos

  • Fix docs/deployment.md local-dev command — the documented dev run is wrong: the API dev script (node --watch dist/index.js) does NOT load .env, and DB_HOST defaults to localhost with an empty password. Correct local-dev command is: pnpm --filter @familysync/api build && set -a; source .env; set +a && DEV_AUTH_BYPASS=true DB_HOST=localhost pnpm --filter @familysync/api dev (+ pnpm --filter @familysync/pwa dev). Consider adding --env-file=.env to the dev script so this is automatic. (Surfaced during Phase 2 UAT.)
  • REQUIREMENTS.md traceability gap — phase.complete flagged 6 REQ-IDs in the body missing from the Traceability table: CAL-09, CAL-10, CAL-11, CAL-12, DISP-01, DISP-02. Add them to keep traceability in sync (likely Phase 4/5/display requirements).
  • DST spring-forward spot-check (Phase 2) — recurring/DST is implemented and code-verified (VTIMEZONE before expansion + local display TZ), and operator approved general times; navigating to March 2026 to eyeball the spring-forward transition is a recommended future spot-check.

Blockers/Concerns

  • Phase 1: Personal-calendar CalDAV ACL RESOLVED → CAL-08 GO (per-member app password; no cross-account ACL).
  • Phase 4 ENTRY GATE: Pangolin SSE pass-through (issue #1034) still unverified — deferred from Phase 1 Gate 2 (D-14). Must pass the 5-min SSE smoke (docs/deployment.md) before building live sync.
  • Phase 3: iOS standalone-PWA + Authelia login is load-bearing for the wife and is the first real external auth test (carried Gate 2 item, D-14). Also: iOS install guide is load-bearing — she gets no push notifications if she does not install the PWA.
  • Phase 2/3 dev: build behind a documented dev-auth bypass until Gate 2 deploy (D-14).
  • Phase 5: iOS push subscriptions silently revoked after 3 silent pushes. Subscription health-check and event.waitUntil() are mandatory from day one.

Deferred Items

Category Item Status Deferred At
Calendar Single-occurrence recurring edit (RECURRENCE-ID) v1.x Roadmap
Calendar "This and following" recurring edit v1.x Roadmap
Calendar Apple Calendar native subscribe URL docs v1.x Roadmap
Calendar Secondary timezone display toggle v1.x Roadmap
Display Wall-display / kiosk dashboard v2 PROJECT.md
Calendar Mark shared-family calendar is_shared=1 — operator must first create a "Family" calendar on the primary Fastmail account + share it, let the poller sync it, then run UPDATE calendars SET is_shared=1 WHERE id=<new row>. Until then the shared color lane is empty (correct). Phase 2 (deferred, D-16) 2026-06-05

Session Continuity

Last session: 2026-06-05T20:40:21.988Z Stopped at: Phase 03 UI-SPEC approved Resume file: .planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md