fix(install): label and explain the swap-size prompt
Some checks failed
Check / eval (push) Has been cancelled
Some checks failed
Check / eval (push) Has been cancelled
BACKLOG #93 (Acer live pass): the swap field appeared as a bare prefilled number — gum never renders the placeholder once --value is set, and the block had no section header, so nothing said what the value meant. Add a visible "Swap & hibernation" section, two info lines (default = RAM keeps hibernation possible; 0 = no swap), a labeled --header on the input, and make the info + Review lines state the outcome in full ("N GiB swapfile (enables hibernation)" / "none (hibernation disabled)"). Default behavior unchanged (swap = RAM). Verified: V2 — interactive KVM UI drive of the built ISO; viewed 10-swap-prompt.png (section + explanations + labeled input) and the Review box ("Swap: 6 GiB swapfile (enables hibernation)") in /tmp/nomarchy-v2-swap-93/; the wipe confirmation was aborted, nothing touched. bash -n + nix flake check --no-build green. Side-finding recorded on #112: QEMU's /dev/fd0 was listed first by the disk picker (live repro evidence in the same artifacts). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -30,14 +30,6 @@ These are separate queue items from one real install/session pass. Preserve
|
|||||||
that separation when fixing them: the installer blocker, unclear installer
|
that separation when fixing them: the installer blocker, unclear installer
|
||||||
copy, and post-install desktop failures have different verification paths.
|
copy, and post-install desktop failures have different verification paths.
|
||||||
|
|
||||||
### 93. Installer: swap-size field lacks a clear prompt/explanation
|
|
||||||
|
|
||||||
The partition value appears prefilled without a caption explaining that it is
|
|
||||||
swap size. Keep the resolved product default (swap exactly equal to RAM), but
|
|
||||||
label the field, state its unit/default, and explain the no-swap value. Pass =
|
|
||||||
the summary makes the resulting swap allocation unambiguous before disk
|
|
||||||
changes begin.
|
|
||||||
|
|
||||||
### 94. Live ISO/install: no default browser observed
|
### 94. Live ISO/install: no default browser observed
|
||||||
|
|
||||||
Chromium is the resolved default-browser decision and is present in the
|
Chromium is the resolved default-browser decision and is present in the
|
||||||
@@ -155,7 +147,10 @@ effects made clear and each existing recovery path represented once.
|
|||||||
### 112. Installer disk-picker safety
|
### 112. Installer disk-picker safety
|
||||||
|
|
||||||
Exclude floppy, pseudo, tiny, and otherwise non-installable devices such as
|
Exclude floppy, pseudo, tiny, and otherwise non-installable devices such as
|
||||||
`/dev/fd0`; never select them by default. Pass = the real install disk is clear,
|
`/dev/fd0`; never select them by default. **Reproduced in QEMU 2026-07-13**
|
||||||
|
(#93's V2 run): with OVMF the guest exposes `/dev/fd0` and the picker listed
|
||||||
|
it FIRST — a blind Enter selected it (artifacts:
|
||||||
|
`/tmp/nomarchy-v2-swap-93/20-review.png`, `Disk: /dev/fd0 (WILL BE ERASED)`). Pass = the real install disk is clear,
|
||||||
invalid devices cannot reach destructive setup, a permanent guard covers the
|
invalid devices cannot reach destructive setup, a permanent guard covers the
|
||||||
filter/default logic, and a pre-destructive KVM run proves the picker behavior.
|
filter/default logic, and a pre-destructive KVM run proves the picker behavior.
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,23 @@ Template:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 2026-07-13 — #93 installer swap prompt labeled + explained (this commit)
|
||||||
|
- **Task:** BACKLOG #93 — the swap field was a bare prefilled gum input (no
|
||||||
|
visible section, label, or unit; the placeholder never shows once a value
|
||||||
|
is prefilled).
|
||||||
|
- **Did:** `nomarchy-install.sh`: visible "Swap & hibernation" section, two
|
||||||
|
info lines (default = RAM ⇒ hibernation-ready; 0 = no swap), a labeled
|
||||||
|
`--header` on the input, and unambiguous info + Review lines
|
||||||
|
("N GiB swapfile (enables hibernation)" / "none (hibernation disabled)").
|
||||||
|
- **Verified:** V2 — full interactive KVM UI drive on the built ISO; VIEWED
|
||||||
|
`/tmp/nomarchy-v2-swap-93/10-swap-prompt.png` (section, both info lines,
|
||||||
|
labeled prefilled input) and `…/30-doctor.png` (Review box:
|
||||||
|
"Swap: 6 GiB swapfile (enables hibernation)"); wipe confirm aborted by
|
||||||
|
mismatch, nothing touched. bash -n + V0 flake check green.
|
||||||
|
- **Pending:** side-finding: QEMU exposed `/dev/fd0` as the FIRST picker row
|
||||||
|
— recorded as live repro evidence on #112.
|
||||||
|
- **Next suggestion:** #99/#107 commits from the same evidence run.
|
||||||
|
|
||||||
## 2026-07-13 — charge-limit start-limit-hit on spaced AC storms (this commit)
|
## 2026-07-13 — charge-limit start-limit-hit on spaced AC storms (this commit)
|
||||||
- **Task:** Live V3 failure of #101 (TuringMachine doctor badge, 18:16): a
|
- **Task:** Live V3 failure of #101 (TuringMachine doctor badge, 18:16): a
|
||||||
spaced dock/AC event storm → 5 successful starts in 10s →
|
spaced dock/AC event storm → 5 successful starts in 10s →
|
||||||
|
|||||||
@@ -279,15 +279,20 @@ info "Encryption: $([[ $WITH_LUKS == true ]] && echo "LUKS2 (desktop auto-login)
|
|||||||
# ─── Swap / hibernation ─────────────────────────────────────────────────
|
# ─── Swap / hibernation ─────────────────────────────────────────────────
|
||||||
# A swapfile ≥ RAM on its own BTRFS subvolume makes hibernation possible;
|
# A swapfile ≥ RAM on its own BTRFS subvolume makes hibernation possible;
|
||||||
# the resume offset is wired into the config below.
|
# the resume offset is wired into the config below.
|
||||||
|
section "Swap & hibernation"
|
||||||
|
|
||||||
ram_gb=$(awk '/MemTotal/ {print int(($2 + 1048575) / 1048576)}' /proc/meminfo)
|
ram_gb=$(awk '/MemTotal/ {print int(($2 + 1048575) / 1048576)}' /proc/meminfo)
|
||||||
if [[ "$UNATTENDED" == "1" ]]; then
|
if [[ "$UNATTENDED" == "1" ]]; then
|
||||||
SWAP_GB="${NOMARCHY_SWAP_GB:-$ram_gb}"
|
SWAP_GB="${NOMARCHY_SWAP_GB:-$ram_gb}"
|
||||||
else
|
else
|
||||||
|
info "A swapfile sized ≥ RAM lets this machine hibernate (suspend to disk)."
|
||||||
|
info "Default = ${ram_gb} GiB (this machine's RAM). Enter 0 for no swap (disables hibernation)."
|
||||||
SWAP_GB=$(gum input --value "$ram_gb" \
|
SWAP_GB=$(gum input --value "$ram_gb" \
|
||||||
|
--header "Swap size in GiB (default ${ram_gb} = RAM, 0 = no swap)" \
|
||||||
--placeholder "swap size in GiB (≥ RAM enables hibernation, 0 = none)")
|
--placeholder "swap size in GiB (≥ RAM enables hibernation, 0 = none)")
|
||||||
fi
|
fi
|
||||||
[[ "$SWAP_GB" =~ ^[0-9]+$ ]] || fail "Swap size must be a whole number of GiB."
|
[[ "$SWAP_GB" =~ ^[0-9]+$ ]] || fail "Swap size must be a whole number of GiB."
|
||||||
info "Swap: $([[ "$SWAP_GB" == "0" ]] && echo none || echo "${SWAP_GB}G swapfile (hibernation-ready)")"
|
info "Swap: $([[ "$SWAP_GB" == "0" ]] && echo "none (hibernation disabled)" || echo "${SWAP_GB} GiB swapfile (hibernation-ready)")"
|
||||||
|
|
||||||
# ─── User account ───────────────────────────────────────────────────────
|
# ─── User account ───────────────────────────────────────────────────────
|
||||||
section "Your account"
|
section "Your account"
|
||||||
@@ -442,7 +447,7 @@ fi
|
|||||||
gum style --border normal --padding "0 2" \
|
gum style --border normal --padding "0 2" \
|
||||||
"Disk: $TARGET_DISK (WILL BE ERASED)" \
|
"Disk: $TARGET_DISK (WILL BE ERASED)" \
|
||||||
"Encryption: $([[ $WITH_LUKS == true ]] && echo "LUKS2 + desktop auto-login" || echo none)" \
|
"Encryption: $([[ $WITH_LUKS == true ]] && echo "LUKS2 + desktop auto-login" || echo none)" \
|
||||||
"Swap: $([[ "$SWAP_GB" == "0" ]] && echo none || echo "${SWAP_GB}G (hibernation)")" \
|
"Swap: $([[ "$SWAP_GB" == "0" ]] && echo "none (hibernation disabled)" || echo "${SWAP_GB} GiB swapfile (enables hibernation)")" \
|
||||||
"User: $USERNAME" \
|
"User: $USERNAME" \
|
||||||
"Hostname: $HOSTNAME_" \
|
"Hostname: $HOSTNAME_" \
|
||||||
"Timezone: $TIMEZONE" \
|
"Timezone: $TIMEZONE" \
|
||||||
|
|||||||
Reference in New Issue
Block a user