Add a consistency check for registry.json, game folders and trophies
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 55/100
- Type d'issue
- Fonctionnalité
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- typescript, vite
Piste de recherche
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.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
- Langage dominant
- TypeScript
- Étoiles
- 3
- Forks
- 3
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de TMHSDigital/GH-Arcade
-
enhancement good first issue severity: low
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
TMHSDigital/GH-Arcade#50 ·
-
enhancement good first issue severity: medium
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
TMHSDigital/GH-Arcade#47 ·
-
documentation good first issue severity: low
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
TMHSDigital/GH-Arcade#34 ·
-
documentation good first issue severity: low
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
TMHSDigital/GH-Arcade#33 ·
-
dependencies good first issue severity: low
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
TMHSDigital/GH-Arcade#27 ·
Toutes les issues de TMHSDigital/GH-Arcade
Issues similaires
-
automated-triage type/bug type/ci
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
📦 expo-router Android contributor: external needs review sdk-58 severity: medium
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
expo/expo#53436 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Translate the READMEOuvertedocumentation good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
asasemahmed/openboard#68 ·
Les mainteneurs répondent en général sous 1 jour
-
bug good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
Document PowerShell shell semantics and read-only Bash deduplication in Built-in Tools referenceOuvertedocumentation
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100