← Back to brief

reference pane of glass pwa

memory · reference_pane_of_glass_pwa.md

Permanent URL

https://brief.josephbowens.com

Fallback (always works regardless of custom-domain state):
https://skyrun-brief.pages.dev

Architecture


11pm Mac → nightly-consolidation runs
        → build_pwa.py generates index.html in ~/Library/Application Support/SkyRun/pwa/
        → deploy_pwa.sh pushes to Cloudflare Pages via wrangler
        → ~30 seconds later, new HTML is live globally

Phone (anywhere, any network):
→ https://brief.josephbowens.com
→ Cloudflare edge → cached HTML
→ Mac state completely irrelevant

File layout

Managing deploys

Updating the token

If the token needs rotation (e.g. leaked, expired, or narrowing permissions): 1. Create new token at https://dash.cloudflare.com/profile/api-tokens 2. Edit ~/Library/Application Support/SkyRun/.env with new value 3. Delete old token in Cloudflare dashboard Token needs Cloudflare Pages: Edit at minimum.

Decommissioned (no longer in use)

Phone setup (one-time)

1. Open Safari on iPhone → https://brief.josephbowens.com 2. Share → Add to Home Screen → name "SkyRun" → Done 3. Tap icon anytime to open. Works on any network, any location.

What the PWA shows

Five collapsible <details> sections, zero JavaScript required (works in every browser including iOS Quick Look): 1. 📋 Morning Brief (open by default) 2. 🔥 Active Deals (from knowledge_graph.json) 3. ⏱ Scheduled Tasks (all 7 cron tasks) 4. 📁 Consolidation Reports (archive) 5. 🧠 Project Memory (41 files grouped by type)

Cloudflare Access auth gate — ACTIVE (2026-04-22)

Auth flow on phone:
1. Tap Home-Screen PWA icon → Safari loads https://brief.josephbowens.com
2. Cloudflare Access prompts for email → enter Joseph.Bowens@SkyRun.com
3. One-time 6-digit code sent to that email
4. Enter code → 24-hour session → PWA loads
5. Subsequent visits within 24h skip step 2-4 (session cookie)

Technical note: The in-dash subdomain+domain split form silently drops subdomain edits via JS automation. The fix was to click "Switch to custom input" under Destinations, which reveals a single hostname text field that accepts brief.josephbowens.com correctly via document.execCommand('insertText', ...). Documented for future dashboard edits.

Token rotation checklist (do after setup validates)

The initial token has broad Workers + Pages permissions from the "Edit Cloudflare Workers" template. Rotate to a narrower token after first week of stable runs: