Commit Graph
266 Commits
Author SHA1 Message Date
Abdessamad Derraz 505cfc044b fix: say what a platform's own check compares 2026-11-05 12:10:51 +01:00
Abdessamad Derraz 9aa26143ad fix: name the old Python the bootstrap found 2026-11-05 12:08:54 +01:00
Abdessamad Derraz 3389651549 fix: name a sign-in page sent for the file list 2026-11-05 12:08:12 +01:00
Abdessamad Derraz f6de9a0ae3 feat: answer ES-DE, LaunchBox and Android by name 2026-11-05 12:07:25 +01:00
Abdessamad Derraz da4773a0be fix: answer the system names the listing prints 2026-11-05 12:06:36 +01:00
Abdessamad Derraz 94b5195590 fix: exit 2 on an unknown name, as for an option 2026-11-05 12:05:44 +01:00
Abdessamad Derraz 3f0dfbce31 feat: emit an error event for an unknown name 2026-11-05 11:59:02 +01:00
Abdessamad Derraz 7da6e117a3 fix: read a RetroDECK bios dest as its folder 2026-11-05 11:56:00 +01:00
Abdessamad Derraz 896dbc8660 fix: say a platform has no hardware targets 2026-11-05 11:54:53 +01:00
Abdessamad Derraz bcedd22a9e fix: pick a Python that can do HTTPS 2026-11-05 11:53:49 +01:00
Abdessamad Derraz 4d46587693 fix: name a Python built without ssl or zlib 2026-11-05 11:48:50 +01:00
Abdessamad Derraz f78da21656 fix: say why the games index did not download 2026-11-05 11:46:40 +01:00
Abdessamad Derraz 0c384e0446 fix: say when retroarch.cfg cannot be read 2026-11-05 11:45:53 +01:00
Abdessamad Derraz d38cd58036 feat: scrape recalbox rom folders per board
GitLab refused the hundred raw reads per IP. A GitLab directory is now
read from one archive request, else a shallow sparse git fetch, and the
cache keeps its file list so offline runs know what is absent.

Each board builds system.ini against its defconfig: a core whose package
the board does not enable is dropped (pisnes was the SNES default
everywhere), and a system with no core is not built. The row names the
default most boards share, board_defaults the others. A files: list
names whole files and is carried as files through the index and the
installer.

A folder no name resolves, run by a core of several machines, now holds
those machines: thomson, multivision and pcv2 had no fallback, so their
games got no file. Arcade-indexed cores keep naming files per set.
2026-11-04 16:48:34 +01:00
Abdessamad Derraz 33add072cb chore: merge installer page refresh 2026-11-04 05:52:02 +01:00
Abdessamad Derraz c75fd661e8 fix: read fbneo console sets by driver name
In a console folder an FBNeo set is looked up under its driver name
(msx_1942), the bare name being the arcade set's. A run given its list as
a file reads the games index from beside it or the cache only when
--for-games was not asked. The installer keeps to Python 3.8 syntax, and
the testing guide names test_install_games.
2026-11-03 19:12:42 +01:00
Abdessamad Derraz 2e9175a8e9 feat: install for the games on the card
--for-games reads the card's rom folders through install/games/ and keeps
what the games need: per system what its default core reads, one region
where the content proves it (crc32 and size, a disc serial, a header the
core reads), an arcade set's BIOS parents. A game not recognised gets
every BIOS of its system and is named. --required-only keeps only what
starts. The plan and the line menu open on it when the card holds games,
everything one press away. A cache keeps what reading a card found.
2026-11-03 18:51:21 +01:00
Abdessamad Derraz 27bd4f1a50 fix: one failure line per file, tests stay local 2026-11-03 14:31:49 +01:00
Abdessamad Derraz 2478c2a96c fix: tick lists wrap, tests follow the new keys 2026-11-03 14:24:51 +01:00
Abdessamad Derraz 48fa8abf44 chore: audit 24 and 17 cases, host kept out 2026-11-03 10:45:18 +01:00
Abdessamad Derraz b23b8f0a62 fix: find RetroArch-Win64 from WSL too 2026-11-03 10:12:38 +01:00
Abdessamad Derraz ea214d9c01 fix: every core ticked while none narrows the run
Cores drew every box empty when no core narrows the run, read as nothing
chosen. Every core is now drawn ticked, an untick keeps the others, All
and None work as on Choose systems, and the plan, Options and line mode
say all cores or N of M cores. A run with failures counts once, the
failed files said as failed.
2026-10-28 16:51:14 +01:00
Abdessamad Derraz a4faf536dd fix: a games part is its system's card
Closes every finding of code_audit_23 and tui_audit_16: AmberELEC and
EmuELEC cards found as theirs, ArkOS cards told by bgmusic or
launchimages, counts that agree and read a copy of the right size before
calling it in place, one terminal width, line mode in the screen's order
and words, a tap shown armed, and which-pack naming the first screen.
2026-10-28 16:34:55 +01:00
Abdessamad Derraz 297a57837f fix: pages say what the installer shows
The site, the README and the wiki take the screen's row names and the
--check pass line from install.py, and the wiki's line menu example is
written by generate_installer_doc from the function line mode runs.
which-pack describes the full screen the one-liner opens instead of a line
menu typed by hand. The systems question lays out in 80 columns under
Python 3.8, whose pty reports no width, and a test no longer reads the
host's drives.
2026-10-28 15:00:21 +01:00
Abdessamad Derraz 9314edb0be fix: one vocabulary and one count in both modes
Line mode says the screen's words for the files in place, missing or to
replace, counts the data files in its last line, names what the --from
folders hold before Enter, says Copying and the result's count once, and ends
every result with the same-choice command. Each data tree is hashed once per
run. A wrapped command reads one rule for PowerShell, a pack path keeps its
file name, folder lines keep one indent, and the systems question fits its
terminal. On the screen a tap on the focused Install row arms it, the Game
data row keeps the focus, a choice in place opens on Choose systems, a pack
holding none of the files offers no Install, and the 40x12 plan keeps its
version note.
2026-10-28 14:02:46 +01:00
Abdessamad Derraz 9911321227 fix: a card is told by what its system writes
A drive is a handheld's games part only when it holds the folders ArkOS,
AmberELEC or EmuELEC write there, and never a disk Windows or Linux calls
fixed. A data drive or a stick with a bios folder is listed with a note,
never taken under Enter. Two cards are named in the plural, and the
settle of a new screen runs from when it is drawn.
2026-10-28 13:28:01 +01:00
Abdessamad Derraz 23804a8da3 fix: one total and the same words in both modes
Commands break between shell words with a continuation the shell reads,
an option kept with its value. The 40x12 setup and plan keep a note or a
folder whole. Line mode counts files in place and missing, and names the
BIOS folder, as the screen does. The systems question fits its terminal.
2026-10-28 12:19:50 +01:00
Abdessamad Derraz 5bf29b3dab fix: find unnamed cards and fit the served copy
An ArkOS or AmberELEC games part is named on the first screen and comes
first at the folder question. Packs that lack files are said so before
any plan. The served bootstrap gives advice that fits it, and the site
build refuses a copy whose pin is not its installer.
2026-10-28 11:57:14 +01:00
Abdessamad Derraz 2e870d0692 fix: settle new screens before taking a tap
A press within 400 ms of a new screen belongs to a double tap on the
screen before and is dropped. A second tap is asked only of entries that
write files with nothing after them. The game data toggle keeps hidden
ticks, a choice in place offers no Install, and one total per plan.
2026-10-28 11:39:18 +01:00
Abdessamad Derraz 7259dbc7c4 chore: merge one choice per run and seen taps
# Conflicts:
#	install.ps1
#	install.sh
#	install/launchers/index.json
2026-10-28 06:49:39 +01:00
Abdessamad Derraz 03eac0da94 fix: usage names install.py, not its copy
install.ps1 runs a copy named retrobios-install-<guid>.py, and --help and
every usage error printed that name. The parser names install.py.
2026-10-28 06:28:38 +01:00
Abdessamad Derraz 10af16f55d fix: definitions whole in a 40x12 help
The data files definition was cut in its second sentence at 40x12: the
help gives both kinds in a few words when the sentences do not fit.
2026-10-28 06:13:40 +01:00
Abdessamad Derraz 8021db632d fix: one choice per run, taps seen before acting
Answers code_audit_20 and tui_audit_13. A tap acts on the frame it was
made on, bar entries that install, quit or open Confirm take two taps,
and Preferred regions keep their rows while open. Every check of a list
keeps the systems ticked, the plan's counts read the list the check
read, line mode leaves game data out of the choice alone, Confirm counts
copies, a pack's missing files are said before a size, and paths break
after a separator only.
2026-10-28 06:10:10 +01:00
Abdessamad Derraz 9e6af0aa6b feat: serve the one-line installer from the site
The site serves install.sh at /retrobios/i and install.ps1 at
/retrobios/i.ps1. generate_site.py writes both copies with the
installer address set to install.py at the commit the site is built
from (GITHUB_SHA in CI, HEAD locally), so the pinned SHA-256 and the
downloaded installer always come from one commit, including while a
deploy is still running.

