Commit Graph
236 Commits
Author SHA1 Message Date
Abdessamad Derraz fe1e98917b fix: offer only what an install can do
Back from the systems list with nothing ticked keeps the ticks it
opened with, and None says First system once nothing is left to untick.
Confirm under --offline with nothing on hand has no Install, and the line
mode no longer asks to download what --offline never fetches. The line
mode counts the data files before its question.

Screen words: the checking clock starts at zero, a pack installs from
the pack, the copies found are said on a line of their own, the screen
of misplaced files says the copies stay, the save folder gets a line of
its own, the shared note is one line, a size keeps its unit, the same
save folder remedy on both screens, A Tick on the Miyoo bar, no Home
key in the help of a pad, and a system name said once with a pack.
2026-10-27 00:17:26 +01:00
Abdessamad Derraz 44f94ab703 fix: ask a card setup for its own card
A card system chosen on a computer, from --platform, the setup list, its
filter or the line-mode menu, always asks for its card. The card screen
lists only the cards whose files say they run that system, offers Look
again, and checks a browsed, typed or --dest folder as --dest is checked.
The line-mode Card root prompt lists the mounted drives, asks again on a
missing or foreign root, and asks before creating several folders. On the
device the detected folder is offered, and the bound card is forgotten
when another setup is chosen.
2026-10-27 00:04:56 +01:00
Abdessamad Derraz dc225acb57 chore: merge the last installer items
# Conflicts:
#	install.ps1
#	install.py
#	install.sh
#	install/launchers/index.json
2026-10-26 23:10:30 +01:00
Abdessamad Derraz b4a17fefe1 fix: give the kept copies a line of their own 2026-10-26 22:51:50 +01:00
Abdessamad Derraz c64f3215ea fix: say the misplaced copies stay in place 2026-10-26 22:20:42 +01:00
Abdessamad Derraz e919d8478e feat: pick one system in a few presses
A long systems list opens on None. A there unticks every system and
moves to the first one, and A on a system with nothing ticked installs
that one alone, so Enter still continues. Inside muxterm, which keeps
PgUp and PgDn for its scrollback, Left and Right on the D-pad page.

One system of 66 at 40x15 took 17 presses with a pad, 57 in muxterm;
it now takes 12 on both. The pyyaml check of the device lists skips
where pyyaml is not installed.
2026-10-26 22:20:29 +01:00
Abdessamad Derraz 57811270e3 fix: card setups, pager lines, devices, data size
A system that runs from its SD card (Onion, spruceOS, muOS, KNULLI,
MinUI...) named with --platform on a computer no longer takes that
computer's RetroArch folder: one mounted card of that system is used,
at a terminal the card root is asked, without questions the run stops
on the --dest example. The interface opens the card screen with the
mounted cards first.

