Commit Graph
2268 Commits
Author SHA1 Message Date
Abdessamad Derraz c1f0e8c2ca fix: compare system packs in pipeline step 5
Step 5 built emulator packs one profile at a time, where two profiles never share a path. It now also builds each system pack that gathers several profiles and compares it with verify. The first run found five standalone MSX and ColecoVision packs where verify skipped the data tree of a profile the system filter left without files, and credited msx-emu's copies the pack never wrote. verify now places those trees too: 541 system packs, all equal.
2026-11-05 19:45:39 +01:00
Abdessamad Derraz da19bb5755 fix: keep MinUI core dirs out of the tree view
Without --platform, cross_reference and the site's gap report merged every
platform's standalone set, MinUI, NextUI and MyMinUI coredir: markers
included. A marker says which cores one platform hands a folder, so in the
union every core those three do not list got no layout: px68k showed 0 of
6 files and the global report lost 238 profiles and 1201 files.
merged_standalone_set drops the markers, and both readers use it.
2026-11-05 19:39:07 +01:00
Abdessamad Derraz b20d65d129 fix: verify only pack archives in the output dir
verify_and_finalize_packs took every ZIP of the directory, so the launcher archives build_port.py writes to the same dist/ were judged as packs, failed, and were rewritten with a manifest after build_port had printed their hashes. Every name the builder gives ends in _BIOS_Pack.zip, and only those are taken.
2026-11-05 19:38:21 +01:00
Abdessamad Derraz 0428588a6c fix: give the SMS v1.3 BIOS its pinned names
Genesis Plus GX declares bios_U.sms and bios_E.sms with no hash. Only
.variants/ copies carried those names, so the name step served the Store
Display Unit BIOS and a 256 KB BIOS, while every platform pins v1.3 under
both. Two causes in generate_db: the v1.3 content's path was ZEsarUX's
sms.rom, which the resolver sets aside as another emulator's file, and a
name pinned by hash was refused when only variants carried it.

The scan now prefers a copy filed under its machine over one in an
emulator's own tree, and a name only variants carry can name the content
a hash pins it to.

