feat: add launch landing site#686
Closed
thymikee wants to merge 8 commits into
Closed
Conversation
Size Report
Startup median (7 runs, lower is better):
Top changed chunks: no changes in the largest emitted chunks. |
|
thymikee
commented
Jun 4, 2026
Member
Author
thymikee
left a comment
There was a problem hiding this comment.
Review: launch landing site
Reviewed the dynamic/data-flow surface (the static content + assets I skimmed only). Focused on perf, data flow, and API usage per the review criteria. Overall the server/client boundary is clean. Notes, all low-severity:
What works well
- Resilient GitHub stats flow.
getGitHubRepoStatsusesnext: { revalidate: 4h }for ISR caching, attachesGITHUB_TOKENwhen present (avoids unauthenticated rate limits), and degrades gracefully tonull→GitHubStarLinkFallback. The repo slugcallstackincubator/agent-devicematches the canonical one inREADME.md/package.json, so the counter resolves. Good defensive design. - Accessible, well-behaved carousel.
hero-agent-carousel.tsxpauses on hover/focus/visibilitychange, honorsprefers-reduced-motion, and drives everything through refs so theuseCallbacks stay stable without stale-closure bugs. Nicely done.
Worth considering
- Clipboard API ordering (
prompt-copy-button.tsx). The primary path is the deprecateddocument.execCommand("copy"), withnavigator.clipboard.writeTextonly as the fallback when that returns false. This is inverted from current best practice — the async Clipboard API is the standard and should be tried first, withexecCommandas the legacy fallback. It works today, but it leads with a deprecated API. force-dynamicon static text routes.llms.txtandllms-full.txtsetexport const dynamic = "force-dynamic", butcreateLlmsTxt()/createLlmsFullTxt()are build-time-constant. This opts the routes out of static optimization so each origin request recomputes them (mitigated by the manualCache-Control+ CDN). If the content is truly static, droppingforce-dynamic(orforce-static) lets Next serve them as static assets.- Nit — OG image fonts.
og-image.tsxrenders with systemmonospace/default sans rather than the bundled Alliance/Switzer brand fonts. Purely cosmetic; flagging only since the brand fonts are already in the bundle.
Noting this PR is already closed — happy to move these onto whichever PR carries the landing site forward if that's more useful.
Generated by Claude Code
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.
Summary
Adds the new
landingNext.js site for the public agent-device.dev launch, rebased onto latestmain.Adds the missing GitHub header link with a server-rendered live star counter cached for 4 hours.
Touched file count: 87. Scope is limited to the
landingapp.Validation
Ran
pnpm lint,pnpm audit:assets,pnpm build, andLANDING_SMOKE_URL=http://localhost:4312 pnpm smoke:browser. Browser smoke passed for 3 pages across 3 viewports.