The result pager scrolls and counts lines, so its last line is
reachable at every size. The setup filter knows the devices each
setup runs on, from the guides and the firmware pages. A new event
kind, data, gives the bytes of the data trees, and the plan shows
them.
2026-10-26 22:01:02 +01:00
Abdessamad Derraz da573fc6f3 chore: merge main into the p3 fixes 2026-10-26 21:19:43 +01:00
Abdessamad Derraz ad60a88deb fix: open the copy browser at a zip in downloads 2026-10-26 21:19:26 +01:00
Abdessamad Derraz ae3faec86b fix: help names only keys the route sends 2026-10-26 21:18:30 +01:00
Abdessamad Derraz e537a031d0 fix: name missing game data apart from firmware 2026-10-26 21:11:02 +01:00
Abdessamad Derraz 381ec6de69 fix: say why the plan's numbers differ 2026-10-26 21:09:53 +01:00
Abdessamad Derraz 7e96e12a4f fix: say nothing was found on the first screen 2026-10-26 21:08:55 +01:00
Abdessamad Derraz 42304f6df8 fix: a dry run asks no install, counts systems 2026-10-26 21:07:41 +01:00
Abdessamad Derraz 78c6821069 fix: say why confirm shows, and whose backup 2026-10-26 21:03:27 +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 536081ffb1 fix: name the folder whose files could not be read 2026-10-24 04:09:01 +02:00
Abdessamad Derraz c3978ec467 fix: count the tries a stalled list server gets 2026-10-24 04:08:28 +02:00
Abdessamad Derraz 831e187f84 fix: close idle before an install as a quit 2026-10-24 04:08:23 +02:00
Abdessamad Derraz 46f00f0110 fix: no second file count on the checking screen 2026-10-24 04:03:46 +02:00
Abdessamad Derraz 6a3471378e fix: one spelling of shared files per system
The focused system's size is spelled out below the list when its name
leaves no room for it. The browser's system folder test is renamed
_os_folder: _system_folder already names the --from refusal.
2026-10-24 04:02:57 +02:00
Abdessamad Derraz 3797b482d2 feat: set the save folder from the options 2026-10-24 03:59:21 +02:00
Abdessamad Derraz d24adf9592 fix: ask no standalone list in an offline run 2026-10-24 03:57:33 +02:00
Abdessamad Derraz 2d9db59c73 fix: let A pass over system and recycle folders 2026-10-24 03:56:53 +02:00
Abdessamad Derraz 3bb2506578 fix: say which folder the folder screen offers 2026-10-24 03:56:06 +02:00
Abdessamad Derraz d43e583201 fix: name the cfg behind a closed detected folder 2026-10-24 03:53:59 +02:00
Abdessamad Derraz 378487eca8 fix: tell a default set aside from none at all 2026-10-24 03:53:10 +02:00
Abdessamad Derraz 44093ba20a fix: no unsearched event from a quiet config read 2026-10-24 03:51:35 +02:00
Abdessamad Derraz 78de625294 fix: name the closed folder behind a link 2026-10-24 03:51:02 +02:00
Abdessamad Derraz 153ba479f6 fix: assume no default where detection was refused
The Flatpak RetroArch's folder at 000 hid the retroarch.cfg naming ~/Games/bios, and the run offered 6.6 GB to ~/.config/retroarch/system. A closed folder under HOME or above the default now leaves no default: --dest is asked for. Python 3.14's quiet Path.exists() refusals are told from absence by os.stat, and an assumed folder reads as the one a frontend usually reads.
2026-10-24 02:58:32 +02:00
Abdessamad Derraz d2ba7e18ba fix: search past a folder this user cannot open
One closed folder under HOME (~/.config/EmuDeck at 000) made the whole
detection return nothing: a RetroArch whose retroarch.cfg was readable
was lost and the run fell back to a folder it does not read. Every
detection probe now goes through _exists, _is_dir or _is_file, which
count a refused place as absent, name the closed folder once, and let
the other probes go on. The decorator stays as the last net.

