CHANGELOG · CURRENT V2.2.1
How we got here.
Hand-curated version history. Each release is a stretch of work that landed with a theme. The raw commit firehose is at github.com/mhoydich/pointcast/commits/main.
-
v2.2.1 STATIONS mode on /tv · first full Codex feature delivery
Codex shipped the STATIONS brief end-to-end in ~2h 30m from kickoff. Cross-platform geo-channel mode on /tv with 15 bookmarkable per-station routes, keyboard-driven channel-surf UX (1-9 + Q-Y), edge-cached weather proxy for each station via Open-Meteo. +1546 lines / -328 across 8 files. First Codex feature after a workspace-path fix earlier that evening.
- /tv STATIONS mode — 3 states (global / stations-index / station-feed), numeric + Q-Y keyboard shortcuts, channel-surf metaphor
- /tv/{station} — 15 per-station routes (manhattan-beach, hermosa, redondo-beach, venice, santa-monica, palos-verdes, long-beach, los-angeles, malibu, pasadena, anaheim-oc, newport-laguna, santa-barbara, north-san-diego, palm-springs)
- /api/weather — edge-cached Open-Meteo proxy with `caches.default` (10-min TTL), station-aware via ?station={slug} or ?lat=&lng=
- src/lib/local.ts enriched — coords per station, slug field, STATION_SHORTCUTS keyboard map, STATION_MATCH_TERMS location-matching, new helpers (getStationBySlug, getStationPath, filterBlocksForStation)
- /local page updated — cast this station → links per station with block counts
- /local.json mirror updated — station objects now include coords + URL
- /for-agents manifest — STATIONS endpoints documented
- Architecture doc at docs/reviews/2026-04-19-codex-tv-stations-architecture.md (A1-A5 answered in detail)
- Author: `codex` throughout per VOICE.md
-
v2.2 Identity + broadcast + daily ritual — big Sunday
36 shipments in a single ~22-hour session. Six coherent arcs: mood primitive (schema + atlas + filters + 7th-chip), broadcast mode (/tv with live polls + daily slide + presence constellation), daily ritual (/today + /today.json + FreshStrip routing), 100-mile lens (/local + /local.json + lib/local), identity (/profile dashboard + VisitorHereStrip + TELL panel + visitor.ts), and five substantive Codex briefs filed (Pulse, STATIONS, YeePlayer v1, TrackLab, VideoLens). First Codex artifact shipped 22:20 PT — STATIONS architecture doc via computer-use-assisted workspace correction.
- Mood primitive — schema.mood + /mood/{slug} filter pages + /moods tonal atlas + /moods.json machine mirror
- /today + /today.json — daily drop deterministic pick (daySeed algorithm), past-7-days preview, client-side collect
- /tv broadcast mode — landscape ambient feed, auto-scroll, live poll slides, daily drop slide, presence constellation (10-dot row, staggered pulse), 28-slide rotation
- /local + /local.json — 100-mile lens, 15 stations, ES name-drops from Block 0276, SoCal-token in-range filter, Schema.org GeoCircle
- /profile dashboard — identity card (noun avatar + display name + first-seen), current state panel, activity grid (HELLO / drops / votes / voter level), activity detail lists (votes + drops with deep-links)
- VisitorHereStrip — noun-per-visitor (deterministic from session hash, 0-1199), 11 ghost slots lighting up via presence WS, TELL panel (mood + now-playing + location + 📡 geolocation)
- FreshStrip — HELLO / N NEW / CAUGHT UP badges + time-sensitive routing (CAUGHT UP → /today if drop unclaimed)
- MorningPara — editorial-paragraph brief (replaces MorningBrief chip row), time-of-day-aware greeting, weather + sports inline prose
- Five Codex briefs filed 17:20-18:15 — Pulse mini-game, STATIONS /tv mode, YeePlayer v1 multiplayer, TrackLab YouTube→beats, VideoLens analysis
- TodayStrip experiment (shipped + removed) — 7 daily-rotating chips (mood / block / station / name-drop / channel / noun / term)
- VoterStats experiment (shipped + removed) — progression UI, moved below-fold per Mike feedback
- /for-agents + /agents.json refresh — all 10 new endpoints surfaced + presence WS + /mood + /yee URL patterns
- blocks.json + /b/{id}.json enrich — author, source, mood, moodUrl, companions fields surfaced for agents
- Email setup playbook — docs/setup/email-pointcast.md for Manus ops to execute
- 4 fresh polls — codex-project-first, sunday-es-move, april-register, sunday-soundtrack
- Release sprint plan — docs/plans/2026-04-20-release-sprint.md (5 phases, 7 days, public launch target 04-24)
- GTM first draft — docs/gtm/2026-04-19-draft.md (positioning, audience, 5 wedges, 7-day launch cadence)
- Codex workspace-path diagnosis via computer-use — first Codex artifact shipped (STATIONS architecture doc)
- 35+ sprint retros authored in docs/sprints/
-
v2.1 Majors on home + canonical manifesto + cadence viz
A dense evening run. Card of the Day rotation, /now, /search, /archive, /editions, /timeline, /stack, /manifesto, /glossary, /agents.json, unified feeds, home majors strip, stronger per-type variants, scroll rhythm via :nth-child, 10 new blocks.
- /manifesto — canonical Q&A + DefinedTerm schema for LLM citation
- /glossary — consolidated dictionary of PointCast-specific terms
- /agents.json — discovery manifest (aliased at .well-known/agents.json)
- /llms.txt rewritten + /llms-full.txt added
- /now + /now.json — live system snapshot
- /search — client-side block search
- /archive + /archive.json — chronological index with filters
- /editions + /editions.json — mintable dashboard
- /timeline + /timeline.json — publication cadence viz
- /stack + /stack.json — technical disclosure
- /feed.xml + /feed.json — unified feeds
- HomeMajors on home — inline /drum tap + /cast countdown
- Presence pill upgrade — YOU + others count
- Per-type visual variants + scroll rhythm
- Card of the Day — deterministic 21-Noun rotation
- BreadcrumbList + ItemList schema on /b, /c, /archive
- Astro 6.1.6 → 6.1.7
-
v2.0 Mainnet live — Visit Nouns FA2 + 10 starter mints
The site crosses from demo to real. FA2 originated on Tezos mainnet, 10 starter Nouns minted, metadata endpoint live, /collection page renders from TzKT.
- Visit Nouns FA2 originated at KT1LP1oTBuudRubAYQDErH7i7mSwazVdohxh
- 10 starter Nouns minted (seeds 1, 42, 99, 137, 205, 417, 420, 777, 808, 1111)
- set_metadata_base_cid on-chain — future mints have working URIs
- /api/tezos-metadata/[tokenId] serves TZIP-21 JSON per token
- /collection/visit-nouns gallery page (live TzKT state)
- Multi-wallet WalletChip + /profile page + DrumLayout
- Stripped-HTML agent mode middleware (functions/_middleware.ts)
- Nouns Battler Phase 2 — match log, export as JSON, /battle.json
- /cast frontend (Bloomberg-terminal treatment for Prize Cast)
-
v2.0-rebuild Blocks primitive rebuild
Total rewrite from v1 to a Block-first architecture. Every piece of content becomes a typed JSON entity. 8 channels, 8 types, stable monotonic IDs, auto-fit dense grid.
- Block schema + content collection, channels.ts, block-types.ts
- BlockCard with all 8 type treatments + 5 size variants
- BlockLayout (v2) — self-hosted Inter + JetBrains Mono, 2 weights only
- Home auto-fit dense grid, sticky mobile chip bar
- /b/[id] permalinks with JSON-LD + machine-readable endpoints
- /c/[channel] + RSS + JSON Feed per channel
- /blocks.json + /sitemap-blocks.xml full archive
- Drag-and-drop reorder (client-side localStorage)
- BLOCKS.md schema documentation at repo root
- 9th channel (BTL · Battler) added — the 21-Noun deterministic duel
-
v1.x Original PointCast — dispatches + Tezos imports
Pre-Blocks era. Individual dispatch pages, drum module, Tezos NFT imports from Mike's editorial FA2. Preserved at commit 7fea01c for rollback.
- Drum room (cookie-clicker percussion)
- Spotify currently-spinning integration
- /collect editorial FA2 inventory from objkt
- Seeing the Future dispatch series
- Feedback block + admin deploy UI
- Noun Bells instrument + chime synth