app.relayctx.com/x/devtools-q2
Relay
Relay shared with you
Devtools Q2 — context loss in async review
◇ Quick tools — open with Claude Code, Cursor, or copy the code (agent-launcher.ts)
Code: JDKX9R · Use these tools with any AI agent to load this relay's context
Get your personalized relay
Answer three questions. Claude will generate a relay tailored to your workflow. You'll also get a free trial account.
You'll receive a 6-digit code by email to verify and create your free trial account.
app.relayctx.com/x/reddit-founders
Relay
Get your personalized relay
Answer three questions. Claude will generate a relay tailored to your workflow. You'll also get a free trial account.
You'll receive a 6-digit code by email to verify and create your free trial account.
demo_campaigns.relay_code is optional — when a campaign has no pre-seeded broadcast relay, _cl.relayCode is empty and the whole preview card is skipped (clInit(), relay-app/concepts/src/requests.ts). Just the form shows, same as #638's Reddit-Founders link.
app.relayctx.com/x/devtools-q2
Relay
Generating your relay…
Claude is personalizing it for you. Check your inbox for a verification code.
app.relayctx.com/x/devtools-q2
Relay
Your relay is ready
Async code review, without the context loss
Hey Jordan — here's a starter relay for your team's Notion + Slack review flow: a template for handing off review context between async reviewers, so nothing gets lost between threads.
devtoolsasync-review
Verify your email
We sent a 6-digit code to jordan@acmecorp.com. Enter it below to verify your email and create your free trial account.
app.relayctx.com/stream
Relay
Verified — redirecting…
JWT set, trial account created (14-day, signup_source: demo). No intermediate "welcome" screen today — straight to /stream.
app.relayctx.com/x/spring-launch-2025
Relay
This campaign has ended
The link you followed has expired. Reach out to the person who shared it.
A genuinely non-existent slug (404) and a campaign whose status === "expired" render the identical message (clInit()_clShowExpired() on either condition). Not flagged as a bug — reads as intentional anti-enumeration parity, same idea as the transfer-claim prototype's uniform-gate pattern — but worth a deliberate yes/no rather than an accident.
app.relayctx.com/x/devtools-q2
Relay
Your relay is ready
Async code review, without the context loss
Verify your email
We sent a 6-digit code to jordan@acmecorp.com. Enter it below to verify your email and create your free trial account.
Verification failed. Please try again.
app.relayctx.com/x/devtools-q2
Relay
Get your personalized relay
Answer three questions. Claude will generate a relay tailored to your workflow. You'll also get a free trial account.
Network error — please check your connection and try again.
Form data is preserved and re-shown on failure (_clDoSubmit catch block) — good recovery UX already shipped. Same slot also shows the backend's data.error verbatim for a non-network 4xx/5xx from /api/demo/personalize.
relay-platform #1896
app.relayctx.com/x/q3-secret-preview
Relay
Get your personalized relay
Answer three questions. Claude will generate a relay tailored to your workflow. You'll also get a free trial account.
Bug: GET /x/{slug} (handle_share_tracked, routes/short_urls.py) never checks status — a campaign an admin saved as draft (never published) is fully live and usable by anyone who has or guesses the slug. Only POST /api/demo/personalize gates on status == "active" — one step too late.
relay-platform #1896
app.relayctx.com/x/devtools-q2
Relay
Verify your email
We sent a 6-digit code to jordan@acmecorp.com. Enter it below to verify your email and create your free trial account.
↳ succeeds — account created, even though an admin flipped this campaign to "expired" 4 minutes ago.
Bug: handle_demo_verify (routes/demo.py) never re-checks campaign status — only whether the OTP row itself is valid. An admin's "expire this campaign" kill switch doesn't stop a signup already in flight past the personalize step.
relay-platform #1897
app.relayctx.com/x/devtools-q2
Relay
Your relay is ready
Async code review, without the context loss
Verify your email
We sent a 6-digit code to jordan@acmecorp.com. Enter it below to verify your email and create your free trial account.
Bug: _fire_otp (routes/demo.py) fires the OTP email on a background thread; a send failure is appended to an internal otp_error list that's never read. _handle_personalize returns 200 {"otp_pending": true} regardless — this exact screen renders whether or not the email actually sent. Jordan has no code coming and no way to know it.
relay-platform #1898
app.relayctx.com/x/devtools-q2
Relay
Verify your email
We sent a 6-digit code to jordan@acmecorp.com. Enter it below to verify your email and create your free trial account.
Verification failed. Please try again.
↳ attempt #47 this minute, same as attempt #1 — nothing throttles this.
Bug: handle_demo_verify has no rate-limit or attempt counter — only the OTP's own expiry window bounds a guesser. _handle_personalize already rate-limits by session_id; verify has no equivalent.
relay-platform #1899
app.relayctx.com/x/reddit-founders
Relay
Get your personalized relay
Answer three questions. Claude will generate a relay tailored to your workflow. You'll also get a free trial account.
↳ signup #10,000+ on a "lifetime access for the first 500" campaign, cheerfully accepted.
Gap: demo_campaigns has no max-uses/cap field at all (confirmed against the migration schema) — a scarcity-framed campaign (e.g. #638 Reddit Founders' "first N") has no way to actually stop at N. This state can't happen today because nothing enforces it, which is itself the problem.