Every command a user copies names the short address. The raw form
stays on the installer page as the fallback. Deploy Site now runs on
changes to install.sh and install.ps1. The install box weight keeps
the address length its ratio was fitted on, so no console page moves.
2026-10-28 05:47:38 +01:00
Abdessamad Derraz c8377de90d feat: taps follow the row, quits exit 2
code_audit_19 and tui_audit_12. A tap ticks a box and opens a choice on a
second tap of the row the screen saw tapped. One list drives the plan's game
data row, save line and data files. The version note, --offline in shown
commands, exit 2 for a chosen quit, legacy mouse reports read from bytes,
colour roles that read their words, the setup list's device column, the
copy browser, a drive two systems fit, WSL's Windows folder, and line mode
wording.
2026-10-28 03:15:07 +01:00
Abdessamad Derraz c9d4fbbbd8 chore: merge mouse and touch input
# Conflicts:
#	install.ps1
#	install.sh
#	install/launchers/index.json
2026-10-27 19:42:11 +01:00
Abdessamad Derraz 6e30e86d42 chore: merge main into mouse input
Pins and launcher index recomputed for the merged install.py. Mouse modes are now written before the frame, so a screen read back already takes clicks.
2026-10-27 19:29:42 +01:00
Abdessamad Derraz 7ec4d00375 chore: merge true platform list versions
# Conflicts:
#	install.ps1
#	install.py
#	install.sh
#	install/launchers/index.json
2026-10-27 19:18:57 +01:00
Abdessamad Derraz c8eb3a79e3 feat: say when the system runs another version
The installer reads the version the system states in its own file,
without running anything: batocera.version, recalbox.version (a release
only), RetroBat's system/version.info, VERSION_ID in os-release on Lakka
and EmuELEC. When it differs from the version the list was built for, a
line says so before the install and again with the result, and the new
version event carries it for the screen. An unknown version says
nothing, and the install never stops on it.
2026-10-27 19:10:44 +01:00
Abdessamad Derraz 72287e3310 feat: take clicks and taps on the full screen
Modes 1000 and 1006 only, SGR and legacy reports decoded, a hit map built from each drawn frame, action on release. Off on every way out, on the screens whose text is copied, with a pad route or RETROBIOS_NO_MOUSE.
2026-10-27 19:06:34 +01:00
Abdessamad Derraz c12cecde33 refactor: count every run line from one tally
The run header, the menu, its game data split and g, the plan, the
screen's plan and game data row and both results now divide one tally
of the list the run keeps. Case variants were counted on the run and
missing from the screen's split, g counted the whole list under a head
narrowed by c, and the result left out the data tree files. The wiki
examples come from real runs of 2026-10-27.
2026-10-27 19:01:13 +01:00
Abdessamad Derraz 230885b77f feat: paint the installer with colour roles
One table of roles from the 16 basic colours (accent, success,
warning, failure, muted, strong, selected) read by the full screen and
by the end of a line-mode run. Status words take their role from one
pattern table, the text never changes, and colour is off with NO_COLOR,
TERM dumb or unset, a terminfo entry naming fewer than 8 colours, or an
output that is not a terminal.

