Skip to content

fix(registry): scope CurseForge browse to the template's own game - #156

Merged
ValgulNecron merged 2 commits into
mainfrom
fix/mods-registry-per-game
Jul 17, 2026
Merged

ValgulNecron merged 2 commits into
mainfrom
fix/mods-registry-per-game

Conversation

@ValgulNecron

Copy link
Copy Markdown
Collaborator

The bug

ARK's mods browser listed Minecraft mods. The CurseForge engine hardcoded gameId=432 (Minecraft) on every search, so every game that selected the curseforge provider got Minecraft's catalog.

Reproduced against the live CurseForge API with the configured key:

gameId returns
432 Minecraft content — what ARK was showing
83374 real ARK mods

83374 is ARK: Survival Ascended's id from CurseForge's own /v1/games (slug ark-survival-ascended) — looked up, not guessed.

The fix

Templates declare curseforgeGameID, required by CEL when provider: curseforge. There is deliberately no default: defaulting to Minecraft is precisely what caused this, and a wrong-but-plausible default fails silently (a browser full of the wrong game's mods) rather than loudly.

classId filtering (6=mods, 4471=modpacks) stays gated on Minecraft — CurseForge class ids are per-game taxonomy, so applying Minecraft's to another game returns nothing at all.

Companion

Module templates carry the ids: ValgulNecron/gameplane-module#32 (minecraft-java 432, ark 83374).

🤖 Generated with Claude Code

The module-signing private key lives at the repo root during a signing
run. It was never committed, but nothing stopped an `git add -A` from
doing so. Ignore it so it cannot be staged by accident.

Signed-off-by: valgulnecron <39313199+ValgulNecron@users.noreply.github.com>
The CurseForge provider hardcoded gameId=432 (Minecraft) on every
search, so ARK's mods browser listed Minecraft mods. Verified against
the live CurseForge API with the configured key: gameId 432 returns
Minecraft content, gameId 83374 returns real ARK mods. 83374 is ARK:
Survival Ascended's id from CurseForge's own /v1/games (slug
ark-survival-ascended), not a guess.

Templates now declare curseforgeGameID, required by CEL when provider
is curseforge — there is no safe default, and defaulting is what
produced the bug. classId filtering (6=mods, 4471=modpacks) stays
gated on Minecraft, since CurseForge class ids are per-game taxonomy
and applying Minecraft's to another game silently returns nothing.

Refs: rule 7 (codegen committed with the type change).
Signed-off-by: valgulnecron <39313199+ValgulNecron@users.noreply.github.com>
@ValgulNecron
ValgulNecron merged commit 0ea4817 into main Jul 17, 2026
23 checks passed
@ValgulNecron
ValgulNecron deleted the fix/mods-registry-per-game branch July 17, 2026 20:17
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.

1 participant