Commit Graph
1243 Commits
Author SHA1 Message Date
Abdessamad Derraz d37caecc27 test: cover slot naming and per-system extras 2026-08-11 16:06:20 +02:00
Abdessamad Derraz 80ea7f5764 chore: refresh database, manifests and readme 2026-08-11 16:05:57 +02:00
Abdessamad Derraz 627cc84a78 test: skip pack checks while a build holds dist
The pack integrity tests failed whenever another run was writing
dist/, reporting a corrupt archive when the only fact established was
that somebody else was building. Which test went red depended on how
far along that build was. They skip now, the way validate_schemas
already does.
2026-08-11 16:05:57 +02:00
Abdessamad Derraz ed0c44be4a feat: profile idtech4a++, ines and infinity 2026-08-11 15:56:45 +02:00
Abdessamad Derraz 694f2a74d0 fix: index emulator systems by display name too 2026-08-11 15:56:45 +02:00
Abdessamad Derraz 4b1ab7cb74 fix: separate findable gaps from unsourceable ones
The README said 14 files were 'not in the collection yet', which
implies somebody could still put them there. Nine of them cannot be:
WHDLoad.key is a per-user signed registration, Custom.dat and key.txt
are slots the emulator expects the user to fill, gpib.rom and
dragonfly-2.3.rom have never been dumped, CARTS.CRC belongs to a dead
code path. The profiles already record why, so the two are now counted
apart: five still to be found, nine that cannot be.
2026-08-11 15:56:26 +02:00
Abdessamad Derraz b890998a94 chore: refresh database, manifests and readme 2026-08-11 14:45:18 +02:00
Abdessamad Derraz a0abe939f9 feat: profile haku x 2026-08-11 14:40:33 +02:00
Abdessamad Derraz e97c1fbbcc fix: keep unsourceable files from matching homonyms 2026-08-11 14:40:33 +02:00
Abdessamad Derraz 94512b5acf fix: drop manifest entries with no download source
install.py fetches a file from its repo_path or from a release asset.
Resolution can land on a file the database does not index, and the
entry then shipped with neither: a line in the download list that can
only ever fail. Those are recorded as omitted instead, which is what
the installer already knows how to report, and a test holds the
committed manifests to it.

