Closes the public-page gaps from #124: each route gets its own title, description, canonical, heading, links, and JSON-LD, and unknown URLs have a real 404 document.
Adds HeyCatch and the Google tag (G-V12DLRLPWR) only on the production site and the iOS and Android apps. Tianji still loads on beta.
Needs the server-infra change that stops serving the app shell for missing paths.
Test plan
Build production and confirm / and /pricing/ HTML include a unique title, description, canonical, one h1, social tags, related links, and Organization JSON-LD.
Confirm a nonsense path is served as 404.html once the nginx change is deployed.
Confirm beta and local web do not load HeyCatch or gtag, and that a production or native build does.
Open the live site after deploy and click around, then mark HeyCatch installed in its dashboard.
## Summary
- Closes the public-page gaps from #124: each route gets its own title, description, canonical, heading, links, and JSON-LD, and unknown URLs have a real 404 document.
- Adds HeyCatch and the Google tag (`G-V12DLRLPWR`) only on the production site and the iOS and Android apps. Tianji still loads on beta.
- Needs the server-infra change that stops serving the app shell for missing paths.
## Test plan
- [ ] Build production and confirm `/` and `/pricing/` HTML include a unique title, description, canonical, one h1, social tags, related links, and Organization JSON-LD.
- [ ] Confirm a nonsense path is served as `404.html` once the nginx change is deployed.
- [ ] Confirm beta and local web do not load HeyCatch or gtag, and that a production or native build does.
- [ ] Open the live site after deploy and click around, then mark HeyCatch installed in its dashboard.
Crawlers were reading one shared shell, so titles, descriptions, links, and markup were missing or the same on every URL. HeyCatch and Google Analytics load only on the production site and the iOS and Android apps.
Co-authored-by: Cursor <cursoragent@cursor.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
G-V12DLRLPWR) only on the production site and the iOS and Android apps. Tianji still loads on beta.Test plan
/and/pricing/HTML include a unique title, description, canonical, one h1, social tags, related links, and Organization JSON-LD.404.htmlonce the nginx change is deployed.