Every transaction hides its wall of text behind a spinner and prints one summary line. Full output goes to /tmp/fedora-setup-dnf-.log and the last 20 lines print in red on failure — nothing hidden, just compact. Unattended/no-gum runs keep plain output.
Plus: fallback menus accept x again, and two small fallback bugs fixed (stray newline in captured answers, pluralization).
Note: branches on top of feat/gum-tui (PR #6) — merge that first, this PR retargets or stacks cleanly.
Every transaction hides its wall of text behind a spinner and prints one summary line. Full output goes to /tmp/fedora-setup-dnf-<uid>.log and the last 20 lines print in red on failure — nothing hidden, just compact. Unattended/no-gum runs keep plain output.
Plus: fallback menus accept x again, and two small fallback bugs fixed (stray newline in captured answers, pluralization).
Note: branches on top of feat/gum-tui (PR #6) — merge that first, this PR retargets or stacks cleanly.
ui_quiet_run wraps every install_packages/install_optional/group
install/remove and the system update: while gum is available and the
run is interactive, dnf output is hidden behind a spinner, then a
single 'Installing: <pkgs> (N packages)' line. Full output is appended
to $SETUP_DNF_LOG (/tmp/fedora-setup-dnf-<uid>.log); on failure the
last 20 lines print in red so nothing is lost. Unattended and no-gum
runs keep plain full output (logs/cron contract).
Also: fallback ui_choose accepts 'x' to exit (muscle memory from the
old menu), fixed a stray stdout newline leaking into captured answers
(same class as the earlier '\nno' bug), fixed pluralization.
Harness: piped fallback, pty gum run incl. a failing VirtualBox pick
(red failure + log tail, menu survives, subsequent qemu install ok),
unattended regression.
gum spin rendered static on the real VM during long transactions.
ui_quiet_run now draws its own line: braille spinner frame + the
package dnf is currently working on (from the transaction log), at
150ms ticks. Works without gum (pure bash), gated on interactive
terminal, not on gum.
set -e + pipefail bug found via pty trace: the first tick races the
child's first log line, grep exits 1 (no match) and pipefail turns the
whole substitution nonzero, killing the script silently at the first
frame. || true on the substitution pipeline fixes it.
First sudo call of the session printed its password prompt straight
into the live progress line: 'Installing (optional): gum[sudo]
password for yuri:' (VM screenshot). sudo -v asks once, on a clean
screen, right after the banner; the timestamp refreshes on every later
sudo use, so one prompt covers the whole run.
The braille spinner frames and the em-dash separator are multibyte
UTF-8; on the VM session they rendered as changing random letters, not
a spinner. Frames are now the classic | / - \ cycle, the separator is
':', and the two user-facing info lines that carried em-dashes are
ASCII too. Verified under LANG=C LC_ALL=C in a pty: zero non-ASCII
bytes in the entire output.
yuri
merged commit 3d75a666a4 into feat/gum-tui2026-10-27 19:49:14 +01:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Every transaction hides its wall of text behind a spinner and prints one summary line. Full output goes to /tmp/fedora-setup-dnf-.log and the last 20 lines print in red on failure — nothing hidden, just compact. Unattended/no-gum runs keep plain output.
Plus: fallback menus accept x again, and two small fallback bugs fixed (stray newline in captured answers, pluralization).
Note: branches on top of feat/gum-tui (PR #6) — merge that first, this PR retargets or stacks cleanly.