Commit Graph
2441 Commits
Author SHA1 Message Date
Abdessamad Derraz a70f8bcb34 docs: write the site without personal pronouns 2026-11-09 08:09:47 +01:00
Abdessamad Derraz 7a5d5e5bf5 chore: merge core-info reviews 2026-11-09 07:57:57 +01:00
Abdessamad Derraz fe41aef9c0 fix: keep Game Boy files on the Game Boy page
The game-boy and game-boy-color aliases made the Game Boy Color folder
answer nintendo-gbc by name, its list grew heavier than the Game Boy
one and took the Game Boy boot ROMs to a page of its own: the search
for game boy bios no longer found them. No profile spells those ids
since the ares rename, so the aliases are dropped.
2026-11-09 07:52:06 +01:00
Abdessamad Derraz a851ca2945 chore: merge origin/main 2026-11-09 07:42:54 +01:00
Abdessamad Derraz 3349ba9438 fix: send site_markdown through run_cli 2026-11-09 07:42:18 +01:00
Abdessamad Derraz 70276f098c chore: merge six core-info profiles 2026-11-09 07:37:11 +01:00
Abdessamad Derraz b690a03864 feat: profile six libretro cores from source
anybor, anygm, sm2, tgpulse_next_m1, zcdi and zesarpcw had a core-info file and no profile. parallel_psp and parallel_xbox are left out: no source is published for them.
2026-11-09 07:36:36 +01:00
Abdessamad Derraz 45cf1accfb chore: merge origin/main 2026-11-09 07:35:22 +01:00
Abdessamad Derraz 77fef7289f feat: show the handheld demo and steps per tab
make_demo.py records a second variant: the full-screen interface at the
640x480 screen of an R36S, on an ArkOS root made with bwrap, started as
the Tools menu launcher starts it (RETROBIOS_PAD=gptokeyb), driven by the
keys gptokeyb sends for the buttons. demo.json holds one entry per
variant with its alt text. No Windows variant: under pwsh on Linux the
installer's summary gives --dest /mnt/e/bios back.

