Skip to content

Website: SEO pass + Lighthouse CI gate - #22

Merged
ThyFriendlyFox merged 3 commits into
cursor/mouse-marketing-site-6b60from
cursor/website-folder-cae2
Aug 28, 2026
Merged

ThyFriendlyFox merged 3 commits into
cursor/mouse-marketing-site-6b60from
cursor/website-folder-cae2

Conversation

@ThyFriendlyFox

@ThyFriendlyFox ThyFriendlyFox commented Aug 18, 2026 •

Copy link
Copy Markdown
Collaborator

Follow-up to the merged #20 (the website/ redesign). Adds SEO/social optimization, a Lighthouse CI gate, and pre-baked hero OCR. Website + CI only — no app changes.

SEO / social ("Mobile Coding App" & "Apps for Builders")

  • Title, meta description, keywords, and visible hero/section copy target "mobile coding app" and "apps for builders".
  • JSON-LD (SoftwareApplication + WebSite) with applicationSubCategory: "Mobile Coding App", sameAs → GitHub, free-offer markup.
  • Full Open Graph + Twitter cards with a generated 1200×630 og-cover.png, plus canonical, robots.txt, sitemap.xml.

Performance (Lighthouse 63 → ~96–98)

  • Self-hosted IBM Plex Mono (preloaded, font-display: swap) removes the render-blocking Google Fonts request.
  • Deferred the dither iframe to load + idle so its canvas sim never blocks first paint.
  • In embed mode, lower particle density and use pre-baked OCR instead of loading tesseract (below).

Hero renders recognized text (pre-baked OCR) + fade-in

The dither's OCR (recognize text and render it as glyphs instead of dots) now drives the hero without any runtime cost:

  • Baked each hero image's OCR (words + boxes) offline using the same tesseract.js pipeline the widget uses, saved to website/assets/ocr/<name>.json.
  • In embed mode the dither applies that baked data, so the flock spells the real terminal/code text (npx create-vite, pkg install ruby, hello from ruby, the vite.config.ts imports, …). Zero tesseract requests at runtime (verified in the Lighthouse network trace).
  • Added a fade-in-from-black on the hero once the first screen forms, so the deferred load reveals gracefully.

Lighthouse CI gate

  • .github/workflows/lighthouse.yml + website/lighthouserc.json run Lighthouse 3× (median) against website/ on PRs/pushes touching it, asserting performance ≥ 0.85 and accessibility / best-practices / SEO = 1.0, and upload a public report link.

Verified — scores

lhci autorun (median of 3), current build with baked OCR: Performance ~0.94–0.98, Accessibility 1.0, Best-Practices 1.0, SEO 1.0; TBT ~210 ms; 0 tesseract requests. The gate also fails correctly when the bar is set impossibly high.

Hero flock spelling recognized terminal text (npx create-vite / Vanilla / Operation cancelled)
Lighthouse: Performance 98, Accessibility 100, Best Practices 100, SEO 100
Generated 1200x630 Open Graph cover

Note

Canonical/OG/sitemap URLs use https://reagent-systems.github.io/mouse/ since no custom domain is configured. If the site deploys elsewhere, update that base in website/index.html, website/robots.txt, and website/sitemap.xml.

To show artifacts inline, enable in settings.

Open in Web Open in Cursor 

cursoragent and others added 3 commits August 18, 2026 00:50
SEO: target 'mobile coding app' and 'apps for builders' in the title, meta
description, keywords, and JSON-LD (SoftwareApplication + WebSite); add
canonical, Open Graph/Twitter cards with a 1200x630 og-cover, robots.txt, and
sitemap.xml; weave the phrases into hero/section copy.

Performance (Lighthouse 63 -> ~98): self-host IBM Plex Mono (drops the
render-blocking Google Fonts request) with preload + font-display swap; defer
the dither iframe until load+idle; and in embed mode only, skip the OCR
(tesseract) path and lower particle density. The standalone dither widget is
unchanged.

Co-authored-by: ThyFriendlyFox <thyfriendlyfox@gmail.com>
Runs Lighthouse (3x, median) against website/ on PRs and pushes that touch it,
asserting performance >= 0.85 and accessibility / best-practices / SEO == 1.0,
and uploads a public report link. Verified the gate both passes at current
scores (perf 0.97-0.98) and fails when the bar is set impossibly high.

Co-authored-by: ThyFriendlyFox <thyfriendlyfox@gmail.com>
Bake each hero image's OCR (words + boxes) offline with the same tesseract.js
pipeline the widget uses, saved to assets/ocr/<name>.json. In embed mode the
dither now applies this baked data so the flock spells the real terminal/code
text as glyphs, with no tesseract download or OCR at runtime. Add a
fade-in-from-black on the hero iframe once the first screen forms.

Co-authored-by: ThyFriendlyFox <thyfriendlyfox@gmail.com>
@ThyFriendlyFox
ThyFriendlyFox marked this pull request as ready for review August 28, 2026 01:50
@ThyFriendlyFox
ThyFriendlyFox merged commit 6dcf868 into cursor/mouse-marketing-site-6b60 Aug 28, 2026
3 checks passed
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