feat(landing): dual-rail rewrite + Vercel deploy pipeline#27
feat(landing): dual-rail rewrite + Vercel deploy pipeline#27ggonzalez94 wants to merge 2 commits intomainfrom
Conversation
Agent-native positioning, dedicated "Payment rails" section comparing x402/Taiko and MPP/Tempo, tabbed code example for both rails, copy-to- clipboard endpoint, tighter CTAs, and OG/Twitter card meta. Hardcoded prod URL (tack.taiko.xyz) so the landing is portable independent of where the backend is served from. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Introduces scripts/build-landing.ts that renders landingPageHtml() to dist/landing/index.html, and a deploy-landing workflow that builds on arc-runner-set and ships via `npx vercel@latest deploy`. Preview deploys on PRs touching the landing (auto-comments URL on the PR); production deploys on merges to main. Includes scripts/ in tsconfig.eslint so the new build script is linted. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Landing preview: https://tack-pjrviieqd-taikoxyz.vercel.app Built from b8e4ccb |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 7049417. Configure here.
| <button class="btn-primary" data-copy="${o}" aria-label="Copy API endpoint to clipboard"> | ||
| <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg> | ||
| <span class="copy-btn-label">Copy endpoint</span> | ||
| </button> |
There was a problem hiding this comment.
Hero copy button lacks "copied" visual feedback
Low Severity
The hero copy button has class btn-primary but the JS copy handler (selecting all [data-copy] elements) adds the copied class to it on click. The CSS rule .copy-btn.copied only matches elements that also have the copy-btn class, so the green "copied" visual state never activates on the hero button. The endpoint-section button works correctly because it has the copy-btn class.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 7049417. Configure here.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 704941753e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| jobs: | ||
| deploy-preview: | ||
| name: Preview | ||
| if: ${{ github.event_name == 'pull_request' && github.event.pull_request.draft == false && github.event.pull_request.head.repo.fork == false }} |
There was a problem hiding this comment.
Skip preview deploys for Dependabot PRs without secrets
The preview job runs for any non-fork PR, but GitHub treats dependabot[bot] pull_request runs like forked runs: Actions secrets are unavailable and GITHUB_TOKEN is read-only. Because this workflow is also triggered by package.json/pnpm-lock.yaml changes, Dependabot dependency PRs will satisfy this if and then fail in Deploy preview to Vercel when VERCEL_TOKEN is missing, creating permanently red CI for automated updates.
Useful? React with 👍 / 👎.
| run: | | ||
| set -euo pipefail | ||
| body=$(printf '**Landing preview:** %s\n\nBuilt from %s' "$PREVIEW_URL" "${GITHUB_SHA:0:7}") | ||
| gh pr comment "$PR_NUMBER" --body "$body" --edit-last || \ |
There was a problem hiding this comment.
Avoid overwriting unrelated bot comments on the PR
gh pr comment --edit-last edits the last comment by the current user; in Actions that user is typically github-actions[bot] shared by other workflows. If another automation comment is newer than the landing preview comment, this command will rewrite that unrelated comment instead of updating the preview URL, causing loss of context on the PR thread.
Useful? React with 👍 / 👎.


Summary
Landing page rewrite for the dual-rail (x402 + MPP) story, plus a Vercel deploy pipeline so the landing is shippable independently of the API service.
Landing page
src/landing.tsto tell the dual-rail story end-to-end: x402 on Taiko (USDC) and MPP on Tempo (USDC.e).@x402/fetchon one tab,mppx/clienton the other.POST /pins/:requestid(replace) and/.well-known/agent.json, both previously missing.tack.taiko.xyz) so the landing is portable regardless of which backend hostname is serving it.Screenshots (desktop + mobile, before / after) were iterated on in-browser — rails section renders cleanly at tablet and above; mobile stacks to single column.
Vercel deploy pipeline
scripts/build-landing.tsrenderslandingPageHtml()todist/landing/index.html..github/workflows/deploy-landing.yml:npx vercel@latest deploy+ posts URL as a PR comment (edits the last one on subsequent pushes).main— same but with--prod, gated on theproduction-landingGitHub environment.arc-runner-setwith Node 22 + corepack (matches existing CI conventions). Usesnpx vercel@latestso the CLI is always fresh.Secrets wired up
VERCEL_TOKENVERCEL_PROJECT_IDprj_F2qQcglM2zh9dQMRsmGTIeYYuMkJ)VERCEL_ORG_IDtaikoxyzorgTest plan
pnpm lint/pnpm typecheck/pnpm test(158/158) /pnpm buildall pass locallypnpm build:landingemitsdist/landing/index.html(~51 KB, 0 localhost references)tack.taiko.xyzproduction domain is mapped on the Vercel project before mergingmainNote
Medium Risk
Medium risk because it introduces a new GitHub Actions workflow that deploys to Vercel (secrets, PR commenting, production environment gating) and significantly rewrites the landing-page HTML/JS; core API/payment logic is otherwise untouched.
Overview
Updates the landing page to be dual-rail (x402 + MPP), including a new “Payment rails” section, refreshed copy/pricing, expanded API surface callouts (adds
POST /pins/:requestidand/.well-known/agent.json), and new interactive UI (copy-to-clipboard endpoint + tabbed code samples). The landing renderer now hardcodes the production URL (https://tack.taiko.xyz) andsrc/app.tscallslandingPageHtml()without deriving an origin.Adds a dedicated
pnpm build:landingpipeline (scripts/build-landing.ts) that emitsdist/landing/index.html, expands ESLint TS config to includescripts/, and introduces a newdeploy-landingGitHub Actions workflow that builds and deploys the landing to Vercel on PRs (commenting the preview URL) and to production onmainpushes (GitHub environment gated).Reviewed by Cursor Bugbot for commit 7049417. Bugbot is set up for automated code reviews on this repo. Configure here.