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

140 lines
8.7 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.

# Surfaces settings · screen
The operational view of every surface Quinn touches. Reached from chat-home settings overlay or from any surface chip's long-press. Pairs with [brief O](./O-surfaces-roster.brief.md) (canonical roster), [brief F](./00-system-visual-system.md) §F5 (iconography + status-state overlays), [brief L](./L-specialists-fleet.brief.md) §L1 (specialist routing per surface).
Voice register: **plain** — this is an operational surface, not a hearth one.
## Layout (iPhone, scrollable)
```
┌────────────────────────────────────────┐
│ ← Surfaces │
├────────────────────────────────────────┤
│ [filter: live · pending · blocked] │
├────────────────────────────────────────┤
│ N1 · Content (11) ▾ │
│ ◉ OnlyFans live · last post 2h │
│ ◉ X (Twitter) live · last post 47m │
│ ◌ Instagram thin · draft-only │
│ ◌ TikTok thin · draft-only │
│ ◌ Threads thin · cross-post │
│ ◌ Bluesky not active · enable │
│ ◌ Reddit not active · enable │
│ ◌ Fansly not active · enable │
│ ◌ YouTube not active │
│ ◌ Twitch not active │
│ ◌ Facebook not active │
├────────────────────────────────────────┤
│ N2 · Escort directories (12) ▾ │
│ ◉ Tryst live · bumping 4h │
│ ◉ TS4Rent live · bumping 4h │
│ ◉ Seeking live · listing │
│ ⚠ PrivateDelights pending verification│
│ ◉ TSEscorts live · Berkeley CA │
│ ◉ AdultSearch live · ID 3809904 │
│ ◉ AdultLook live · plain-text │
│ 🔒 Eros blocked · legal name │
│ ⚠ EroticMonkey verification video │
│ ⚠ SkipTheGames photo rejected │
│ ◌ MegaPersonals not started │
│ ⚠ ts.live email-verify pending │
├────────────────────────────────────────┤
│ N3 · Brand sites (3) ▾ │
│ ⬛ transquinnftw.com live · canonical │
│ ⬛ adult-therapy… live · tour pages │
│ ⬛ futa-waifu-tour live · niche │
├────────────────────────────────────────┤
│ N4 · Channels (6) ▾ │
│ ▣ iMessage live · auto-reply │
│ ▣ SMS live · draft-only │
│ ▣ Email (Proton: hi@cocotte.maison) │
│ live · draft-only │
│ ▣ Email (Proton: myprivatedelights@…) │
│ live · auto-archive │
│ ▣ Email (Gmail) read-only │
│ ▣ Sniffies light · hands-off │
├────────────────────────────────────────┤
│ N5 · Commerce (4) — P5+ enumerated only │
└────────────────────────────────────────┘
```
## Status-state glyphs (per brief F F5b overlays)
| Glyph | Meaning | Color |
|---|---|---|
| ◉ filled circle | live, active | accent-rose |
| ◌ hollow circle | live but thin / not in use | neutral |
| ⚠ amber | pending verification or verification problem | amber |
| 🔒 lock | blocked (legal / policy) | neutral-low-opacity |
| ⬛ rounded square | Quinn-owned brand site (N3) | rose |
| ▣ rounded square (channel) | N4 channel (geometry distinguishes from surface) | channel tint |
Status glyph + display name + one-line context (last action / current policy / verification state).
## Row interactions
- **Tap row**: opens surface-detail sheet (below).
- **Long-press**: bulk-select for "snooze all selected" / "set posture to draft-only on selected" / "open audit for selected."
- **Swipe left**: snooze (per H1 vacation pattern, scoped to this surface).
- **Swipe right**: shortcut to the corresponding specialist drawer (brief B6).
## Surface-detail sheet (the per-row deep-dive)
```
┌────────────────────────────────────────┐
│ Tryst ✕ │
│ N2 · Escort directory │
│ Specialist: bookings-tryst │
├────────────────────────────────────────┤
│ Status live │
│ Policy 4h bumps (active 1002) │
│ Last bump 11:02 · OK │
│ Next bump 15:02 · in 1h 23m │
│ Last fail 03:14 → recovered 03:16 │
├────────────────────────────────────────┤
│ Trust (last 30d) 0.94 ▰▰▰▰▰▰▰▱▱▱ │
│ Actions 247 · 3 corrections│
│ Profile edited 2 days ago │
├────────────────────────────────────────┤
│ [ Edit policy ] │
│ [ Open audit (Tryst slice) ] │
│ [ Pause bumps ] [ Snooze ] │
│ [ Re-auth ] [ Archive surface ] │
└────────────────────────────────────────┘
```
## States to render
1. **Default** — all surfaces grouped, filter "all", live + pending visible.
2. **Filter: live only** — N3 brand sites and live N2 directories shown.
3. **Filter: pending** — surfaces needing Quinn attention (verification, photo rejected, email pending).
4. **Filter: blocked** — surfaces locked behind external dependencies (Eros legal name).
5. **Empty after filter** — "No surfaces in this state right now."
6. **Surface-detail sheet for a live surface** (Tryst pattern above).
7. **Surface-detail sheet for a pending surface** — replaces policy block with verification-status block + a "What's needed" list.
8. **Surface-detail sheet for a blocked surface** — replaces actions with a single "What's blocking" note (e.g. "Legal name change must complete first") and a "Notify me when ready" toggle.
9. **N5 commerce stub** — section collapsed by default with explainer: "Enumerated for completeness. No design effort until Quinn opts in."
## Edge cases
- **Newly-active surface** (e.g. Quinn just turned Bluesky on) — appears with a small `new` chip until Quinn acknowledges by opening the detail sheet once.
- **Status drift** (Tryst lost auth overnight; system flips status to pending behind the scenes) — appears as ⚠ with banner inside the detail sheet: "Auth expired at 04:12. Re-auth to resume."
- **Specialist promotion proposal** (`bookings-directories` is suggesting `seeking` graduate to its own specialist per brief L promotion path) — surface-detail sheet for seeking shows an inline card: "Cocotte thinks Seeking has earned its own specialist. Promote to `bookings-seeking`? — Approve / hold."
- **Bulk-select with mixed states** — disable bulk actions that don't apply (e.g. "pause bumps" disabled if selection includes a non-bumping surface).
## Brief O open questions that touch this screen
- **O-Q1 Sniffies** — currently rendered under N4 channels with `light surface` label; if reclassified to N2 directory the row moves and gets a bump policy.
- **O-Q2 Seeking** — currently under N2; if reclassified to its own category, a new section appears between N2 and N3.
- **O-Q3 Bluesky / Reddit / Fansly priority** — rendered as `not active · enable` rows; if deprioritized to noise, they should be filterable to hidden.
These three are blocking for the rendering choices made above. See [OPEN-DECISIONS.md](./OPEN-DECISIONS.md).
## Related
- [brief O](./O-surfaces-roster.brief.md) — canonical roster.
- [brief F](./00-system-visual-system.md) §F5 — iconography + status overlays.
- [brief L](./L-specialists-fleet.brief.md) §L1 — specialist routing per surface.
- [brief H](./H-recurring-chores.brief.md) §H5 — multi-surface card density (relevant when "snooze N selected" fans out).
- [brief K](./K-safety-blocklist.brief.md) §K3c-4 — Eros blocked-state hard rule.
- [`degraded-mode.flow.md`](./degraded-mode.flow.md) — what happens when a surface row flips to ⚠.