validate_schemas read dist/ while a build was writing it and reported
a half-written pack as 'File is not a zip file'. It takes the shared
lock --verify-packs uses, and says so when a build holds it.
2026-08-11 14:40:33 +02:00
Abdessamad Derraz 85f3f7c393 fix: read the bios preference order the code applies 2026-08-11 14:34:49 +02:00
Abdessamad Derraz 5e4b3048a6 feat: add the fpse-ng and gba-emu bundled assets
Both are declared by the profiles that load them.
2026-08-11 14:21:55 +02:00
Abdessamad Derraz 17b4537bde feat: profile sixteen android and pinball front-ends
ES-DE standalone batch: PSX, DS, GBA, GBC, Xbox, Dolphin and pinball
front-ends, each read from its own source or shipped binary.
2026-08-11 14:21:29 +02:00
Abdessamad Derraz a372f2abf3 feat: keep one bios per slot on declared order 2026-08-11 13:34:15 +02:00
Abdessamad Derraz ecbe69760d refactor: check packs through a single path 2026-08-11 11:31:21 +02:00
Abdessamad Derraz 8ca918e9fa feat: collect the xbox chips and x68000 boot roms 2026-08-11 10:44:40 +02:00
Abdessamad Derraz 8e39d4d633 feat: collect the arcade support data and controller db 2026-08-11 10:00:14 +02:00
Abdessamad Derraz d2bc1288b5 feat: collect shaders, machine roms and the doom wad 2026-08-11 09:56:14 +02:00
Abdessamad Derraz 4ffc11b4cf feat: document the pre-v7 happy 810 images 2026-08-11 09:41:06 +02:00
Abdessamad Derraz d272d07b82 feat: collect the altirra and amstrad firmware sets 2026-08-11 09:35:28 +02:00
Abdessamad Derraz 4e0458dc83 feat: place per-machine variants at their declared paths 2026-08-11 09:19:25 +02:00
Abdessamad Derraz eea4d4254f feat: track the nxengine data table 2026-08-11 09:09:35 +02:00
Abdessamad Derraz 6450c18154 fix: fold the nxengine data into its existing directory 2026-08-11 09:08:55 +02:00
Abdessamad Derraz 08f68e647c feat: collect the pc and atari rom sets 2026-08-11 08:50:17 +02:00
Abdessamad Derraz f313e5b41c feat: collect the assets shipped with each emulator 2026-08-11 08:44:33 +02:00
Abdessamad Derraz f2b7b91476 feat: add the mo6 v2 rom for clock signal 2026-08-11 08:30:28 +02:00
Abdessamad Derraz d8a0d975d7 feat: judge a ref against every declared repository 2026-08-11 07:25:31 +02:00
Abdessamad Derraz 1d309852b6 feat: carry the visual-pinball citations to the new tree 2026-08-11 06:55:10 +02:00
Abdessamad Derraz 0c404e6275 feat: resolve the zesarux source paths 2026-08-11 06:51:12 +02:00
Abdessamad Derraz 759d3c0341 chore: refresh manifests, readme and nav 2026-08-11 06:22:49 +02:00
Abdessamad Derraz 37df4ef38a fix: narrow two cspect decompilation refs 2026-08-11 06:15:10 +02:00
Abdessamad Derraz 3032e0429d feat: profile cspect
ZX Spectrum Next emulator, read from its own distribution.
2026-08-11 06:12:06 +02:00
Abdessamad Derraz a8a89b3182 chore: index the acquired thomson roms 2026-08-11 06:10:14 +02:00
Abdessamad Derraz 222edcdc21 feat: add the mo6 v1 rom for clock signal 2026-08-11 06:08:06 +02:00
Abdessamad Derraz cf3302efd9 chore: refresh database, manifests and readme 2026-08-11 06:01:01 +02:00
Abdessamad Derraz 436f5f85de feat: add two more thomson roms for clock signal 2026-08-11 05:50:25 +02:00
Abdessamad Derraz dbb055f4ac feat: add the thomson cd90-640 controller rom
Clock Signal loads it from Thomson/cd90-640.rom.
2026-08-11 05:45:46 +02:00
Abdessamad Derraz 3bc9e5ec96 feat: attribute a shared path by its declared subject 2026-08-11 05:42:27 +02:00
Abdessamad Derraz 266567b9a0 feat: profile ten more standalone emulators
PS2, PS3, Xbox 360, Atari, C64, BBC Micro and arcade front-ends read
from their own source trees.
2026-08-11 05:34:21 +02:00
Abdessamad Derraz ca3a91d65b fix: trim two profiles to their load sites 2026-08-11 05:34:21 +02:00
Abdessamad Derraz d8e4325af2 fix: skip conformance on required-only packs
A required-only build is narrower than the platform declares by
design, like the source-restricted variants already handled, so the
full expectation must not be applied to it. --region is also refused
alongside --manifest-targets, which carries no region dimension.
2026-08-11 05:34:21 +02:00
Abdessamad Derraz 2879f489c4 feat: give every page a link preview
Links to this site get shared on Discord, Reddit and forums, where a
page with no Open Graph tags renders as a grey rectangle. The pages
already carry a per-page title and description, so a theme override
fills the tags from those; mkdocs-material would otherwise only emit
them through its social plugin, which pulls in Pillow and CairoSVG to
render a preview image these pages do not need.
2026-08-11 05:33:42 +02:00
Abdessamad Derraz 63672e246f feat: reprofile three cores on current upstream 2026-08-11 05:24:15 +02:00
Abdessamad Derraz cc24ff1bea fix: ignore the rendered timestamp when comparing
Decorated site pages carry the generation stamp twice: once as the
markdown footer and once as a rendered element. write_if_changed knew
only the first, so every page was rewritten on every run for the clock
alone.

The comparison is what makes the deploy-site freshness guard a real
staleness check rather than a guaranteed failure, and it had no tests.
2026-08-11 05:23:52 +02:00
Abdessamad Derraz c562459567 refactor: split the emulator page renderer
generate_emulator_page carried a 228-line loop body rendering one file
row from thirty-odd optional fields, which put its complexity at 141,
more than twice the next function in the repository. The row renderer
and its badge strip are now their own functions and the page function
sits at 68.

_forge_sources went from 18 to 32 when it learned to pair each
repository with its own revision; the pairing is now its own function
and the caller is back under the threshold.

Verified by regenerating the site and diffing: all 505 pages are
identical apart from their generation timestamps.
2026-08-11 05:22:25 +02:00
Abdessamad Derraz 3a58167823 chore: keep one copy per unique content 2026-08-11 05:22:18 +02:00
Abdessamad Derraz 1f33148180 chore: make the release a manual dispatch
The job carried if: false, which blocks workflow_dispatch as well as
push, so there was no way to cut a release through CI at all and the
comment described a temporary state that had become permanent.

Releasing is deliberate: the push trigger is gone and the job runs when
someone dispatches it. The seven-day rate limit stays as the guard
against dispatching twice, and concurrency no longer cancels a run that
may be midway through uploading assets.
2026-08-11 05:08:40 +02:00
Abdessamad Derraz 0ea21912ce chore: add 2600.emu to the site nav 2026-08-11 01:47:43 +02:00
Abdessamad Derraz 7c79e4ff4f chore: refresh database and readme 2026-08-11 01:46:46 +02:00
Abdessamad Derraz 0d59979f2a fix: pin the digest order in cached entries
The cached hashes were rebuilt by iterating a set, so their order in
each database entry followed set hashing rather than a declared one. A
run with a warm cache rewrote all 7,850 entries with no content change.
The order is now the one compute_hashes returns, and a test holds a
warm-cache run byte-identical to a --force rehash.
2026-08-11 01:46:46 +02:00