87 lines
4.9 KiB
Markdown
87 lines
4.9 KiB
Markdown
|
|
# notifications-settings.screen
|
|||
|
|
|
|||
|
|
S3 settings category — notification channel × stakes × specialist preferences. Implements per [brief S §S3](./S-settings-ia.brief.md) + [brief C](./C-notifications.brief.md) matrix. Reached from settings-root.screen.md "Notifications" card. Voice: working.
|
|||
|
|
|
|||
|
|
## Layout (full-screen sheet)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────────────────┐
|
|||
|
|
│ ◄ Settings Done │ 56pt
|
|||
|
|
├─────────────────────────────────────────────────┤
|
|||
|
|
│ │
|
|||
|
|
│ ─── Channels ─── │
|
|||
|
|
│ ☑ iOS push │
|
|||
|
|
│ ☑ iMessage self-notify │
|
|||
|
|
│ ☑ Email digest │
|
|||
|
|
│ ☐ Apple Watch │ AB only on if Watch paired
|
|||
|
|
│ │
|
|||
|
|
│ ─── By stakes ─── │
|
|||
|
|
│ Push iMsg Email Watch │ matrix per brief C
|
|||
|
|
│ High ☑ ☑ ☑ ☑ │
|
|||
|
|
│ Med ☑ ☐ ☑ ☐ │
|
|||
|
|
│ Low ☐ ☐ ☑ ☐ │
|
|||
|
|
│ │
|
|||
|
|
│ ─── Quiet hours ─── │
|
|||
|
|
│ From: [ 22:00 ▼ ] To: [ 08:00 ▼ ] │
|
|||
|
|
│ Override for high-stakes: ☑ allow │
|
|||
|
|
│ │
|
|||
|
|
│ ─── Per-specialist ─── │
|
|||
|
|
│ • ai-copilot [ inherits ▼ ] │
|
|||
|
|
│ • triage [ high+med only ▼ ] │
|
|||
|
|
│ • content-x [ inherits ▼ ] │
|
|||
|
|
│ • bookings-tryst [ failure-only ▼ ] │
|
|||
|
|
│ [ See all 11 → ] │
|
|||
|
|
│ │
|
|||
|
|
│ ─── Daily digest ─── │
|
|||
|
|
│ ☑ Show in-app at first chat open │
|
|||
|
|
│ ☑ Send via email at 06:00 local │
|
|||
|
|
│ [ Customize sections → ] │
|
|||
|
|
│ │
|
|||
|
|
└─────────────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Components
|
|||
|
|
|
|||
|
|
| Component | Notes |
|
|||
|
|
|---|---|
|
|||
|
|
| Channels | 4 channels Quinn can opt into. Watch greyed when no Watch paired. |
|
|||
|
|
| Stakes matrix | 3×4 grid: high/med/low × channel. Per brief C default-checked pattern. |
|
|||
|
|
| Quiet hours | Time range + high-stakes override flag. |
|
|||
|
|
| Per-specialist | Per-specialist preference: inherits / high+med only / failure-only / off. |
|
|||
|
|
| Daily digest | In-app daily-digest.screen.md surfacing toggle + email cadence. |
|
|||
|
|
|
|||
|
|
## States
|
|||
|
|
|
|||
|
|
1. **Default** — sensible matrix per brief C. Quiet hours empty (no restriction).
|
|||
|
|
2. **No push permission** — top banner: "Cocotte doesn't have push permission. Grant in iOS Settings."
|
|||
|
|
3. **Watch unpaired** — Watch column greyed.
|
|||
|
|
4. **All channels off** — banner: "Cocotte can't reach you. Approvals will queue in-app only. Enable at least one channel."
|
|||
|
|
5. **Quiet hours covering current time** — banner: "It's quiet hours now. Cocotte's holding notifications."
|
|||
|
|
6. **Per-specialist override active** — chip: "{N} specialists overriding defaults."
|
|||
|
|
7. **VoiceOver** — matrix announced as table; channel columns announced as headers.
|
|||
|
|
|
|||
|
|
## Interactions
|
|||
|
|
|
|||
|
|
- **Tap a stakes-matrix cell** → toggle that channel for that stakes tier.
|
|||
|
|
- **Tap quiet hours picker** → time range editor.
|
|||
|
|
- **Tap per-specialist row** → preference picker for that specialist.
|
|||
|
|
- **Tap "Customize sections"** → daily-digest section toggles (which sections appear).
|
|||
|
|
- **Tap "See all 11"** → full per-specialist list.
|
|||
|
|
|
|||
|
|
## Edge cases
|
|||
|
|
|
|||
|
|
- **High-stakes notification during quiet hours, override off** — Cocotte still sends via iMessage as fallback (per brief M fallback hierarchy).
|
|||
|
|
- **Email channel set but Quinn's email unverified** — chip "Email unverified. Add a working address."
|
|||
|
|
- **Daily digest off + chat-home open at 06:00** — Cocotte still shows the pinned card (digest section toggle covers the email, not in-app).
|
|||
|
|
|
|||
|
|
## Related
|
|||
|
|
- [Brief S §S3](./S-settings-ia.brief.md) — parent.
|
|||
|
|
- [Brief C](./C-notifications.brief.md) — channel × stakes matrix design.
|
|||
|
|
- [Brief M §M4](./M-error-degraded-modes.brief.md) — fallback hierarchy.
|
|||
|
|
- [daily-digest.screen.md](./daily-digest.screen.md) — in-app digest target.
|
|||
|
|
- [specialist-drawer.screen.md](./specialist-drawer.screen.md) — per-specialist override entry.
|
|||
|
|
|
|||
|
|
## Out of scope
|
|||
|
|
- Per-channel quiet-hours overrides (defer).
|
|||
|
|
- Notification-action quick replies (P3+).
|