Skip to content

Show Featured on badges under the landing hero CTA - #183

Closed
Programcode wants to merge 1 commit into
mainfrom
feat/featured-on-badges
Closed

Programcode wants to merge 1 commit into
mainfrom
feat/featured-on-badges

Conversation

@Programcode

@Programcode Programcode commented Oct 22, 2026 •

Copy link
Copy Markdown
Owner

Adds a LaunchIgniter "Featured on" badge and a StartupBase "Launched on" badge in one row under the hero's Start Trial and View Pricing buttons. LaunchIgniter only counts a badge that is on the homepage and visible without scrolling, so it can't go in the footer.

What changed

  • src/components/landing/Hero.tsx: a FeaturedOn row after the CTA row. Each badge renders a light and a dark link, and Tailwind's dark: class shows one of them. The prerender can't know the visitor's theme, so both go into the HTML. theme-init.js sets the dark class before paint, and that class picks the variant. Every link has target="_blank" rel="noopener noreferrer"; the LaunchIgniter snippet left out rel, so I added it. Each image is a plain <img> with width and height attributes, loading="eager" and h-10 w-auto. The sizes are 154x40 for LaunchIgniter (its SVG is 212x55) and 150x40 for StartupBase (300x80). The 40px CSS height keeps the box the same size whether or not the image loads.
  • vercel.json: img-src now allows https://launchigniter.com and https://statics.startupbase.io. It still has no bare https:, which the existing CSP test forbids.

The prerendered dist/index.html contains all four links and images (two badges, two themes), so a verifier that fetches the raw HTML finds them without running JS.

Above the fold

I measured the built dist/ with Playwright in light and dark. A local server sent the production CSP header from vercel.json. Positions are CSS pixels from the top of the viewport. I ran the measurement twice at 046b504c, first on the VPS and then on a separate VM, and got the same numbers both times.

  • At 1440x900 the CTA row ends at 670 and the badges end at 730, above the fold.
  • At 1920x969 (a 1080p browser window) and 1280x800 the badges also end at 730, above the fold.
  • On a 390x844 phone the CTA row ends at 544 and the badges end at 604, above the fold.
  • On a 375x667 phone the badges end at 602, above the fold.
  • At 1280x720 the badges end at 730, so the bottom 10px of the strip is below the fold.
  • At 1366x657 (a 1366x768 laptop) the whole strip is below the fold. The CTA row ends at 670, so it is already below the fold at this size.

On short laptop screens the hero's CTA itself is near or past the fold, so no spot under the CTA can be above it. Fixing that means tightening the hero's top spacing, which this PR leaves alone.

Layout shift is 0 on mobile. On desktop the page shifts by about 0.0095 at load, when the announcement and headline move up 20px. I served the same build with the strip removed from the HTML and got the same 0.0095, so the badges add none.

Screenshots

GitHub's CLI can't attach images, so the screenshots are on the pr-assets/featured-on-badges branch, which is not for merging. All of them come from 046b504c with the production CSP applied.

VM run

LaunchIgniter's Cloudflare challenges this VM's IP (see below), so its badge shows alt text in its reserved 154x40 box. The StartupBase badge loads in both themes.

Desktop 1440x900, light and dark:

Desktop light, VM
Desktop dark, VM

Mobile 390x844, light and dark:

Mobile light, VM Mobile dark, VM

Small phone 375x667, light and dark:

Small phone light, VM Small phone dark, VM

The 1280x720 laptop, where the strip is cut at the fold:

1280x720 light, VM

With the real LaunchIgniter badge

These come from the earlier VPS run, which sent traffic through a residential proxy so LaunchIgniter served the image. They are the same commit at the same sizes.

Desktop light, proxy
Desktop dark, proxy

Mobile light, proxy Mobile dark, proxy

LaunchIgniter blocks datacenter IPs

From both the VPS and the VM, launchigniter.com/api/badge/debatelab returns Cloudflare's bot challenge (403, cf-mitigated: challenge, cross-origin-resource-policy: same-origin). Chromium refuses that response with ERR_BLOCKED_BY_RESPONSE.NotSameOrigin. The error comes from LaunchIgniter's response headers, not from our CSP. Visiting launchigniter.com first in the same browser did not clear the challenge. Through a residential proxy the same URL returns 200 image/svg+xml (212x55, no CORP header), and the light and dark files differ. A visitor whose IP Cloudflare challenges sees the alt text in the same 154x40 box, with no layout shift.

Checks

GitHub Actions is out of minutes, so these are local runs at 046b504c, not CI. On the VM, one full npm run verify run passed with exit code 0.

  • npm run docs:check passed.
  • npm run lint (eslint, knip and the repo rules) passed.
  • npm run typecheck (app, agentic and core) passed.
  • npm test passed 315 tests in 40 files.
  • npm run test:collaboration passed 30 tests.
  • npm run test:edge passed 361 tests with 0 failures.
  • npm run build passed, including the prerender and sitemap. The built dist/index.html contains both badge links in both themes.
  • npm run test:sw passed the offline service worker checks.
  • npm run test:e2e:smoke passed 30 tests on desktop Chromium.

The earlier VPS run of the same steps, done one at a time because of its memory guard, gave the same results.

main has moved since this branch was cut. The new commits touch none of these files, and the branch merges cleanly.

Not run: staging, production, WebKit, and the verify-debatelab recipes and agentic suite. The recipes don't cover the public landing page, and this change has no backend part. Nothing is deployed.

🤖 Generated with Claude Code

LaunchIgniter only counts a badge on the homepage above the fold, so the
LaunchIgniter and StartupBase badges sit in a small row under the hero
buttons. Both theme variants are in the prerendered HTML and Tailwind's
dark: class shows one. The CSP img-src now allows both badge hosts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 22, 2026 12:45
@vercel

vercel Bot commented Oct 22, 2026

Copy link
Copy Markdown

Deployment failed for project debate-navigator with the following error:

Resource is limited - try again in 24 hours (more than 100, code: "api-deployments-free-per-day").

Learn More: https://vercel.com/adam-gaborjanis-projects?upgradeToPro=build-rate-limit

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitai Bot commented Oct 22, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

Next included review available in 30 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
📥 Commits

Reviewing files that changed from the base of the PR and between 34fb585 and 046b504.

📒 Files selected for processing: 2
  • src/components/landing/Hero.tsx
  • vercel.json
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Essentials by visiting https://app.coderabbit.ai/settings/billing.

Comment @coderabbitai help to get the list of available commands.

@Programcode

Copy link
Copy Markdown
Owner Author

Closed at Adam's request; not shipping the Featured-on badges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants