nosignal-shell/services
28allday e42538896f fix(nosignal): hardware-test round 4 — Wi-Fi join, multi-monitor popouts, sudo focus
From the 2026-06-20 Acer muxless-Optimus hardware test:

- F-wifi (NsNetwork.qml): the Wi-Fi panel was display-only — no onClicked,
  no password field — so a secured network could not be joined from the GUI.
  Wire the existing Network service: click to connect; open/saved networks
  connect directly; secured-without-profile expands an inline password field
  (StyledTextField, echoMode Password). Also strip a stray NUL byte that the
  on-box edit left at the `?? " "` sentinel. HW-verified on the test laptop.
- F-multimon (NsShell.qml + NsBar.qml + NsOverlay.qml): bar popouts mirrored
  on every monitor. Add a `screen` identity to NsShell; pills pass their
  output name; each NsOverlay only renders when it owns the open panel ("" =
  unscoped, for the global power modal). HW-verified dual-monitor.
- F-sudo (SudoToggleRow.qml): the passwordless-sudo prompt used the shared
  TUI.float class with no focus rule, so keystrokes missed it and three blank
  tries tripped pam_faillock with no feedback. Use a dedicated `nosignal-sudo`
  class (builder ships float/center/pin/stayfocused rules) and call the new
  `nosignal-sudo-toggle enable-tui` wrapper, which keeps the terminal open on
  failure so the reason is visible.

Add .gitattributes (*.qml/*.conf/*.json text) for clean diffs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 18:49:18 +01:00
..
Audio.qml fix: per monitor props not having ancestor scope 2026-04-13 00:07:55 +10:00
Brightness.qml fix: per monitor props not having ancestor scope 2026-04-13 00:07:55 +10:00
Colours.qml fix: transparency blur rule debouncing 2026-05-03 01:46:54 +10:00
GameMode.qml fix: global config use for rest of global props 2026-04-12 23:02:00 +10:00
Glyphs.qml fix(nosignal): hardware-test feedback round 2 — weather, dashboard, tray 2026-06-15 21:04:28 +01:00
Hypr.qml fix: global config use for rest of global props 2026-04-12 23:02:00 +10:00
IdleInhibitor.qml chore: fix prop order 2026-03-20 16:03:18 +11:00
Network.qml chore: fix rest of formatting issues 2026-03-22 16:08:57 +11:00
NetworkUsage.qml fix: format ci (#1513) 2026-06-04 23:07:20 +10:00
Nmcli.qml feat: impl changing network via nexus 2026-06-06 02:17:29 +10:00
NotifData.qml feat: always expire notifs if fullscreen 2026-04-26 15:13:28 +10:00
Notifs.qml fix: global config use for rest of global props 2026-04-12 23:02:00 +10:00
NsShell.qml fix(nosignal): hardware-test round 4 — Wi-Fi join, multi-monitor popouts, sudo focus 2026-06-20 18:49:18 +01:00
Players.qml feat: improve dashboard media tab 2026-05-04 03:47:03 +10:00
Recorder.qml chore: fix all import formats 2026-03-22 06:02:19 +11:00
Screens.qml chore: remove unused import 2026-04-12 03:47:42 +10:00
Theme.qml feat(nosignal): interface redesign — slim glass bar + floating popouts 2026-06-14 10:36:33 +01:00
Time.qml fix: per monitor props not having ancestor scope 2026-04-13 00:07:55 +10:00
Visibilities.qml chore: fix all import formats 2026-03-22 06:02:19 +11:00
VPN.qml fix: vpn disconnection toast (#1521) 2026-06-08 13:08:39 +10:00
Wallpapers.qml feat: set featured wall as default if no wall set 2026-06-08 01:03:00 +10:00
Weather.qml fix(nosignal): hardware-test feedback round 2 — weather, dashboard, tray 2026-06-15 21:04:28 +01:00