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

5 KiB
Raw Blame History

event-detail.screen

Single event from event-scrapers aggregator. Implements brief R §R2c. Reached from tour-leg-detail.screen.md anchor row, from the touring drawer's Events tab, or from a discovery card. Voice: working with hearth on rich event content.

Layout (full-screen drawer)

┌─────────────────────────────────────────────────┐
│ ◄ Touring                              ⋯       │ 56pt
├─────────────────────────────────────────────────┤
│  Anime-Berlin                                   │   event title
│  Oct 46 · Berlin · convention center           │   date / city / venue
│  Source: animecons · last scouted 2h ago        │   provenance + freshness
│                                                 │
│  ─── Audience overlap ───                       │
│  High · matches "anime-adjacent kink"           │   strategist inference
│  Prior leg: Anime-LA (Apr) booked $11.8k        │   historical anchor
│                                                 │
│  ─── Anchored legs ───                          │
│  ▢ Berlin Oct 37 · in planning (this leg)      │   tap → tour-leg-detail
│  ✓ Anime-LA (Apr 2026) · closed · $11.8k        │   past leg shortcut
│                                                 │
│  ─── Event signal ───                           │
│  Tags: anime · convention · trans-friendly      │
│  Expected attendance: 18,000                    │
│  [ Open source page ↗ ]                          │
│                                                 │
│  ─── Actions ───                                │
│  [ Anchor a new leg to this event ]              │
│  [ Add to watchlist ]                            │   doesn't commit a leg yet
│  [ Hide this event ]                             │   suppresses future suggestions
│                                                 │
└─────────────────────────────────────────────────┘

Components

Component Notes
Top bar Back + overflow (share, copy URL, report-stale).
Title block Event name + date + city + venue.
Provenance Which event-scrapers source + last scout time.
Audience overlap strategist's inference + historical anchor data when available.
Anchored legs Tour legs currently or historically anchored to this event.
Event signal Tags + expected attendance + source-page link.
Actions 3 buttons: anchor leg / watchlist / hide.

States

  1. Default — full layout.
  2. Stale (last scouted >24h) — provenance chip pulses; "Re-scout" button appears.
  3. No anchored legs — Anchored section empty: "No leg yet. Anchor one to start planning."
  4. Conflict (event date overlaps with another active leg) — top inline pill: "⚠ Overlaps Berlin Oct 37 leg already." Tap → resolve.
  5. Hidden — sheet shows muted; banner: "You hid this event. Unhide?"
  6. Watchlisted — small chip "On your watchlist."
  7. Source unreachable (per brief M §M2) — provenance chip red; "Couldn't reach {source} for refresh."
  8. VoiceOver — title → provenance → overlap → legs → signal → actions.

Interactions

  • Tap "Open source page ↗" → in-app browser (or external Safari, per user preference).
  • Tap anchored leg row → tour-leg-detail.screen.md.
  • Tap "Anchor a new leg" → starts ai-copilot conversation with this event as context; produces a draft leg.
  • Tap "Add to watchlist" → recorded in events_watchlist; future scouts surface changes.
  • Tap "Hide this event" → suppresses + records agent_actions row; reversible via watchlist screen.

Edge cases

  • Event canceled by source — banner: "Source marked this event canceled on {date}. Your leg may need re-planning."
  • Date changed in source — banner: "Date shifted from Oct 46 to Oct 1113. Update your leg?"
  • Event scraped from multiple sources, sources disagree — Provenance shows primary + "(conflicts with N other sources)"; tap to see disagreement.
  • Coop intel on the event's neighborhood — chip per brief N: "🛡 1 coop report flagged this venue area."

Out of scope

  • The watchlist root view (a list of watchlisted events; defer to its own screen).
  • Event-discovery feed (proactive surfacing by ai-copilot; brief R §R1a covers conceptually).