Colour goldens keep the escape codes, and a test strips them back to
the text goldens.
2026-10-27 18:19:26 +01:00
Abdessamad Derraz a4af2ffda4 fix: name --offline when given, keep page budget
--offline given with the variable set is named as the option, and the
runs the screen starts get it only when the user gave it. The first
install page stays under its 400 words, the 3.8 runs skip only the
pack test that needs generate_pack.
2026-10-27 16:57:34 +01:00
Abdessamad Derraz 39c2809a4b fix: polish the screens audit 11 named
Long messages scroll with their position, a small window says why the
questions come line by line, one bar rule per width, the folder a
config names sits under it and wraps whole, the help while typing a
filter lists what does not type, the plan names --core and --region,
pc finds the computer setups, rows keep sizes near their names, a
partial result counts once, a quit is said as one, the WSL browser
names drives by letter and No connection names the pack.
2026-10-27 16:27:47 +01:00
Abdessamad Derraz 302c7737b2 fix: one remedy per card and plainer line mode
A full or read-only card is freed or unlocked, checked again first,
never left for another drive. Line mode names --dest where it said
choose another one, numbers out of range, the folder copied from, the
frontend's save directory and the command after Enter. The words name
RETROBIOS_INSTALL_OFFLINE when it, not --offline, made a run offline.
2026-10-27 16:13:10 +01:00
Abdessamad Derraz 0fb1047231 feat: count game data apart from BIOS files
The installer knew BIOS files from game data and no count showed it.
The plan, the line menu and the result count them apart for a list that
marks game data, the plan gets a game data row and the menu a g key,
each toggling it in one press, and one sentence says what game data is.
2026-10-27 16:03:25 +01:00
Abdessamad Derraz 992bc8ce70 fix: keep paths whole and spelled one way
A Termux run named /sdcard and /storage/emulated/0 for one storage, read
saves/<core> as a folder, split a backup path and the restore command
inside their words and named no folder for missing game data. Paths are
spelled as the BIOS folder was named, folders per core are said in
words, the result keeps paths and commands whole, and the game data line
names the folder it goes in.
2026-10-27 15:50:51 +01:00
Abdessamad Derraz 2ab01d3eec fix: ignore Ctrl-Z when no shell can resume
Started with no job-control shell, a Ctrl-Z stopped the screen and its
launcher for good. The key now stops it only when its process group is
a shell's job, and the bar says why otherwise.
2026-10-27 15:39:50 +01:00
Abdessamad Derraz 0fa4552dae fix: refuse only the axis a list lacks
The MinUI family's lists record cores and regions and no system: every
narrowing was refused with a remedy that fetched the same list. Each
option is now refused by the axis missing, with what works, and a pack
names its platform's list only when that list records the axis. Line
mode names what c chooses and skips a question with one answer, and
Options leaves out parallel downloads when nothing is downloaded.
2026-10-27 15:37:24 +01:00
Abdessamad Derraz 5704dd6793 fix: offer a drive by the folder its system reads
RetroArch's folder question numbered a Batocera SHARE drive and filled
its root. A drive is now offered by its own system's BIOS folder, one
nothing names by its bios folder, and another system's is left out and
named with the options that reach it. A list or pack card setups read
too opens on those setups, in both modes.
2026-10-27 15:19:03 +01:00