Skip to content

Homepage refresh + JSON slide-deck system + Summer curriculum prep - #48

Open
unforced wants to merge 6 commits into
cloudflare-auth-email-migrationfrom
summer-2026-prep
Open

Homepage refresh + JSON slide-deck system + Summer curriculum prep#48
unforced wants to merge 6 commits into
cloudflare-auth-email-migrationfrom
summer-2026-prep

Conversation

@unforced

@unforced unforced commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator

What this does

Stacked on #47 (cloudflare-auth-email-migration) — merge that first, then re-target this to main.

Homepage refresh

  • Hero: "Become a builder." — outcome-first messaging replacing "Build your personal AI assistant"
  • Lineage section trimmed + merged into "What's happening" (compact provenance line + pilot testimonial)
  • Coming Soon card: The Augmented Knowledge Worker — Benjamin Life + Aaron, copy drawn from Benjamin's AKW v0.3 doc
  • CTA/FAQ aligned to builder framing

Slide-deck system

Decks are now JSON in D1 (lessons.slides_json), edited via MCP, rendered server-side — no more Claude Design round-trips, consistency is structural because the layout vocabulary is fixed.

  • 8 layouts: title, statement, arc, cards, prompt, list, twoCol, closing — all with optional speaker notes + screen label
  • validateDeck() collects all errors with per-slide paths; text is escaped then [[accent]]-highlighted (no raw HTML passthrough)
  • GET /cohort/:slug/week/:num/slides — access-gated; admins can preview decks on draft lessons
  • public/deck.js runtime: scale-to-fit 1920×1080, keyboard/click nav, hash sync, 'n' notes overlay, print CSS
  • MCP tools: admin_upsert_deck, get_deck; get_lesson now returns slidesUrl
  • Week 6 Spring deck ported to JSON in D1 as the reference (visually verified against the original via headless Chrome)

Also shipped outside this diff

  • Migration 0027 applied locally + remote
  • Six refined Summer 2026 class drafts written to cohort-2 lessons in D1 (status: draft)

Known low-severity items (not fixed, noted for the record)

  • get_deck inherits get_lesson's MCP enrollment-gate bypass (pre-existing pattern)
  • Validator accepts empty strings
  • mantras array bypasses the MAX_TEXT cap

🤖 Generated with Claude Code

unforced and others added 6 commits June 9, 2026 17:13
Homepage:
- Hero: "Become a builder." — outcome-first messaging replacing
  "Build your personal AI assistant"
- Lineage section folded into "What's happening" as a compact
  provenance paragraph + pilot testimonial
- Coming Soon card: The Augmented Knowledge Worker (Benjamin Life
  + Aaron), replacing AAE
- CTA + FAQ copy aligned with builder framing

Slide-deck system (replaces Claude Design workflow):
- lessons.slides_json column (migration 0027, applied local+remote)
- src/lib/deck-schema.ts: 8-layout deck vocabulary + validateDeck()
- src/lib/deck-render.ts: server-rendered standalone deck HTML with
  design tokens from the Week 6 reference deck
- public/deck.js: scale-to-fit runtime — keyboard/click nav, hash
  sync, speaker-notes overlay, print CSS
- GET /cohort/:slug/week/:num/slides — access-gated, admins can
  preview draft-lesson decks
- MCP: admin_upsert_deck + get_deck tools; get_lesson returns
  slidesUrl when a deck exists
- Week 6 Spring deck ported to JSON and stored in D1 as the
  reference implementation

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The slides route had the admin draft-preview bypass but the cohort
lesson list, lesson page, and prev/next nav still filtered
status='published' for everyone — so admins couldn't reach the
cohort-2 drafts at all. Same isAdmin() pattern as the slides route,
with Draft badges on the list and lesson header so drafts don't
blend in. Public ICS feed intentionally stays published-only.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
New /cu route (aliases /atls4519, /fall) for the Fall 2026 ATLAS
class. Hybrid design per the CU CSCI-2830 inspiration but in the LVB
brand: full-bleed dark hero (mono eyebrow, Learn/Vibe/Build, a
terminal session card) over a warm body with the blurb, three
movements, a details panel, and how-to-register steps.

One route serves both deliverables Mark asked for: the screen view is
the landing page; an @media print block flips the hero to
printer-friendly white, swaps in a condensed blurb, drops the chat
card / bio / hero CTAs, and compacts to a single page so Save-as-PDF
produces the flyer. All registration facts confirmed by Aaron;
Buff Portal + public classes.colorado.edu links verified live.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Instructor: Aaron G Neyer (was Aaron Gabriel)
- Bio: ATLAS Institute alum (no longer a grad student)
- Detail row now shows the full catalog title "Advanced Special
  Topics: Learn, Vibe, Build"; register step tells students to pick
  the section titled "Learn, Vibe, Build" (4519/5519 is a multi-
  section special-topics number)
- Added a visible "learnvibe.build/cu" link so the printed flyer
  points back to the page for live updates
- Print: uniform 13.5px root font-size so the flyer stays one page
  after the added content

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- /cu: registration is now frictionless — Section/Class # detail row
  (Section 005 · #39152) and an "add by class number → 39152" step
- Homepage CU card is now a link to /cu with a "Course details & how
  to register" affordance; code updated to ATLS 4519 / 5519
- Homepage guide bio + CLAUDE.md: Aaron is an ATLAS Institute alum
  (was "grad student"); CLAUDE.md notes the Aaron G Neyer / Aaron
  Gabriel name split (CU legal name vs LVB brand)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Course is a single listing, not cross-listed. Removed 5519 and the
"(cross-listed)" / undergrad-vs-grad framing from the /cu page (code,
eyebrow, details, register step, mailto subject, header comment) and
the homepage card. Registration is now one path: ATLS 4519,
Section 005, Class #39152.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant