Skip to content

feat(metadata): add structured site identity - #36

Merged
zoeyrose merged 7 commits into
mainfrom
feat/structured-metadata
Aug 11, 2026
Merged

feat(metadata): add structured site identity#36
zoeyrose merged 7 commits into
mainfrom
feat/structured-metadata

Conversation

@zoeyrose

@zoeyrose zoeyrose commented Aug 11, 2026

Copy link
Copy Markdown
Member

Summary

  • add a typed page-metadata contract with explicit robots, canonical, Open Graph, Twitter, image, and structured-data fields
  • give every current indexable route a unique, internally consistent identity and keep the 404 free of production canonical/preview identity
  • emit one safely serialized homepage WebSite JSON-LD record using the verified Atrinik GitHub profiles and the player-facing homepage description merged in feat(home)!: lead with a player-first Classic pitch #35
  • add provenance-bound SVG favicon and mask icons plus closed source/build validation
  • retain script-src 'none', the documented atrinik-now preview fallback, and a zero-byte JavaScript budget

Closes #27

Coordinates

  • Current base: main at 1218ed531d109a51aa1f2a55d35fc32e6a00ed38
  • Head: feat/structured-metadata at 1e07d3bef7b84797825f606b6d58489975a0b204
  • Feature commits: 11dad76, 3818a4a, fdaeb53, and 1e07d3b
  • Current-main coordination: feat(home)!: lead with a player-first Classic pitch #35's accepted homepage patch is preserved by 7a0daf8 and 54a468a; merge commit 018c2bd makes current main an ancestor without rewriting history
  • Worktree: /workspaces/atrinik/workspace/worktrees/website/issue-27-structured-metadata
  • Wrapper profile: issue-27-metadata selecting website worktree issue-27-structured-metadata

Validation

  • npm ci
  • npm run check
  • npm run build
  • npm run deploy:dry-run
  • git diff --check 1218ed531d109a51aa1f2a55d35fc32e6a00ed38..HEAD
  • generated HTML inspection for titles, descriptions, robots, canonical URLs, sitemap parity, Open Graph/Twitter catalog bindings, icon links, parsed JSON-LD, 404 exclusions, CSP, and zero JavaScript

Final static build: 16 files, 737,874 total bytes, 53,333 HTML bytes, 20,293 CSS bytes, 662,194 raster-image bytes, and 0 JavaScript bytes.

Iterative whole-diff review identified and fixed dynamic-route coverage, social-image catalog binding, SVG/HTML handler and external-reference bypasses, icon/schema exactness, an irrelevant preview override, unsafe script-tag matching, slash- and quote-adjacent HTML recovery forms, and coordination with merged PR #35. A fresh complete review of final head 1e07d3b found zero known actionable findings.

Capability-aware verification

This is a static website-only change. The website component has wrapper build: none and no game runtime/topology adapter, so a server/client scenario would not exercise these files. Replacement integration remains bounded by atrinik/atrinik#266, #269, and #270; Classic is not substituted.

./atrinik profile show issue-27-metadata --json
./atrinik topology show issue-27-metadata --state default --json
cd /workspaces/atrinik/workspace/worktrees/website/issue-27-structured-metadata
npm ci
npm run check
npm run build
npm run deploy:dry-run
git diff --check 1218ed531d109a51aa1f2a55d35fc32e6a00ed38..HEAD

Expected result: the profile resolves atrinik/website@1e07d3bef7b8 from the issue worktree; topology inspection has no website service; all repository-native checks pass; dist/index.html contains one inert WebSite JSON-LD block consistent with site.homepage; dist/404.html contains no canonical, Open Graph, Twitter, or JSON-LD identity; and generated JavaScript remains zero bytes.

No topology, state, scenario, credentials, or mutable server/client data was created. No runtime shutdown or data cleanup is required. Keep the worktree, profile, and ignored deep-review report until the pull request is merged; post-merge cleanup begins separately with ./atrinik cleanup --dry-run --json.

Comment thread tools/site-contract.mjs Fixed
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 11, 2026

Copy link
Copy Markdown

Deploying atrinik-website with  Cloudflare Pages  Cloudflare Pages

Latest commit: 1e07d3b
Status: ✅  Deploy successful!
Preview URL: https://7bfb6531.atrinik-website.pages.dev
Branch Preview URL: https://feat-structured-metadata.atrinik-website.pages.dev

View logs

@zoeyrose
zoeyrose marked this pull request as ready for review August 11, 2026 16:49
@zoeyrose
zoeyrose merged commit 448f4e7 into main Aug 11, 2026
8 checks passed
@zoeyrose
zoeyrose deleted the feat/structured-metadata branch August 11, 2026 16:55
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.

feat(metadata): add structured identity, favicons, and page-specific previews

2 participants