Repository navigation
Serve dashboard SPA on shared origin with existing login - #257
willwashburn wants to merge 28 commits into
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
|
Preview deployed!
This is a Cloudflare Workers preview version of this PR's build. |
…e-need-forward-deployed-agents Publish: We have forward deployed engineers. Do we need forward deployed agents?
* docs: add Claude connector guide * docs: correct Claude connector setup --------- Co-authored-by: agentrelaybot <[email protected]>
* docs: add CLI-only hackathon getting started guide * docs: clarify CLI and desktop session privacy * docs: make CLI setup the primary Getting started guide * docs: remove redirects for unpublished hacking URLs * docs: default getting started to automatic tool detection * docs: explain session joining limits and verification status * docs: keep getting started brief and move details to agent exports * docs: position desktop as the paid upgrade from the free CLI * docs: simplify init commands for next.9 * docs: clarify hosted defaults and self-hosted URL usage * test(docs): assert URL-free setup without old hostnames --------- Co-authored-by: kjgbot <[email protected]>
Co-authored-by: kjgbot <[email protected]>
Co-authored-by: kjgbot <[email protected]>
Co-authored-by: kjgbot <[email protected]>
…A blue (#260) * feat(home): agent logo cloud trading laser bolts behind the hero Co-Authored-By: Claude Opus 5.5 <[email protected]> * feat(home): "Keep the tools you love" section Co-Authored-By: Claude Opus 5.5 <[email protected]> * fix(web): deeper, saturated primary button blue for 7:1 text contrast Co-Authored-By: Claude Opus 5.5 <[email protected]> * feat(home): brighter hero agent tiles and laser bolts Co-Authored-By: Claude Opus 5.5 <[email protected]> * fix(web): primary button blue closer to Curious Blue Co-Authored-By: Claude Opus 5.5 <[email protected]> * feat(home): agents orbit the hero headline on a tilted ring; app/terminal tools row Co-Authored-By: Claude Opus 5.5 <[email protected]> * fix(home): live reduced-motion handling for the orbit; tool names never clip Co-Authored-By: Claude Opus 5.5 <[email protected]> * feat(home): hero button opens getting started, with the GitHub mark Co-Authored-By: Claude Opus 5.5 <[email protected]> * feat(home): hero and nav buttons read "Get started" and open the getting-started docs Co-Authored-By: Claude Opus 5.5 <[email protected]> * feat(home): GitHub star button in the nav instead of Log in Co-Authored-By: Claude Opus 5.5 <[email protected]> * feat(home): Get started buttons drop the GitHub mark Co-Authored-By: Claude Opus 5.5 <[email protected]> * feat(home): tools-you-love section leads the "No new IDE" band Co-Authored-By: Claude Opus 5.5 <[email protected]> * feat(home): "No new IDE. Keep the tools you love" with ten tools in two rows; why row loses its heading Co-Authored-By: Claude Opus 5.5 <[email protected]> * copy(home): tools section lead says Agent Relay runs in the background Co-Authored-By: Claude Opus 5.5 <[email protected]> * perf(home): orbit frame loop runs only while the ring is visible Co-Authored-By: Claude Opus 5.5 <[email protected]> * feat(home): first why card is about choosing what goes on the relay Co-Authored-By: Claude Opus 5.5 <[email protected]> * feat(home): tools grid shows every agent we connect, mixed Co-Authored-By: Claude Opus 5.5 <[email protected]> * feat(home): take the closing call to action off the homepage Co-Authored-By: Claude Opus 5.5 <[email protected]> * feat(home): Muse takes Gemini CLI's place in the tools grid Co-Authored-By: Claude Opus 5.5 <[email protected]> * copy(home): Paseo is a desktop app Co-Authored-By: Claude Opus 5.5 <[email protected]> * copy(home): Devin is a terminal CLI Co-Authored-By: Claude Opus 5.5 <[email protected]> * copy(home): tools grid leads with the most familiar agents Co-Authored-By: Claude Opus 5.5 <[email protected]> * feat(home): colour Codex mark in the tools grid Co-Authored-By: Claude Opus 5.5 <[email protected]> * feat(web): colour Codex mark wherever Codex appears; Claude app icon in the tools grid Codex CLI keeps the white mark and ChatGPT the OpenAI mark. The colour Codex mark is a client component so each copy gets its own gradient id. Co-Authored-By: Claude Opus 5.5 <[email protected]> * feat(home): tools heading breaks after "No new IDE."; drop the checks row; Pi leaves the headline rotation Co-Authored-By: Claude Opus 5.5 <[email protected]> --------- Co-authored-by: Claude Opus 5.5 <[email protected]>
Co-authored-by: kjgbot <[email protected]>
Deploys, previews, publishing and DNS no longer wait on a cmo sign-off; the reviewed-PR, two-review and human-release rules stay. Co-authored-by: kjgbot <[email protected]> Co-authored-by: Claude Opus 5.5 <[email protected]>
* Add status page link to shared footer * Show external-link icon on footer status link
…tomer quotes (#249) * Add Pomerado customer quote to the homepage and as a shareable image Co-Authored-By: Claude Opus 5.5 <[email protected]> * Show customer quotes as a compact row before the final call to action Co-Authored-By: Claude Opus 5.5 <[email protected]> * Add Serg's X post next to the Pomerado quote Co-Authored-By: Claude Opus 5.5 <[email protected]> * Subset brand fonts with curly quotes and non-breaking characters; emphasize Serg's post Co-Authored-By: Claude Opus 5.5 <[email protected]> * Document the curly quotes and non-breaking characters in the font subset Co-Authored-By: Claude Opus 5.5 <[email protected]> * Download for your OS from the homepage, landing on a page that explains the app Co-Authored-By: Claude Opus 5.5 <[email protected]> * Turn the download start page into onboarding: sign up, then install and connect Co-Authored-By: Claude Opus 5.5 <[email protected]> * Steady hero download label, no repeat downloads, larger tap targets, step status for screen readers Co-Authored-By: Claude Opus 5.5 <[email protected]> * Lead the download page with what Agent Relay does: runs in the background, agents talk directly Co-Authored-By: Claude Opus 5.5 <[email protected]> * Download only on fresh visits, keep button transitions, fail-open label hiding, quote text clear of X link Co-Authored-By: Claude Opus 5.5 <[email protected]> * Give Windows downloads an install step for the installer and the zip Co-Authored-By: Claude Opus 5.5 <[email protected]> * Show agents talking on the download page: Claude Code and Codex through the relay, with less copy Co-Authored-By: Claude Opus 5.5 <[email protected]> * Remember started downloads across in-app navigation back to the start page Co-Authored-By: Claude Opus 5.5 <[email protected]> * Split the download page: task on the left, every agent wired through the relay on the right Co-Authored-By: Claude Opus 5.5 <[email protected]> * Test when the download start page downloads Co-Authored-By: Claude Opus 5.5 <[email protected]> * Offer other builds from the download start page Co-Authored-By: Claude Opus 5.5 <[email protected]> * Replace the download page animation with a plain account of what the app does Co-Authored-By: Claude Opus 5.5 <[email protected]> * Drop the explainer eyebrow and put the download status under the headline Co-Authored-By: Claude Opus 5.5 <[email protected]> * Lead the download page with "Let your agents talk to each other" Co-Authored-By: Claude Opus 5.5 <[email protected]> * Keep a hidden heading over the download page's explainer points Co-Authored-By: Claude Opus 5.5 <[email protected]> * Drop sign-in from the download page; the app's own sign-in is the one step Co-Authored-By: Claude Opus 5.5 <[email protected]> * Move the download fallback links to the bottom, muted Co-Authored-By: Claude Opus 5.5 <[email protected]> * One nav across the site: GitHub stars and the download button Co-Authored-By: Claude Opus 5.5 <[email protected]> * Download button in the docs mobile menu; stars give way on the narrowest phones Co-Authored-By: Claude Opus 5.5 <[email protected]> * Say "Check your Downloads folder" when the start page skips a repeat download Co-Authored-By: Claude Opus 5.5 <[email protected]> * Track the desktop download funnel: desktop_download_clicked and desktop_download_started Co-Authored-By: Claude Opus 5.5 <[email protected]> --------- Co-authored-by: Claude Opus 5.5 <[email protected]>
…d customers The pages render per request, only after Cloud verifies the reader's session and the organization's self-host entitlement. The page forwards only the agent_relay_session cookie (Domain=.agentrelay.com, Path=/) server to server to Cloud's GET /cloud/api/v1/me/selfhost-docs, which fetches the runbooks from relay-agent (knowledge/private/selfhost, the single source the support agent also reads). This repository is public, so the text is never committed, bundled or prerendered here. - Signed out (or a rejected session) -> /login?next=/docs/self-hosting/<doc>; Cloud's /cloud/docs/self-hosting hop returns there after sign-in. - Signed in, not entitled -> request-access page with no runbook names or text. - Entitled -> overview (architecture diagrams from helm-charts, the OCI chart, Ask the setup agent via ask_customer_support) and each runbook, with the docs nav, copy buttons and docs styling. Markdown renders with unified and no eval (Workers forbid it); raw HTML, images and unsafe links are dropped. - force-dynamic plus Cache-Control: private, no-store, X-Robots-Tag noindex, no sitemap/llms/search entries, prefetch off, PostHog replay blocked. - Router: the traffic recorder skips the gated pages and Cloud's runbook API. - CI: selfhost-docs-leak-check.mjs scans .next/.open-next for prerendered gated routes and for fingerprinted runbook text (sampled 12-word window hashes, not the text). The worker smoke checks the signed-out redirect. Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Leak check fails closed: unreadable directories throw, oversized files are findings, missing named build dirs exit 2, dynamicRoutes are checked, and fingerprinting refuses anything but flat .md runbooks. - Router recorder exclusion matches the decoded path (undecodable: excluded). - Entitled pages add ph-no-capture so autocapture sends no runbook text. - Markdown links reject backslashes/control characters; heading ids stay unique when a heading's slug equals an earlier generated suffix. - A misconfigured Cloud origin is 'unavailable', not a thrown 500. Co-Authored-By: Claude Opus 5.5 <[email protected]>
…05d5cc) guided-gke-install was reworded for people in relay-agent#100. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Gated self-hosting docs at /docs/self-hosting for entitled customers
…fda491) relay-agent #101 updated the self-host runbooks for agent-relay 0.3.11. Co-Authored-By: Claude Opus 5.5 <[email protected]>
…ts-0310 chore(docs): regenerate self-host runbook fingerprints (relay-agent bfda491)
The overview names both clouds, links both reference installs and both guided installs, and offers one setup-agent prompt per cloud (selfhost:guided-gke-install, selfhost:guided-eks-install). The diagram caption says it is drawn for GKE and gives the EKS equivalents. Co-Authored-By: Claude Opus 5.5 <[email protected]>
…wording Co-Authored-By: Claude Opus 5.5 <[email protected]>
…134e99) Co-Authored-By: Claude Opus 5.5 <[email protected]>
…lass docs(self-hosting): present GKE and EKS as equal install paths
kjgbot
left a comment
There was a problem hiding this comment.
Review record — Codex primary reviewer, exact head 4ca656cf84918be30d9f4107662ae3671f953a95.
Reviewed the full current-main composition, router dispatch and service-binding behavior, development rewrite, CI discovery, and rollout documentation. No blocking routing-code finding remains from this pass. The root prefix/query behavior, removal of Cookie/Authorization, missing-binding no-store 503, method restriction with an available binding, and separation from existing /cloud and owner dashboards agree with the intended contract. The production service binding remains disabled.
Fixed the regression-protection gap found by the independent reviewer: the excluded Node .mjs is replaced with 13 Vitest TypeScript cases discovered by normal npm test. On this exact source: 619 web + 123 router tests; both typechecks; lint with no errors/four existing warnings. Negative controls produce 10 failures without the rewrite, 7 without origin validation, and 2 without the development guard; restoring the config byte-for-byte restores all 13 cases.
Not an approval to merge or deploy: production compilation, types, and 252 static pages completed, but npm run build exited 1 because the inherited Next16.4.0 security check fired. Existing #252 supplies the patched version. Current-head CI and the independent final-head review must be read separately. The real Google/provider/shared-origin dashboard journey is still unverified; configured credentials do not establish OAuth completion. Keep draft until those gates and the repository's two recorded reviews are satisfied.
kjgbot
left a comment
There was a problem hiding this comment.
Independent agent review record — /root/review_marketing257, exact head 4ca656cf84918be30d9f4107662ae3671f953a95. Posted by the coordinating agent from the independent review artifact; this is not a separate human account or an APPROVED review.
Code-review signoff: no actionable findings. The previous P3 is resolved: the replacement .test.ts is discovered by the web Vitest runner. The independent reviewer ran all 13 proxy cases and the three new router cases with zero failures, verified worktree-local dependency resolution, and checked config/lockfile hashes and negative-control logs (10/7/2 failures). Reviewed current-main privacy/replay behavior and found the new routing branch preserves those contracts.
Evidence limits: this is source/test signoff only. Exact-head CI was still running at review time; the inherited Next16.4.0 security build failure, existing #252 dependency, and real shared-origin OAuth/provider/dashboard journey remain unresolved. No merge, deployment, preview, binding enablement, or production access is approved by this record.
Routes
/dashboard/*to the standalone static SPA on the existing marketing origin, with/loginand authenticated/cloud/apiusing the existing shared-origin HttpOnly session cookie. No alternate authentication or CORS is introduced.The optional
DASHBOARD_ASSETSbinding receives the path with/dashboardstripped and no cookie/authorization headers. With the binding available, the root canonicalizes to/dashboard/and writes return 405. A missing binding returns an uncached 503. The binding remains disabled; the router README records rollout order and rollback.The development-only Next rewrite accepts only HTTP loopback origins. Its regression test now uses the normal Vitest TypeScript runner; the former
.mjstest was excluded by the CI include patterns.Validation on
4ca656cf84918be30d9f4107662ae3671f953a95, composed with current mainfad47a04537a338ec9fb9650821724b26ab33214:npm ci; both web/router workspace links resolve inside the T7 worktree.npm test: 55 web files / 619 tests, 12 router files / 123 tests, including all 13 proxy cases.npm run typecheck: both workspaces passed.npm run lint: no errors; four existing warnings outside this change.npm run build: compilation, TypeScript and 252 static pages completed, then the existing Next 16.4.0 security check exited 1. This is not a green build. Existing security PR security: upgrade Next.js to 16.4.3 #252 supplies the patched version; no duplicate upgrade is included here.505e748e7f2e6d5ebe276763ee936ff5228724d9; its source parent is4ca656c and its tree exactly matches the locally validated tree. Existing CI also ran its automatic preview42084249645; no manual preview action was taken.Keep draft until the dependency/build gate, two recorded reviews, and the real shared-origin Google/provider/dashboard journey are settled. Google configuration is available privately; live QA has not run. Local port 3100 belongs to a separate checkout and was left untouched. No manual deployment/preview, binding enablement, or production OAuth change was initiated.
Companions:
Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
Routes
/dashboard/*to a standalone SPA while keeping/loginas the marketing login page and/cloud/apias the Cloud backend, so the browser reuses the existing shared-origin HttpOnly session cookie without new login UI or CORS./dashboardcanonicalizes to/dashboard/, non-GET/HEAD requests return 405, and the optionalDASHBOARD_ASSETSbinding serves asset paths with/dashboardstripped and cookie/authorization headers removed./dashboard/*returns an uncached 503 instead of falling through to marketing./dashboardand/dashboard/*to a Vite origin, restricted to HTTP loopback addresses.Rollout
relay-dashboardstatic asset Worker, deploy Cloud's/dashboard/OAuth return support, then enable theDASHBOARD_ASSETSbinding./cloud/dashboard/*routing is unaffected.Written for commit ab9ad25. Summary will update on new commits.
Agent Relay sessions
codexsession01a18eee· opened viagh pr create· last active 2026-10-31