ginnoirandClaude Opus 5 4e0c285347 refactor: drop the mojibake workaround from slugifyStem
slugifyStem carried `.replaceAll('ΓÇÖ', "'")`, which patched a corrupted
apostrophe at the slug layer so three notes with mojibake filenames still
produced correct URLs. The underlying filenames are now repaired, so no stem
contains that sequence and the line is dead code that encodes an assumption
which is no longer true.

Proved it is dead rather than assuming: rebuilt and diffed all 411 generated
slugs against the previous build - identical, nothing moved.

The unit test asserted against the corrupted string, so it was testing the
workaround rather than the behaviour. It now uses the real repaired stem,
'A Farfetch’D Story', which exercises the same thing that actually matters -
that U+2019 becomes a hyphen - and still expects 'a-farfetch-d-story'. Added a
case for 'Fused Dimensions' to pin the non-breaking-space folding, since that
name previously carried U+00A0.

Also syncs the catalog for the Fused Dimensions rename. Verified: npm run check
(0 errors, vitest 9/9), npm run build (486 pages), CI=1 npm run test:ui (8/8),
deployed; live 200 on all seven repaired URLs and the h1 renders without NBSP.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 15:03:21 -05:00
2026-06-08 21:16:04 -05:00
2026-06-09 18:20:24 -05:00
2026-06-08 21:24:00 -05:00
2026-06-08 21:16:21 -05:00
2026-06-08 21:16:04 -05:00
2026-06-08 21:16:04 -05:00
2026-06-08 21:16:04 -05:00
2026-06-08 21:16:04 -05:00

ROM Hack Archive

Private Astro site for browsing ginnoir's Pokémon ROM-hack catalog.

The source catalog is a snapshot exported from the Obsidian vault into data/catalog.json. The Pokémon tooling repo still owns catalog refresh scripts; this repo owns the browsable static site and deployment to https://romhacks.ginnoir.com.

Develop

npm install
npm run dev

Build And Test

npm run check
npm run build
npm run test:ui

npm run build runs scripts/prepare-site-assets.mjs first. That step validates the catalog, downloads banner art into public/assets/banners/, and refreshes generated banner/file manifests from data/catalog.json and data/scrape_lib/.

Deploy

The site is served internally by Caddy from /config/caddy/site/romhacks-wiki.

npm run build
powershell -File scripts/deploy-site.ps1

ROM and related-file links point at the internal-only file server: https://romhacks-files.ginnoir.com.

S
Description
Private Astro catalog site for the ROM hack archive
Readme
4.4 MiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 43.6%
Astro 25.4%
CSS 21.7%
JavaScript 7.6%
PowerShell 1.7%