NoSignal-OS/os updates/wifi-password-retry
28allday 19fd794b6b NoSignal — fully-offline Arch → Hyprland desktop installer
Single-script builder (nosignal.sh) that turns a stock Arch Linux ISO into a
fully-offline installer for a themed Hyprland + caelestia (Quickshell) desktop:
matching SDDM greeter, Btrfs/Limine bootable snapshots, chwd-style GPU
detection, and a curated "os updates" layer (keybind cheatsheet, settings
panels, system polish, on-box management skill). See README.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 11:03:10 +01:00
..
install-wifi-password-retry.sh NoSignal — fully-offline Arch → Hyprland desktop installer 2026-06-21 11:03:10 +01:00
patch-network-connection.sh NoSignal — fully-offline Arch → Hyprland desktop installer 2026-06-21 11:03:10 +01:00
README.md NoSignal — fully-offline Arch → Hyprland desktop installer 2026-06-21 11:03:10 +01:00

wifi-password-retry — recover from a wrong Wi-Fi password

Fixes a stock-Caelestia bug; worth upstreaming.

Symptom

Enter a wrong Wi-Fi password once and you are locked out of that network in the UI:

  1. The password dialog saves the NetworkManager profile (with the bad PSK) immediately, and only deletes it if the dialog stays open long enough for its ~10-poll failure monitor to fire. Close the popout while it hangs on "Connecting…" — which is what everyone does — and the wrong-PSK profile survives.
  2. Every later click on that network hits the saved-profile fast path in utils/NetworkConnection.qml, which activates the profile with a null callback: the auth failure is swallowed, the password dialog never reopens, and there is no forget-network control in the popout. Only nmcli connection delete "<SSID>" in a terminal gets you out.

Cause

/etc/xdg/quickshell/caelestia/utils/NetworkConnection.qml, connectToNetwork():

if (hasSavedProfile) {
    Nmcli.connectToNetwork(network.ssid, "", network.bssid, null);   // <- trap
} else {
    // ... needsPassword -> password dialog (correct handling)
}

Fix

patch-network-connection.sh (idempotent, marker nosignal wifi-password-retry, backup at *.pre-nosignal) replaces the null callback with one that, on needsPassword:

  • stops the pending-connection timers (same cleanup the else-branch does),
  • Nmcli.forgetNetwork(ssid) — drops the bad profile,
  • reopens the password dialog (session path for the control center, onPasswordNeeded callback path for the bar popout).

Fixing this one spot also makes failure mode 1 self-healing: even if a bad profile survives a closed dialog, the next click re-prompts instead of looping silently. Profiles with a correct password are untouched — their activation succeeds and the callback does nothing.

A pacman hook (nosignal-wifi-password-retry.hook) re-applies the patch after every caelestia-shell upgrade, same mechanism as the updates-panel patch.

Version pin / drift

Pinned against the NetworkConnection.qml shipped with caelestia-shell 2.0.2. If upstream reshapes the hasSavedProfile branch, the patch script detects the miss, warns, and leaves stock behaviour in place — update the regex. If upstream fixes the bug properly, drop this component and its hook.

Test

  1. Connect to a WPA network and deliberately enter a wrong password; close the popout while it says "Connecting…".
  2. Click the same network again → the password dialog must reopen (stock behaviour: silent failure, no dialog, forever).
  3. Enter the correct password → connects.
  4. Relogin/reboot → still connected (saved profile now has the good PSK).

No new keybinds; nothing to add to NoSignal-keybindings.md.