-
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