From e1302517a517c8b40e868efae0d74f98b5b7a09d Mon Sep 17 00:00:00 2001 From: ginnoir Date: Fri, 14 Aug 2026 14:52:51 -0500 Subject: [PATCH] data: sync catalog - 7 repaired note stems, 4 URL changes Upstream fix repaired seven mojibake note filenames, which the catalog derives its stems from. Four hack URLs change as a result: /hack/a-il/ -> /hack/anil/ /hack/fused-adimensions/ -> /hack/fused-dimensions/ /hack/yu-gi-oh-pok-duel/ -> /hack/yu-gi-oh-pokeduel/ /hack/recharged-yellow-previously-known-as-pok-mon-yellow-cross/ -> ...-as-pokemon-yellow-cross/ The three apostrophe cases keep their existing URLs, because slugifyStem already carries a replaceAll workaround for the mojibake apostrophe. That workaround and its unit test are now redundant, since no stem contains the sequence any more, but both are left in place as harmless defensive code. Entry count unchanged at 411, so no fixture updates. Verified: npm run check (0 errors, vitest 9/9), npm run build (486 pages, banners regenerated under the new slugs), CI=1 npm run test:ui (8/8), deployed. Live 200 on all seven repaired URLs plus core pages; the four retired slugs now 404 as intended. Co-Authored-By: Claude Opus 5 --- data/catalog.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/data/catalog.json b/data/catalog.json index 6d49367..3f0d58e 100644 --- a/data/catalog.json +++ b/data/catalog.json @@ -106,7 +106,7 @@ "image_base": "https://romhacks-files.ginnoir.com", "hacks": [ { - "stem": "A FarfetchΓÇÖD Story", + "stem": "A Farfetch’D Story", "title": "Pokémon A Farfetch’D Story", "platform": "PC", "base": "RPG Maker XP / Pokemon Essentials", @@ -1412,7 +1412,7 @@ ] }, { - "stem": "A├▒il", + "stem": "Añil", "title": "Pokémon Añil", "platform": "PC", "base": "RPG Maker XP / Pokemon Essentials", @@ -1726,7 +1726,7 @@ ] }, { - "stem": "BirchΓÇÖs Folly", + "stem": "Birch’s Folly", "title": "Pokémon Birch’s Folly", "platform": "PC", "base": "RPG Maker XP / Pokemon Essentials", @@ -7864,7 +7864,7 @@ ] }, { - "stem": "Fused┬áDimensions", + "stem": "Fused Dimensions", "title": "Pokémon Fused Dimensions", "platform": "GBA", "base": "FireRed", @@ -11409,7 +11409,7 @@ ] }, { - "stem": "LetΓÇÖs Beat Mew", + "stem": "Let’s Beat Mew", "title": "Pokémon Let’s Beat Mew", "platform": "GBA", "base": "FireRed", @@ -16627,7 +16627,7 @@ ] }, { - "stem": "Recharged Yellow (previously known as Pok├⌐mon Yellow Cross)", + "stem": "Recharged Yellow (previously known as Pokémon Yellow Cross)", "title": "Pokémon Recharged Yellow (previously known as Pokémon Yellow Cross)", "platform": "GBA", "base": "Emerald", @@ -24096,7 +24096,7 @@ ] }, { - "stem": "Yu-Gi-Oh Pok├⌐Duel", + "stem": "Yu-Gi-Oh PokéDuel", "title": "Pokémon Yu-Gi-Oh PokéDuel", "platform": "GBA", "base": "FireRed",