Chalkboard is live at chalkboard.studio. Four new app pages (generate, progress, library, video) replaced the old single-page UI; Firebase Auth gates every page with Google sign-in, email/password, and invite codes.
- Hosted launch: chalkboard.studio live on GCP Cloud Run + domain mapping with auto-provisioned TLS. Cloudflare Web Analytics on all pages.
- Firebase Auth:
login.htmlwith Google Sign-In, email/password, and invite-code gate. Every app page redirects to login if unauthenticated;firebase.jsprovidesrequireAuth()andauthHeaders()for all API calls. - Generate page: rebuilt with tone/palette tag-chips, pace slider (unhurried 0.85x / steady 1.0x / brisk 1.15x), captions selector, and all fields wired to real
CreateJobRequestfields (tone,theme,speed,burn_captions). - Progress page: live pipeline station updates over SSE, scrollable peek log, placeholder content cleared immediately after auth so the page never shows stale skeleton state.
- Library page: real API-backed video grid; filter chips wired to
?status=param; date-grouped headers from JS; hardcoded placeholder cards removed. - Video detail page: player + transcript + download links, all auth-guarded.
- Nav user dropdown: "Logged in as <name>" with a Sign Out button — click-to-open instead of sign-out-on-click, consistent across all app pages.
- Invite-code waitlist endpoint (
POST /waitlist): stores email + invite code, validates against Secret Manager, returns 200/401/409.
- Library filter chips no longer show hardcoded counts (All 47 / Done 43 / …) — counts and category tags were placeholder-only and are now removed until the API exposes them.
- Generate form captions default changed from "SRT + burned-in" to "SRT file only" so burn is opt-in.
- Broken
@keyframes nav-news-pulseblock: a Python regex over-matched the closing brace, inserting nav-user CSS inside the keyframe rule (silently discarded by browsers). Fixed with a pattern that captures the full two-stop keyframe block before inserting after it. - Progress page peek scrollbox now has a fixed height instead of
min-height, preventing it from expanding infinitely on long runs. - Docs API page (
/docs/api): stylesheet referenced as./docs.css(relative — resolved to/docs/docs.css, 404). Fixed to absolute/docs.css. - Stale
improved.htmllinks in nav across docs pages replaced with/guide.