Skip to content

Commit 994699e

Browse files
committed
PR_26169_001-memberships-page
PR_26169_002-membership-data-model PR_26169_003-user-membership-assignment PR_26169_004-membership-limit-helpers PR_26169_005-membership-enforcement PR_26169_006-teams-foundation PR_26169_007-marketplace-membership-rules PR_26169_008-legal-landing-page PR_26169_009-terms-of-service PR_26169_010-privacy-policy PR_26169_011-cookie-policy PR_26169_012-community-guidelines PR_26169_013-copyright-policy PR_26169_014-dmca-policy PR_26169_015-memberships-legal-qa
1 parent ec227c0 commit 994699e

17 files changed

Lines changed: 990 additions & 1444 deletions

assets/theme-v2/js/gamefoundry-partials.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
"game-retro": "games/retro/index.html",
5353
"game-strategy": "games/strategy/index.html",
5454
marketplace: "marketplace/index.html",
55+
memberships: "memberships/index.html",
5556
learn: "learn/index.html",
5657
community: "community/index.html",
5758
translations: "toolbox/languages/index.html",
@@ -114,7 +115,7 @@
114115

115116
const rootSegments = new Set([
116117
"account", "company", "community", "legal",
117-
"admin", "docs", "games", "learn", "marketplace", "owner", "toolbox"
118+
"admin", "docs", "games", "learn", "marketplace", "memberships", "owner", "toolbox"
118119
]);
119120

120121
const currentScript = document.currentScript || document.querySelector("script[src*='gamefoundry-partials.js']");

assets/theme-v2/partials/footer.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ <h2 id="footer-product">Product</h2>
88
<a data-route="games" href="games/index.html">Games</a>
99
<a data-route="learn" href="learn/index.html">Learn</a>
1010
<a data-route="marketplace" href="marketplace/index.html">Marketplace</a>
11+
<a data-route="memberships" href="memberships/index.html">Memberships</a>
1112
<a data-route="toolbox" href="toolbox/index.html">Toolbox</a>
1213
</div>
1314
</section>

assets/theme-v2/partials/header-nav.html

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,13 @@
9595
</div>
9696
</div>
9797
</div>
98-
<a data-nav-link data-route="marketplace" href="marketplace/index.html">Marketplace</a>
98+
<div class="nav-item">
99+
<a data-nav-link data-route="marketplace" href="marketplace/index.html">Marketplace &#9662;</a>
100+
<div class="sub-menu">
101+
<a data-nav-link data-route="marketplace" href="marketplace/index.html">Marketplace Home</a>
102+
<a data-nav-link data-route="memberships" href="memberships/index.html">Memberships</a>
103+
</div>
104+
</div>
99105
<a data-nav-link data-route="learn" href="learn/index.html">Learn</a>
100106
<div class="nav-item">
101107
<a data-nav-link data-route="account" href="account/index.html">Account &#9662;</a>

docs_build/dev/codex_commands.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2643,3 +2643,39 @@ Required reports:
26432643

