prospector/web/index.html
Natalie 2b381fb777 feat(web): full PWA — triage, detail, reports, queue, pastebin, campaigns
Grows the monitoring-only control panel into the full operator app that
replaces the Claude coworker. Installable standalone (manifest + app-shell
service worker + icon); a lightweight hash router drives a nav-rail shell.

Views (all wired to the new backend surface):
- Triage    : Life/Dates/Digital segmented roster + search → prospect detail
- Detail    : thread, Mr. Number panel + request, signals/booking, draft-from-🌹
              + send-via-outbox composer, teach-loop correction box
- Queue     : held-for-review backlog, open thread / release to outbox
- Campaigns : tag + market + first/last-msg-ago filter builder, audience
              preview (count + sample), template pick, confirmed launch, history
- Reports   : auto-qualify funnel, 7d volume chart, band/market bars, backlog
- Pastebin  : live 🌹 canon templates
- Control   : the original kill-switch / digest / activity / held panel

api.ts extended with typed clients for every endpoint. tsc clean, vite build
clean (45 modules). Note: in-browser visual verification could not run here —
the Chrome extension is not connected; build + typecheck are green and the dev
server serves 200.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 07:57:40 -04:00

19 lines
736 B
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#0a0a0c" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Prospector" />
<link rel="manifest" href="/manifest.webmanifest" />
<link rel="icon" type="image/svg+xml" href="/icon.svg" />
<link rel="apple-touch-icon" href="/icon.svg" />
<title>Prospector</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>