The refusal is an unsearched event before detect. The interface keeps
the line above the list of setups. At HOME or a drive root A goes into
a visible subfolder, never a card or drive row nor .cache, and with
none it stays on Use this folder and says where it is. A default folder
taken because the platform was not found is no longer called detected.
2026-10-24 02:23:57 +02:00
Abdessamad Derraz fd33ad0d96 fix: let A go deeper from home or a drive root
With no usual folder the browser opened at HOME on Use this folder, and A pressed through the screens installed the BIOS files into ~. At HOME or a drive's root A now opens the first folder. Picking the old card to copy from is unchanged.
2026-10-24 01:38:31 +02:00
Abdessamad Derraz bd1c58b6f0 fix: say why detection cannot look, then go on
HOME kept across su without - made every detection probe raise PermissionError, and the run and the interface ended on a traceback. Detection now finds nothing there, says which folder this user cannot open and how to go on, on the first screen too.
2026-10-24 01:28:43 +02:00
Abdessamad Derraz 859f2c8a22 fix: match the idle line and keep the found folder
The handheld launcher compared the idle close's line without install.py's RetroBIOS: prefix, and its test fake printed it the same way, so the device still waited 300 s: a test now ties both to TUI_IDLE_WORDS. The interface offered the built-in default folder when the folder found here could not be opened, a folder RetroArch does not read.
2026-10-24 01:03:36 +02:00
Abdessamad Derraz f51bc069d5 fix: refuse a detected folder under a closed one
A system_directory read from retroarch.cfg under a folder this user cannot open ended the run, and the interface before its first screen, on a traceback. It now gets the refusal --dest gets. On a handheld, an idle close on an error screen shows that error for a few seconds instead of waiting for a button that cannot come.
2026-10-24 00:31:40 +02:00
Abdessamad Derraz 2a6a122d56 fix: close an idle error screen with its code
An idle close exited 0 on every screen, an error one too. It now exits with the error's or the result's code and prints that screen's words after the idle line.
2026-10-23 23:29:03 +02:00
Abdessamad Derraz 71162d124d fix: say a pipe when output goes to a pipe
| tee log.txt was told its output went to a file. The line now names a pipe or a file, and says how to keep the run or answer.
2026-10-23 23:27:11 +02:00
Abdessamad Derraz 359c260e98 fix: name the save folder the chosen run writes
The save-folder line came from the check run only: after Choose systems the result named it for an unticked system, and the Confirm screen left it out for a kept one. The confirm, preview and install runs now carry their own saves event.
2026-10-23 23:26:31 +02:00
Abdessamad Derraz 5c02196b27 fix: refuse a --dest this user cannot reach
Path.exists() raised PermissionError from _missing_dest in line mode and from _choose in the interface. The run now names the folder and exits 1 (error event stage dest), and the interface asks for another folder.
2026-10-23 23:24:36 +02:00
Abdessamad Derraz e61d1e22c0 fix: find retroarch.cfg for any --dest spelling
The config was looked up by the BIOS folder exactly as typed: a relative --dest, a link or another case sent save-folder files to a guessed folder and refused --installed-cores.
2026-10-23 23:19:29 +02:00
Abdessamad Derraz b25f500264 fix: ask no termios on a Windows console
A closed console answered ModuleNotFoundError from _terminal_gone inside run_tui's except block. The interface paths now run in a test with the POSIX modules gone.
2026-10-23 23:17:43 +02:00
Abdessamad Derraz 3db8ddae2b feat: name the save folder and the pack on screen
The plan and the result now say how many files go to the save folder and
where, from a new saves event. With --from-pack they say the files come
from the pack, not a download. A stop asked for (Start+Select, SIGHUP)
ends on the plain outcome, without the log's last lines.
2026-10-23 22:34:24 +02:00
Abdessamad Derraz e003828e26 fix: ask nothing when the output goes to a file
install.py > log.txt at a terminal wrote the menu into the file and
waited for an answer nobody saw. A question now needs stdin and stdout on
a terminal, otherwise the run goes on as with --no-input and says so.
2026-10-23 22:30:47 +02:00
Abdessamad Derraz c53715d7b9 fix: a refused write also marks a closed window
A window can still answer tcgetattr while refusing writes. The check now
tries both, as the audit asked, and takes the terminal itself so a stand-in
without a descriptor is never read.
2026-10-23 22:29:00 +02:00
Abdessamad Derraz 19c57b3d68 docs: say a connect timeout counts as a stall 2026-10-23 22:14:34 +02:00
Abdessamad Derraz c67dd2ad46 fix: drop install anyway when nothing can come
Offline with nothing here to copy, Install was removed, and a folder
short of space or read-only then put Install anyway back: a run that
could only fail every file.
2026-10-23 22:14:17 +02:00
Abdessamad Derraz bc4bcadcd3 fix: keep a crash log for a card read error
Any EIO was read as the window closing, so a failing SD card ended the
interface with 129 and no error.log. The error now counts as a closed
window only once the terminal itself no longer answers tcgetattr.
2026-10-23 22:13:42 +02:00
Abdessamad Derraz 76da554da9 fix: read retroarch.cfg for cores in a --dest run
A run given --dest, as every interface run is, never read the config
naming libretro_directory, so only installed cores found none where line
mode found them. core_dirs now asks _retroarch_config_for, as the save
directory does, and the advice to drop --dest goes.
2026-10-23 22:12:49 +02:00
Abdessamad Derraz b26ce7cbdc fix: close an idle interface past its first screen
RETROBIOS_IDLE_EXIT only counted while the first screen was up. Given
--platform, the check runs and the plan follows without a key, so the
close never came. It now counts from the end of the last run, as long as
no key has been pressed.
2026-10-23 22:07:31 +02:00
Abdessamad Derraz 89cfaeef5e fix: never hold open an archive the run replaces
A --from folder holding the BIOS folder kept the list's own archive open
after listing its members, and Windows then refused to move it aside or
replace it. The index now notes the places a run writes, closes the
archives among them and opens them only for the read at hand.
2026-10-23 22:06:01 +02:00