26442644
Packaging:
26452645
- `tmp/PR_26168_246-r2-backed-postgres-backups_delta.zip`
2646+
2647+
2648+
## PR_26168_247-memberships-page
2649+
2650+
Changes:
2651+
- Read `docs_build/dev/PROJECT_INSTRUCTIONS.md`.
2652+
- Verified the current branch is `main`.
2653+
- Added the public `memberships/index.html` page with Free, Creator, and Studio tiers.
2654+
- Wired Memberships into the shared Marketplace submenu and Product footer.
2655+
- Registered the Memberships route/root segment for shared Theme V2 partial rewriting.
2656+
- Kept the primary top-level header IA exception unchanged.
2657+
- Kept the slice public/static only with no backend enforcement, database changes, teams, legal pages, marketplace enforcement, or billing integration.
2658+
2659+
Validation:
2660+
- `node --check assets/theme-v2/js/gamefoundry-partials.js`
2661+
- `node --check tests/playwright/tools/PublicMembershipsPage.spec.mjs`
2662+
- `node --check tests/playwright/tools/RootToolsFutureState.spec.mjs`
2663+
- Static HTML inline script/style/event-handler guard.
2664+
- Static Memberships route/nav/footer/tier validation.
2665+
- `node scripts/audit-playwright-test-locations.mjs --target tests/playwright/tools/PublicMembershipsPage.spec.mjs --target tests/playwright/tools/RootToolsFutureState.spec.mjs --helper tests/helpers/playwrightRepoServer.mjs --lanes tools`
2666+
- `node node_modules/@playwright/test/cli.js test tests/playwright/tools/PublicMembershipsPage.spec.mjs --project=playwright --workers=1 --reporter=line`
2667+
- Attempted targeted RootToolsFutureState header validation; blocked by existing local API/toolbox fixture 500/empty-card failures unrelated to the Memberships page.
2668+
- `git diff --check -- touched files`
2669+
- Full samples smoke skipped because samples and `start_of_day` folders were not touched.
2670+
2671+
Required reports:
2672+
- `docs_build/dev/reports/codex_review.diff`
2673+
- `docs_build/dev/reports/codex_changed_files.txt`
2674+
- `docs_build/dev/reports/PR_26168_247-memberships-page.md`
2675+
- `docs_build/dev/reports/playwright_structure_audit.md`
2676+
- `docs_build/dev/reports/playwright_discovery_ownership_report.md`
2677+
- `docs_build/dev/reports/playwright_discovery_scope_report.md`
2678+
- `docs_build/dev/reports/filesystem_scan_reduction_report.md`
2679+
2680+
Packaging:
2681+
- `tmp/PR_26168_247-memberships-page_delta.zip`

