Commit Graph
4575 Commits
Author SHA1 Message Date
Abdessamad Derraz faa5ca89d0 chore: count the keys of the five journeys
Each journey of the full screen runs on a pty against a loopback list
and asserts its key count: a first install (2 to start, 3 in all), a
muOS card holding a game (2, 3, its games read since the fix), an update
(2, 3), one system then the same again (14, 15, then 2, 3 for the whole
list), what is missing (5, 6), a folder for another device (19, 20).
2026-11-09 07:03:03 +01:00
Abdessamad Derraz 25ee245435 chore: alert before install.py outgrows the cap
install.sh and install.ps1 refuse an installer above 2 MiB. The test
fails once install.py passes 95 % of the cap both bootstraps read, so
the cap is raised or the installer made smaller before a release stops
every one-liner. Raising the cap raises the alert with it.
2026-11-09 06:53:57 +01:00
Abdessamad Derraz bdd070dd2c fix: data trees go with the systems they serve
Choosing GBA alone brought FBNeo's cheats and samples, 3,472 files,
because both trees listed every FBNeo system. The profile now names the
systems each serves, from the code: a driver's <name>.ini, cheat.dat,
cheatnes.dat or cheatsnes.dat (conc.cpp:815-828, 1059-1083), the md_,
pce_, tg_ and sgx_ drivers the tree holds, and samples read by arcade
drivers alone (samples.cpp:886-899).

