Commit Graph
1687 Commits
Author SHA1 Message Date
Abdessamad Derraz 1998580772 fix: start each pack run with no stale notices
_MISSING_DATA_DIRS is module state: a test that called main() after one
whose data directories were not cached exited 1 with the earlier run's
notice. main() now clears it first.
2026-10-24 02:34:47 +02:00
Abdessamad Derraz 973394717c fix: place core extras by one destination rule
The collector deduplicated a destination already carrying the extras
prefix at prefix/prefix/name while the builder wrote it at prefix/name.
DuckStation's standalone bios/<name> on Recalbox and PCSX2's scan then
held one path under two keys, and --region withdrew only one. The
second pass also no longer claims a path another core's extra holds
for a name only that extra covers.
2026-10-24 02:31:48 +02:00
Abdessamad Derraz fa7977d2c3 fix: ask again for a tip older than the pin
A branch tip is cached for six hours. scummvm-standalone was pinned on
6f7b060d while the cache still held 77d80d7, its ancestor, so profile_sync
showed a HEAD behind the pin and a bump would have moved it backwards. A
tip that is a strict ancestor of the pin is now asked for again.
2026-10-24 02:00:21 +02:00
Abdessamad Derraz 4db718bb5c chore: merge round 5 system page fixes 2026-10-24 01:30:36 +02:00
Abdessamad Derraz 6936302133 chore: merge round 5 wiki fixes 2026-10-24 01:30:33 +02:00
Abdessamad Derraz d47763fdc1 chore: merge round 5 package a29b43f1fc43aba6b 2026-10-24 01:27:26 +02:00
Abdessamad Derraz 3d7b374326 chore: drop a system name no source uses
No profile or platform names the gba id since the beetle_gba profile left. The table test reads every entry against the ids in use.
2026-10-24 01:26:49 +02:00
Abdessamad Derraz 4dd3800f11 fix: file system cards by board, machine, engine
Every board set sits on its board page whatever folder holds it, a set a
reviewed machine owns joins that machine (neogeo.zip under SNK, the Atom
under Acorn, the MZ-2000 under Sharp), and a game engine's files form one
section named after it. Board pages drop the heading that repeated their
title, parts drop the Part of line their crumbs already say, and pages
that moved redirect.
2026-10-24 01:19:56 +02:00
Abdessamad Derraz 7d3d5b5efd fix: start lines name alternatives, not extras
A file most of whose readers take beside another one is no start file
(NAOMI opened on hod2bios.zip), and names that answer one slot for
different emulators read as alternatives with their readers, each by
the name of its card.
2026-10-24 01:19:56 +02:00
Abdessamad Derraz 64abc4e61a docs: give each system its retroarch folder 2026-10-24 01:01:07 +02:00
Abdessamad Derraz 33c2c64c0c fix: keep the bizhawk get title unique 2026-10-24 00:54:00 +02:00
Abdessamad Derraz 0695b5404b feat: setup routes on get pages, card route 2026-10-24 00:54:00 +02:00
Abdessamad Derraz b12c0af4b8 feat: card computers and retrooz folder in guides 2026-10-24 00:54:00 +02:00
Abdessamad Derraz 801b8bbda0 fix: one pack answer and fuller reference data
The API reads release_pack from the registry entry, not the inherited config, and the picker gets release-advertised.json. The lookup counts emulators that read a file by name, every record names what was declared, the Data page lists all schemas, the target lists and nested manifest fields, and systems.json items carry their api address.
2026-10-24 00:51:13 +02:00
Abdessamad Derraz 78c3ab7aa9 fix: exit 1 when the folder check finds gaps
Unknown platforms now print the known names instead of a traceback.
2026-10-24 00:51:13 +02:00
Abdessamad Derraz 3609f66401 fix: keep schema rows readable by the floor python 2026-10-23 23:45:39 +02:00
Abdessamad Derraz 4ffdcf04b1 fix: rank the emulator before its frozen copies
A profile pinned to one platform's build (pin_frozen) answers after the emulator, as a frozen_snapshot does: Flycast now answers dc bios missing ahead of Reicast and Flycast 2021 LE. terms weighs 30, so the version table answers which mame version first, and the gate now asks for rank 1 there. The search field test names the five fields, since round 4 item 2.4 put the title meta on the h1.
2026-10-23 20:19:26 +02:00
Abdessamad Derraz 8a8931e4c6 feat: write the options glance from the parser
The glance on the installer page is written from install.py's argument parser when the page is built, grouped by GLANCE_GROUPS. An option no group names lands under Other, so a new option cannot be left off the page.
2026-10-23 20:19:26 +02:00
Abdessamad Derraz e5cd024e2e fix: settle the round 4 site merge
Root pages nothing produced are swept, so a table moved to a platform page no longer keeps the address its redirect needs. Data tree pages name their readers, board crumbs end on the Arcade page once, fba2012 is headed FB Alpha 2012, test profiles get no page, and the installer glance lists --declared-only and --offline. sitesources.py goes through run_cli.
2026-10-23 20:04:33 +02:00
Abdessamad Derraz de55360b56 feat: flag a stale source-paths record
check_freshness reports source-paths.json STALE when it records a tree no profile pins any more, and tools.md names sitesources.py --fetch where pins move.
2026-10-23 20:04:12 +02:00
Abdessamad Derraz 59285292c3 chore: bizhawk app icon, minui initials
BizHawk's tile takes EmuHawk's application icon (ApplicationIcon in its csproj) instead of an account avatar. MinUI has no logo of its own: its entry and copy go, and fetch_site_images.py now removes the copy of a platform without a logo.
2026-10-23 20:04:12 +02:00
Abdessamad Derraz 6f958382b7 chore: merge the engine options round 2026-10-23 19:25:34 +02:00
Abdessamad Derraz 7143d20ef8 fix: check the event schema under the given root
validate_schemas.py read install-events.schema.json from the real tree while a test pointed ROOT at a scratch one, and test_schema_semantic_gate.py called unittest.main() before its last class.
2026-10-23 19:23:59 +02:00
Abdessamad Derraz 8f50015a0c feat: round 4 reference and data 2026-10-23 19:23:58 +02:00
Abdessamad Derraz 167597ad5e feat: round 4 emulator pages 2026-10-23 19:23:58 +02:00
Abdessamad Derraz 5e09301dd8 feat: round 4 system pages 2026-10-23 19:23:58 +02:00
Abdessamad Derraz 3bbe7225af docs: round 4 wiki and release docs 2026-10-23 19:23:53 +02:00
Abdessamad Derraz 03d12ffe98 feat: round 4 entry pages 2026-10-23 19:23:29 +02:00
Abdessamad Derraz 7a2b83882d feat: round 4 search 2026-10-23 19:23:29 +02:00
Abdessamad Derraz 370bee1470 feat: round 4 components 2026-10-23 19:23:29 +02:00
Abdessamad Derraz 7d412939fa feat: system pages by arcade board and start file
Start lines count which emulators require a file, arcade cards are grouped by board, romsets match by CRC32, cards name emulators and group setups by place, and parts carry parent, neighbours and a name.
2026-10-23 19:23:01 +02:00
Abdessamad Derraz 6a13eda370 fix: run pipeline children without node's cache
The render step's npm build wrote Node's compile cache to /tmp, a 4 GB
tmpfs on this host, and a day of pipeline runs filled it to 3.4 GB.
Every child the pipeline starts now carries NODE_DISABLE_COMPILE_CACHE=1.
2026-10-23 19:19:49 +02:00
Abdessamad Derraz 5a3f621e94 fix: read the mirror of a gone source
select_views stopped on the first repository that answered as gone, so
yuzu's source_mirror was never read and the profile stayed unchecked. A
gone repository is now passed over, and a profile declared gone that
answers only through its mirror is not reported as a contradiction.
2026-10-23 19:13:48 +02:00
Abdessamad Derraz b34a6058f7 chore: merge main into the engine round 2026-10-23 19:07:44 +02:00
Abdessamad Derraz 35e7300465 feat: add --declared-only and the events schema
--declared-only keeps the entries the platform's own list declares
(cores: null), each slot settled to the platform's copy with no core
alternative left behind. Install, --check, --dry-run, --events,
--list-systems, --system, --region, --emulator, --target,
--installed-cores, --manifest and --from-pack apply it. --core,
--list-cores, --list-emulators, --list-platforms, --list-targets,
--standalone-copies, --restore and --tui refuse it, and the interface
does not open by itself with it. On Batocera it gives 353 files of
14531, the list batocera-systems checks.

