Commit Graph
1711 Commits
Author SHA1 Message Date
Abdessamad Derraz 22ece6998d docs: describe every core_probe option 2026-10-27 06:58:38 +01:00
Abdessamad Derraz 8b12685c16 feat: settle a probe check per observable
A check is inconclusive when the compared observable differs between repetitions, a run fails to load or a file changes during it. A disagreement on another observable stays flagged without voiding the comparison. Core log lines name the staged directories instead of the host paths.
2026-10-27 05:53:52 +01:00
Abdessamad Derraz 9690579f34 feat: record env files by name and sha256
A path given to --env is a detail of the host that ran the probe. The record keeps the file name and its sha256, which is what the run depended on.
2026-10-27 05:34:31 +01:00
Abdessamad Derraz 00b034612f feat: add headless libretro core probe
core_probe.py loads a libretro core with no window, runs it for a
number of frames and reports the files it opened (strace), its log
lines, frame, audio and save-state hashes and its speed. bench repeats
a run after warm-up and gives median, mean, deviation and range; check
swaps one system file between runs and compares one observable.

--record writes a JSON record with the core build, frontend commit,
host and every input by hash, validated against
core-probe-record.schema.json. A busy host is refused, and a
repetition that disagrees with the first is flagged.
2026-10-27 05:18:10 +01:00
Abdessamad Derraz 4b11a43a86 feat: version check reads tags and numbers
A project that tags without releases (eightyone, higan) was never compared,
and a core_version naming no tag (parallel-launcher 9.0.5 beside v9.0-6)
silenced the passed-release warning. The newest tag stands in when it is a
version number, and an untagged core_version is compared by number within
one scheme. --emulator is repeatable: a stored value kept only the last.
2026-10-27 04:16:31 +01:00
Abdessamad Derraz 44378ae5c9 feat: name a release newer than the pinned tag
A profile pinned on its release tag read as clean forever: armsx1, armsx2
and x1-box sat on old tags while newer releases were out. --check-version
now names the latest release when it follows both the declared tag and
the pin, unless pin_frozen holds the pin on purpose.
2026-10-26 23:25:51 +01:00
Abdessamad Derraz f3a161b60e fix: keep unread trees in the source paths record
A sitesources run that GitLab rate-limited dropped about twenty trees it
never read from website/src/data/source-paths.json. A tree key names a
pinned sha, so the last record's entry for an unread tree still holds and
is carried over, in sitesources and in profile_sync's refresh.
2026-10-26 22:52:23 +01:00
Abdessamad Derraz 9dbe68f990 fix: skip the gained-names check on held pins 2026-10-26 22:16:43 +01:00
Abdessamad Derraz 45d611332a feat: hold a bump when cited files gained names
Refs that still anchor say nothing of what the code added around them:
mame2003_plus's zn.c gained two Taito G-NET BIOS sets while its cited
lines only shifted. --rebase-refs and --bump-commit now refuse a profile
whose cited files gained a file name or a hash literal since the pin, or
could not be read, until --accept-changed says the additions were read.
With this, --all --rebase-refs --fresh is safe to run as is.
2026-10-26 21:55:23 +01:00
Abdessamad Derraz 32633c4e5c fix: let any refusal confirm a declared dead forge
citron's taken domain now resolves to an unrelated host that fails TLS,
so the pass reported an upstream error where the profile already states
the forge is gone. Any forge error now agrees with upstream_gone; a rate
limit still does not.
2026-10-26 21:53:47 +01:00
Abdessamad Derraz da573fc6f3 chore: merge main into the p3 fixes 2026-10-26 21:19:43 +01:00
Abdessamad Derraz f4bc8878d9 chore: merge the app on the card 2026-10-26 21:14:51 +01:00
Abdessamad Derraz fad5b10665 feat: ship the muos glyph the app header names 2026-10-26 21:14:24 +01:00
Abdessamad Derraz fa3651d14d feat: refresh source paths after a profile write
Each pin advance left website/src/data/source-paths.json behind and the
site's freshness test red until sitesources.py --fetch ran by hand.
profile_sync now rebuilds it after any run that wrote a profile, online
and not in a dry run.
2026-10-26 21:07:08 +01:00
Abdessamad Derraz 9002c67eb6 chore: merge main 2026-10-26 21:01:54 +01:00
Abdessamad Derraz b24fc06e51 feat: download button on every file card
The Apple II page named its start files with no visible way to get one: the download sat after the collection path, fourth of a card's facts. Each card now carries a Download button in its title, each start-line name links to its card, and a card held on another part page is reached by its permanent link.
2026-10-26 21:01:49 +01:00
Abdessamad Derraz 4ea9ee1712 docs: describe the app put on a card 2026-10-26 21:01:45 +01:00
Abdessamad Derraz f3c816eea5 feat: put the retrobios app on a handheld card
--add-app, the result screen and a [y/N] question put the launcher of
muOS, KNULLI or ROCKNIX on the card the BIOS folder is on. The files come
from install/launchers/index.json at the same ref, each checked by size
and SHA-256 before the first is written, and the app event reports it.
2026-10-26 21:01:45 +01:00
Abdessamad Derraz 0c77ef074e feat: add --fresh and name why a keyed pin waits
Branch tips, tags and releases are cached for six hours, and the
EKA2L1, trzy/Supermodel and VICE heads read as behind their real HEAD.
--fresh asks the forges again, and is refused with --offline.

A recale on a profile whose pins are keyed by build mode said the prose
had to move first. It now says the pins are set by hand.
2026-10-24 04:08:59 +02:00
Abdessamad Derraz fbe5ba4e3e docs: say the installer opens a full screen
The README, the installer steps, the choice of what to install and platform detection still described the line prompts as what a terminal shows. They now name the full-screen interface first, with --plain for the questions, and say that no default folder is taken where detection was refused.
2026-10-24 03:49:10 +02:00
Abdessamad Derraz 00bb4aa0ba fix: no empty code span for a bare data directory 2026-10-24 02:49:23 +02:00
Abdessamad Derraz 1c3db5b4d8 fix: print each app's data folder per system 2026-10-24 02:49:23 +02:00
Abdessamad Derraz a7558a5d4d chore: merge doubled destinations in exports 2026-10-24 02:42:33 +02:00
Abdessamad Derraz 2ee777824a feat: name doubled destinations in exports
A platform list that declares one path for two files fails one of the
two checks on every install. The export report lists each declaration
with its hash and the emulators whose profile reads that file.
2026-10-24 02:42:04 +02:00
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