Changelog
What Changed, Newest First
28 recorded changes. The raw file: Log/changelog.md.
2026-07-29 Sign-in v1 built: Google + email magic links, no passwords
DJ asked for "the sign in thing with google / email so we can start testing." Built to the Brand System v1.1 sign-in pattern: `/signin/` is a 400px thick-glass card over a Blackout hero with a single Cue glow, the mark as the only branding, recessed fields, the Green primary whose pending state is three Pulse Row dots, a quiet-glass "Continue with Google," and form-level errors that never shake the card. Behind it, six Pages Functions (`/api/auth/google|callback|email|verify|signout` + `/api/me`) with shared helpers in `functions/_shared/auth.js`: OIDC code flow with a state cookie, 15-minute single-use magic links via the existing Resend pattern, 30-day KV sessions behind an HttpOnly cookie, and honest degradation — with nothing configured, `/api/me` reports guest and the page says which door isn't switched on (magic links never confirm whether an address has an account). The app and CRM sidebars carry a new account chip that shows the signed-in identity or a sign-in link; the demo's in-browser accounts are untouched, and account-synced data is explicitly out of scope for v1. The landing header gained a quiet Sign in link. **Blocking on DJ (~10 min): the AUTH KV binding, the Google OAuth client, and env vars — exact steps in `Facts/operations/auth-setup.md`.**
2026-07-29 Brand System v1.1 adopted and rolled out everywhere; the system itself is now a hub tab
DJ's revision brief came back from Claude Design as "GreenRoom Brand System v1.1" (offline HTML + a 60-file asset kit) and he approved it as the new branding. Same colours, logos, and type as v3 plus: the icon legibility tune (mark runs Curtain→Deep Green→Green on glass, brighter inner wash, heavier rim), **Flag #B4483C as the one alert red** (the data-viz crimson #D22B47 is retired — replaced in 9 places across the app, CRM, and Brand OS, plus a rogue #e23a55 in the app sidebar), the marquee lights formalized as **the Pulse Row** (always eight dots — six-dot rows on 27 containers were widened — resting at 26%, swelling 1.22× with an own-colour glow, static at 62% under reduced motion), a two-grade **glass system** with measured contrast floors, a **button family** where weight earns movement (dark primary is Green fill + Blackout label with the 600ms sheen; quiet buttons are thin glass and never move; the landing's amber CTAs, step chips, and stat numerals came off amber, which is a signal, not a brand), one **Signal focus ring** (2px/3px offset, instant) on every focusable element, the condensing site header (scroll-driven where supported), the city ticker to the marquee spec (Signal separators, 12% edge masks, hover pause, static centred under reduced motion), and Gel discipline in the tools (the violet "View my public profile" action became a proper secondary — Gels never carry type). Installed: suite at `Brand/greenroom/brand-system-v1.1/` (v3 archived to `Archive/2026-07-29-brand-v3/`), working `gr-*.svg` files swapped in all three mirrors plus the new bare `gr-mark.svg`, platform icons and webmanifest refreshed. Docs: `brand-sheet.md` rewritten to v1.1; `ui-pattern-library.md` is now the adopted 14-pattern spec (the wishlist that produced it is archived as the request record); Brand OS refreshed. **The full interactive Brand System document now lives in the hub as its own tab** (`Hub/brand-system.html`, standalone by design, QA'd separately from the chrome). Per the brief, the installed site og.png was deliberately not touched. Two spec-legal ideas were considered and correctly NOT built: a hero Pulse Row on the landing (the header lockup already carries the row — twice on one screen is banned) and a profile-completeness level indicator (no real completeness data exists yet; the pattern never guesses).
2026-07-29 UI pattern wishlist filed; prompt block drafted for the Brand System addendum
DJ found namethatui.com and picked 15 patterns plus the Liquid Glass style direction he wants the Claude Design Brand System to document (UI structure and motion only — logos, colours, and type stay v3). Filed as `Brand/greenroom/ui-pattern-library.md` with each pattern mapped to where it fits GreenRoom, the glass-vs-contrast guardrails, and the standing button-family ask. The paste-ready prompt block for the Claude Design project was drafted the same session; when the addendum comes back it gets fact-checked against the brand sheet before anything is implemented.
2026-07-29 Second pass: root-caused the margins, one brand lockup everywhere, CRM dashboard made real
DJ's rapid review round. (1) **The margins were a CSS bug, not a taste question.** `.m-section{padding:76px 0}` was declared after `.m-wrap{padding:0 clamp(20px,3.8vw,68px)}` at equal specificity, so the shorthand silently reset the side gutter to zero on every content section: measured live, `#how` computed `padding-left:0` while the hero got 48.64px. `.m-section` is now vertical longhand and every section gets its gutter (0 to 60.8px at a 1600px viewport). This is why widening the wrap earlier never fixed what DJ kept seeing. (2) **One brand lockup on all 14 pages.** Eight pages (about, pricing, creators, contact, privacy, terms, data, 404) plus the CRM and app had never been migrated off v2: they drew a CSS-text "GREENROOM" in uppercase with ROOM in amber over a three-colour `.bulbs` strip that still carried a red glow from the cream era. New `.gr-brand` component: marquee dots on top, real SVG logo under. Nav and sidebars take `gr-logo-compact.svg` (DJ's pick); footers take `gr-logo-horizontal.svg`, which carries the tagline and has room for it (the brand sheet floors the tagline lockup at 168px, so it is deliberately not used at nav scale). Legacy `.bulbs` and both text-wordmark rules deleted from `site.css`; `.gr-bulbs` mirrored into the CRM and app, which don't load it. Nav height 68 to 80px so the dots aren't clipped. (3) **Club identity chips + flags on the directory**, branded monograms from each club's initials cycling the rail colours, verified across all 137 names; the chip renders a real logo the moment a `Logo` column exists in the CSV. Flags cover all 33 countries in the data; Malta was also missing from the CRM's own flag table. (4) **CRM dashboard interactivity**: the stat tiles lifted on hover and looked clickable but did nothing. They're buttons now and each drills through to what it counts (venues / active / booked / Rolodex / scroll-and-flash the docket); funnel rows carry their stage into the filtered list instead of dumping you on the unfiltered kanban, and are keyboard reachable; Recent Activity rows open the venue they name. `filteredClubs` gained the "active" concept. The CRM sidebar now links to the public directory, which was a one-way door. (5) **Homepage "Clubs join later" panel** replaced its abstract motif with "The running order": a lit lamp for what's open now, an unlit one for what's next, no invented dates. (6) **Two real bugs found while verifying**: the homepage figures read 0 for anyone with reduced motion on (the early return skipped the count-up), and the directory tiles sat on a dash in any background tab (rAF never fires when hidden) — the kind of thing a visitor cmd-clicking DJ's links would have hit. Both fixed, and 137/33/83 is now the static HTML default so no animation failure can show a wrong number. Product screenshots on the homepage re-shot from the rebuilt pages, with reduced motion forced so the tiles show true figures rather than a frozen mid-count.
2026-07-29 DJ's second review pass: the club map, marquee lights everywhere, directory rebuilt, hub and Brand OS corrected
DJ's screenshot-by-screenshot list, all of it built. (1) **Interactive club map** — new self-contained component `Website/greenroom/assets/js/gr-map.js`, on the homepage, the directory, and the signup page. No API keys and no external tiles: landmass geometry is Natural Earth 110m (public domain) projected to Web Mercator for the region our data covers and simplified, and pins come from a 68-city coordinate table. Cities within 16px cluster so none hide; clicking a pin opens the rooms in that city. Dark and light themes; the light theme got its own warmer sea and stronger land after the first pass washed out. **Privacy held:** pins sit on city centres, never venue street addresses, and booking emails are never rendered — a row only shows whether a named contact exists, same rule as the directory. (2) **Marquee lights** are now a real shared component (`.gr-bulbs`, eight bulbs on the brand's own colours, staggered 3.4s flash, reduced-motion safe), defined identically in `site.css` and `Hub/_shared/brain.css` and running on every page of the site and the hub. (3) **Directory rebuilt** in the CRM's working-tool shell as DJ asked: dark sticky sidebar, light topbar with search, four gradient stat tiles that count up from the CSVs, the light map, filters (country, room size, named contact, sort) and the sortable table. (4) **Homepage** margins loosened inside the 1560px wrap, footer rebuilt as a four-column layout with a new "The room" column and a light rail above the bottom bar. (5) **Signup page** gained the proof panel DJ wanted ("The list already exists"): count-up stats plus a map-only embed, so the page most people land on first shows the list is real. A DOM-nesting slip during that insert briefly pushed the form below the map; fixed and verified. (6) **Hub updated to match**: lights in the chrome and hero, a "What Changed Today" section, product cards for the signup sheet / directory / CRM, and the stale two-founder roster corrected to the core four. (7) **Brand OS page corrected** — its palette, type and rules sections had drifted back to retired Marquee Night v2 names ("Neon Red", "Marquee Gold", "Anton in UPPERCASE") that contradicted the adopted v3 brand sheet, and one swatch labelled "Neon Red" was showing Cue amber. Rewritten against v3: nine colours with roles and contrast, the three contexts, the functional tools-only data set called out as not-brand, Schibsted Grotesk documented as mixed-case-always, minimum sizes and clear space, the real hard rules, and a production-files section linking the 27 v3 deliverables (now mirrored to `Hub/assets/brand-v3/`). The four -36° motifs render inline rather than via `<img>` so `currentColor` resolves; the retired AI-raster-prompt section was deleted, not hidden. Also fixed: the hub's generated pages (asset directory, changelog) were still loading the retired Anton/Archivo/Space Mono fonts from `build-hub.mjs`. UI motion patterns throughout adapted from DJ's SIN360 gallery — patterns only, that folder untouched.
2026-07-28 Homepage layout + motion pass from DJ's review (pre-team-send)
DJ flagged: nav and content not full width, content over-contained, messy margins, weak footer, static stat tiles, unfilled placeholders, logos too small. Fixed: header is now a full-bleed sticky bar with the content wrap widened to 1560px (signup, QR, directory, preview pages widened to match); nav logo up to 48px and footer logo 44px; the 137/33/83 tiles are centered in their thirds with an eased count-up plus staggered scroll-reveals across cards and sections (reduced-motion respected); the two product-screenshot placeholders now hold REAL screenshots of our own directory and tracker (captured headless from the live pages — no mockups); the "empty club photograph" placeholder became a brand cue-light/rake motif panel rather than fake photography; footer rebuilt (brand block + Join the list button, Product/Company columns, mono bottom bar). Button and card motion adapted from DJ's SIN360 pattern gallery (sheen sweep, lift + shadow, arrow nudge) — patterns only, no SIN branding touched.
2026-07-28 Brand system v3 adopted and implemented everywhere
DJ ran the identity through Claude Design (project "New Company Branding System") answering the intake with the AI's drafted brief, and adopted the result: a microphone-capsule/locating-point mark cut twice at -36°, on a glass tile; palette led by GreenRoom Green #0FA47C with Blackout/Backstage/Curtain darks, Signal #3FD9A4, Cue amber #F2A93B, Spotlight paper #F7F3EA; type moves from Anton/Archivo/Space Mono to Schibsted Grotesk 800 (mixed case) / Instrument Sans / JetBrains Mono. The AI pulled all 27 deliverables via the design MCP into `Brand/greenroom/brand-v3/`, re-outlined the wordmark type into real paths (fontTools, instanced variable fonts), and swapped the artwork under the established gr-*.svg filenames so every surface rebranded at once: marketing site, signup/QR pages, preview alternates, the three light-context tools (CRM/directory/app), and the hub. Typography retuned for the wider face (line-heights, tracking, hero sizes); the "live" pulse is now Cue amber (the system has no red — functional reds remain in tool data-viz only); platform files installed (adaptive favicon, apple-touch, PWA manifest, real OG card). Fact-check: the design's invented og:description was replaced with our approved copy. Transfer note: the A4 QR flyer, brand-sheet canvas, and business-card PNGs exceeded the design MCP's 256KB transfer cap — export them from the Claude Design project when needed; OG card and platform icons were rasterized locally from the real vectors instead. Marquee Bulb suite and v2 sheet archived. Brand sheet v3 written; gr-defaults reseeded; brand-os showroom updated.
2026-07-28 App demo (/app/) moved to House Lights to match the CRM and directory
DJ asked for the talent-platform demo to wear the same light context as the other tools. Same recipe: House Lights token set in :root, white glass topbar, dark stage sidebar via scoped tokens (the original half-swapped dark-to-cream sidebar gradient fixed at source), accent colors on the AA-on-white set. Verified in-browser on both the comedian side (The Team roster) and the club side (Find Talent). Confirmed for the record: the old worker at greenroom-crm.damianvonfrankjr.workers.dev duplicates this app and remains on the retirement list awaiting DJ's word.
2026-07-28 Working tools moved to the light "House Lights" context at DJ's direction
DJ wanted the CRM and directory light and colorful (reference: a Coupler.io dashboard) instead of dark. Design decision now in the brand sheet: marketing site stays dark Marquee Night; working tools run light (sage-tinted page, white cards, ink text) with the dark stage sidebar kept as the brand anchor and a white-text-safe data-viz accent set (violet/blue/green/amber/red). CRM: 43 changes — light token system, five full-gradient stat tiles with white numerals, light topbar/mobile-nav, stage and priority colors moved to AA-on-white values, sidebar scoped to stay dark. Directory: page-scoped light tokens, light nav with the light-context logo lockup, gold dropped to gold-ink everywhere it's text. Both verified in-browser (dashboard, venues grid, lineup, directory).
2026-07-28 CRM app made readable (dark-theme migration completed) + UX copy pass
DJ flagged /crm/ as unreadable: the app's internal design system had been half-migrated — `--panel` stayed white while the primary text token went warm-white, the sidebar gradient ran dark-to-cream, and the topbar/mobile-nav kept cream glass. Restyled the app's own token system coherently for Marquee Night (16 targeted fixes: panel/line tokens, sidebar and topbar gradients, paper-grid texture to faint gold, button sheen, inset highlights, beta-flag contrast) and brightened two cream-era stage colors (Spotted, and the secondary earth tone) that were invisible on dark. UX copy per the /design:ux-copy pass: the onboarding banner cut from 3 sentences of run-ons to What/Why/How ("Danger zone" jargon removed), and the empty-docket state no longer celebrates an empty pipeline. Verified in-browser across dashboard, venues, and lineup views.
2026-07-28 Signup storage activated and verified live
At DJ's direction the AI created the `greenroom-signups` KV namespace via the Cloudflare API, then drove DJ's logged-in Chrome to add the `SIGNUPS` binding and `EXPORT_TOKEN` variable to greenroom-site, and redeployed via an empty commit. Verified end to end against production: a test signup stored (200), the CSV export returned it, and a wrong token was rejected. The funnel is fully operational; the export token lives only in the dashboard (not in this repo). One test row (kv-test@greenroom.internal) remains in the sheet as proof and can be ignored or deleted.
2026-07-28 Direction A adopted; signup funnel + QR built from the first core-four call; roster corrected
DJ picked The Marquee as the homepage after the founders call (decisions log updated). Built the call's asks: `/signup/` (role capture: comedian / booker / festival producer, honeypot, local-stash retry), Pages Functions `/api/signup` (KV storage, optional Resend notify) and `/api/export` (token-protected CSV — the "excel sheet"), and `/qr/` (per-audience QR codes with SVG download for Jake's flyers). Homepage upgraded: signup-first CTAs, a bookers/festival band ("sell basics now, pitch what's coming"), a what's-coming strip carrying the old site's feature pitches honestly labelled, mobile menu restored, footer completed. Roster corrected across the brain: the core four are DJ, Jake, Garrett, Dylan (the old record conflated Garrett and Jake); CLAUDE.md updated and AGENTS.md regenerated; roles filed in `Facts/operations/roles-core-four.md`; meeting notes filed verbatim. ROADMAP reset around Jake's Europe deadline. Blocking on DJ: the 3-minute KV binding, without which signups fall back to on-device retry.
2026-07-28 Directions B and C built as clickable alternates at `/preview/`
DJ asked for all three homepage directions to be comparable at full size, so 1b "The Tour Manifest" (data-forward call sheet) and 1c "The Door" (editorial, one column, a gold seam of light as the only ornament) were implemented as real pages alongside the live direction A, with a comparison landing page at `/preview/` that sketches each composition. Every alternate carries noindex, a review bar naming it as an alternate rather than the live site, and shared `preview/rows.js` so B's hero table pulls live rows from the venue and contact CSVs (sorted by room size) instead of the hand-typed samples in the canvas, two of which named clubs absent from our data. C's inherited "60 to 589-seat" claim was corrected to the real 40 to 1,500 range. All links resolve; nothing is public.
2026-07-28 Site rebuilt in Marquee Night from the Claude Design round-1 canvas; club directory now a working tool
DJ ran the design brief through Claude Design and handed back project 342cb3c7 (three homepage directions). Direction 1a "The Marquee" was implemented as the real homepage: bulb strip, Anton hero with the gold BOOKED, gold radial glow, city ticker, marquee figures, four-step panel, comedians-first band. Built the club directory at `/directory/` as a genuinely working tool: it loads `greenroom-venues.csv` and `greenroom-contacts.csv` at runtime, so the 137/33/83 figures and every filter (search, country, room size, named contact) come from the data and cannot drift. Booking emails are deliberately never rendered; a row only shows whether a named contact exists. `site.css` moved to Marquee Night tokens and all 12 pages were remapped off the cream palette (hex + rgba), a compact logo lockup was added for nav use, and the cream homepage plus stylesheet are archived at `Archive/2026-07-28-site-v1/`. FACT CHECK: the design's own copy invented several numbers, all corrected before shipping. It claimed a "60 to 589-seat" capacity range (real range is 40 to 1,500), country counts of UK 41 / Denmark 12 / Finland 7 (real: 19 / 5 / 4), and two club names not in our CSV ("Improv Comedy Copenhagen", "The Stand Comedy Club"). Verified as correct: 137 clubs, 33 countries, 83 named contacts, and all 13 ticker cities.
2026-07-28 Brand v2 "Marquee Night" proposed; logo suite designed; hub restyled dark-first
At DJ's direction the AI designed a full brand refresh: The Marquee Bulb logo (6 SVG files in `Brand/greenroom/logo/`), a dark-first palette (Stage Black surfaces, Marquee Gold glow, Signal Green actions; contrast-checked), and a rewritten `Brand/greenroom/brand-sheet.md` (v2, PROPOSED — the cream v1 sheet archived at `Archive/2026-07-28-brand-v1/`). The hub chrome now wears v2, the Brand OS page was rebuilt as a full showroom (logos, palette, type, rules, plus an AI-generator prompt for raster versions), and the tools suite reseeds with the real logos and paper-context colors. The public site is untouched pending both founders' blessing (new item in QUESTIONS-FOR-THE-TEAM.md).
2026-07-28 Hub at full parity: gallery, templates, Brand OS, tools suite, setup guide
Prompt Gallery live with 26 tested prompts (First 5 pinned, outreach/product/strategy/safety/ops chips); Templates page honestly lists the three review-queue drafts as the first starting points; Brand OS renders the locked palette and type rules and flags the no-logo gap in red; Skills & Add-Ons inventories what is installed vs queued-from-real-work; two-founder Setup Guide with the 4-prompt acceptance test (directory numbers, Pillar 3, refuse-to-send, refuse-to-invent). DJ's full 22-tool Free Brand Tools suite ported into Hub/tools, seeded with the GreenRoom kit (palette, Montserrat/System, bulb icon; no wordmark exists so logo slots stay honest). Hub QA extended to the tool pages; all green. — Claude, for DJ
2026-07-28 The rails are live: GitHub-connected auto-deploy for the site and the new hub
Two Cloudflare Pages projects on DJ's account build from `main` automatically: greenroom-brain.pages.dev (the new brain hub, cream/gold/stage chrome, generated Asset Directory + Changelog) and greenroom-site.pages.dev (the full site + CRM, content byte-identical to the manual worker). Verified live ~30s after push. The zip workflow is superseded; the old worker is a frozen duplicate awaiting DJ's retirement call. — Claude, for DJ
2026-07-28 The brain rebuilt on DJ's starter kit
Folder renamed "GreenRoom Brain"; zones reorganized into plain-English folders (Rules/Facts/Brand/Templates/Skills/Website/Hub/Drafts/Approved/Log/Archive) with git history from an untouched import commit. CLAUDE.md rewritten in the kit shape preserving every locked rule (confirm-first, 16 guardrails, voice, em-dash allowance, pricing gate, Pillar 3); v1 docs archived. New: README (founder-facing), ROADMAP, QUESTIONS-FOR-THE-TEAM carrying the 2026-07-28 audit findings incl. four live site-vs-brain contradictions (creators-page founder story, comedian pricing vs Pillar 3, leftover demo language, lost Round 4 legal decision). Now on private GitHub (damianvonfrankjr-coder/greenroom-brain). Next: GitHub-connected Cloudflare rails (site + hub), then the hub build. — Claude, for DJ
2026-07-02 Workspace reorganized into the zone system
(00–05 + CLAUDE.md/AGENTS.md + Master-Asset-Directory), modeled on DJ's Spectrum Killian brain. `foundation/` dissolved into `03 Knowledge/strategy/`; playbook/deploy guide/audit into `03 Knowledge/operations/`; pitch + soft-launch kit into DJ's Work Zone for-review. All cross-references swept. — Claude (delegated), for DJ
2026-07-02 Soft-launch kit drafted
(first-text variants, 3-question feedback set, 48-hour follow-ups, tracking sheet) → DJ Work Zone for-review. Covers playbook 7.2–7.4. — Claude
2026-07-02 Accessibility + mobile batch on the product
(audit N8–N11 + S18): 16px form inputs (iOS zoom fix), aria-labels on icon-only buttons, label/field associations, mobile path to backup/org-rename, reduced-motion gating in both apps. — Claude
2026-07-02 Brand refinement pass
: WCAG-passing text tokens (dim/gold-ink/green-deep), deeper green presence incl. green-room CTA band, hardcoded violet mapped to token; brand sheet written to `02 Toolkit/brand/brand-sheet.md`. — Claude
2026-07-02 Site repositioned comedians-first
(Round 5, Q3=A): hero, 24 header CTAs → /crm/, two-sides section resequenced, FAQ/meta/footer rewritten; Demo badge scoped (crm=Beta, app=In production); starter-directory welcome banner; sitemap +/creators/; zip rebuilt; verified in browser preview. — Claude
2026-07-02 Round 5 decisions recorded
under DJ's delegated authority: Q3=A (scope cut, date kept — soft launch 2026-07-13), D6=C, D8=A, Q2 starter-directory, canonical CRM = site copy (root CRM → archive/). Money/legal left to DJ. — Claude
2026-07-02 10 Pillars written
(`03 Knowledge/strategy/10-pillars.md`) + pitch deck (12 slides, .pptx) + pitch one-pager. — Claude
2026-07-02 Consistency audit of the bible
: F1–F6 logged; domain contradiction fixed (all docs → greenroomcrm.net); voice brief fixed (clean & professional); missing Round 4 flagged for DJ re-statement; stale `ziZW0TSp` zip deleted. — Claude
2026-06-28 Recon audit
of CRM/app/site (`audit-2026-06-28.md`) + 10 Pillars discovery Rounds 1–3 captured in decisions-log. — Claude + DJ
2026-06-27 Initial build
: marketing site, marketplace demo, CRM with 137-club research, deploy guide, launch playbook. — DJ + Claude