The list now gives a tree the platform's ids its systems normalize to,
as a core extra's: the cheats said sega-megadrive where RetroArch says
sega-mega-drive, and a tree no platform system serves goes with the
files of none, as the pack puts it. The installer keeps a tree for the
systems chosen by name, not for every system a shared file names: the
arcade choice took blueMSX's machines through msx.zip.
2026-11-09 06:53:16 +01:00
Abdessamad Derraz d73d673508 docs: say where the systems list opens
The page said a long list opens on None. The list opens on its first
system since the three tick lists share one rule (A on None unticked
every system as a beginner's first press). The page now says what the
screen does, and a test reads both.
2026-11-09 06:33:52 +01:00
Abdessamad Derraz 92b7d071c6 fix: one size for the ticked systems on the plan
With systems ticked since the check, the headline counted them (About
3479 files, 82.2 MB) and the Install row kept the whole list's size
(Install 6.6 GB). _ticked_estimate is the one count both read, offline
the files the folders copied from hold.
2026-11-09 06:27:48 +01:00
Abdessamad Derraz fcd6753b9e fix: one id per machine for the games fallback
muOS names its GBA folder gameboyadvance first, which resolved to ares's
game-boy-advance. mgba lists nintendo-gba, so the fallback set was empty
and an unrecognised GBA game got no file. ares, dgen, picodrive, fbneo,
fbalpha2019 and emux_sms now use the ids the other profiles use, with
their old spellings kept as SYSTEM_ALIASES (bios.sms and fbneo's
Spectrum sets had fallen to the other bucket of the RetroArch list).

A folder whose name spells a machine its core does not run now also
holds the core's machines: a PC Engine CD folder run by mednafen_pce_fast
got no System Card. Install lists and install/games regenerated.
2026-11-09 06:13:24 +01:00
Abdessamad Derraz 6692cf908c fix: read a card's games under --platform
The full screen passes --platform=retroarch for a muOS card. Detection
never runs in that child, so games_setups fell back to RetroArch's own
setup and the run said no games folder was found beside MUOS/bios. The
card's own files now name its system, as card_app reads them.
2026-11-09 06:12:02 +01:00
Abdessamad Derraz ae5b6219bb chore: merge origin/main 2026-11-07 03:28:27 +01:00
Abdessamad Derraz 097914507b feat: install for the card's games without asking
--yes alone installed the whole list, 6.4 GB on a dArkOS card holding
two games, while the screen offers what the games need first. A run that
asks nothing now takes that first choice when the card holds games, and
says so. --all-files installs the whole list. A run given its list
(the screen's own runs) or narrowed by name is unchanged.
2026-11-07 03:16:06 +01:00
Abdessamad Derraz 6316fd12ff feat: keep data trees the card's cores read
The manifest names the cores that read a tree no platform system
declares, every reader of a shared tree included. An install for the
games of a card keeps such a tree only when its plan runs one of them:
a SNES game on ArkOS (snes9x) no longer takes FBNeo's cheats and samples.
A system no setup names a core for keeps every core's tree.
2026-11-07 03:16:06 +01:00
Abdessamad Derraz 1f85f6dbae chore: merge origin/main 2026-11-07 02:49:52 +01:00
Abdessamad Derraz 0b385100ba fix: give the no-jsonschema run the runner's time
The rerun without jsonschema took 345 s here and went past its 600 s
limit on the CI runner, about twice slower, so main stayed red. It now
selects the modules that import jsonschema or validate_schemas rather
than those that name them, and allows 1800 s.
2026-11-07 02:49:24 +01:00
Abdessamad Derraz 46a364aad6 chore: merge the XDG isolation 2026-11-07 02:11:02 +01:00
Abdessamad Derraz 2535d99cc6 fix: keep the host's XDG folders out of the tests
install.py reads RetroArch's base folder from XDG_CONFIG_HOME, and the
GitHub runner sets it: six tests that give the installer a home of
their own read the runner's ~/.config, failed in CI and passed here.
2026-11-07 02:10:53 +01:00
Abdessamad Derraz 6cc646acd6 fix: type errors the merged batches brought
The name step reused one variable for paths and for (path, md5, size)
tuples, the standalone copies reused targets inside its own loop, and
the WSL state read as object. Ten baseline entries no longer occur.
2026-11-07 00:55:46 +01:00
Abdessamad Derraz 16f8c869a5 chore: merge installer fixes, fifth pass 2026-11-07 00:11:09 +01:00
Abdessamad Derraz 70f530516d chore: merge pack and resolver fixes 2026-11-07 00:06:15 +01:00
Abdessamad Derraz 21dfb961f9 chore: merge archive recipes 2026-11-07 00:05:51 +01:00
Abdessamad Derraz 83214b9d1e chore: merge origin/main 2026-11-06 23:29:29 +01:00
Abdessamad Derraz 1fb20fe53d chore: list the installer's new hash for launchers
install/launchers/index.json records the SHA-256 of install.py that
--add-app checks, and was not rewritten with the pins.
2026-11-06 23:28:21 +01:00
Abdessamad Derraz de431c0d53 fix: find the home page when it is MDX
The install demo made the home page index.mdx, and sitepages.require
looked for index.md alone: every page test skipped locally and failed
in CI, 256 at once.
2026-11-06 23:28:21 +01:00
Abdessamad Derraz 544df4326b chore: merge origin/main 2026-11-06 22:53:00 +01:00
Abdessamad Derraz ae7feba539 fix: type the lists and returns mypy flagged
The data tree record carries the needed flag since 072380c26, and
the manifest test still built the three-part one. profile_sync's triage
lists and _emit's returns, site_insights' GoatCounter answers and
make_demo's blocks are annotated, and the baseline loses the entry
that no longer occurs.
2026-11-06 22:30:55 +01:00
Abdessamad Derraz 966ab201ea fix: regenerate the launcher list after main
Main changed install.py without the launcher index, so --add-app
refused every launcher and nine tests failed on main itself. The demo
script added a list without a type, and an archive-size test still
built the data-tree refs without the needed flag the builder reads.
2026-11-06 21:48:46 +01:00
Abdessamad Derraz 399b5c33c1 chore: merge origin/main 2026-11-06 21:18:18 +01:00
Abdessamad Derraz cfc950b834 chore: merge origin/main 2026-11-06 21:09:17 +01:00
Abdessamad Derraz 5730380d12 docs: drop clause semicolons from comments 2026-11-06 21:01:23 +01:00
Abdessamad Derraz 68c8dca41d feat: offer the games of a handheld's card
An ArkOS EASYROMS card plugged into a computer was never offered "for
the games on this card": its console folders sit beside bios, with no
roms folder above. A games part now counts as a card that may hold
games.
2026-11-06 21:01:23 +01:00
Abdessamad Derraz 65a5dfecc7 feat: show the installer demo on readme and site
The README shows the GIF under the commands. The home page and Get your
files show the video through InstallDemo.astro: nothing is fetched until
it is on screen, reduced motion and Save-Data keep the poster with a play
button, and a description is read to screen readers.
2026-11-06 20:46:07 +01:00
Abdessamad Derraz e310723893 feat: record an installer demo with vhs
scripts/make_demo.py builds an ArkOS card under tmp/demo/, mounts it in a
user mount namespace, serves the checkout on loopback and runs
docs_assets/demo/install.tape with VHS, then encodes the GIF, WebM, MP4
and poster and holds them to their size targets.
2026-11-06 20:45:58 +01:00
Abdessamad Derraz b56dc64609 chore: merge origin/main 2026-11-06 20:38:15 +01:00
Abdessamad Derraz 3c984515fb chore: drop goatcounter entry from mypy baseline 2026-11-06 20:38:15 +01:00
Abdessamad Derraz a9d4eecd13 fix: keep main's site commits inside the gates
Three site commits pushed to main fail checks CI runs: two prose
semicolons, an untyped signature, and GoatCounter answers read as a
dict without a test. GoatCounter's stats now go through one reader
that refuses an answer that is not an object.
2026-11-06 20:29:16 +01:00
Abdessamad Derraz 268c974e28 docs: name every refused quote in the agent steps
The skill and llms.txt said "a quote" where the tool refuses the
typographic ones too, which end a PowerShell string. One constant states
the set for both, and points to device_setup_command.
2026-11-06 20:17:45 +01:00
Abdessamad Derraz 74489a4a0f docs: quote folders in the agent setup steps
The skill and llms.txt told an agent to write --dest=<card>/bios bare.
A folder now goes in single quotes, attached to its option, and one that
holds a quote, a backtick or a control character, or starts with -, is
a question for the user.
2026-11-06 20:15:47 +01:00
Abdessamad Derraz c91bf440da feat: publish the setup steps as an agent skill
ARD reserves text/markdown for agent skills, and Lighthouse warned on
the llms.txt entry. skills/setup-bios/SKILL.md holds the steps that set
up a device with the fewest files, and the manifest lists it as a skill.
2026-11-06 20:14:38 +01:00
Abdessamad Derraz d10c037a86 fix: refuse a path that could escape the command
device_setup_command built a shell command from the agent's values: a
typographic quote ends a PowerShell string, and a path starting with -
reads as an option. Such values are refused, the options are written
attached to their values, and platform must be a setup name.
2026-11-06 20:01:03 +01:00
Abdessamad Derraz 24d7db0ab3 feat: guide AI agents to the fewest files
llms.txt and an ARD manifest name the pages and the JSON API, and lead
an agent setting up a device to --for-games --required-only. Every page
registers four read-only WebMCP tools: the setup command, a hash lookup,
an emulator's files and the site search.
2026-11-06 19:58:42 +01:00
Abdessamad Derraz 072380c268 feat: install the fewest files for a card's games
--for-games --required-only on a dArkOS card from a computer kept every
file of the list: --dest skipped the card's detection, so its rom
folders were never found. The games part beside the BIOS folder now
names them. The manifest marks a data tree every core runs without
(optional), and --required-only leaves it out: one GBA and one SNES game
took FBNeo's cheats and samples, 3,472 files no game opened.
2026-11-06 19:58:41 +01:00
Abdessamad Derraz e1795d584e fix: type the goatcounter totals for mypy
4ac3f7de7 read .get on _get_json's dict | list answer, four errors past mypy-baseline.txt.
2026-11-06 19:58:08 +01:00
Abdessamad Derraz fcfa29a870 fix: type the torrentzip member sources 2026-11-06 19:58:08 +01:00
Abdessamad Derraz f04b3c6324 chore: merge the gate branch (7db9fe14e) 2026-11-06 19:55:51 +01:00
Abdessamad Derraz eb2bdb20cd chore: merge origin/main 2026-11-06 19:55:21 +01:00
Abdessamad Derraz ba348b6ca8 chore: merge origin/main 2026-11-06 19:51:38 +01:00
Abdessamad Derraz 4a167f7cca chore: mame recipes start at 0.177 now
The site's neogeo.zip line, the identification note and the recipe count sentence follow the 113 imported releases.
2026-11-06 19:18:38 +01:00
Abdessamad Derraz 7db9fe14e1 fix: let the export step fail as CI does
validate.yml runs export_native with continue-on-error, and pr_checks
failed the whole run on it. The step is now shown and does not fail
the run, and a test keeps that list equal to the workflow's.
2026-11-06 18:43:05 +01:00
Abdessamad Derraz 3e25870259 fix: type errors outside the mypy baseline
Code moved to sitecollection.py and the triage progress added errors
the baseline did not hold. A reused loop name, two lists without a
type, returns without a value, and a regex match read without a test
for None. Two baseline entries no longer occur and are removed.
2026-11-06 18:43:05 +01:00
Abdessamad Derraz 4af681c754 fix: clear the XDG folders for the test suite
The CI runner sets XDG_CONFIG_HOME to its own home, and the installer
now reads it as RetroArch does. Tests that fake HOME then found the
runner's RetroArch folders. The suite clears the three XDG variables
it reads, and a test that exercises one sets it itself.
2026-11-06 18:43:05 +01:00
Abdessamad Derraz adce8dd0d4 feat: share each page under its search title
og:title and twitter:title carry the search title ("mGBA BIOS
files"), an emulator page shares its maker's card, a download page is
dated by its release in the sitemap, and a Switch emulator's files are
called keys.
2026-11-06 18:40:27 +01:00
Abdessamad Derraz bbfea602f4 chore: merge origin/main 2026-11-06 18:38:12 +01:00