feat(home)!: lead with a player-first Classic pitch - #35
Merged
Conversation
Deploying atrinik-website with
|
| Latest commit: |
19caf05
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://8e5794c6.atrinik-website.pages.dev |
| Branch Preview URL: | https://feat-player-first-homepage.atrinik-website.pages.dev |
zoeyrose
marked this pull request as ready for review
August 11, 2026 16:20
zoeyrose
added a commit
that referenced
this pull request
Aug 11, 2026
## 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 #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: #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 1218ed5..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. ```sh ./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 1218ed5..HEAD ``` Expected result: the profile resolves `atrinik/website@1e07d3b` 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`.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #26.
Coordinates
mainat13930531182ca8b9fd673e9d00e3e9fbaf8198dcfeat/player-first-homepageat19caf051af344917fa625a5098bf88a06a01c694/workspaces/atrinik/workspace/worktrees/website/issue-26-player-first-homefa21cbf86b7f62e4694547ec42691b79121ecb0e feat(home): lead with player-first Classic pitch19caf051af344917fa625a5098bf88a06a01c694 fix(home): keep player pitch aligned and visibleEvidence and validation
npm cinpm run check— formatting, Astro diagnostics, Node tests, and source contracts passednpm run build— static build and distribution validation passed; 14 files, zero JavaScriptnpm run deploy:dry-run— passed at final committed HEADgit diff --checkSet-Cookie, provider previewnoindex19caf05fixes and validates all fourVerification
Profile
issue-26-player-first-homeselects website worktreeissue-26-player-first-home. This website-only static-content change has no game topology, state, account, or scenario proof: the replacement profile has no integrated website build/runtime adapter under atrinik/atrinik#266, #269, and #270, and Classic is not a substitute.Repeat from the worktree:
Then inspect
dist/index.htmlat 1440×900, 390×844, and 375×667 with browser JavaScript disabled: confirm the first viewport names Atrinik as a game, states Windows Classic availability and replacement status, routes the primary CTA to/downloads/, preserves keyboard navigation and heading order, and labels the hero image as temporary concept art rather than gameplay.No topology or service was started, so no shutdown is required. Keep the issue worktree, profile, and review report while this PR is open; later cleanup is a separate preview-first request beginning with
./atrinik cleanup --dry-run --json.Review status
Zero known actionable findings remain. All required and applicable optional checks pass at
19caf051af344917fa625a5098bf88a06a01c694; the PR is ready for human review.