Add a consistency check for registry.json, game folders and trophies
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 55/100
- Issue-Typ
- Feature
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- typescript, vite
Rechercherichtung
Start by reading games/registry.json, vite.config.ts, shared/achievements.ts, and scripts/new-game.mjs to trace how game folders, registry entries, and trophies are connected. Add the consistency checks in games/registry.test.ts, then make the scaffold function testable with a temporary directory. Done means the listed validation and scaffold cases pass in CI; the issue says there is no test suite yet, so first identify the project’s test setup.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Summary
The list of games has three independent sources of truth and nothing ties them together: Vite builds pages from a folder scan, the hub lists games from registry.json, and the "play every game" trophy derives the game set from the trophy list. They agree today; this is a drift risk.
Where
vite.config.ts:10-19(discoverGames)games/registry.json,src/hub/main.ts:46(unchecked cast)shared/achievements.ts:143-144scripts/new-game.mjs:7-44(runs at module top level, so it cannot be pointed at a fixture directory)
Impact
A registry slug with no folder is a dead hub card. A folder with no registry entry is built and precached but unreachable. A game with no trophy is silently not required for the "play every game" trophy.
Suggested fix
Add games/registry.test.ts (and optionally the same check at build time in vite.config.ts):
- Slugs are unique and match
/^[a-z0-9]+(-[a-z0-9]+)*$/ - The slug set equals the set of
games/*folders that do not start with_and containindex.html - Every entry has a non-empty title, description, controls and tags, and a six-digit hex accent
- Every
thumbnailresolves to a file underpublic/ - Every non-arcade trophy's game is a registry slug, and every slug has at least one trophy
- Trophy ids are unique;
counterandtargetare both set or both absent
Then export scaffold({ root, slug, title }) from new-game.mjs with a thin CLI wrapper and test it against a temp directory:
- Invalid and existing slugs are rejected with no writes
-
space-dodgewith no title becomes "Space Dodge" - No placeholder remains in the copied files; the registry gains exactly one entry and stays valid JSON
Acceptance criteria
- The cases above pass in CI
Getting started
- Relevant files:
games/registry.json,vite.config.ts,shared/achievements.ts,scripts/new-game.mjs - Run locally:
npm install, thennpm run dev - Checks:
npm run typecheckandnpm run build(there is no test suite yet) - Related docs:
README.md
Filed by repo-audit/full-audit at b001f5d. Severity: medium. Effort: M. audit-key: testing|games/registry.json|registry-consistency
- Vorherrschende Sprache
- TypeScript
- Sterne
- 3
- Forks
- 3
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus TMHSDigital/GH-Arcade
-
enhancement good first issue severity: low
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
TMHSDigital/GH-Arcade#50 ·
-
enhancement good first issue severity: medium
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
TMHSDigital/GH-Arcade#47 ·
-
documentation good first issue severity: low
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
TMHSDigital/GH-Arcade#34 ·
-
documentation good first issue severity: low
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
TMHSDigital/GH-Arcade#33 ·
-
dependencies good first issue severity: low
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
TMHSDigital/GH-Arcade#27 ·
Alle Issues in TMHSDigital/GH-Arcade
Ähnliche Issues
-
automated-triage type/bug type/ci
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
📦 expo-router Android contributor: external needs review sdk-58 severity: medium
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
expo/expo#53436 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Translate the READMEOffendocumentation good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
asasemahmed/openboard#68 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
Document PowerShell shell semantics and read-only Bash deduplication in Built-in Tools referenceOffendocumentation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100