Manifests: six contents change repo_path only (v1.3 SMS BIOS and five
ZEsarUX Spectrum ROMs, same sha1). On batocera, knulli, recalbox and
retrodeck the Genesis Plus GX bios_E.sms and bios_U.sms extras move from
the two variants to v1.3.
2026-11-05 19:38:07 +01:00
Abdessamad Derraz 0d21566183 fix: take an unchecked version as a match in packs
Raze lists three sized BLOOD.RFF versions and a fourth it takes without a check, the shareware RFF the collection holds. The Batocera pack printed two DISCREPANCY lines for it that verify never showed. A slot with an unchecked sibling now accepts any copy for that core, in the validation rules and in _matches_an_alternative. When every version refuses a copy, the message names all accepted values instead of the first.
2026-11-05 19:37:33 +01:00
Abdessamad Derraz 3d0ee19bcb refactor: index profile entries by name and hash
_matching walked the reader's whole profile for each platform entry, 2,135 scans of MAME in one verify --all. Each profile is now indexed once per kind by name and by accepted hash. Over every registered platform, 10,524 lookups give the same answers as the scan, in 0.13 s instead of 2.42 s.
2026-11-05 19:37:27 +01:00
Abdessamad Derraz 4af0d70e4e fix: report md5 lists Recalbox and RetroDECK grow
Both formats write every accepted md5 when the truth extends the platform's list without contradicting it, but only Batocera answered written_list, so landed_changes reported nothing for a diff the maintainer would find. Both now name the list they write when it holds several values.
2026-11-05 19:36:02 +01:00
Abdessamad Derraz 124e96cd09 fix: keep glossary tooltips out of proper names
The glossary's capitalised terms matched mostly inside product names and paths: Free Unix Spectrum Emulator, Windows Terminal, Documents/Dolphin Emulator, on 35 pages. A capitalised term after a capitalised word or a slash is now left alone. Acronyms keep their tooltip.
2026-11-05 19:35:32 +01:00
Abdessamad Derraz d63ef4b1cf fix: keep an initial inside the note sentence
The emulator description taken from the notes cut at the first period followed by a space, so hcl's read "open-source port of E.".
2026-11-05 19:34:41 +01:00
Abdessamad Derraz 564bfe8b18 fix: describe platform pages by what they give
The meta description of each platform page was its summary followed by the label of a link, "ROCKNIX website.", and never said the page gives the BIOS files, their folder and the install command.
2026-11-05 19:34:19 +01:00
Abdessamad Derraz 1ad6570468 fix: drop BIOS files from app-only emulator titles
A profile whose every file comes with the app was titled "<X> BIOS files" and described by its system alone. The title now reads "<X> emulator" and the description says every file it reads comes with the app.
2026-11-05 19:34:00 +01:00
Abdessamad Derraz 8cbd720480 docs: say what a SHA1 lookup leaves out
The Data page said a SHA1 lookup was enough because MD5 and CRC32 declarations are filed under the collection file's SHA1 too. That holds only for a file the collection holds: 702 platform MD5s and 18 CRC32s are filed under their own value alone.
2026-11-05 19:32:51 +01:00
Abdessamad Derraz 525c06419b feat: link the version to the file or tag
The Version cell printed the file a version is read from, or its tag, as bare text beside a pinned Revision link. The file now links at the pin where the recorded tree holds it, and the tag links to its tree. cited_paths records the version files so the record can confirm them.
2026-11-05 19:32:08 +01:00
Abdessamad Derraz d8cfd283b4 fix: show packed core files with an empty gap list
verify --platform recalbox --system nec-pc-engine printed no Core files line while the pack held six syscard copies for geargrafx: the section returned on an empty gap report before reading packed_extras. It now prints the pack's counts whenever they are not zero.
2026-11-05 19:32:05 +01:00
Abdessamad Derraz 137f971dae fix: drop bundled files from provenance needs
profile_needs read every profile entry, so --missing named 43 files the emulator installs itself among 50 needs and buried the six xm7 ROMs. A bundled entry is skipped unless a platform package leaves it out (not_bundled_on). The report now lists 7 needs.
2026-11-05 19:30:57 +01:00
Abdessamad Derraz a05b1da9a0 fix: leave bundled files out of auto_fetch targets
find_missing kept undeclared files reached only by bundled entries, so auto_fetch searched for and offered files the emulator installs itself, and a placed copy would fail bundled_only.py --strict. RetroPie drops from 55 to 14 missing files.
2026-11-05 19:30:29 +01:00
Abdessamad Derraz f9a786896e fix: restore the profile when the prose read fails
_apply_writes promoted the bumped profile, then read its prose under the new pin. A NotCachedError, RateLimitError or UpstreamError from that read left the profile written with a pin the guard would refuse. The original bytes are now put back before the error goes on.
2026-11-05 19:30:04 +01:00
Abdessamad Derraz f8dce8f8c3 fix: keep upstream HEAD for a pin past the fork
_follow_fork_base swapped the fork merge base in as upstream HEAD even when upstream_commit was newer than that base, as for melonds and easyrpg whose upstream is the standalone build they document. melonds read its Qt refs 825 commits back and reported 4 to review. A pin that descends from the base now keeps the HEAD, melonds shows 0 to review.
2026-11-05 19:29:23 +01:00
Abdessamad Derraz 4bc9074dfe feat: say why an upstream revision is held
The emulator page showed the reason for pin_frozen and never the one for upstream_frozen, which 11 profiles record: mupen64plus read as left behind HEAD.
2026-11-05 19:29:22 +01:00
Abdessamad Derraz 1b388e3cdc fix: credit a core the archive it reads members in
FBNeo reads sm1.sm1 inside neogeo.zip. The site resolved each member entry by its crc32, credited loose copies FBNeo never opens, and no neogeo.zip card named FBNeo. A member entry now resolves through archive_entry as the pack does, and its card names the archive.
2026-11-05 19:29:02 +01:00
Abdessamad Derraz 651cabf412 fix: rank orphaned and moved pins first in triage
drift_score ignored orphaned pins and moved repositories although triage_state says they are fixed before any ref is read: pcem ranked last at 0 with an upstream_commit on no branch. Each now weighs more than a GONE ref.
2026-11-05 19:27:36 +01:00
Abdessamad Derraz a3c853316a fix: name the dirty profiles profile_sync refuses
The refusal said the directory carried uncommitted changes without naming the profile, among about 375. It now lists the files git status reports, and says that --force writes over them.
2026-11-05 19:27:12 +01:00
Abdessamad Derraz fb9b5592a5 feat: let --emulator take an alias name
--emulator mednafen_psx refused with 'use --emulator beetle_psx' although the profile names its target. The alias now selects that profile and says so on stderr, in verify, generate_pack and cross_reference alike. Launchers are still refused, and pipeline step 5 skips aliases since they compare under the profile they name.
2026-11-05 19:26:36 +01:00
Abdessamad Derraz f24b34c1ef feat: place recognised files with validate_pr
The report named the folder of each file and left the copy to the contributor, one file and one .variants/ name at a time. --place copies each recognised file from outside bios/ to its folder under the name the lists declare, or to the .variants/ slot of a name already held, never over a file. A hash with two names or two folders is not placed.
2026-11-05 19:25:47 +01:00
Abdessamad Derraz 73b82375d9 feat: recognise a mister card on a computer 2026-11-05 19:25:30 +01:00
Abdessamad Derraz eaa7effa74 fix: mark held and unknown PR files for review
validate_pr said all checks passed for random bytes and for a copy of a held file, and sent the copy to the folder that already holds it. Each now reads REVIEW with its next step, the status line counts them, and a held copy gets no placement hint. A copy inside a tree kept out of dedup is still accepted.
2026-11-05 19:22:55 +01:00
Abdessamad Derraz 3b0112001e fix: serve a data dir file at its platform path
AmberELEC and EmuELEC declare blueMSX's Machines/<model>/config.ini and
Shared Roms/RS232.ROM with no hash. The name step served msx-emu's
ColecoVision config.ini in 192 machine folders and the 16 KB RS232.ROM,
while data/bluemsx held blueMSX's own file at that very path. A platform
declaration with no hash now reads its destination's tail in the data
directories before the name step. Profile entries keep the foreign-tree
redirect, so Dolphin's dsp_coef.bin dump still outranks the free copy.

