cocottetech/@platform/codebase/@features/ai-copilot/docs/notifications-settings.screen.md
natalie 1b719e1fd7 chore(bootstrap): initial V4 commit
Clean successor to V3 (forge: lilith/atlilith). Seeded from local Mac
working tree at ~/Code/@projects/@cocottetech/. node_modules and build
artifacts excluded via .gitignore.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 08:11:41 -07:00

86 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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+).