Skip to content

feat(home)!: lead with a player-first Classic pitch - #35

Merged
zoeyrose merged 2 commits into
mainfrom
feat/player-first-homepage
Aug 11, 2026
Merged

feat(home)!: lead with a player-first Classic pitch#35
zoeyrose merged 2 commits into
mainfrom
feat/player-first-homepage

Conversation

@zoeyrose

@zoeyrose zoeyrose commented Aug 11, 2026

Copy link
Copy Markdown
Member

Summary

  • lead the homepage title, H1, eyebrow, description, social metadata, and first-viewport copy with Atrinik's player-facing game identity
  • state the honest current path: the maintained Classic client is available for Windows while the replacement game remains in development
  • make “Download Atrinik Classic” the primary no-JavaScript action through the canonical verified download route
  • keep the phrase set in one structured record and enforce metadata, H1, visible proposition, CTA, and concept-art disclosure in built-output validation with negative regression tests

Closes #26.

Coordinates

  • Base: main at 13930531182ca8b9fd673e9d00e3e9fbaf8198dc
  • Head: feat/player-first-homepage at 19caf051af344917fa625a5098bf88a06a01c694
  • Worktree: /workspaces/atrinik/workspace/worktrees/website/issue-26-player-first-home
  • Commits:
    • fa21cbf86b7f62e4694547ec42691b79121ecb0e feat(home): lead with player-first Classic pitch
    • 19caf051af344917fa625a5098bf88a06a01c694 fix(home): keep player pitch aligned and visible

Evidence and validation

  • Classic package/source evidence supports the multiplayer online role-playing-game description; the site catalog pins the playable immutable Classic 5.8.2 Windows x86_64 client and its GPL-2.0-or-later license boundary
  • npm ci
  • npm run check — formatting, Astro diagnostics, Node tests, and source contracts passed
  • npm run build — static build and distribution validation passed; 14 files, zero JavaScript
  • npm run deploy:dry-run — passed at final committed HEAD
  • git diff --check
  • JavaScript-disabled Chromium review passed at 1440×900, 390×844, and 375×667; the short-mobile first viewport includes the complete proposition and primary CTA
  • deployed final-head preview: https://8e5794c6.atrinik-website.pages.dev — HTTP 200, restrictive no-script CSP, no injected script or Set-Cookie, provider preview noindex
  • two independent initial reviews produced four findings: short-mobile CTA visibility, long search description, structurally weak metadata checks, and duplicated/weakly bound phrase assertions; commit 19caf05 fixes and validates all four
  • a fresh independent review of the complete post-fix diff found zero actionable findings

Verification

Profile issue-26-player-first-home selects website worktree issue-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:

npm ci
npm run check
npm run build
git diff --check 13930531182ca8b9fd673e9d00e3e9fbaf8198dc..HEAD

Then inspect dist/index.html at 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.

@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: 19caf05
Status: ✅  Deploy successful!
Preview URL: https://8e5794c6.atrinik-website.pages.dev
Branch Preview URL: https://feat-player-first-homepage.atrinik-website.pages.dev

View logs

@zoeyrose
zoeyrose marked this pull request as ready for review August 11, 2026 16:20
@zoeyrose
zoeyrose merged commit 1218ed5 into main Aug 11, 2026
8 checks passed
@zoeyrose
zoeyrose deleted the feat/player-first-homepage branch August 11, 2026 16:24
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`.
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.

content(home): lead with a player-first Atrinik Classic pitch

1 participant