fix(showcase): resolve pod id at build (dead 'Watch a live room' CTA) + button contrast - #555
Merged
Conversation
… contrast
The public "Watch a live room" CTA was dead in production — it rendered "This room
isn't public" because the deployed frontend requested
`/api/showcase/__SHOWCASE_POD_ID__` (the literal placeholder). Root cause: vite's
`define: { 'process.env': {} }` clobbers all process.env reads, and only
REACT_APP_API_URL had an explicit passthrough — REACT_APP_SHOWCASE_POD_ID did not,
so V2Showcase fell back to the '__SHOWCASE_POD_ID__' sentinel. (Same trap the
API_URL comment already documents.) The showcase API + pod are fine — publicRead:true,
4 members; only the client id substitution was broken.
- vite.config.ts: add `'process.env.REACT_APP_SHOWCASE_POD_ID'` to `define` (the
Dockerfile + CI already pass it as a build arg/env).
- v2-showcase.css: `.v2-showcase__btn--primary` rendered dark-on-blue — the
`.v2-root a { color: inherit }` (0,1,1) trap beat the single-class #fff rule.
Re-assert with a `.v2-root` prefix (0,2,0). "Sign up to join" / "Start your own
room" now compute white (verified live).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MnRCAFgjrrGZxo9VRCmCm9
…erged #542 The README pointed its real-work proof at PR #503, which was closed/reverted (the stale-base squash-merge incident). The live showcase pod ("Commonly Engineering") actually features PR #542 — Cody extending a Cloudflare-aware rate-limit fix across the auth/uploads/showcase routes, with Theo reviewing. Point both README references at #542 so the marketing claim matches the real, merged, showcase-featured exchange.
to #542 Consistent with the README re-anchor — link a merged, live PR instead of the closed/reverted one.
samxu01
added a commit
that referenced
this pull request
Jul 2, 2026
…exchange (#556) The old marketing shot was anchored to the reverted #503 story. Recaptured from the now-working public showcase (fixed in #555): the real PR #542 thread — founder flags that routes/showcase.ts still keys its rate-limiter on req.ip; Theo triages; Cody patches it (8e484cd) swapping in cloudflareIpRateLimitKeyGenerator across all three routes; Theo reviews with real depth (shared ipRateLimit.ts reduces duplication, the CJS/ESM module.exports shim is intentional) and ships it. Matches the re-anchored README/agent-docs (#542, not #503). Both copies updated (screenshots/ for README, assets/landing/ for the bundled hero). Captured from commonly.me/v2/showcase. Claude-Session: https://claude.ai/code/session_01MnRCAFgjrrGZxo9VRCmCm9 Co-authored-by: Lily Shen <ls111@rice.edu> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The public showcase was dead in production — "Watch a live room" rendered "This room isn't public". Found while auditing for a screenshot refresh.
Root cause
The deployed frontend requested
/api/showcase/__SHOWCASE_POD_ID__— the literal placeholder.V2Showcasereadsprocess.env.REACT_APP_SHOWCASE_POD_ID, but vite'sdefine: { 'process.env': {} }clobbers allprocess.envreads; onlyREACT_APP_API_URLhad an explicit passthrough (the documented apex-domain fix), so the showcase id fell through to its'__SHOWCASE_POD_ID__'sentinel. The API + pod are healthy (publicRead:true, 4 members) — only the client-side id substitution was broken.Fix
'process.env.REACT_APP_SHOWCASE_POD_ID'todefine(Dockerfile + CI already pass it as a build arg/env; line 14/17 of the Dockerfile)..v2-showcase__btn--primaryrendered dark text on blue (the.v2-root a { color: inherit }specificity trap, same as landing/login). Re-asserted with a.v2-rootprefix → "Sign up to join" / "Start your own room" compute white (verified live).Post-deploy I'll confirm
commonly.me/v2/showcaseresolves the real "Commonly Engineering" room.🤖 Generated with Claude Code