docs_build/dev/commit_comment.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
R2 backed Postgres backups - PR_26168_246-r2-backed-postgres-backups
1+
PR_26168_247-memberships-page
2+
Add public Memberships page with Free, Creator, and Studio tiers.
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# PR_26168_247-memberships-page
2+
3+
## Branch Validation
4+
5+
PASS - Current branch is `main`.
6+
7+
Note: `test.sql` was already deleted in the working tree before this PR work and was left untouched/excluded from the PR package.
8+
9+
## Requirement Checklist
10+
11+
| Requirement | Status | Notes |
12+
| --- | --- | --- |
13+
| Follow `docs_build/dev/PROJECT_INSTRUCTIONS.md` | PASS | Read before implementation; kept top-level header IA exception intact. |
14+
| Create only `PR_26168_247-memberships-page` | PASS | Scope limited to public Memberships page, shared navigation wiring, focused tests, and required reports/package. |
15+
| Add `/memberships/index.html` | PASS | New public Theme V2 page added with Free, Creator, and Studio tier content. |
16+
| Wire Memberships into shared nav | PASS | Added under shared Marketplace submenu in production header partial and local repo-server header mirror. |
17+
| Wire Memberships into shared footer | PASS | Added to Product footer links. |
18+
| Wire Memberships into mobile nav | PASS | Shared header submenu is the mobile/narrow navigation surface; Playwright validates the Memberships link at 390px width. |
19+
| Use existing GFS shared layout and CSS | PASS | Page uses Theme V2 shared partials/classes and existing CSS only. |
20+
| No backend enforcement | PASS | No API/service/runtime enforcement code added. |
21+
| No database changes | PASS | No schema, migration, seed, or database files touched. |
22+
| No legal pages | PASS | No legal pages added or modified. Existing shared footer legal links were not changed. |
23+
| No teams | PASS | No team model, team UI, or team copy added. |
24+
| No marketplace enforcement | PASS | Navigation placement only; no marketplace access logic or enforcement added. |
25+
| No billing integration | PASS | No billing, checkout, payment, or provider code/copy added. |
26+
| Commit message prepared | PASS | `docs_build/dev/commit_comment.txt` contains the requested title/body. |
27+
28+
## Intentional Order Notes
29+
30+
PASS - Primary top-level header navigation remains the documented product IA exception:
31+
`Games`, `Toolbox`, `Marketplace`, `Learn`, followed by session-dependent account/admin items.
32+
33+
PASS - Memberships is placed inside the Marketplace submenu so the top-level header order remains unchanged.
34+
35+
PASS - New browseable lists remain alphabetized:
36+
- Marketplace submenu: `Marketplace Home`, `Memberships`.
37+
- Product footer: `Games`, `Learn`, `Marketplace`, `Memberships`, `Toolbox`.
38+
39+
## Validation Lane Report
40+
41+
| Lane | Status | Command / Notes |
42+
| --- | --- | --- |
43+
| JS syntax | PASS | `node --check assets/theme-v2/js/gamefoundry-partials.js` |
44+
| Playwright spec syntax | PASS | `node --check tests/playwright/tools/PublicMembershipsPage.spec.mjs` |
45+
| Existing header contract spec syntax | PASS | `node --check tests/playwright/tools/RootToolsFutureState.spec.mjs` |
46+
| HTML inline guard | PASS | `rg --pcre2 -n "<script(?![^>]+src=)\|<style\|\\s(onclick\|onchange\|oninput\|onsubmit\|onkeydown\|onkeyup\|onload)=" ...` returned no matches. |
47+
| Out-of-scope term guard | PASS | Targeted search for billing/checkout/payment/stripe/team/entitlement/enforcement/database/migration terms returned no matches in touched implementation files. |
48+
| Static membership wiring | PASS | Node validation confirmed production header, local header mirror, footer, route map/root segment, and Free/Creator/Studio tier labels. |
49+
| Playwright ownership audit | PASS | Scoped audit passed for `PublicMembershipsPage.spec.mjs`, `RootToolsFutureState.spec.mjs`, and `playwrightRepoServer.mjs`. |
50+
| Targeted Memberships Playwright | PASS | `node node_modules/@playwright/test/cli.js test tests/playwright/tools/PublicMembershipsPage.spec.mjs --project=playwright --workers=1 --reporter=line` - 2 passed. |
51+
| Targeted shared-header RootTools attempt | FAIL (pre-existing fixture) | Attempted RootTools header validation failed on unrelated local API/toolbox fixture state: empty toolbox card list and 500s from `/api/platform-settings/banner`, `/api/toolbox/game-workspace/repositories`, and `/api/toolbox/registry/snapshot`. Memberships coverage was validated by the focused public-page spec and static production partial check. |
52+
| Diff whitespace | PASS | `git diff --check -- PR-scoped tracked files` passed; generated `codex_review.diff` is excluded because diff context lines trigger false trailing-whitespace positives. |
53+
| Full samples smoke | SKIP | Samples and `start_of_day` were not touched; repo instructions say not to run broad samples smoke for this slice. |
54+
55+
## Manual Validation Notes
56+
57+
1. Open `/memberships/index.html`.
58+
2. Confirm the page uses the shared header and footer.
59+
3. Confirm the H1 reads `Choose the membership shape for your next game.`
60+
4. Confirm Free, Creator, and Studio tier cards are visible.
61+
5. Open the Marketplace submenu and confirm Memberships is listed.
62+
6. Resize to a narrow mobile width and confirm the shared navigation still exposes Memberships.
63+
7. Confirm Product footer includes Memberships.
64+
8. Confirm there is no billing, backend enforcement, database, teams, legal page, or marketplace enforcement behavior.
65+
66+
Expected outcome: Memberships is a public informational page only, with shared Theme V2 chrome and no backend or data-model side effects.
67+
68+
## Changed Files
69+
70+
- `assets/theme-v2/js/gamefoundry-partials.js`
71+
- `assets/theme-v2/partials/footer.html`
72+
- `assets/theme-v2/partials/header-nav.html`
73+
- `docs_build/dev/codex_commands.md`
74+
- `docs_build/dev/commit_comment.txt`
75+
- `docs_build/dev/reports/PR_26168_247-memberships-page.md`
76+
- `docs_build/dev/reports/filesystem_scan_reduction_report.md`
77+
- `docs_build/dev/reports/playwright_discovery_ownership_report.md`
78+
- `docs_build/dev/reports/playwright_discovery_scope_report.md`
79+
- `docs_build/dev/reports/playwright_structure_audit.md`
80+
- `memberships/index.html`
81+
- `src/dev-runtime/admin/header-nav.local.html`
82+
- `tests/playwright/tools/PublicMembershipsPage.spec.mjs`
83+
- `tests/playwright/tools/RootToolsFutureState.spec.mjs`
84+
85+
## Package
86+
87+
Generated artifacts:
88+
- `docs_build/dev/reports/codex_review.diff`
89+
- `docs_build/dev/reports/codex_changed_files.txt`
90+
- `tmp/PR_26168_247-memberships-page_delta.zip`
Lines changed: 64 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,68 @@
1-
# git status --short
2-
M .env.example
3-
M docs_build/database/README.md
4-
M docs_build/database/backup-restore-lane.md
5-
M docs_build/database/runbook.md
1+
# Codex Changed Files
2+
3+
## git status --short (PR-scoped)
4+
5+
M assets/theme-v2/js/gamefoundry-partials.js
6+
M assets/theme-v2/partials/footer.html
7+
M assets/theme-v2/partials/header-nav.html
8+
M docs_build/dev/codex_commands.md
9+
M docs_build/dev/commit_comment.txt
10+
M docs_build/dev/reports/codex_changed_files.txt
11+
M docs_build/dev/reports/codex_review.diff
12+
M docs_build/dev/reports/filesystem_scan_reduction_report.md
13+
M docs_build/dev/reports/playwright_discovery_ownership_report.md
14+
M docs_build/dev/reports/playwright_discovery_scope_report.md
15+
M docs_build/dev/reports/playwright_structure_audit.md
16+
M src/dev-runtime/admin/header-nav.local.html
17+
M tests/playwright/tools/RootToolsFutureState.spec.mjs
18+
?? docs_build/dev/reports/PR_26168_247-memberships-page.md
19+
?? memberships/index.html
20+
?? tests/playwright/tools/PublicMembershipsPage.spec.mjs
21+
22+
## git diff --stat (PR-scoped)
23+
24+
assets/theme-v2/js/gamefoundry-partials.js | 3 +-
25+
assets/theme-v2/partials/footer.html | 1 +
26+
assets/theme-v2/partials/header-nav.html | 8 ++++-
27+
docs_build/dev/codex_commands.md | 36 ++++++++++++++++++++++
28+
docs_build/dev/commit_comment.txt | 3 +-
29+
.../reports/filesystem_scan_reduction_report.md | 2 +-
30+
.../playwright_discovery_ownership_report.md | 6 ++--
31+
.../reports/playwright_discovery_scope_report.md | 6 ++--
32+
.../dev/reports/playwright_structure_audit.md | 8 ++---
33+
src/dev-runtime/admin/header-nav.local.html | 8 ++++-
34+
.../playwright/tools/RootToolsFutureState.spec.mjs | 4 +--
35+
11 files changed, 65 insertions(+), 20 deletions(-)
36+
.../dev/reports/PR_26168_247-memberships-page.md | 90 ++++++++++++++++++++++
37+
1 file changed, 90 insertions(+)
38+
/dev/null => memberships/index.html | 122 ++++++++++++++++++++++++++++++++++++
39+
1 file changed, 122 insertions(+)
40+
.../tools/PublicMembershipsPage.spec.mjs | 110 +++++++++++++++++++++
41+
1 file changed, 110 insertions(+)
42+
docs_build/dev/reports/codex_changed_files.txt | 108 +-
43+
docs_build/dev/reports/codex_review.diff | 1918 +++++++-----------------
44+
2 files changed, 603 insertions(+), 1423 deletions(-)
45+
46+
## Full working tree note
47+
48+
- Unrelated pre-existing working tree change remains: `D test.sql` (excluded from PR diff and ZIP).
49+
50+
## Full git status --short
51+
52+
M assets/theme-v2/js/gamefoundry-partials.js
53+
M assets/theme-v2/partials/footer.html
54+
M assets/theme-v2/partials/header-nav.html
655
M docs_build/dev/codex_commands.md
756
M docs_build/dev/commit_comment.txt
857
M docs_build/dev/reports/codex_changed_files.txt
958
M docs_build/dev/reports/codex_review.diff
10-
M docs_build/dev/reports/coverage_changed_js_guardrail.txt
11-
M docs_build/dev/reports/playwright_v8_coverage_report.txt
12-
M src/dev-runtime/database/postgres-backup-service.mjs
13-
M src/dev-runtime/server/local-api-router.mjs
14-
M src/dev-runtime/storage/r2-project-asset-storage.mjs
15-
M src/dev-runtime/storage/storage-config.mjs
16-
M tests/dev-runtime/PostgresBackupService.test.mjs
17-
M tests/playwright/tools/AdminPlatformToolsWireframes.spec.mjs
18-
?? docs_build/dev/reports/PR_26168_246-r2-backed-postgres-backups.md
19-
20-
# git ls-files --others --exclude-standard
21-
docs_build/dev/reports/PR_26168_246-r2-backed-postgres-backups.md
22-
23-
# git diff --stat
24-
.env.example | 16 +
25-
docs_build/database/README.md | 2 +-
26-
docs_build/database/backup-restore-lane.md | 80 +-
27-
docs_build/database/runbook.md | 23 +-
28-
docs_build/dev/codex_commands.md | 30 +
29-
docs_build/dev/commit_comment.txt | 2 +-
30-
docs_build/dev/reports/codex_changed_files.txt | 51 +-
31-
docs_build/dev/reports/codex_review.diff | 9458 +++-----------------
32-
.../dev/reports/coverage_changed_js_guardrail.txt | 15 +-
33-
.../dev/reports/playwright_v8_coverage_report.txt | 22 +-
34-
.../database/postgres-backup-service.mjs | 141 +-
35-
src/dev-runtime/server/local-api-router.mjs | 5 +-
36-
.../storage/r2-project-asset-storage.mjs | 64 +-
37-
src/dev-runtime/storage/storage-config.mjs | 103 +-
38-
tests/dev-runtime/PostgresBackupService.test.mjs | 269 +-
39-
.../tools/AdminPlatformToolsWireframes.spec.mjs | 16 +-
40-
16 files changed, 1989 insertions(+), 8308 deletions(-)
41-
warning: in the working copy of '.env.example', LF will be replaced by CRLF the next time Git touches it
42-
warning: in the working copy of 'docs_build/dev/reports/codex_changed_files.txt', CRLF will be replaced by LF the next time Git touches it
43-
warning: in the working copy of 'src/dev-runtime/database/postgres-backup-service.mjs', LF will be replaced by CRLF the next time Git touches it
44-
warning: in the working copy of 'src/dev-runtime/server/local-api-router.mjs', LF will be replaced by CRLF the next time Git touches it
45-
warning: in the working copy of 'src/dev-runtime/storage/r2-project-asset-storage.mjs', LF will be replaced by CRLF the next time Git touches it
46-
warning: in the working copy of 'src/dev-runtime/storage/storage-config.mjs', LF will be replaced by CRLF the next time Git touches it
47-
warning: in the working copy of 'tests/dev-runtime/PostgresBackupService.test.mjs', LF will be replaced by CRLF the next time Git touches it
48-
warning: in the working copy of 'tests/playwright/tools/AdminPlatformToolsWireframes.spec.mjs', LF will be replaced by CRLF the next time Git touches it
59+
M docs_build/dev/reports/filesystem_scan_reduction_report.md
60+
M docs_build/dev/reports/playwright_discovery_ownership_report.md
61+
M docs_build/dev/reports/playwright_discovery_scope_report.md
62+
M docs_build/dev/reports/playwright_structure_audit.md
63+
M src/dev-runtime/admin/header-nav.local.html
64+
D test.sql
65+
M tests/playwright/tools/RootToolsFutureState.spec.mjs
66+
?? docs_build/dev/reports/PR_26168_247-memberships-page.md
67+
?? memberships/index.html
68+
?? tests/playwright/tools/PublicMembershipsPage.spec.mjs

0 commit comments

Comments
 (0)