Commit Graph

  • 2c8f1a28af fix(auth): self-healing displayName; drop synthetic Member<sub> from storage Lucas Berger 2026-06-07 16:17:17 -04:00
  • 98753d8e34 fix(broker): reconcile deletes into cache + resync before marking outbox done Lucas Berger 2026-06-07 16:12:43 -04:00
  • bb61d21c83 fix(pwa): gate events query on auth to stop OIDC state-cookie churn Lucas Berger 2026-06-07 15:57:17 -04:00
  • 69bc57221b docs(quick-260607-l6l): summary, state, handoff update + reminder-options todo Lucas Berger 2026-06-07 15:39:43 -04:00
  • a99ef1daae refactor(260607-l6l): extract shared deriveDisplayName helper (BUG 2 DRY) Lucas Berger 2026-06-07 15:37:18 -04:00
  • 509f4b26e0 test(260607-l6l): make BUG 1 join regression test couple to the handler Lucas Berger 2026-06-07 15:34:39 -04:00
  • 8b5ec797cf chore: merge executor worktree (worktree-agent-a62cd2d02a9defd0a) Lucas Berger 2026-06-07 15:31:31 -04:00
  • 00a0454514 fix(260607-l6l): scope GET /api/events to current user + shared calendars Lucas Berger 2026-06-07 15:28:54 -04:00
  • 23c8bb3402 fix(260607-l6l): derive displayName from OIDC claims in me.ts + resolveUserId Lucas Berger 2026-06-07 15:27:40 -04:00
  • 28704132d0 fix(260607-l6l): add missing innerJoin to PATCH+DELETE event lookups Lucas Berger 2026-06-07 15:25:31 -04:00
  • 4e174e5b44 docs(260607-l6l): pre-dispatch plan for write-path correctness bugs Lucas Berger 2026-06-07 15:18:38 -04:00
  • 3ae7724df1 wip: phase 03 Gate 2 paused — live bring-up working; edit/delete join fix is the next blocker Lucas Berger 2026-06-06 22:42:06 -04:00
  • bdbb9b8324 docs(debug): resolve write-path-event-bugs (timezone + calendar identity) Lucas Berger 2026-06-06 22:32:10 -04:00
  • a9d3de658e fix(03): correct event-write timezone + per-user calendar identity (Gate 2 Part D) Lucas Berger 2026-06-06 22:32:10 -04:00
  • 505f64ed93 docs: add backlog item 999.2 — slick unauthenticated-entry (no login flash) Lucas Berger 2026-06-06 22:11:33 -04:00
  • 431ab31fb8 fix(api): serve the full ./public tree, not just /assets/* Lucas Berger 2026-06-06 21:57:42 -04:00
  • 1adb460412 fix(pwa): fetchMe uses redirect:manual so unauthenticated /api/me can't hang Lucas Berger 2026-06-06 21:57:42 -04:00
  • 874f23de2f docs(quick-260606-tv8): sign-in redirect fix — summary + state Lucas Berger 2026-06-06 21:42:58 -04:00
  • 76db63458e chore: remove operator seed script + gitignore local verification artifacts Lucas Berger 2026-06-06 21:42:29 -04:00
  • 7c6531f4d0 chore: merge executor worktree (worktree-agent-abd829a63c8f5dade) Lucas Berger 2026-06-06 21:40:46 -04:00
  • c2e0ab1b1f feat(260606-tv8-01): wire login redirect into CalendarShell meQuery handling Lucas Berger 2026-06-06 21:38:38 -04:00
  • 6dc9ccd2e9 feat(260606-tv8-01): add one-shot login-redirect helper + tests; fix client.ts comment Lucas Berger 2026-06-06 21:37:14 -04:00
  • 237ec493aa feat(260606-tv8-01): add guarded GET /api/login route + tests Lucas Berger 2026-06-06 21:35:52 -04:00
  • b788ffc93e docs(260606-tv8): pre-dispatch plan for sign-in redirect fix Lucas Berger 2026-06-06 21:33:35 -04:00
  • b46b25b26b chore(03): Gate 2 stack bring-up — serve PWA from API image, prod env, credential seed Lucas Berger 2026-06-06 21:30:58 -04:00
  • ca87c023ef wip: phase 03 paused — gap-closure done, docker bring-up awaiting auth+PWA decisions Lucas Berger 2026-06-05 21:48:17 -04:00
  • b3eff3c677 docs(03): record gap-closure completion (03-09..03-12) in STATE + ROADMAP Lucas Berger 2026-06-05 21:10:26 -04:00
  • 0e4a263ce6 merge(03-11): outbox durability + concurrency + etag re-read (CR-04/05, WR-02) Lucas Berger 2026-06-05 21:08:27 -04:00
  • ad181e7b2a docs(03-11): complete outbox durability + etag fix plan summary (CR-04, CR-05, WR-02) Lucas Berger 2026-06-05 21:08:07 -04:00
  • 09fd1f2e92 feat(03-11): GREEN — re-read freshest calendarEvents etag before update PUT (WR-02) Lucas Berger 2026-06-05 21:06:32 -04:00
  • 5eb26c0e6b test(03-11): RED — fresh etag re-read before PUT to avoid spurious 412 (WR-02) Lucas Berger 2026-06-05 21:05:40 -04:00
  • b409c09e25 feat(03-11): GREEN — durable create-before-delete gating + drain concurrency guard (CR-04, CR-05) Lucas Berger 2026-06-05 21:01:57 -04:00
  • 6b2cdf3683 test(03-11): RED — durable create-before-delete gating + concurrency guard (CR-04, CR-05) Lucas Berger 2026-06-05 20:56:07 -04:00
  • 416e813e40 merge(03-10): outbox real VEVENT dispatch + fail-closed creds (CR-02/03, WR-01/04/08) Lucas Berger 2026-06-05 20:53:25 -04:00
  • aefdde13bd docs(03-10): complete outbox ICS builder wiring plan summary Lucas Berger 2026-06-05 20:53:04 -04:00
  • c21b040b36 feat(03-10): fail closed on bad credentials + fix backoff index + explicit randomUUID (CR-03, WR-01, WR-08) Lucas Berger 2026-06-05 20:51:48 -04:00
  • c178dcee0c test(03-10): add RED tests for CR-03 fail-closed creds + WR-01 backoff index Lucas Berger 2026-06-05 20:50:11 -04:00
  • c03b47938e feat(03-10): wire buildVeventString into dispatch path + fix all-day DTEND+1 (CR-02, WR-04) Lucas Berger 2026-06-05 20:47:50 -04:00
  • 813a7ba697 test(03-10): add RED tests for ICS builder wiring + WR-04 + CR-02 Lucas Berger 2026-06-05 20:46:50 -04:00
  • 1fc56f42d0 merge(03-12): EventForm edit/a11y gap closure (WR-03/05/07, IN-03) Lucas Berger 2026-06-05 20:43:45 -04:00
  • 578315c8dd merge(03-09): route-layer reachability gap closure (CR-01, CR-06) Lucas Berger 2026-06-05 20:43:45 -04:00
  • a30a16b18a docs(03-12): complete EventForm gap-closure plan — WR-03/05/07, IN-03/04, PWA assets Lucas Berger 2026-06-05 20:43:12 -04:00
  • 0d3883ee02 docs(03-09): complete plan 09 summary — schema rename + OIDC resolution Lucas Berger 2026-06-05 20:42:13 -04:00
  • e971e16cc6 feat(03-12): GREEN — WR-07 real focus trap on EventForm dialog Lucas Berger 2026-06-05 20:41:28 -04:00
  • fac3a21332 feat(03-09): convert resolveUserId to async — real OIDC iss/sub→users.id via upsertUser (CR-06) Lucas Berger 2026-06-05 20:41:20 -04:00
  • 4244e8cd29 test(03-12): RED — WR-07 focus trap Tab/Shift+Tab cycle tests Lucas Berger 2026-06-05 20:40:40 -04:00
  • f0f1361fba feat(03-12): GREEN — WR-03 blank edit, WR-03 recurrence, WR-05 zone-consistent, IN-03 Lucas Berger 2026-06-05 20:40:11 -04:00
  • 6d1d338a45 test(03-09): add RED OIDC path tests — resolveUserId must call upsertUser (CR-06) Lucas Berger 2026-06-05 20:40:09 -04:00
  • 99cb1698a8 feat(03-09): rename eventFieldsSchema to canonical title/start/end contract (CR-01) Lucas Berger 2026-06-05 20:38:27 -04:00
  • 02e312acdc test(03-12): RED — WR-03 blank edit, WR-03 recurrence, WR-05 zone, IN-03 export Lucas Berger 2026-06-05 20:38:18 -04:00
  • 944693fed0 test(03-09): add RED contract tests for canonical title/start/end client payload Lucas Berger 2026-06-05 20:37:20 -04:00
  • 941c4d621f docs(03): revise gap plans 03-10/11/12 per checker feedback Lucas Berger 2026-06-05 19:27:19 -04:00
  • d1658bd1db docs(03): gap-closure plans 03-09..03-12 for write-path review findings Lucas Berger 2026-06-05 19:20:25 -04:00
  • 628894c8c2 docs(03): add code review report Lucas Berger 2026-06-05 19:11:12 -04:00
  • 1f8775e7b6 docs(03-08): scaffold Gate 2 results + record production build status Lucas Berger 2026-06-05 18:51:37 -04:00
  • 40dfbb48d5 docs(03-06): complete edit/delete + sync toast plan Lucas Berger 2026-06-05 18:48:17 -04:00
  • 40322e11bf feat(03-06): wire EventDetailPopover Edit/Delete footer and implement DeleteConfirmationDialog Lucas Berger 2026-06-05 18:46:24 -04:00
  • 2fbeffee9a test(03-06): add failing tests for EventDetailPopover footer and DeleteConfirmationDialog Lucas Berger 2026-06-05 18:44:40 -04:00
  • aa7c4c37d4 feat(03-06): implement SyncStateToast with polled sync-status feedback (D-05/D-06/D-08/D-09) Lucas Berger 2026-06-05 18:43:36 -04:00
  • 6874e1a074 test(03-06): add failing tests for SyncStateToast all states and polling Lucas Berger 2026-06-05 18:37:07 -04:00
  • 8aeacc8607 feat(03-06): add deleteEvent, fetchSyncStatus client calls and delete/sync Zustand keys Lucas Berger 2026-06-05 18:35:51 -04:00
  • 8357cf998e test(03-06): add failing tests for deleteEvent, fetchSyncStatus, and delete/sync Zustand keys Lucas Berger 2026-06-05 18:34:55 -04:00
  • dbd09bc2bb docs(03-05): complete event write UI plan — EventForm + client calls + FAB Lucas Berger 2026-06-05 18:32:37 -04:00
  • 69eac90bab feat(03-05): mount EventForm + add New Event FAB/toolbar trigger in CalendarShell Lucas Berger 2026-06-05 18:30:25 -04:00
  • 86cefffe2f feat(03-05): implement EventForm modal (create/edit) Lucas Berger 2026-06-05 18:29:23 -04:00
  • df416a45f1 test(03-05): add failing tests for EventForm modal component Lucas Berger 2026-06-05 18:27:09 -04:00
  • 6ffcdcbd6b feat(03-05): add write client calls and eventForm Zustand keys Lucas Berger 2026-06-05 18:26:00 -04:00
  • 6400ce693c test(03-05): add failing tests for write client calls and eventForm store keys Lucas Berger 2026-06-05 18:25:00 -04:00
  • 82ab87a633 docs(03-04): complete outbox worker plan — state machine GREEN, wired at boot Lucas Berger 2026-06-05 18:23:01 -04:00
  • 026aebccdf feat(03-04): wire startOutboxWorker into index.ts at boot Lucas Berger 2026-06-05 18:20:50 -04:00
  • cd4a8931e5 feat(03-04): implement outbox drain state machine (GREEN) Lucas Berger 2026-06-05 18:20:18 -04:00
  • 95864e5dc8 docs(03-07): complete PWA install plan — manifest, InstallPrompt, icons Lucas Berger 2026-06-05 18:07:59 -04:00
  • e0fb34b252 feat(03-07): InstallPrompt — iOS walkthrough banner + Android beforeinstallprompt Lucas Berger 2026-06-05 18:05:30 -04:00
  • bd8283774d feat(03-07): VitePWA manifest + auth-safe SW denylist + iOS head/icons Lucas Berger 2026-06-05 18:02:56 -04:00
  • 7398946aa8 docs(03-03): complete write API surface plan — enqueue-only endpoints GREEN Lucas Berger 2026-06-05 17:59:53 -04:00
  • 0a8222329e feat(03-03): implement write API surface — create/edit/delete + sync-status + writable-calendars Lucas Berger 2026-06-05 17:58:01 -04:00
  • e14c5dab69 test(03-03): extend events tests RED — write/sync-status/writable-calendars endpoints Lucas Berger 2026-06-05 17:54:08 -04:00
  • 4eb7c28797 docs(03-02): complete broker primitives plan — vevent.ts + write.ts GREEN Lucas Berger 2026-06-05 17:50:23 -04:00
  • a1243c1b83 feat(03-02): implement tsdav write wrappers (Task 2 GREEN) + fix vevent.ts TS type Lucas Berger 2026-06-05 17:48:12 -04:00
  • b23b9597df feat(03-02): implement buildVeventString VEVENT builder (Task 1 GREEN) Lucas Berger 2026-06-05 17:46:19 -04:00
  • 0c10f9a6d3 docs(03): track follow-up to adopt drizzle generate+migrate workflow Lucas Berger 2026-06-05 17:42:58 -04:00
  • a487569c7e docs(03-01): complete foundation-scaffold plan Lucas Berger 2026-06-05 17:41:41 -04:00
  • bbfccda756 test(03-01): add Wave 0 RED test scaffold for all Phase 3 behaviors Lucas Berger 2026-06-05 17:26:02 -04:00
  • 0c0bcefeef feat(03-01): populate calendarEvents.objectUrl in sync.ts from obj.url Lucas Berger 2026-06-05 17:23:06 -04:00
  • 78f0deefac feat(03-01): extend schema with calendarOutbox table + calendarEvents.objectUrl; install vite-plugin-pwa Lucas Berger 2026-06-05 17:22:37 -04:00
  • 93302cf942 docs(03): finalize phase plan (8 plans, verified) Lucas Berger 2026-06-05 17:08:16 -04:00
  • 9dd08d28d1 docs(03): create phase plan (8 plans, 5 waves) Lucas Berger 2026-06-05 16:57:01 -04:00
  • 6f5110266d docs(03): UI design contract Lucas Berger 2026-06-05 16:39:15 -04:00
  • 7b0463d25e docs(03): add research + validation strategy Lucas Berger 2026-06-05 16:33:30 -04:00
  • 364b6e68b0 docs(03): research phase domain Lucas Berger 2026-06-05 16:32:38 -04:00
  • 46cd35e4de docs(state): record phase 3 context session Lucas Berger 2026-06-05 16:17:26 -04:00
  • e579a6870a docs(03): capture phase context Lucas Berger 2026-06-05 16:17:26 -04:00
  • cd71b2bbe2 docs(phase-02): record follow-up todos (dev-run docs, traceability, DST spot-check) Lucas Berger 2026-06-05 16:01:46 -04:00
  • edf9649a21 docs(phase-02): complete phase — mark roadmap + requirements traceability Lucas Berger 2026-06-05 16:01:15 -04:00
  • 45b4c40c12 docs(phase-02): evolve PROJECT.md + STATE after phase completion Lucas Berger 2026-06-05 16:01:04 -04:00
  • b794785e09 test(02): human UAT approved — all 4 success criteria; verification passed Lucas Berger 2026-06-05 16:00:27 -04:00
  • 504ce369b5 fix(02): display events in viewer's local timezone, not UTC Lucas Berger 2026-06-05 15:31:28 -04:00
  • 05d9f70b45 fix(02): window occurrences in UTC, not server-local timezone Lucas Berger 2026-06-05 15:28:26 -04:00
  • d07e8af88d fix(02): keep calendar mounted on empty windows so navigation survives Lucas Berger 2026-06-05 15:21:58 -04:00
  • 92dbbfe110 fix(02): give React adapter wrapper height so week/day grid scrolls Lucas Berger 2026-06-05 15:19:05 -04:00