docs(agent): tick HARDWARE-QUEUE for Latitude 5310 2026-07-10 QA
All checks were successful
Check / eval (push) Successful in 2m57s
All checks were successful
Check / eval (push) Successful in 2m57s
Mark PASSes from the session: charge Custom type, bar/menus/capture, polkit, combined power, mixer, arrows, SUPER+?, caffeine, doctor, network blanks, lifecycle CLIs. Leave residual theme/ISO/greeter/etc.
This commit is contained in:
@@ -64,8 +64,8 @@ high-ROI, etc.) live in the journal + ROADMAP — not here.*
|
||||
|
||||
### Product / day-2
|
||||
|
||||
_(Battery charge-limit instant → shipped 2026-07-10: udev GROUP=users +
|
||||
menu live sysfs + oneshot reads live theme-state; V3 confirm on laptop.)_
|
||||
_(Battery charge-limit instant → shipped 2026-07-10; V3 PASS Latitude
|
||||
5310: Custom charge type + live menu + unplug re-apply.)_
|
||||
|
||||
_(Portal/Flatpak IR camera → **#71** docs (a); (b)/(c) still need T14s.)_
|
||||
|
||||
|
||||
@@ -4,36 +4,30 @@ Everything shipped at V1/V2 whose final verification needs real hardware.
|
||||
Agents **append** (newest at the bottom of a section) with exact steps;
|
||||
Bernardo runs them and either checks off (`[x]` + date + verdict) or files
|
||||
the failure as a NOW bug in BACKLOG.md. Machines: the **AMD dev box**
|
||||
(Ryzen AI laptop: AMD + fingerprint + NPU), the **Latitude 5410** (Intel
|
||||
QA machine), the **T14s** (webcam case).
|
||||
(Ryzen AI laptop: AMD + fingerprint + NPU), the **Latitude 5310/5410**
|
||||
(Intel QA — 2026-07-10 session on **5310**), the **T14s** (webcam case).
|
||||
|
||||
## Any machine (dev box is fine)
|
||||
|
||||
*2026-07-10 Latitude 5310 session (Bernardo) — ticks below marked PASS from
|
||||
that run; leftover open items still need a pass.*
|
||||
|
||||
- [x] **Unfree CLI default (2026-07-10)** — PASS (Bernardo, Latitude).
|
||||
- [ ] **Waybar icon+percentage spacing (2026-07-10, retest)** — after
|
||||
`home-update`: executive-slate (and boreal/summer) — high-volume
|
||||
glyph + `%`, keyboard layout glyph + code, battery glyph + `%`
|
||||
each have a clear gap (double-pad + mono face). Unified clock is
|
||||
one module (`HH:MM · Day DD Mon`). First pass: volume-high and
|
||||
keyboard still tight → pad doubled.
|
||||
- [x] **Waybar icon+percentage spacing (2026-07-10)** — PASS after double-pad
|
||||
(volume high / keyboard / battery no longer kiss text; unified clock).
|
||||
- [x] **Calendar on unified clock (2026-07-10)** — PASS (Bernardo).
|
||||
- [ ] **Rofi menu case-insensitive filter (2026-07-10)** — SUPER+M root
|
||||
Menu: type `sys` → **System** (dmenu path uses `rofi_menu` = `-i`;
|
||||
apps/drun already worked via config.rasi). Spot-check System and
|
||||
Tools filters the same way. Network picker inherits `rofi -i`.
|
||||
- [ ] **Charge-limit live apply (2026-07-10, retest)** — Latitude first
|
||||
pass: menu could not leave 80; unplug jumped to 100 until replug.
|
||||
After fix: System/Power → limit 60 then 90; toast shows “sysfs now
|
||||
N%”; `cat …/charge_control_end_threshold` matches without rebuild.
|
||||
Unplug, wait ~3s, still N% (delayed oneshot); plug still N%.
|
||||
- [x] **#41 float classes** — closed 2026-07-10: polkit float+same-ws PASS
|
||||
(Latitude); portal class from package desktop/libexec =
|
||||
`xdg-desktop-portal-gtk` (+ `.…-wrapped`); rules shipped. Spot-check
|
||||
residual: portal OpenFile floats after `nomarchy-home` (if not, note
|
||||
class from `hyprctl clients`).
|
||||
- [x] **Rofi menu case-insensitive filter (2026-07-10)** — PASS: SUPER+M
|
||||
`sys` → System; apps/drun already fine.
|
||||
- [x] **Charge-limit live apply (2026-07-10)** — PASS after Custom type fix
|
||||
(`45c584d`): menu 60/90/80 writes sysfs; toast; no rebuild needed.
|
||||
Adaptive was ignoring the cap while reporting end=80.
|
||||
- [x] **#41 float classes** — PASS polkit float+same-ws (Latitude); portal
|
||||
rules shipped (`xdg-desktop-portal-gtk`). Optional residual: OpenFile
|
||||
class if still tiles.
|
||||
- [ ] **#55 fingerprint enroll on real reader** — with
|
||||
`nomarchy.hardware.fingerprint.enable` and a physical reader: System ›
|
||||
Fingerprint › Enroll a finger; List shows it; Verify succeeds; optional
|
||||
Use for login (on) → `sys-rebuild` → login/sudo accept fingerprint.
|
||||
Use for login (on) → `nomarchy-rebuild` → login/sudo accept fingerprint.
|
||||
Menu surface is V1/V2 without a reader (self-gate + dry paths).
|
||||
- [ ] **#60 non-BAT* battery name (if available)** — on a machine whose
|
||||
system battery is **not** named `BAT*` (e.g. `CMB0`): confirm
|
||||
@@ -49,10 +43,9 @@ QA machine), the **T14s** (webcam case).
|
||||
confirm backgrounds/text match the theme (esp. rose-pine Dawn light
|
||||
bg `#faf4ed`, vantablack near-black `#0d0d0d`, catppuccin Mocha
|
||||
`#1E1E2E`). One pass cycling those five is enough.
|
||||
- [ ] **Battery charge limit re-apply on unplug** — `sudo nixos-rebuild
|
||||
switch` with `power.batteryChargeLimit = 80`, physically unplug/replug
|
||||
AC, confirm `charge_control_end_threshold` re-reads 80. (udev trigger
|
||||
already VM-verified.)
|
||||
- [x] **Battery charge limit re-apply on unplug** — PASS (Latitude
|
||||
2026-07-10): with limit 80, unplug ~3s + plug; sysfs stays 80
|
||||
(delayed oneshot + Custom type).
|
||||
- [ ] **SSH_AUTH_SOCK for GUI clients** — after relogin, launch a GUI git
|
||||
client (or `rofi`-launched terminal-less app) and confirm it reaches
|
||||
gpg-agent's SSH socket without an interactive shell parent.
|
||||
@@ -85,14 +78,8 @@ QA machine), the **T14s** (webcam case).
|
||||
comma layout + rebuild + relogin. The SUPER+? no-op found en
|
||||
route IS a real bug → BACKLOG item 26 (fix shipped — see the
|
||||
dedicated SUPER+? entry below).
|
||||
- [ ] **SUPER+? opens the cheatsheet** (item 32 re-fix — supersedes the
|
||||
item 26 attempt) — the bind is now `$mod SHIFT, slash` (the BASE
|
||||
keysym: Hyprland 0.55 resolves the sym with Shift consumed, so the
|
||||
old `question` keysym never matched while Shift was down — same
|
||||
pattern as the working `$mod SHIFT, 1` workspace binds). After
|
||||
`home-update` + relogin (or `hyprctl reload`), SUPER+? must open the
|
||||
keybindings cheatsheet, whose row still reads `SUPER + ?` (not
|
||||
`SUPER + SHIFT + ?`).
|
||||
- [x] **SUPER+? opens the cheatsheet** (item 32 re-fix) — PASS (Latitude
|
||||
2026-07-10): SUPER+? opens cheatsheet; row shows `SUPER + ?`.
|
||||
- [ ] **swaync readable on summer-day** (item 25 fix) — on summer-day
|
||||
after `home-update`: `notify-send "title" "body text"` shows
|
||||
readable body text; open the control centre (SUPER+N), hover a
|
||||
@@ -112,13 +99,9 @@ QA machine), the **T14s** (webcam case).
|
||||
(SUPER+? / root menu › Keybindings) now ends in ↩ Back and
|
||||
returns to the root picker; spot a couple of submenus (Display,
|
||||
VPN › Tailscale) still Back correctly after the audit pass.
|
||||
- [ ] **Network menu has no blank rows** (item 22 fix, needs Wi-Fi) —
|
||||
after `home-update`, open Tools › Network: no empty separator
|
||||
rows between the ethernet/wifi/VPN sections (compact = True).
|
||||
KNOWN RESIDUAL: if exactly one nameless wifi row remains showing
|
||||
only security+bars, that's a hidden-SSID AP — config can't filter
|
||||
it; report it and the follow-up is a small source patch skipping
|
||||
empty-name APs in create_ap_list.
|
||||
- [x] **Network menu has no blank rows** (item 22 fix) — PASS (Latitude
|
||||
2026-07-10 Round 4): Tools › Network, no empty separator rows.
|
||||
Residual hidden-SSID nameless row still possible (not a config bug).
|
||||
- [ ] **Keyboard hotplug picker (re-verify after in-flake graduation)** —
|
||||
plug an external keyboard post-login, pick a layout in rofi, confirm
|
||||
it applies per-device only, persists in `settings.keyboard.devices`,
|
||||
@@ -145,23 +128,13 @@ QA machine), the **T14s** (webcam case).
|
||||
`sudo nomarchy-snapshots`, restore a single file (`undochange`)
|
||||
and walk a root-config rollback up to (or through) the
|
||||
typed-`yes` gate.
|
||||
- [ ] **Caffeine toggle (item 13 slice)** — click in the bar → turns
|
||||
(warm tint on the generated bar) and hypridle must NOT lock /
|
||||
blank while it's on (wait past the 5-min lock); click again
|
||||
releases. Also present on both summer bars now.
|
||||
- [ ] **Screen recording (item 12)** — Tools › Capture: Record region
|
||||
(slurp) and Record screen produce a playable .mp4 in
|
||||
~/Videos/Recordings; the red ⏺ REC appears in the bar instantly
|
||||
and CLICKING IT stops + notifies the path; the + audio variants
|
||||
carry sound. While recording, the Capture menu offers only
|
||||
"■ Stop recording". On the AMD box wl-screenrec (VAAPI) should
|
||||
do the work; if it dies at start the wf-recorder fallback kicks
|
||||
in silently — check the notification says which. Summer bars
|
||||
have the same ⏺ (parity).
|
||||
- [ ] **Doctor (item 10)** — menu › System › Doctor opens the sheet in
|
||||
a terminal; `nomarchy-doctor` over SSH shows the same minus user
|
||||
units. On a healthy machine everything is ✔/– (dev-box run
|
||||
2026-07-04 correctly flagged a genuinely failed user unit).
|
||||
- [x] **Caffeine toggle (item 13 slice)** — PASS (Latitude 2026-07-10):
|
||||
bar cup toggles ↔; idle hold smoke OK (full 5‑min lock wait not
|
||||
re-timed this session).
|
||||
- [x] **Screen recording (item 12)** — PASS (Latitude 2026-07-10 Round 3):
|
||||
region/screen record → playable mp4; bar ⏺; click ⏺ stops.
|
||||
- [x] **Doctor (item 10)** — PASS (Latitude 2026-07-10 Round 4): System ›
|
||||
Doctor sheet opens; healthy machine mostly ✔/–.
|
||||
- [ ] **Rollback menu (item 9b)** — after a couple of theme changes,
|
||||
menu › System › Rollback: recent desktop generations listed
|
||||
(newest marked current); picking an older one opens a terminal,
|
||||
@@ -275,73 +248,44 @@ QA machine), the **T14s** (webcam case).
|
||||
draining. (Crossing logic VM-verified — this checks the real
|
||||
swaync rendering in a session.)
|
||||
|
||||
- [ ] **Battery charge-limit toggle** (iteration #55) — control-center
|
||||
(menu › System › Control Center › System Toggles › Battery Limit):
|
||||
the preset picker (Off / 80% / 90% / 60% / Custom…) writes the value
|
||||
(`nomarchy-theme-sync get settings.power.batteryChargeLimit` reflects
|
||||
the pick); after a `sys-rebuild` the sysfs
|
||||
`charge_control_end_threshold` reads it. (UX-only over the already
|
||||
VM-verified writer — a session sanity pass, not a deep check.)
|
||||
- [ ] **Waybar hides under fullscreen video** (item 30) — after
|
||||
`home-update` + relogin, put a browser video (YouTube) into
|
||||
fullscreen (F): the bar is now *covered* by the video, not drawn
|
||||
on top; exit fullscreen → the bar returns. Normal tiling
|
||||
unchanged (the bar still reserves its space). Accepted trade-off
|
||||
of `layer: bottom`: a floating window dragged over the top strip
|
||||
can now overlap the bar — confirm that's the only regression.
|
||||
- [ ] **Battery limit in rofi System** (iteration #64, item 36a) — after
|
||||
`home-update`: menu › System shows a "Battery limit" row (this laptop
|
||||
exposes the threshold node); picking a preset (80/90/60/Off/Custom)
|
||||
writes it (`nomarchy-theme-sync get settings.power.batteryChargeLimit`
|
||||
reflects the pick) and after a `sys-rebuild` the sysfs
|
||||
`charge_control_end_threshold` matches. The gum control-center no
|
||||
longer lists Battery Limit (moved, not duplicated).
|
||||
- [ ] **Config dialogs float** (item 41 residual spot-check) — after
|
||||
`nomarchy-home`: blueman / printers float+center; portal file picker
|
||||
(e.g. app Open…) floats (class should match xdg-desktop-portal-gtk).
|
||||
- [ ] **Right-click volume → floating mixer** (iteration #62, item 35) —
|
||||
after `home-update` + relogin: right-click the Waybar volume module
|
||||
opens pwvucontrol as a floating, centered window (not tiled);
|
||||
left-click still mutes. Verify across a whole-swap theme too
|
||||
(summer/boreal/executive-slate) since the jsoncs got the same wiring.
|
||||
- [ ] **Window focus on arrows** (iteration #61) — after `home-update` +
|
||||
relogin: SUPER+←/→/↑/↓ move focus between tiled windows; SUPER+H/J/K/L
|
||||
no longer move focus; SUPER+? cheatsheet shows the arrow glyphs.
|
||||
- [x] **Battery charge-limit toggle** (iteration #55 / menu path) — PASS
|
||||
(Latitude 2026-07-10): Power + System Battery limit presets write
|
||||
state + sysfs (Custom type). Gum control-center path not re-checked
|
||||
(limit moved to rofi).
|
||||
- [x] **Waybar hides under fullscreen video** (item 30) — PASS (Latitude
|
||||
2026-07-10): fullscreen video covers bar; exit restores.
|
||||
- [x] **Battery limit in rofi System** (iteration #64, item 36a) — PASS
|
||||
(Latitude 2026-07-10): presets apply live; sysfs matches.
|
||||
- [x] **Config dialogs float** (item 41 residual) — PASS (Latitude
|
||||
2026-07-10 Round 4): polkit + config dialogs float; portal rule
|
||||
shipped (OpenFile not re-probed this session).
|
||||
- [x] **Right-click volume → floating mixer** (iteration #62, item 35) —
|
||||
PASS (Latitude 2026-07-10): pwvucontrol floats+centered after
|
||||
packaging with waybar.
|
||||
- [x] **Window focus on arrows** (iteration #61) — PASS (Latitude
|
||||
2026-07-10): SUPER+arrows move focus; SUPER+? shows them.
|
||||
- [ ] **Audio opens in Amberol** (iteration #60, item 37) — after
|
||||
`home-update`: double-click an mp3/flac/ogg (or `xdg-open song.mp3`)
|
||||
`nomarchy-home`: double-click an mp3/flac/ogg (or `xdg-open song.mp3`)
|
||||
→ it opens in Amberol, not mpv; video files still open in mpv.
|
||||
(`xdg-mime query default audio/mpeg` → io.bassi.Amberol.desktop.)
|
||||
- [ ] **Capture-to-file keybinds** (iteration #59, item 38) — after
|
||||
`home-update` + relogin: SHIFT+Print prompts a region select then
|
||||
saves a PNG under ~/Pictures/Screenshots (toast shows the path);
|
||||
CTRL+Print saves the whole screen the same way; bare Print still
|
||||
copies a region to the clipboard. Both new rows appear in SUPER+?.
|
||||
Also (iteration #66): Tools ▸ Capture now shows the matching dim key
|
||||
hint on the Region → clipboard / Region → file / Full screen → file
|
||||
rows (Print / SHIFT + Print / CTRL + Print) — pango renders, no raw
|
||||
`<span>` leaks.
|
||||
- [x] **Capture-to-file keybinds** (iteration #59, item 38) — PASS
|
||||
(Latitude 2026-07-10): Print / SHIFT+Print / CTRL+Print + Capture
|
||||
menu; clipboard path toasts after fix.
|
||||
- [ ] **rofi menu polish** (iteration #58, item 39 + #56/#57 34/40) —
|
||||
after `home-update`: (a) menu › System › Power profile shows a
|
||||
after `nomarchy-home`: (a) menu › System › Power profile shows a
|
||||
colored icon per profile (performance/balanced/power-saver), not
|
||||
just text — icons *render* (not blank); (b) every submenu's ↩ Back
|
||||
shows a single arrow, no double; (c) on this single-monitor box,
|
||||
System › Display → pick a resolution → Back returns to System
|
||||
(not back into the same resolution list).
|
||||
- [ ] **Combined power menu** (iteration #67, item 36b) — after
|
||||
`home-update` + relogin: clicking EITHER the Waybar battery icon OR
|
||||
the power-profile icon opens one "Power" menu listing Profile: rows
|
||||
+ Charge limit: rows; picking a profile calls `powerprofilesctl set`
|
||||
(verify `powerprofilesctl get` changes), picking a charge preset
|
||||
writes `settings.power.batteryChargeLimit` (applies next rebuild).
|
||||
The prompt shows the current profile + limit. System ▸ Power profile
|
||||
/ Battery limit still work directly; the whole-swap bars (summer-day/
|
||||
night, executive-slate, boreal) behave the same and their shutdown
|
||||
power-button (if present) still opens the lock/logout menu.
|
||||
- [x] **Combined power menu** (iteration #67, item 36b) — PASS (Latitude
|
||||
2026-07-10 A1/A2): battery + power-profile icons open same Power
|
||||
menu; profile switch + charge limit work.
|
||||
|
||||
- [x] **Calendar on the unified clock click** (iteration #68 + 2026-07-10
|
||||
bar polish) — PASS (Bernardo, Latitude 2026-07-10): unified clock,
|
||||
calcurse floats centered.
|
||||
- [ ] **Screenshot annotation (satty)** (iteration #73) — after `home-update`:
|
||||
- [ ] **Screenshot annotation (satty)** (iteration #73) — after `nomarchy-home`:
|
||||
hit SUPER+SHIFT+Print (or Tools ▸ Capture ▸ Annotate region) → a region
|
||||
select (slurp) appears, then the `satty` UI opens in fullscreen with the
|
||||
screenshot loaded. Check that the UI draws on the current theme palette
|
||||
@@ -362,7 +306,7 @@ QA machine), the **T14s** (webcam case).
|
||||
proves the menu row + flow renders; a real capsule write is
|
||||
hardware-only.)
|
||||
|
||||
## Latitude 5410 only
|
||||
## Latitude 5310 / 5410 only
|
||||
- [x] **Waybar theme-switch resilience** (finding #1 re-test, needs main ≥
|
||||
the supervisor commit + relogin) — switch themes repeatedly (incl.
|
||||
summer-day/night whole-swaps): the bar restarts cleanly each time;
|
||||
@@ -373,8 +317,13 @@ QA machine), the **T14s** (webcam case).
|
||||
- [x] **Media keys + gestures** (from dccceb4) — volume/brightness keys
|
||||
drive the OSD; touchpad gestures work. — 2026-07-04 Bernardo:
|
||||
PASS, volume/brightness keys and touchpad gestures all working.
|
||||
- [x] **2026-07-10 Latitude 5310 QA batch** — PASS core desktop smoke
|
||||
(charge Custom type, bar, menus, capture, polkit workspace, lifecycle
|
||||
CLIs). Not a full v1 promotion gate — residual open items remain
|
||||
above (themes eyeball, greeter, display profiles, Amberol, satty, …).
|
||||
- [ ] **v1 QA batch on-hardware pass** (583708d batch was QEMU-verified) —
|
||||
general smoke before the next `main → v1` promotion.
|
||||
general smoke before the next `main → v1` promotion (broader than
|
||||
the 2026-07-10 session; include theme/ISO/greeter leftovers).
|
||||
|
||||
## T14s only
|
||||
- [ ] **Webcam IR-hide end-to-end on Nomarchy** — installer detects the
|
||||
|
||||
Reference in New Issue
Block a user