Repository navigation
Homepage and site nav: download for your OS, download start page, customer quotes - #249
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Composal Verify · PR #249
Warning This request is merged; previous verification results remain in the history. Preview: https://a33dda15-agentrelay-web.agent-workforce.workers.dev/ Findings
Scenarios
Why these 5 scenarios were selected
Recent verification history
|
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
|
| Layer / File(s) | Summary |
|---|---|
Quote data, cards, and homepage placement web/lib/customer-quotes.ts, web/components/homepage/CustomerQuotes.tsx, web/components/homepage/customer-quotes.module.css, web/components/homepage/HomePage.tsx, web/components/home/icons.tsx, web/scripts/generate-customer-quote.mjs, web/lib/og/template.tsx |
Defines two quote records and renders tone-styled cards with speaker details and optional post context. Adds responsive styling, an X icon, homepage placement, a quote-image generator, and additional glyphs to the font subset. |
Desktop download experience
| Layer / File(s) | Summary |
|---|---|
Platform detection and download-start flow web/lib/use-desktop-platform.ts, web/lib/desktop-downloads.ts, web/lib/test/desktop-downloads.test.ts, web/app/download/DownloadButton.tsx, web/app/download/start/* |
Adds shared platform detection and helpers for download-start URLs and asset lookup. The start page resolves builds and starts eligible downloads. Tests cover asset resolution and navigation eligibility. |
Platform-specific download calls to action web/components/homepage/DesktopDownloadCta.tsx, web/components/homepage/HomeHero.tsx, web/components/homepage/NavActions.tsx, web/components/home/icons.tsx, web/components/homepage/desktop-download-cta.module.css, web/components/homepage/home-hero.module.css |
Uses detected platforms to select desktop downloads in homepage calls to action. Retains getting-started content as fallback and adds platform icons and related styling. |
Shared navigation actions web/components/SiteNavActions.tsx, web/app/*/page.tsx, web/app/docs/layout.tsx, web/components/home/MessagingLandingPage.tsx |
Adds shared navigation actions with a download button. Site pages replace local or prior navigation actions with the shared component; the docs layout adds a download button alongside its GitHub stars badge. |
Estimated code review effort: 3 (Moderate) | ~25 minutes
Change: Feature
Sequence Diagram(s)
sequenceDiagram
participant DesktopDownloadCta
participant DownloadStartPage
participant DownloadMarker
participant Browser
DesktopDownloadCta->>DownloadStartPage: Opens the selected asset start URL
DownloadStartPage->>DownloadMarker: Provides the resolved asset URL
DownloadMarker->>Browser: Starts the download when navigation is eligible
Possibly related PRs
- AgentWorkforce/agentrelay.com#238: Adds the desktop asset catalog and platform model extended here with download-start and asset lookup helpers.
Suggested reviewers: khaliqgant
Merge Risk: 
Low · up to 85a5b
-
Revisiting the download page can show a misleading status, and narrow screens can lose or clip navigation actions. These are bounded issues suitable for follow-up.
Pre-merge checks: 
4 · 
1
-
Failed checks: 1 warning Passed checks: 4 passedFull details: Docstring Coverage
-
Explanation
Docstring coverage is 56.25% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 16 functions across 46 files. (1 skipped: 1 unsupported.)
Resolution
Write docstrings for the functions missing them to satisfy the coverage threshold.
-
Finishing Touches
-
Generate docstrings
-
- Commit to this branch
- Create a new PR
Generate unit tests (beta)
-
- Commit to this branch
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
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.
A rabbit sees the quotes appear,
Two voices join the homepage here.
A download button finds its way,
And marks the start of build day.
Shared actions line the pages bright,
Then hops away into the night.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Preview deployed!
This is a Cloudflare Workers preview version of this PR's build. |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
🔇 Additional comments: 1
web/scripts/generate-customer-quote.mjs-64-64: 1
64-64:Minor · Functional Correctness · Quick win
⚠️ Unverified finding
Verification ran but could not confirm this finding. It is shown for review, not as a verified issue.Save the image at the stated dimensions.
With a 1258×736 viewport and
deviceScaleFactor: 2,page.screenshot()produces a 2516×1472 image by default. Setscale: 'css'to save the shareable PNG at the stated 1258×736 dimensions. (playwright.dev)Proposed fix
- await page.screenshot({ path: fileURLToPath(publicFile(quote.image)) }); + await page.screenshot({ path: fileURLToPath(publicFile(quote.image)), scale: 'css' });

