style(13-03): apply Prettier formatting across repo

Mechanical reformat — no logic changes. 398 files changed, 19125
insertions(+), 16457 deletions(-). Prettier 3.8.4 with .prettierrc
(singleQuote:true, semi:true, tabWidth:2, trailingComma:all,
printWidth:100). Isolated per D-13-08 for reviewability.
This commit is contained in:
Lucas Berger
2026-06-11 20:35:18 -04:00
parent 4bc0445173
commit 982438dc10
398 changed files with 19050 additions and 16382 deletions
@@ -11,12 +11,12 @@
## Area selection
| Option | Description | Selected |
|--------|-------------|----------|
| Copy & anti-spam | Wording per type + coalescing | ✓ |
| Reminder scope & timing | Whose events, fixed/custom lead, all-day | ✓ |
| Quiet hours / DND | Suppress non-urgent in a quiet window | |
| Onboarding & opt-out | When to prompt, toggle granularity | ✓ |
| Option | Description | Selected |
| ----------------------- | ---------------------------------------- | -------- |
| Copy & anti-spam | Wording per type + coalescing | ✓ |
| Reminder scope & timing | Whose events, fixed/custom lead, all-day | ✓ |
| Quiet hours / DND | Suppress non-urgent in a quiet window | |
| Onboarding & opt-out | When to prompt, toggle granularity | ✓ |
**Notes:** Quiet hours/DND left to Claude's discretion (v1 = no quiet hours).
@@ -25,31 +25,35 @@
## Copy & anti-spam
### List-change batching
| Option | Description | Selected |
|--------|-------------|----------|
| Coalesce per list | Batch same-list changes in ~3060s into one push | ✓ |
| Coalesce + skip check-offs | Same, but check-offs never push | |
| One push per change | Immediate, no batching | |
| Option | Description | Selected |
| -------------------------- | ------------------------------------------------ | -------- |
| Coalesce per list | Batch same-list changes in ~3060s into one push | ✓ |
| Coalesce + skip check-offs | Same, but check-offs never push | |
| One push per change | Immediate, no batching | |
### Detail level
| Option | Description | Selected |
|--------|-------------|----------|
| Specific details | Full specifics for everything | |
| Specific events, generic lists | Events show detail; list pings generic | ✓ |
| Generic only | Everything generic | |
| Option | Description | Selected |
| ------------------------------ | -------------------------------------- | -------- |
| Specific details | Full specifics for everything | |
| Specific events, generic lists | Events show detail; list pings generic | |
| Generic only | Everything generic | |
### Attribution
| Option | Description | Selected |
|--------|-------------|----------|
| Name the actor | "Wife checked off…" | ✓ |
| No name | "Milk checked off…" | |
| Option | Description | Selected |
| -------------- | ------------------- | -------- |
| Name the actor | "Wife checked off…" | |
| No name | "Milk checked off…" | |
### Event-change granularity
| Option | Description | Selected |
|--------|-------------|----------|
| Meaningful changes only | new/delete/time/date/title/location; description silent | ✓ |
| Time/date only | only reschedules + add/delete | |
| Any change | including description edits | |
| Option | Description | Selected |
| ----------------------- | ------------------------------------------------------- | -------- |
| Meaningful changes only | new/delete/time/date/title/location; description silent | ✓ |
| Time/date only | only reschedules + add/delete | |
| Any change | including description edits | |
**User's choice:** Coalesce per list; specific-for-events/generic-for-lists; name the actor; meaningful changes only.
**Notes:** Generic-list + name-actor reconciled as "Wife made 3 changes to Groceries" (actor + list + count, no item text).
@@ -59,25 +63,28 @@
## Reminder scope & timing
### Whose events remind
| Option | Description | Selected |
|--------|-------------|----------|
| Own + shared | Own personal + shared Family | |
| Everything visible | Incl. partner's personal events | |
| Shared only | Shared Family calendar only | ✓ |
| Option | Description | Selected |
| ------------------ | ------------------------------- | -------- |
| Own + shared | Own personal + shared Family | |
| Everything visible | Incl. partner's personal events | |
| Shared only | Shared Family calendar only | ✓ |
### Lead time
| Option | Description | Selected |
|--------|-------------|----------|
| Fixed 15 min (v1) | Always ~15 min | ✓ |
| User default, changeable | One global offset | |
| Per-event lead time | Per-event offset field | |
| Option | Description | Selected |
| ------------------------ | ---------------------- | -------- |
| Fixed 15 min (v1) | Always ~15 min | ✓ |
| User default, changeable | One global offset | |
| Per-event lead time | Per-event offset field | |
### All-day events
| Option | Description | Selected |
|--------|-------------|----------|
| Morning-of | Fixed AM time | |
| No reminder | Never push | ✓ |
| Evening before | ~6pm prior day | |
| Option | Description | Selected |
| -------------- | -------------- | -------- |
| Morning-of | Fixed AM time | |
| No reminder | Never push | ✓ |
| Evening before | ~6pm prior day | |
**User's choice:** Shared-only; fixed 15 min; no all-day reminder.
**Notes (load-bearing rationale, free-text):** "the native mail client on the device will still send notifications. we dont want to duplicate that." Personal-calendar reminders are already covered by each member's native device calendar app; FamilySync owns reminders for the shared Family calendar only. Confirmed deliberately after a challenge that this narrows NOTIF-01.
@@ -87,25 +94,28 @@
## Onboarding & opt-out
### Permission prompt timing
| Option | Description | Selected |
|--------|-------------|----------|
| Contextual, after install | Explainer + tap right after install | ✓ |
| On first relevant action | After first event create | |
| Settings toggle only | No auto-prompt | |
| Option | Description | Selected |
| ------------------------- | ----------------------------------- | -------- |
| Contextual, after install | Explainer + tap right after install | ✓ |
| On first relevant action | After first event create | |
| Settings toggle only | No auto-prompt | |
### Opt-out granularity
| Option | Description | Selected |
|--------|-------------|----------|
| Single master toggle | One on/off | ✓ |
| Per-category toggles | reminders/event/list switches | |
| Master + categories | Both | |
| Option | Description | Selected |
| -------------------- | ----------------------------- | -------- |
| Single master toggle | One on/off | ✓ |
| Per-category toggles | reminders/event/list switches | |
| Master + categories | Both | |
### Dead-subscription recovery
| Option | Description | Selected |
|--------|-------------|----------|
| Silent auto re-subscribe | Background re-subscribe if permission granted | ✓ |
| Silent, then banner fallback | Banner if silent fails | |
| Always prompt | Banner on every death | |
| Option | Description | Selected |
| ---------------------------- | --------------------------------------------- | -------- |
| Silent auto re-subscribe | Background re-subscribe if permission granted | ✓ |
| Silent, then banner fallback | Banner if silent fails | |
| Always prompt | Banner on every death | |
**User's choice:** Contextual after-install prompt; single master toggle; silent auto re-subscribe.