feat(scratchnode): live "big number" room counter on the landing#473
Merged
Conversation
Add an animated, reactive hero stat to the apex landing: a large room count
that ticks up the instant anyone, anywhere, creates a room — driven by a new
reactive Convex query events:getLandingStats (bounded scan, returns
{ roomsCreated, liveNow, capped }), not a client timer. A pulsing
"● N live right now" sub-line shows open rooms.
The counter gently floats with a soft accent glow; the number animates up via a
cubic ease when the reactive value changes. Motion-safe: subtle translate + a
small status-dot ring (no flashing), all gated under prefers-reduced-motion;
mobile scales the digits down.
Honesty (agentic_reliability HONEST_SCORES): every figure is a real row count,
no fabricated marketing number. The stat is hidden entirely until the backend
reports >=1 room (so an empty/offline backend never flashes a fake "0"),
enforced by both the render() guard and a .landing-pulse[hidden]{display:none}
rule (a class selector otherwise beats the UA [hidden] rule). The landing
subscription is read-only and never sets data-sn-live, so the apex stays
honestly "not live". Any config/client failure leaves the stat hidden and never
throws to the page.
BOUND: the count is a full table walk (no Convex count aggregate); capped at
5000, surfaced as "N+" rather than silently undercounting.
Covered by 3 new cases in scratchnode-live-route-honesty.spec.ts (real value
renders 1,342, scan-cap renders 5,000+, zero rooms stays hidden). 13/13 honesty
suite green; tsc clean; verified in preview.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
HomenShum
enabled auto-merge (squash)
June 2, 2026 20:07
✅ Dogfood Visual QA Gate: PASSED
ArtifactsDownload the Generated by Dogfood QA Gate |
Replace the feature-describing hero line "A disposable sidecar room for live
event memory" (jargon, no emotional/temporal hook) with an outcome-first,
say-it-out-loud headline: "The room remembers everything."
Lineage: Linear ("the issue tracker you'll enjoy using"), Slido ("audience
interaction made easy" — the closest live-event Q&A comp), Luma ("delightful
events start here"). Features move into the sub-headline where they belong:
"Drop a code, chat live, hit /ask for sourced answers — and walk away with a
wiki of everything that happened. No account, no app."
Also updates <title>, meta description, and all OG/Twitter card tags so shared
links carry the new hook. 13/13 honesty suite green.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Update public/og-scratchnode.svg to lead with "The room remembers everything." (matching the landing), and re-rasterize og-scratchnode.png (1200x630) — the PNG that og:image/twitter:image actually point at — so Slack/Discord/X/iMessage link previews carry the new hook instead of the old "Turn live events into public knowledge" copy. Adds scripts/ui/renderOgImage.mjs: a reusable rasterizer that renders the SVG through the already-installed Playwright Chromium with the brand fonts (Manrope + JetBrains Mono), tolerant of an offline font CDN. Re-run after any OG SVG edit. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Demo: walkthrough of the surfaces this PR changed is available as a workflow artifact ( |
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.
Re your ask
Done — and it's real, not theater.
What it does
A big, glowing room counter floats at the top of the landing hero and ticks up the instant anyone, anywhere, creates a room — because it's wired to a new reactive Convex query, not a fake client timer. A pulsing
● N live right nowsub-line shows open rooms.convex/events.ts):events:getLandingStats→{ roomsCreated, liveNow, capped }. Convex queries are reactive, so every subscribed visitor's number updates live with zero polling.public/proto/home-v5.html): animated count-up (cubic ease), gentle float, soft terracotta glow, pulsing live-dot. Mobile scales the digits down.Honest by construction (this repo's
agentic_reliabilityHONEST_SCORES rule)The big number is the exact backend row count — no fabricated marketing figure. Specifically:
render()guard and a.landing-pulse[hidden]{display:none}rule — a class selector otherwise beats the UA[hidden]rule; that was a real bug a test caught).BOUND: count is a full table walk (no Convex count aggregate); capped at 5000, shown asN+rather than silently undercounting.data-sn-live, never throws to the page.Motion safety
Subtle float + small status-dot ring — no flashing, no large-area pulses — all gated under
prefers-reduced-motion.Verification
--noEmit: clean (exit 0)scratchnode-live-route-honesty.spec.ts13/13 green, incl. 3 new stats cases (real value renders1,342, scan-cap renders5,000+, zero rooms stays hidden)aria-live🤖 Generated with Claude Code