Manifests: amberelec and emuelec omit 192 config.ini entries (held in
data/bluemsx only, so the installer has no URL) and serve colecodb.xml,
MSX2+/config.ini, MSXturboR/config.ini and RS232.ROM from blueMSX's bytes.
2026-11-05 19:21:26 +01:00
Abdessamad Derraz 4b54b82966 fix: suggest the target when no platform has it
verify --all --target swich ended on 'no platform has it' after seventeen INFO lines, two of which held the suggestion. The refusal now names the closest targets across every platform with the platforms that have them, and the per-platform lines print only when some platform keeps the target.
2026-11-05 19:21:23 +01:00
Abdessamad Derraz a06f5ad2ba fix: fetch the project main an upstream lacks
A remote named upstream added as CONTRIBUTING said and never fetched made validate_pr --changed compare with the fork's main and exit 0 on nothing. It now fetches the project's main when the remote does not hold it. profile_sync names the fetch when --base is absent, and CONTRIBUTING adds git fetch upstream.
2026-11-05 19:20:50 +01:00
Abdessamad Derraz 9ae3919d34 fix: spell cited commands so a paste runs them
Messages in check_freshness, generate_pack, common, profile_sync and fileless_audit named commands as export_native.py --platform x, which fails from the repository root. They now read python scripts/<name>.py like the rest of the report.
2026-11-05 19:19:04 +01:00
Abdessamad Derraz 9e04bf887d docs: give files over 100 MB their route
CONTRIBUTING sent any file over the browser's 25 MB through a clone, which GitHub refuses past 100 MB, and named a release only a maintainer can write to. It now gives the route validate_pr.py prints: an issue with the hashes.
2026-11-05 19:18:38 +01:00
Abdessamad Derraz 46a6ac2675 docs: list the site build among the PR checks
CONTRIBUTING named the checks CI runs on a pull request and left out the npm build, validate_site.py, vermin and the pip packages the test job installs. A wiki-only change passed every listed check and failed CI.
2026-11-05 19:17:52 +01:00
Abdessamad Derraz dd904e2fab fix: say what differs in games index --check
--check printed only STALE and a path, after the whole coverage table. It now skips the table, names what changed in each document (an added file, a changed key) and the command that writes them. The published index lagged the RetroArch manifest by ep128emu/roms/ide12.rom and is regenerated.
2026-11-05 19:17:23 +01:00
Abdessamad Derraz 891741433b fix: publish the games index whole or not at all
install/games/, the event schema, the launcher index and wiki/installer.md were truncated at their final name, so an interrupted run left a committed-looking partial JSON document. They now go through write_text_atomic.
2026-11-05 19:16:59 +01:00
Abdessamad Derraz 6ae9e461bd docs: name the steps the pipeline skip flags skip
--skip-packs said --skip-docs would stop after verify while 4d and 4e still run, and the tools.md flag table left 8b out of --skip-docs. The help, the usage and the flag table now name the steps the step table marks.
2026-11-05 19:16:32 +01:00
Abdessamad Derraz 17538bcddf refactor: keep one region word table on the site
_REGION_WORDS was bound twice in generate_site. The second table won at import, so the first, read by _region_word, was never used. The region lines now read the one table through _region_words.
2026-11-05 19:13:23 +01:00
Abdessamad Derraz b6b7856e97 fix: read bundled on the site as verify does
comes_with_app kept an entry narrowed by mode as required and missing, while verify and the pack read it as installed with that build (validation.installed_with_emulator). The four other site checks of bundled now go through the same function.
2026-11-05 19:12:52 +01:00
Abdessamad Derraz 80f736c167 fix: read the umask under one lock
plain_file_mode and safe_extract_zip set the umask to 0 to read it. Two threads doing so could restore 0 last, leaving every later file world-writable. Both now read it through process_umask, which holds a lock.
2026-11-05 19:10:57 +01:00
Abdessamad Derraz fefc9ca16f fix: refuse numbered review tags in commits
A subject that points at a numbered private review names notes no clone holds, and pushed history cannot be rewritten. The hook now refuses those tags like the tracked-file test does.
2026-11-05 19:06:57 +01:00
Abdessamad Derraz cf7b2ad9c1 fix: install site sections before the page plan
plan_emulator_pages names systems, and siterender then fell back to the repository's database.json and emulators/ whatever --db and --emulators-dir gave.
2026-11-05 19:06:54 +01:00
Abdessamad Derraz b90f8bb0b9 chore: merge tooling batch 2026-11-05 15:57:19 +01:00
Abdessamad Derraz 46302de5bb chore: merge installer batch 2026-11-05 15:21:48 +01:00
Abdessamad Derraz 4ee0fd67a2 chore: merge site and docs batch 2026-11-05 14:37:10 +01:00
Abdessamad Derraz 21b8d902e3 fix: name a served sha1 only when it differs
A RomM row printed the served copy's sha1 under the same SHA1 it
had just declared, 313 times on the page. The note stays where the
copy is not one the row declares.
2026-11-05 14:36:14 +01:00
Abdessamad Derraz 771e68016f fix: keep the FAQ and data page wording tests hold 2026-11-05 13:39:41 +01:00
Abdessamad Derraz e50eeb52fd chore: merge audit batch, resolver and profiles 2026-11-05 13:16:03 +01:00
Abdessamad Derraz 50be709240 chore: merge audit batch, truth and export 2026-11-05 13:16:03 +01:00
Abdessamad Derraz 2722f6f9ce fix: keep setup pages in their budgets 2026-11-05 13:05:31 +01:00
Abdessamad Derraz 01d5d96064 fix: name the export reports as copied files 2026-11-05 12:56:05 +01:00
Abdessamad Derraz a6aea140f0 chore: merge review tag cleanup 2026-11-05 12:52:29 +01:00