Skip to content

Fix page canonicals, 404 unknown case studies, remove dead art-style API - #21

Merged
maxwellyoung merged 1 commit into
mainfrom
sweep/site-hygiene
Sep 4, 2026
Merged

maxwellyoung merged 1 commit into
mainfrom
sweep/site-hygiene

Conversation

@maxwellyoung

Copy link
Copy Markdown
Owner

Every page without its own canonical inherited the homepage URL from the root layout, so /craft, /os, /dossier, /privacy, /basketcase and all three essays told search engines they were duplicates of the home page (verified on the live site). The root canonical is now relative, so each page canonicalises to itself. Unknown case-study slugs returned a 200 "coming soon" page; they now 404 like essays already did.

Also in this change:

  • Sitemap derives essay routes from data and includes /os and /quiz; the manifest shortcut no longer points at a redirect.
  • Removed the /api/artstyle routes and their shader/recipe libraries (no caller since the August 2025 refactors, about 1,100 lines) and the resume head.tsx, which the App Router ignores. zod was only used there.
  • Untracked fallow caches and QA screenshots, and trimmed stale optimizePackageImports and fallow config entries.
  • The canon freshness gate now warns instead of failing the build unless CANON_FEED_STRICT=1, so a stalled feed cron on the mini cannot block deploying unrelated code.
  • Added a CI workflow (privacy scan, lint, typecheck, tests) on pull requests.
  • @types/node matches the Node 24 engine.

Validation: tsc, eslint (two pre-existing tolerated warnings remain), 41 tests, privacy scan and next build all pass. Ran the production build locally and confirmed correct canonicals on every route, 404 on unknown case-study slugs, and the new sitemap entries.

Not in this PR: the companion change to the feed cron on the mini that stops timestamp-only commits (about 48 production deploys a day).

…e API

Every route without its own canonical inherited the homepage URL from the
root layout, so /craft, /os, /dossier, /privacy, /basketcase and the essays
all told search engines they were duplicates of the home page. The root
canonical is now relative ("./"), which resolves to each page's own path.

Unknown case-study slugs rendered a 200 "coming soon" page; they now 404
like essays already did. The sitemap derives essay routes from data and
includes /os and /quiz. The manifest shortcut points at /#projects instead
of the /projects redirect.

Removed the /api/artstyle routes and their shader/recipe libraries (no
caller since the Aug 2025 refactors), the App Router-ignored resume
head.tsx, tracked fallow caches and QA screenshots, and stale
optimizePackageImports and fallow entries. zod went with the API; @types/node
now matches the Node 24 engine.

The canon freshness gate warns instead of failing unless CANON_FEED_STRICT=1,
so a stalled feed cron cannot block deploying unrelated code. A CI workflow
runs the privacy scan, lint, typecheck and tests on pull requests.
@vercel

vercel Bot commented Sep 4, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
dev-maxwellyoung-info Ready Ready Preview Sep 4, 2026 4:55am UTC

Request Review

@greptile-apps greptile-apps Bot 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.

Your trial has ended. Reactivate Greptile to resume code reviews.

@maxwellyoung
maxwellyoung merged commit a453823 into main Sep 4, 2026
4 checks passed
@maxwellyoung
maxwellyoung deleted the sweep/site-hygiene branch September 4, 2026 04:57
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.

1 participant