cocottetech/@platform/codebase/@features/ai-copilot/docs/engagement-drawer.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

74 lines
4 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.

# engagement-drawer.screen
The engagement-feed drawer — list of inbound engagement events (replies, DMs, mentions, prospects warming) per [brief B](./B-drawers.brief.md) §engagement. Sibling to unified-inbox; this drawer is the *prospect-funnel* view (typed by status × surface × specialist), where unified-inbox is the *raw thread* view. Voice: working.
## Layout (full-screen drawer)
```
┌─────────────────────────────────────────────────┐
│ ◄ Chat 🔍 ⚙ filters │ 56pt
├─────────────────────────────────────────────────┤
│ [ All · 47 ] [ Hot · 12 ] [ Warm · 28 ] [ Cold]│ tier filter
│ via: [ any ▾ ] sort: [ tier desc ▾ ] │
├─────────────────────────────────────────────────┤
│ │
│ ─── Today ─── │
│ 🔥 @felix · Tryst · "thinking about Berlin…" │ tier + handle + source + excerpt
│ drafted reply pending you · 14:02 │
│ 🔥 @mira · OnlyFans DM · "VIP rates?" │
│ drafted by content-onlyfans · 11:48 │
│ 🟡 @carl · X reply · "love the tease" │
│ no draft, low-tier · 10:32 │
│ │
│ ─── Earlier this week ─── │
│ 🟡 @vincent · TS4Rent · 2d ago │
│ ❄ @anon · OnlyFans · 4d (blocked: spam) │
│ … │
│ [ See all → ] │
│ │
└─────────────────────────────────────────────────┘
```
## Components
| Component | Notes |
|---|---|
| Top bar | Back + search (routes to global-search scoped to engagement) + filter cog. |
| Tier filter | Hot ≥0.7 / Warm 0.40.7 / Cold <0.4, per `prospect-classifier-claude` (brief J port). |
| Source filter | All / iMessage / Tryst / OF / X / (24-surface roster). |
| Sort | Tier desc / time desc / unread first. |
| Row | Tier glyph + handle + source chip + excerpt + draft status + timestamp. |
## States
1. **Default** list grouped by day.
2. **Filter active** chip on top reflecting filter.
3. **Empty (after filter)** "Nothing in this slice."
4. **Empty (truly)** "No engagement yet. Quiet day."
5. **Refreshing** pull-to-refresh spinner.
6. **Backend-degraded (M §M2b)** banner: "Last-seen 14h ago; refreshing."
7. **VoiceOver** sections + rows announce tier as "hot/warm/cold."
## Interactions
- **Tap row** prospect-detail.screen.md.
- **Long-press row** quick menu: Block / Mark cold / Approve draft / Counter-action.
- **Tap tier filter** re-pull list.
- **Pull-to-refresh** re-pull.
## Edge cases
- **Triage marked something as blocked (per brief K §K1)** row shows "(blocked: reason)" muted.
- **Coop intel hit (per N) on the sender** chip "🛡 coop flag" on the row.
- **Multi-thread prospect** (same person across surfaces) single row with chip "+N threads"; tap expands.
## Related
- [Brief B](./B-drawers.brief.md) parent.
- [unified-inbox.screen.md](./unified-inbox.screen.md) sibling (raw thread feed).
- [prospect-detail.screen.md](./prospect-detail.screen.md) row target.
- [Brief I](./I-audit-trust-replay.brief.md), [Brief K](./K-safety-blocklist.brief.md), [Brief N](./N-provider-coop.brief.md), [Brief P](./P-inboxes.brief.md).
- [triage contract](./specialist-triage.contract.md).
## Out of scope
- Composing a new outbound (composer is per-prospect from prospect-detail).
- Bulk operations (defer).