Commit Graph
15 Commits
Author SHA1 Message Date
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
Abdessamad Derraz a296bbfdff fix: keep why a data tree or a copy failed
A damaged member of a data tree's archive (zlib.error, EOFError) ended
the run on a traceback, and a failed write left its .part. --offline
refusing a data tree, or the download after a --from copy failed, lost
its kind, so the advice named the network instead of --offline.
2026-10-23 20:49:23 +02:00
Abdessamad Derraz 246b6c6efc fix: print found paths as the terminal shows them
The line output printed the --from folder, the files found there and
the BIOS folder paths as they are: a name holding ESC drove the
terminal. screen_text moves out of the interface section and cleans
every line of the check, the copy plan and the unreadable list.
2026-10-23 20:42:55 +02:00
Abdessamad Derraz 3523e46595 fix: open each archive of a folder once
Each ZIP member read reopened its archive and parsed its directory
again: 4000 members of one size made 4000 parses. A folder index keeps
the archives it reads open, 16 at most, read under a lock from the copy
threads, and every index is closed at the end of the run. Archives the
list installs are still opened and closed at once.
2026-10-23 20:40:57 +02:00
Abdessamad Derraz f4f95740dd chore: merge main into the interface fixes 2026-10-23 18:32:43 +02:00
Abdessamad Derraz e534f11713 fix: second audit of the full-screen interface
- A handheld card mounted on a computer is found by the files its
  firmware writes there: muOS, Onion, spruceOS, CrossMix, Allium and
  Koriki from their device rules read below the card root, KNULLI and
  ROCKNIX from the share their first boot seeds. It is a setup of its
  own ("muOS SD card (E:\)") with the folder that system reads, and
  --dest <card root> writes there too. --platform muos with a folder
  that is no muOS card is refused with the folder to name.
- Space (X on PortMaster, Y on muxterm) opens the confirm screen from
  Install and never installs, closes or quits by itself.
- Short of space, Choose another folder comes first, and the result
  says the card is full in words, with no log lines and no command
  naming the interface's own copy of the list.
- The plan keeps the BIOS folder second, cut in its middle, a --from
  folder by its name, and the config that named the folder.
- The result says how many files came from the old card, how many
  were downloaded and how many are still missing, as the line mode.
- The "other" row is named and explained, files shared by several
  systems are counted apart, and a file that cannot be supplied is
  named with its system, only where it matters.
- A work folder left by SIGKILL is removed by the next run, a failed
  run's log after a week. A full card keeps no log.
- Smaller: the sudo advice names the folder, removing a --from folder
  says so, the preview counts its files only, a proxy is named, a list
  that is no JSON and the clock error read as plain sentences.
2026-10-23 18:31:33 +02:00
Abdessamad Derraz a5e025b7ee feat: transfer event splits local and network
The engine counts the bytes a copy, the pack or a resumed partial copy
supplied, and those the network brought. A transfer event carries both
after each progress event and once when the downloads end, so a screen
shows a download speed without guessing.
2026-10-23 18:23:22 +02:00
Abdessamad Derraz b0e9894275 chore: test --from around the BIOS folder
An archive the run replaces gives no member to copy: the lookup that
skips it came with the one-pass index, this test holds it.
2026-10-23 18:15:39 +02:00
Abdessamad Derraz 28037c8b53 fix: keep the --from search on one drive
The walk no longer enters another drive mounted below the folder (it is
named instead), /proc, /sys, /dev or a Windows junction, and the root of
the system is refused. from_folder_problem() checks a folder without
reading it. A scanned event reports each folder read, cut short or not.
2026-10-23 18:15:19 +02:00
Abdessamad Derraz 2da724879b fix: name --from copies that could not be read
A file, ZIP member or folder below a --from folder that could not be
read was taken as no match. When its size is that of a file the run
still needs, or unknown, --check, --dry-run and an install now name it
with the reason, and an unreadable event carries it.
2026-10-23 18:08:49 +02:00
Abdessamad Derraz 6f541e9b8c fix: tell an unreadable copy from a locked folder
A copy that could not be read when it was copied was reported as a
folder not writable. The source is now opened first and its errors are
its own, and a download failing after it names both reasons. A run
reading a pack falls back to the pack, never to the network.
2026-10-23 18:03:05 +02:00
Abdessamad Derraz c6926e10b8 fix: index archives and sizes once in the check
A missing file walked every archive of the BIOS folder and every file of
its size: 3,000 ZIPs and 3,000 missing files took 186 s, now under 1 s.
--from copies and the owner of a refused file use the same lookups.
2026-10-23 17:59:25 +02:00
Abdessamad Derraz 339ddf2d89 feat: copy from an old card in the interface
The plan offers the folder browser, mounted cards first and ZIPs listed,
to add --from (Options adds a second one, Left takes it back), checks the
folder again and says how many files it holds and how many are left to
download. Misplaced files are counted with a Show list of their reasons,
and a local copy no longer counts in the download speed. The found event
test now holds that the interface reads it after a check and an install.
2026-10-23 16:57:28 +02:00
Abdessamad Derraz 5136c5a53a chore: merge main into the --from branch 2026-10-23 16:35:39 +02:00
Abdessamad Derraz 44cdf2984b feat: copy BIOS files from a folder with --from
--from FOLDER (repeatable, a ZIP accepted) reads an old SD card, a
backup or a Downloads folder: files indexed by size, hashed only when
a size matches an entry, ZIP members included. Each file is copied,
checked again once written, and the source is never modified. Mac ._
files, system folders and links leading out of the folder are skipped.

An install also puts in place the files it finds misplaced in the BIOS
folder (bios/bios/, a pack extracted one level too deep, a name in
capitals, a ZIP never extracted, one folder up), leaving the user's
copy where it is. --check and --dry-run say what a run would copy.

Events gain one kind, found, sent before the copy, which a downloaded
event then reports. The end of the run says where each file came from.
2026-10-23 15:59:21 +02:00