Commit Graph
2201 Commits
Author SHA1 Message Date
Abdessamad Derraz adea35e12a fix: a recale keeps the repository word of a ref
A source_ref written as `stella src/a.c:120` names the repository its lines are in. The path is read without the word, and --rebase-refs wrote the new span back without it, losing the attribution.
2026-10-20 05:46:09 +02:00
Abdessamad Derraz 10a1f475b0 feat: prose citations link to the pinned source
Notes, file notes and platform details carried file:line citations as plain text although profile_sync keeps each on the profile's pin. A citation now links when the profile reads one repository and the path is rooted or already used by a structured source_ref. Platform detail source_refs go through the same renderer as file cards.
2026-10-20 05:44:08 +02:00
Abdessamad Derraz c87610b921 chore: regenerate the install manifests 2026-10-20 05:41:59 +02:00
Abdessamad Derraz 01b310f724 fix: release_notes options say what they do 2026-10-20 05:12:01 +02:00
Abdessamad Derraz d7439de393 chore: re-profile the Pizza Boy cores
The native refs move to the newest genuine Basic builds (GBA 2.3.20, GBC 4.1.14, SC 1.2.14), which add a save-state check of the BIOS area and new zip handling. The Pro releases the store announces circulate only rebuilt, so the Pro Java reading stays on the last genuine build and the release is named in no_genuine_copy.
2026-10-20 04:59:01 +02:00
Abdessamad Derraz a20948d7d5 chore: record the iNES bundled identity count 2026-10-20 04:58:47 +02:00
Abdessamad Derraz 3c92823ba0 chore: no genuine MasterGear 4.9.13 found 2026-10-20 04:58:06 +02:00
Abdessamad Derraz 65c0f60ca0 chore: re-profile DroidArcadia 4.74 2026-10-20 04:58:06 +02:00
Abdessamad Derraz ed40e1a834 chore: re-profile SUPER ZSNES v0.320 2026-10-20 04:58:06 +02:00
Abdessamad Derraz a5da20d897 chore: re-profile BigPEmu 1.221
The binary reads two optional settings, BootROM and CDBIOS, each a path the user picks. The retail Jaguar CD BIOS is recognised by a 64-bit FNV-1a of its first 16 KB, which the collected dump matches.
2026-10-20 04:58:06 +02:00
Abdessamad Derraz 85f020794d chore: re-profile Speccy 5.9.13 2026-10-20 04:58:06 +02:00
Abdessamad Derraz 2c99e73d3c chore: re-profile iNES 6.1.12
6.1.12 no longer bundles ROOT.chts and its seven cheat sets: the cheat browser reads the home folder, then unpacks Downloads/iNES-Cheats.zip. The seven sets are collected from the author-signed 6.1.4 package, each file covered by its signature. Controls.png and the backdrop pictures the app reads are documented.
2026-10-20 04:58:05 +02:00
Abdessamad Derraz 17e35d1af9 feat: file cards name the packs that install them
A card named only the platforms whose own list declares the file. A RetroBat user looking up scph5501.bin found every platform but RetroBat, whose pack installs it for six cores. The cards now read the install manifests and add each pack that places the file, with the destination it gives it.
2026-10-20 04:56:23 +02:00
Abdessamad Derraz 91403aa149 fix: site systems match under every spelling
Platform pages matched emulators to systems by the exact id, so the RetroArch page listed none for sega-mega-drive (genesis_plus_gx says sega-megadrive), and listed every emulator of a system instead of those the platform runs. Emulator cards linked only ids a platform uses: 2,057 of 4,215 system lines had no link, now 327, the rest having no page. Ids are compared as _norm_system_id reads them, and a system only profiles name is placed by the files they file under it.
2026-10-20 04:55:16 +02:00
Abdessamad Derraz 2e0d3d626a docs: build RetroPie in the release pipeline run
The release built and checked the RetroPie pack with two commands after the pipeline, which left it out of the verify and pack consistency check. pipeline.py --include-archived builds and checks it with the rest.
2026-10-20 04:52:25 +02:00
Abdessamad Derraz 810396941d feat: write the release notes from the record
The pack table, its parts sentence and the install commands were typed by hand from figures release.json already held. A copied cell or an old collection total at the top is how issue 81 happened. release_notes.py renders them and appends the hand-written account of what changed.
2026-10-20 04:51:56 +02:00
Abdessamad Derraz 8bd2d319b2 feat: the pipeline runs the schema check first
PR validation runs validate_schemas.py --source-only and the pipeline did not, so a profile with an unquoted numeric core name passed every step and failed CI on push. It is step 0 now, skipped where jsonschema is not installed.
2026-10-20 04:50:04 +02:00
Abdessamad Derraz 8a44161810 chore: re-profile Linkboy 3.11.4
Linkboy 3.11.4 adds a cartridge logo check before the BIOS boot and a second built-in BIOS variant. My Boy! 2.1.1, My OldBoy! 2.0.3, FPse 13.0 and FPseNG 1.17 circulate only rebuilt: their profiles stay on the last genuine build and name the release.
2026-10-20 04:49:24 +02:00
Abdessamad Derraz 77389236e6 feat: record a release with no genuine copy
Paid Android emulators announce versions that circulate only rebuilt or re-signed. The profile stays on the newest unmodified build, and version_source.no_genuine_copy names the release searched for, so check_freshness stops flagging it until the page announces a later one.
2026-10-20 04:49:24 +02:00
Abdessamad Derraz 8d295273a5 fix: validate_pr checks the size a name expects
1024 bytes named scph5501.bin, a name every declaration sizes at 524288, were reported "File size OK" and offered a .variants slot at the repository root. The review now warns when no declaration of the name accepts the size, and places a variant beside the folder that holds the name.
2026-10-20 04:48:07 +02:00
Abdessamad Derraz b45f269b31 chore: re-profile ACE-DL 2026/10/16 2026-10-20 04:46:46 +02:00
Abdessamad Derraz 672c6ca4e0 chore: re-profile XM6 Pro-68k 260920 2026-10-20 04:46:46 +02:00
Abdessamad Derraz fcfc10b985 chore: re-profile XRoar 1.12.1
Refs moved to the 1.12.1 tree and its src/ layout. The new rom.c table names the crc32 of nine ROMs, two of which the code checks.
2026-10-20 04:46:46 +02:00
Abdessamad Derraz 1ae2854474 fix: a truth hash conflict is reported once
Generating the model for every platform met the same two GameIndex.yaml declarations once per platform, and check_freshness opened on six identical warnings.
2026-10-20 04:46:03 +02:00
Abdessamad Derraz 50790a2988 fix: the pipeline summary says what does not fail
check_buildbot does not fail the run, yet the summary printed it FAILED right above Pipeline COMPLETE. It now prints WARN and a line saying the difference does not fail the run. The total is aligned under the step durations.
2026-10-20 04:44:30 +02:00
Abdessamad Derraz eaa40d7384 fix: offline target lists are skipped, not ok
Offline, check_freshness labelled every scraped target list static and counted it OK although nothing was compared. Other sections say SKIPPED offline, and now this one does too.
2026-10-20 04:43:45 +02:00
Abdessamad Derraz 2bb4dc9187 fix: the download bar fits the terminal
A 2 GB part drew a 98-column line, and on an 80-column console every redraw wrapped and left a copy behind. The bar now shrinks to the width and goes below ten columns of room.
2026-10-20 04:43:12 +02:00
Abdessamad Derraz d087caec40 fix: a refused standalone copy is named
A copy refused by a read-only emulator folder raised the error count with no failures entry: the summary named no file, gave the BIOS folder as the location and no advice. The failure now carries its path, and the summary names the emulator folder and what to do.
2026-10-20 04:41:18 +02:00
Abdessamad Derraz 4603b6ec77 fix: the check names files it cannot supply
--check counted the required files the list leaves out and named none, then said all files were up to date. A Recalbox user asking why Caesar III would not start learned nothing, though the list names c3.555. The count line no longer calls a file not found unsafe.
2026-10-20 04:41:08 +02:00
Abdessamad Derraz 9e8229c07a fix: a resumed download is not counted as speed
The live line divided every byte by the run's time, a partial copy left by an earlier run included, and showed a 3 GB resume as 2.5 GB/s with nothing left.
2026-10-20 04:40:52 +02:00
Abdessamad Derraz cf9406ab67 chore: watch release pages of off-forge profiles
38 profiles published outside a forge now name the page that announces their releases, so profile_sync and check_freshness see a new version. EDuke32 and Fury take the synthesis build label as core_version, the name the project gives that build.
2026-10-20 04:36:46 +02:00
Abdessamad Derraz 3f029578af fix: a scraper that cannot start says what to do
Scrapers resolve their tag or branch head in the constructor, which ran outside the try in scraper_cli: a refused GitHub call ended in a traceback. The error is now printed with the next step, setting GITHUB_TOKEN when the API refused an anonymous call.
2026-10-20 04:36:24 +02:00
Abdessamad Derraz 8d641dd35d docs: scope Lakka advice, list Recalbox MAME 2026-10-20 04:35:34 +02:00
Abdessamad Derraz 18e093182d docs: name the registries behind assets and dedup
The guides said files over 50 MB become release assets and that RPG Maker and ScummVM were the trees kept out of dedup. .gitignore decides the first, four committed files are over 50 MB, and NODEDUP_DIRS holds eleven trees.
2026-10-20 04:35:02 +02:00
Abdessamad Derraz 303b1fbd5f docs: verify a release outside a clone 2026-10-20 04:31:51 +02:00
Abdessamad Derraz 77c4857a46 fix: a site preview writes its own config
generate_site --docs-dir sent the pages elsewhere but always rewrote the tracked mkdocs.yml, outside the lock taken on that folder, with the navigation of the work in progress. Two previews into two folders both wrote it. Another folder now gets <name>.mkdocs.yml beside it, docs_dir set and its paths rebased, which mkdocs builds with -f.
2026-10-20 04:30:03 +02:00
Abdessamad Derraz 282f8d5d0a feat: watch the release page of off-forge profiles
About forty profiles describe projects published outside any forge (Altirra, ePSXe, DraStic, mednafen, xroar). profile_sync skipped them as an unsupported host and check_freshness reported the same UNKNOWN line every run, so a new release adding a firmware went unseen. A profile can now name the page announcing its releases and a pattern for the version: --check-version reads it, and check_freshness --profiles calls the profile stale when the page announces another version than core_version.
2026-10-20 04:28:27 +02:00
Abdessamad Derraz d43aa5354c chore: regenerate the install manifests
The collected Mac OS, DSi, POM2 and SC-55 files and the Basilisk II alias reach the platforms that run those emulators.
2026-10-20 04:25:49 +02:00
Abdessamad Derraz b1f20fb8e0 feat: collect a Mac OS ROM for SheepShaver
SheepShaver opens ROM or Mac OS ROM, decodes a CHRP-BOOT image and requires a nanokernel ID it knows. By name its entry was served the 128 KB Apple IIGS ROM, which it rejects. Mac OS ROM 1.4 is taken byte for byte from the System Folder of Apple's iMac Software Restore CD 691-2313-A (archive.org, ISO sha1 as listed). Its LZSS payload decodes to 4 MB with the NewWorld nanokernel ID, and a size floor derived from the decoder keeps the IIGS ROM out.
2026-10-20 03:37:57 +02:00
Abdessamad Derraz c07f0d9205 refactor: parse emulator profiles once per process
The alias-free profile set was parsed separately from the full one, so a process asking for both read the 534 profiles twice, 1.6 s of a site build. It is now a filter over the full set.
2026-10-20 03:37:57 +02:00
Abdessamad Derraz 1458f68b0d fix: test the targetless platform contract
A platform without hardware targets is now left out of a targeted --all run instead of being built unfiltered, and a run no platform can honour is refused.
2026-10-20 03:37:57 +02:00
Abdessamad Derraz 7edd438af1 fix: refuse a target no platform has
With --all, an unknown --target skipped every platform that has targets and ran the others (BizHawk, MiSTer) unfiltered, so verify, slots and the pipeline exited 0 on a typo. A platform without targets is now left out like the rest, and a target no platform has is refused.
2026-10-20 03:27:41 +02:00
Abdessamad Derraz c7c2f260f3 fix: check a forced rehash against the last one
The pipeline rebuilds the database with --force, which discarded the previous digests and wrote whatever the CPU computed, on a host that has given an incorrect SHA-1 under load. The forced run still rehashes every file, but a digest that contradicts the cache for an unchanged mtime and size is computed again, and the two readings that agree win, with a warning naming the file.
2026-10-20 03:24:55 +02:00
Abdessamad Derraz ab1f5d7eb4 fix: guard committed text against tooling names
Two test docstrings named the maintainer's private notes file, and nothing stopped it. They now state the rule itself, and test_prose_style fails on any tracked file that names the private notes or the assistant tooling.
2026-10-20 03:23:25 +02:00
Abdessamad Derraz dbf0647974 feat: find a RetroArch installed with Scoop
scoop install retroarch puts retroarch.exe under ~\scoop\apps\retroarch\current, its system folder persisted through a junction. The Windows search covered the installers' folders, Program Files, Steam, ES-DE and the Store package only, so the run offered C:\RetroArch-Win64\system, a folder that RetroArch never opens. The user and global Scoop roots are searched now, %SCOOP% and %SCOOP_GLOBAL% included.
2026-10-20 03:22:56 +02:00
Abdessamad Derraz 33091dabaf fix: list a platform's files without installing it
--list-systems, --list-cores and --list-targets read the manifest and write nothing, yet with --platform bizhawk they went through the portable-install refusal and stopped asking for --dest. Someone checking BizHawk's firmware before downloading BizHawk got an error. A listing now runs whether the platform is installed or not.
2026-10-20 03:22:05 +02:00
Abdessamad Derraz 600bb71fb1 fix: copy Azahar and Flycast files on macOS too
--standalone-copies named Linux and Windows folders for Azahar's aes_keys.txt and boot9.bin and Flycast's dc_boot.bin and dc_nvmem.bin, and nothing for macOS, where both emulators read a fixed folder: ~/Library/Application Support/Azahar/sysdata (common_paths.h:36,61) and ~/Library/Application Support/Flycast/data (osx-main.mm:83-101). A test now requires a macOS folder on every copy.
2026-10-20 03:20:01 +02:00
Abdessamad Derraz 96981b79d8 fix: boot Basilisk II from the 1 MB Mac ROM
Basilisk II opens a file named ROM, checks its size, its version word and the code PatchROM rewrites, and no hash. By name the only candidate was the 128 KB Apple IIGS ROM, which the size gate rejects, so the pack shipped nothing. The collection's mac.rom (Performa/Quadra 630, version 0x067c) passes every gate, and the entry now names it as an alias. KEGS and GSplus keep the IIGS file.
2026-10-20 03:19:17 +02:00
Abdessamad Derraz fd6d4d5563 fix: give DOSBox Pure an SC-55 mk1 slot
DOSBox Pure builds every Sound Canvas companion name from the ROM1 file the user picks and reads the third wave ROM only for an SC-55 mk1 or CM-300 (midi_sc55.h:71-124). The profile put every model in the SC-55/ folder holding the mkII set, so WAVEROM3 could never be met. The mkII group stays there, and the v1.00 mk1 set the collection holds gets its own folder under the names the code builds from sc55_rom1.bin.
2026-10-20 03:17:57 +02:00
Abdessamad Derraz 63ded27336 feat: extract the DSi font tables from held NANDs
DSperate reads TWLFontTable.dat for DSiWare run without a NAND. The file sits in nand:/sys/ of the DSi NAND dumps the collection holds. Decrypted with the console ID and CID in each dump's nocash footer, as DSperate's own NAND reader does, the four western and Japanese consoles give one table, the Chinese and Korean ones their own: 863296, 581664 and 162688 bytes, the sizes and sha1 already known for them.
2026-10-20 03:17:57 +02:00