Review info
-
Run configuration-
- Source mode: Auto
- Repository: Unavailable
- Branch: Unavailable
- File: No configuration file from this repository applied
- Commit: Unavailable
- Layers: Organization UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
1d98f5a7-b709-451f-aded-9d60b5ef7638
Files ignored due to path filters: 3-
web/public/img/customer-quote-pomerado.pngis excluded by!**/*.pngweb/public/img/customers/akshay-manglik.pngis excluded by!**/*.pngweb/public/img/customers/pomerado.pngis excluded by!**/*.png
Files selected for processing: 5-
web/components/homepage/CustomerQuotes.tsxweb/components/homepage/HomePage.tsxweb/components/homepage/customer-quotes.module.cssweb/lib/customer-quotes.tsweb/scripts/generate-customer-quote.mjs
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.
-
|
Re: CodeRabbit's |
…ection Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
All reported issues were addressed across 10 files
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
…hasize Serg's post Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
All reported issues were addressed across 6 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ns the app Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… into customer-quote-pomerado
…nd connect Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
All reported issues were addressed across 4 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
…step status for screen readers Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ound, agents talk directly Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
All reported issues were addressed across 9 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
…el hiding, quote text clear of X link Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
All reported issues were addressed across 9 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gh the relay, with less copy Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
All reported issues were addressed across 6 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
… page Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
All reported issues were addressed across 3 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
…the relay on the right Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…app does Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…line Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
All reported issues were addressed across 2 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… step Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
All reported issues were addressed across 31 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
…est phones Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…download Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…op_download_started Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
1 issue found across 8 files (changes from recent commits).
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="web/components/homepage/DesktopDownloadCta.tsx">
<violation number="1" location="web/components/homepage/DesktopDownloadCta.tsx:50">
P3: This handler replaces any `onClick` passed through `...anchor`, so consumers lose their own click logic on desktop. Compose the supplied handler with analytics.</violation>
</file>
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
| {...anchor} | ||
| className={`${className ?? ''} ${s.cta}`} | ||
| href={desktopStartHref(asset.file)} | ||
| onClick={() => captureDesktopDownload(ph, 'clicked', asset, { placement })} |
There was a problem hiding this comment.
P3: This handler replaces any onClick passed through ...anchor, so consumers lose their own click logic on desktop. Compose the supplied handler with analytics.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At web/components/homepage/DesktopDownloadCta.tsx, line 50:
<comment>This handler replaces any `onClick` passed through `...anchor`, so consumers lose their own click logic on desktop. Compose the supplied handler with analytics.</comment>
<file context>
@@ -36,8 +41,14 @@ export function DesktopDownloadCta({ iconSize = 18, fallback, className, ...anch
+ {...anchor}
+ className={`${className ?? ''} ${s.cta}`}
+ href={desktopStartHref(asset.file)}
+ onClick={() => captureDesktopDownload(ph, 'clicked', asset, { placement })}
+ >
Download for {DESKTOP_OS_NAMES[platform.os]}
</file context>
The homepage leads with a desktop download for the visitor's OS. The download opens a page that says what Agent Relay does on your computer and what to do once it has downloaded. Customer quotes sit above the footer.
Download button
useDesktopPlatformhook (web/lib/use-desktop-platform.ts). The/downloadpage and the homepage button both use it.components/home/icons.tsx.Download start page:
/download/start?build=<file>A full-height split like the sign-in page, with no site nav or footer.
Left: the agentrelay logo (linking home), the headline "Let your agents talk to each other", the download status ("Download started"), the next step ("When it finishes, open Agent Relay and sign in. It connects your agents from there."), and, muted at the bottom, "Didn’t start? Download again · Other builds". There is no sign-in on the page; the app's own sign-in is the single step.
Right: "What it does on your computer", as three static points:
Nothing on the page moves except the download marker, which settles in the brand blue.
Opening the page starts the download, but only for files listed in
DESKTOP_ASSETS, and not on a reload, a Back navigation, or a return through in-app navigation (shouldStartDownload, unit-tested).Below 960px it stacks. The page is
noindex, and its canonical URL is/download.Site nav
SiteNavActions(GitHub stars andNavDownloadButton) is the nav's right side on every marketing and content page: about, blog, careers, company, the legal and trust pages, brand, agents, directory,/download, open source, openclaw, flows plugins and the/upages. They usehideLinks singleActionlike the homepage. The Log in / Docs / Blog text links and the hamburger menu are removed, and those links remain in the site footer. On phones the stars and button stay visible; at 400px and below only the button shows.NavDownloadButtonis the homepage's download button: "Download for macOS / Windows / Linux" with the OS logo, opening/download/start, or "Get started" on phones.Analytics
desktop_download_clickedis sent when a download button is pressed:build,os,arch,placement(heroornav) andpath.desktop_download_startedis sent when/download/startactually starts the file, and not on a reload or a return:build,os,archandpath.lib/desktop-download-analytics.ts, unit-tested).Customer quotes
CustomerQuotessits after "Run it your way" as the last section before the footer. It is a compact row of message bubbles: Akshay Manglik (Founder, Pomerado), and Serg's X post (@sg_HGA) with an X mark linking to the post and a "Replying to" line. The row fits up to three cards across and stacks on narrow screens.web/lib/customer-quotes.ts, andCUSTOMER_QUOTESsets which appear and in what order.node scripts/generate-customer-quote.mjswith the same fonts, logo and wave lines as the OG cards. The shared font subset includes curly quotes and non-breaking characters.🤖 Generated with Claude Code
Agent Relay sessions
claudesession27d5294e· opened viagh pr create· last active 2026-11-02