The quick install box of Get your files gets an "On the device" tab with
the handheld recording, the terminal recording under the others but
Windows, and, under the text of each computer tab, a drawing of opening
the terminal and pasting (sitesteps.py, inline SVG in the theme's
colours, title and desc). The terminal steps name the physical action.
2026-11-09 07:35:03 +01:00
Abdessamad Derraz d9b788787c fix: read keyed source and version in profile_sync 2026-11-09 07:34:26 +01:00
Abdessamad Derraz 16ec5fa2d2 docs: turn the readme into a front page
The README ran 211 lines and 2,000 words: five commands with options,
an 18-row download table, coverage figures and the build commands, all
before the help. It now says what the project does, gives the line that
installs for Windows and for the rest, shows it, lists the six ZIPs and
the setups that install by command, and leads to the site, where the
figures and every option live. The build commands sit in a closed block.
No personal pronoun is left in its text.
2026-11-09 07:28:32 +01:00
Abdessamad Derraz 19264db538 chore: merge issue 87 and platform refresh 2026-11-09 07:24:48 +01:00
Abdessamad Derraz 77a8f171ba feat: read retrobat bios groups
emulatorLauncher 228731e0 lists ten PS2 BIOS in one group: one held file
is enough and Program.cs reports the others OPTIONAL. The scraper keeps
group and optional, verify and the pack check apply the same rule.
2026-11-09 07:22:06 +01:00
Abdessamad Derraz abf0f06fa9 fix: read the launchers emulatorLauncher has now
ArcadeDuck searches the folder above a CHD-only set, GSplus writes the
first of four ROM names it finds, Hatari falls back on EmuTOS, hatariB
copies a TOS from bios/hatari/tos, and #region lines precede method
headers. ROCKNIX renamed start_hatari.sh and dropped aethersx2-sa.
2026-11-09 07:16:25 +01:00
Abdessamad Derraz 2589099f2d chore: merge origin/main
install/games regenerated over both sides.
2026-11-09 07:12:07 +01:00
Abdessamad Derraz 8328570d1c docs: name uvx retrobios beside the one-liner 2026-11-09 07:07:54 +01:00
Abdessamad Derraz 7ba899d467 feat: build the installer as a PyPI package
scripts/build_pypi.py writes a wheel and an sdist from install.py, the
copy install.sh pins, and packaging/pypi. The version is the date of the
release in release.json. validate.yml now runs on packaging/ changes.
2026-11-09 07:07:54 +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 0179de844c feat: keep firmware of cores the list lacks
--installed-cores treated a core with no profile as one that reads no
file, and dropped dc/dc_boot.bin for parallel_dc without a word (issue 87).
Such a core is now named, and the firmware its RetroArch .info declares is
kept. core_names lists every core a platform runs, so a profile with no
file is not reported unknown.
2026-11-09 06:52:44 +01:00
Abdessamad Derraz 19cfd8132b feat: profile five new buildbot cores
parallel_dc (libretro/flycast renamed), hyperscanemu, hypseushw, n64emu
and odin reached the RetroArch buildbot after the last targets scrape and
resolved to no profile. Targets rescraped, each core profiled from its
source.
2026-11-09 06:52:44 +01:00
Abdessamad Derraz 6edb9fe691 chore: merge origin/main 2026-11-09 06:51:21 +01:00
Abdessamad Derraz 47593c58d7 docs: drop a clause semicolon in site_markdown 2026-11-09 06:19:12 +01:00
Abdessamad Derraz 877470337d fix: keep llms-full.txt to what a setup needs
It joined every setup page whole, its parts and its reference of every
file: 6.9 MB, past what an assistant reads at once. Each setup's own
page now stops before that reference, which its Markdown copy keeps.
2026-11-09 06:18:18 +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 29aeccba3c feat: guide a stale link and the first download
Readers reached the 404 page with a pasted command (/i.ps1%20%7C%20iex),
a file name, a GitHub path or a section below a page: the page now says
which it is and leads on. Beside "Start with", the first file's
download sits next to its name.
2026-11-09 06:04:42 +01:00
Abdessamad Derraz a7a27028ab feat: give assistants each page as markdown
The build writes <page>/index.md beside each page, named in its head,
and llms-full.txt. llms.txt and the setup skill say how to answer from
the site, not from memory, and the setup_bios_files WebMCP tool gives a
setup's folder and exact file names from the picker data.
2026-11-09 06:04:42 +01:00
Abdessamad Derraz ab9fe76de2 fix: resolve the cores handhelds rename
ArkOS ran the GBA with gpsp_ezode_mod and dArkOS with mgba_rumble: no
profile named them, so an install for the card's games kept every GBA
core's files, FBNeo's 3,472 data files among them. Each rename proven
from the OS build (same code base, same BIOS loading) joins its
profile's cores. The resolver folds either separator, and falls back to
the emulator column when the core names a mode, a machine or a plugin
of that program, only where its profile declares the folder's system:
MAME documents no GameKing ROM. 109 unresolved names are 56, each one
recorded with why in tests/test_games_index.py.
2026-11-09 06:04:42 +01:00
Abdessamad Derraz 39bc5f020b feat: put a .nomedia in packs unzipped on Android
The RetroArch pack lands in RetroArch Android's system folder, where MediaProvider indexed 3 842 images, sounds and videos (552 MB) into the gallery and music apps: a folder holding .nomedia is hidden with every folder below it (FileUtils.java:1587-1629, ModernMediaScanner.java:845-846, a183e2b9). A pack whose platform files an Android target, unfiltered or built for one, carries an empty .nomedia. pack_files counts it and the integrity check takes it for a marker.
2026-11-09 05:52:52 +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 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 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 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 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 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