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>
5.5 KiB
5.5 KiB
tryst-location-lock.screen
Tryst monthly location-lock confirmation + change flow. Implements surface-tryst.brief.md §7. Reached from chat-home approval card ("Your Berlin lock expires in 3 days") or from tryst-profile-editor.screen.md → location field. Voice: working; plain on cost / conflict warnings.
Layout (full-screen sheet)
┌─────────────────────────────────────────────────┐
│ Cancel Tryst location lock Save │ 56pt
├─────────────────────────────────────────────────┤
│ │
│ ─── Current ─── │
│ Location: San Francisco │
│ Locked: 2026-05-01 → 2026-06-01 │
│ Expires in 14 days │
│ │
│ ─── Renew or change ─── │
│ ● Renew at SF for next month │ default if quiet
│ ○ Move to a new city │
│ [ Berlin ▼ ] (changes are $X re-lock fee) │
│ ○ Tour-only month (no base city) │ advanced │
│ │
│ ─── Upcoming tours (next 30d) ─── │
│ • Berlin (Oct 3–7) — exception, already │
│ declared │
│ │
│ ─── Conflicts ─── │ only if applicable
│ ⚠ Your Berlin tour overlaps your declared │
│ SF lock. Change base or shorten tour. │
│ │
└─────────────────────────────────────────────────┘
Components
| Component | Notes |
|---|---|
| Current card | Live state from Tryst — city + lock window + days-to-expire. |
| Renew radio | Default = renew current city (low friction). Change-city option triggers re-lock fee warning. Tour-only option for nomadic months. |
| Upcoming tours | Read-only list of declared tours (per tour-leg-detail.screen.md); shows the tour exception. |
| Conflicts | Only shown if declared tour overlaps proposed lock. |
States
- Quiet renewal (>14d until expire) — Renew radio selected; minimal copy.
- Expiring soon (≤14d) — pulses amber; banner: "Lock expires in N days. Quinn, what's your call?"
- Expired — high-stakes: red banner: "Your Tryst lock expired. Your listing has down-ranked. Renew now to recover."
- Move proposed — re-lock fee warning shown; confirmation required.
- Tour-only month — banner explaining: "Tour-only mode reduces base-city visibility. Your tours remain visible. Are you sure?"
- Conflict (tour overlaps proposed base) — warning section visible; Save disabled until resolved.
- Saving — banner: "Locking with Tryst..."
- Saved — sheet dismisses; receipt: "Locked SF through 2026-07-01."
- Failed (Tryst rejection or payment failure on re-lock fee) — banner with retry.
- VoiceOver — current → renew options → tours → conflicts.
Interactions
- Tap Renew radio → straightforward continuation; no fee.
- Tap "Move to a new city" → city picker (autocomplete from Tryst's city list); shows re-lock fee inline.
- Tap "Tour-only month" → confirmation copy expands.
- Tap Save → high-stakes confirmation per brief M §M3 if change-city or tour-only.
- Swipe-down with dirty → "Discard?"
Edge cases
- Re-lock fee unavailable (Tryst hasn't sent pricing) — fall back to copy: "Re-lock fee depends on tier; confirm on Tryst."
- City not in Tryst's list — Quinn types a city Tryst doesn't recognize — chip: "Tryst doesn't have this city. Try a nearby one?"
- Lock declined mid-flight by Tryst (payment failed, account flag, etc.) — banner with reason + remediation.
- Conflict with declared K4 jurisdiction (Quinn declared SF banned in K4) — soft warning: "Your jurisdiction rules flag SF. Override?"
- Tour declared partly overlaps proposed lock — UX prompts: "Trim your tour by 2 days, OR move the lock start by 2 days?"
Generalization callout
Location lock is mostly Tryst-specific (and possibly Slixa-TLC-similar). Most directories don't have location-lock at all. Per-surface brief flags as absent. The pattern would generalize for any directory that requires monthly base-location commitment.
Related
- surface-tryst.brief.md §7 — parent.
- tryst-profile-editor.screen.md — entry from profile.
- tour-leg-detail.screen.md — tour conflict source.
- Brief K §K4 — jurisdiction rules.
- Brief M §M3 — high-stakes confirmation.
- Brief Z — re-lock fee is a financial event.
- Brief I — every lock = audit row.
Out of scope
- Bulk-lock multiple months in advance (defer; one month at a time).
- Lock to a region instead of a city (defer; Tryst's model is city-only).