Event decision: no schema bump. A `declared` key on `file` would add a
key to an existing kind, which schema 1 forbids. A new kind, `declared`,
follows `check` with the same counts over the platform's own files and
their dests in file-event order. Readers already skip a kind they do
not know (rbevents.py and the interface reader were checked), so
EVENT_SCHEMA stays 1.

An unknown --system is answered with the systems the list files its
key file under: --platform retroarch --system snk-neogeo now suggests
arcade, which holds neogeo.zip, instead of snk-neogeo-cd. neogeo, mvs
and aes follow the same route. Never taken, only suggested. A system
title the manifest carries (SNK Neo Geo CD) is taken for its id when
no other system shares it and no platform name reads the same.

schemas/install-events.schema.json is written from EVENT_KEYS by
scripts/generate_event_schema.py. validate_schemas.py reports a stale
file, and tests compare it with EVENT_KEYS and validate a real run.
Bootstrap pins recomputed.
2026-10-23 19:07:18 +02:00
Abdessamad Derraz 86f9bda4ef chore: minify the svg logos
svgo drops the editor markup, and the PNG inside RetroDECK's icon is cut to the 80 px tile: 12.7 KB down to 5.1 KB.
2026-10-23 19:06:10 +02:00
Abdessamad Derraz fcb4aa27da feat: search fields and descriptions from pages 2026-10-23 18:58:55 +02:00
Abdessamad Derraz 685945771e feat: network route and offline line on setups
A device setup with no ZIP and a cited network folder gets the command run from a computer into that folder. Every setup with a ZIP links the offline install, the Linux handhelds guide opens with a jump to its download, home and the setup index drop the stray Reference labels, the index lists the handheld tiles, and Get your files answers iPhone and iPad with each app's own steps.
2026-10-23 18:54:01 +02:00
Abdessamad Derraz c1a942ad31 feat: cite a folder for every handheld row
Allium, JELOS, KOLOS and MiyooCFW folders come from their own trees at the revision the installer reads. Rows with no cited folder point at RetroArch's System/BIOS setting, and a folder only Linux reads says so. KNULLI's SAMBA switch is linked, AmberELEC's roms share is named, the MinUI family says the command makes each folder, and an iPhone and iPad tile joins the handheld group.
2026-10-23 18:53:55 +02:00
Abdessamad Derraz 6d938f3d54 feat: reference pages answer every hash and field
A platform or emulator record whose value designates a collection
file carries its sha1 and is filed under the file's other hashes, so
a SHA1 paste finds the setups listing it by MD5. The data page shows
every manifest field, writes URL templates as code, states the EmuDeck
rule, the browser lookup and the empty lists. systems.json gives every
id holding files a page, Files to source splits at 100 rows with an
upload link per file, and MiSTer and BizHawk get no empty core table.
2026-10-23 18:52:13 +02:00
Abdessamad Derraz 00cd203b23 feat: add schema_version to release.json 2026-10-23 18:52:04 +02:00
Abdessamad Derraz 2ba0effd3b fix: check emudeck folders by any file
An EmuDeck entry names no file: the system passes when any file
directly in the BIOS folder has one of its md5, as checkBIOS.sh loops
over "$biosPath/"*. The script looked each one up as a file named
system:md5 and reported 134 of 170 entries missing.
2026-10-23 18:52:04 +02:00
Abdessamad Derraz 7ca7be064a feat: link only source paths a tree confirms
The deploy has no tree cache, so a citation it could not check was
linked into the declared repository: 30 paths answered 404. The paths
held at each pin are now recorded in website/src/data/source-paths.json
by python scripts/sitesources.py, and a path absent from it renders as
code. An address inside a shipped binary reads as one.
2026-10-23 18:52:00 +02:00
Abdessamad Derraz 6e7047b3fc feat: attach the installer to each release 2026-10-23 18:48:02 +02:00
Abdessamad Derraz d614acbef3 fix: offer only a pack that serves the system
Release packs now exist for six platforms only, and install.py refuses a
pack named for another. build_port.py writes packs.txt from the
registry's release_pack groups. Offline, the launcher takes only a pack
spelling the detected system, names that pack, or says no release pack
serves it and gives Wi-Fi or the computer route.
2026-10-23 18:39:45 +02:00
Abdessamad Derraz f568c79e19 feat: emulator pages for any-name bios apps
An app found by content says to get one BIOS of any name and where it goes, with no install command it cannot carry out. Every arcade core names its romset, part pages name their parent and neighbours, a required file says which system it serves, and the core template leaves the index.
2026-10-23 18:39:28 +02:00
Abdessamad Derraz e6ce3085b1 chore: merge main into the launcher fixes 2026-10-23 18:32:08 +02:00
Abdessamad Derraz 5db889f538 fix: end handheld runs that lose their input
Start + Select now kills a sentinel the launcher owns, and the launcher
asks the interface to stop, so a running install still writes its result.
A mapper that dies, a chvt the compositor refuses, a terminal app that
cannot open and a read-only card each end the run or hand over to the
next route instead of a console waiting for a button. muOS starts
gptokeyb2 with -X and keeps muxterm off the pad so Y opens the options.
2026-10-23 18:21:45 +02:00
Abdessamad Derraz af3caed8ab fix: give xbox 360 its own section 2026-10-23 18:01:45 +02:00
Abdessamad Derraz 82bf236a5a feat: hold an upstream pin a port vendors
upstream_frozen says why upstream_commit stays: the port vendors that
upstream tree, synced to that release, or merged that commit. The view
is then read at its own pin, the way pin_frozen holds source_commit, and
a bump leaves it. Outside a GitHub fork network nothing else could tell
aps3e's vendored RPCS3 1f080485 from an upstream read on a date.
2026-10-23 17:30:20 +02:00