feat(installer): v0.6 ergonomics + polish — 5 quick wins #3
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/ux-installer-v06-polish"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
v0.6 ergonomics + polish wave — installer quick wins
Five quick-win fixes from the v0.6 polish list, all landing in
overlay/usr/local/bin/veilor-installer. One commit per fix.Fixes
gum input --password→ bashread -srp(commit6d86e00)Kills the duplicate-"Install" + stray-"T" fbcon render glitch that has been visible in every install since v0.5.27.
gum input --password's bubbletea screen-restore writes back the previous menu buffer because the linux framebuffer terminfo lackscivis/cnormcursor-hide sequences.read -srpis a single termios echo-off — no redraw, no glitch. Header rendered separately viagum styleso visual parity with the rest of the installer is preserved. Whiptail fallback path unchanged.Banner staged reveal at 40ms/line (commit
4c1895d)Read
banner.txtline by line with a 40ms sleep between each, then clear and redraw the bordered gum-style version. 5-line banner × 40ms = 200ms total reveal — slow enough to land an aesthetic on the first frame, fast enough that the operator never feels it as lag.Confirm-twice for LUKS + admin password (commit
767fe71)Re-prompt LUKS passphrase + admin password, string-compare, reject mismatch. A typo in the LUKS passphrase is unrecoverable (the disk is unmountable without it; we don't escrow). Catches keyboard-layout surprises before they brick the install.
10s reboot countdown (commit
138a047)Replace the static
sleep 5with a 10 → 1 redraw loop printing the remaining seconds viaclear+gum styleeach tick. 10s (vs 5s) because operators were missing the eject window — laptops with the USB on the far side of the dock take 4-5s to physically reach.Eject-media reminder promoted to its own box (commit
b64ee19)The reminder used to be one line buried inside the green success box and operators routinely missed it. It is now its own loud yellow thick-bordered gum-style box stacked directly below the success/countdown box, with three explanatory lines, redrawn for the full 10s of the countdown.
Before / after pseudo-screenshot
Before — v0.5.32 password screen (broken)
After — v0.6 password screen (clean)
Before — v0.5.32 success screen
After — v0.6 success screen
Notes on duplicate "Install" investigation
Task brief asked whether the duplicate-"Install" warranted a
gum choose→selectswap. Conclusion: no swap needed.main_menu()only contains ONE "Install" entry. The duplicate render was bubbletea's screen-restore replaying the previous menu buffer onto the password screen — fixing the password screen (fix 1) eliminates the artefact at its source.gum chooseitself renders cleanly on the framebuffer because it doesn't go through the read-then-restore path thatgum input --passworduses.Test plan
bash -n overlay/usr/local/bin/veilor-installer(passes locally)TUI=whiptail veilor-installeron minimal imageConstraints honoured
overlay/usr/local/bin/veilor-installer)nullstone(Forgejo) only, NOT toorigin(GitHub)bash -nclean