Files
theupriser 660558ab45
Sync git.upriser.nl mirror / sync (push) Skipped
notes: Steamify 2.10.0
2026-10-01 21:05:27 +02:00

16 KiB

Steamify test plan

What to test before a Steamify release, in the VM (--fremont) and on the real Steam Machine. How to run each step: .claude/skills/cachyos-vm-testing. Keep this file up to date: add a section when a feature is added, and a line to the results log after every test run.

Every VM run starts with the session start of the skill (ssh-ready brought up to date), and each numbered block below starts from a fresh ssh-ready (scripts/vmreset.sh --fremont, REPO= the branch checkout). Runs are visible in a Konsole on the VM's desktop.

R. Regression (every release)

R1. Menu on an existing desktop (user theupriser)

# Step Expect
R1.1 'q\n' first-run ticks: everything but Boot into desktop, BIOS
R1.2 '\ny\nm\nq\nn\n' every item OK, back in the menu with all on
R1.3 scripts/vmstate.sh SDDM + autologin, Vapor, 17 LEDs owned by the user, DKMS installed for every kernel, steamos-manager active
R1.4 rerun '\nq\n' "Everything is already the way you want it"
R1.5 re-apply 'a\ny\nm\nq\nn\n', vmstate.sh no errors, no DUPLICATES
R1.6 steamify.sh --backend status valid JSON, current VERSION, states match R1.3
R1.7 close the app first, then sudo modprobe vivid; scripts/vmcec.sh --no-sleep all PASS (2 SKIP in the VM: wake from TV, sleep). The fake remote's Select arrives as Enter: an open app on "All done" restarts the PC
R1.8 toggles (theme, single user, CEC, Steam Machine support off/on) full matrix in the skill; cmp.sh clean after theme off
R1.10 set an item older in ~/.local/state/steamify/features.state (e.g. cec=2.1.0), 'q\n', then '\ny\nm\nq\nn\n' menu shows "HDMI-CEC (update)" ticked; the plan lists it as "update"; after the run the file has the current version
R1.9 reboot checks single user: SDDM logs straight in; everything off: greeter

U. The app (/mnt/ui/steamify-ui, on the VM's desktop)

Drive it with scripts/qmpkey.py <vm dir>/qmp.sock <keys> (QEMU qcodes: up down left right ret esc ctrl-ret ctrl-q r; wait ~1 s between keys and ~12 s after starting the app) and check every screen with a screenshot (spectacle -b -n -a for the active window; the progress screen of a quick change only shows right after Enter).

# Step Expect
U1 start after R1.5 header v<VERSION>, Steam Machine chip, every row with "now on", Kernel / LED bar (17) / HDMI-CEC / Version panel
U2 Up/Down over the rows detail panel follows: body text and "What it changes" per row
U3 an updated feature (bump FEATURE_VERSION, or features.state older) UPDATE badge, "1 change"
U4 Boot into: Right / Left Gaming / Desktop, detail panel DESKTOP, change count +1
U5 Enter on a toggle, Enter again off, back on, count back
U6 Ctrl+Enter review lists exactly the changes, summary counts right; Esc goes back
U7 Enter (apply) progress per step ("Boot into desktop", update badge), details log, "All done, N changes applied", Restart now / Back to the menu
U8 after U7 the changes are on the system (e.g. boot-desktop unit, features.state)
U9 r (re-apply), Ctrl+Q re-apply review; the app quits

R2. Installer mode (scripts/vminstallsim.sh, user isotest, no session)

# Step Expect
R2.1 plain --defaults every item OK, exit: 0, first-login autostart present
R2.2 first desktop login (steam-machine-iso skill) Vapor layout, primaryActions=3, autostart gone, app opens

F2.8.0 --defaults --list

# Step Expect
G1 steamify.sh --defaults --list exit 0, valid JSON array, no stderr, no header text mixed in
G2 items actions (bios), retired (kpin, hdmi) excluded; unavailable here (vram, steamgame) excluded; poweroff has parent machine, boot has parent gaming and kind choice
G3 menu / plain --defaults still work unaffected (regression)

F. Features per release

F2.10.0 Gaming on NVIDIA (feature/nvidia-gaming-fix; suite nvidia, fake NVIDIA PC)

gamescope's session is broken on NVIDIA (see nvidia/HARDWARE-RESULTS.md), so on an NVIDIA PC the conversion is replaced by "Gaming on NVIDIA" (Steam on the Plasma desktop, started at login, optionally in Big Picture) and single user mode logs in to Plasma. The VM has no NVIDIA GPU: fake_nvidia (share/vmtest/prelude.sh) fakes one through Steamify's NVIDIA_DRM_DIR test hook and installs fake NVIDIA modules for every kernel. What no VM can show (real driver, the picture, Big Picture on a real GPU) is checked on the real PC.

# Step Expect
N1 --defaults --list and --backend status with the fake GPU (nvidia/10-n1-menu.sh) nvidia, bigpicture (parent nvidia), single offered and preselected; gaming, boot, glyphs hidden; without the fake GPU the conversion is offered and nvidia is not
N2 --defaults --options nvidia,bigpicture,single (nvidia/20-n2-n5-lifecycle.host.sh) exit 0; Steam installed; unit with -gamepadui enabled; loginMode=emptySession; parameters in /etc/default/limine and /boot/limine.conf; early-load file, hook and script; modules in the initramfs; SDDM enabled and zzz-steamify-autologin.conf (Plasma session)
N3 reboot Plasma straight in (no greeter), parameters on /proc/cmdline, the Steam unit started, loginMode kept
N4 --defaults --options notify exit 0; Steam removed (Steamify installed it), unit and autologin file gone, loginMode back to not set, parameters/early-load/hook gone, plasma-login-manager the login manager again
N5 reboot Plasma up through the test autologin, no NVIDIA parameters
N6 real RTX 5080 PC done by hand 2026-10-01 (earlier prototype): Big Picture on the Plasma desktop smooth and clean; the apply/boot of the final component is the user's next step

F2.10.0 Extended controller support (feature/extended-controller-support; suite cli, block 60-c1-controllers.sh)

Opt-in item: xpadneo-dkms, xone-dkms and xone-dongle-firmware from the CachyOS repo, DKMS-built for every kernel. The VM has no dongle or controller: it covers the packages, the headers and the builds, not the hardware.

# Step Expect
C1 --defaults --options extended_controller_support exit 0; the three packages installed; dkms status shows xone and xpadneo installed for every kernel; the modules (xone_dongle, hid_xpadneo) exist for each
C2 the same again quiet, nothing installed again
C3 --defaults --options notify exit 0; the three packages removed again
C4 real PC with the Xbox dongle by hand, 2026-10-01 earlier: the dongle works with the AUR xone-dkms-git (modules xone_dongle, xone_gip_gamepad loaded); status counts xone-dkms-git as on

F2.7.0 --defaults --options / --boot

# Step Expect
F1 --options (no value), bogus, boot, bios, --boot (no value), --boot sideways, --skip x each exit: 1 with a clear error, nothing changed
F2 --options theme --boot desktop (either order) exit: 1: desktop needs the conversion
F3 --options gaming,theme,glyphs,single,launcher,notify,vram,cec,machine,poweroff --boot desktop all on, boot-desktop unit enabled; VRAM left out with a warning in the VM
F4 --options theme,single,machine --boot desktop single brings the conversion; poweroff, CEC, glyphs, launcher, notify recorded off
F5 --options launcher,vram,poweroff poweroff brings Steam Machine support; conversion off, plasmalogin unchanged
F6 steamify.sh --boot desktop without the conversion exit: 1
F7 on an install: --boot desktop, again, --boot gamescope only Boot into changes; "Already starting in desktop"; menu ticks unchanged

H. Steam Machine hardware

H-VM. With the faked Steam Machine (--fremont)

# Step Expect
H1 LED driver leds_valve loaded, 17 valve-leds* nodes owned by the user (no light to see)
H2 HDMI-CEC R1.7 (vivid: fake TV and remote)
H3 BIOS update BIOS_VERSION=F7F0107 scripts/vmreset.sh --fremont, WIZARD_BIOS_DRY_RUN=1: whole flow, never flashes
H4 Boot into desktop, reboot Plasma straight after boot; Boot into gaming: SDDM autologin into gamescope (black in the VM, see the skill; check the session file)
H5 power-off module DKMS built for every kernel, module loads, "No such device" (no GPIO wake bit in the VM)

H-Real. Only on the real Steam Machine

  • Power-off fix: stays off after shutdown, for every new major kernel.
  • VRAM booster (the VM has no dmem VRAM region).
  • Gamescope itself: gaming mode, Switch to Desktop / Return to Gaming Mode.
  • LED bar light, real TV over HDMI-CEC (remote, TV on/off, sleep/wake).

B. Boot loaders (scripts/vmtest.sh, unattended)

Every loader the ISO advertises (Limine, systemd-boot, GRUB), each on a VM installed from the Steamify ISO and started with --fremont. Automated: scripts/vmtest.sh (see the vm-install skill).

# Step Expect
B1 first boot after the unattended install, and every reboot boots by itself through the loader's own EFI boot entry (BootCurrent, a real partition; checked after every reboot), no network boot first (systemd-boot: the entry comes from the ISO's steamify-install since PR #2; timeout/default set by the test setup), SSH answers
B2 Steamify's state, as its own *_status functions gaming, theme, glyphs, single, launcher, notify, poweroff, cec all on
B3 OS name os-release NAME/PRETTY_NAME are CachyOS's, lsb-release has no "with Steamify"; Limine has TARGET_OS_NAME
B4 loader identity, firmware setup the expected loader; Boot into FW: supported (BIOS item)
B5 DKMS modules (leds-valve, cros-ec-cec, steamify-fremont-poweroff) installed for every kernel, files present, modules-load.d entry
B6 legacy drm.edid_firmware removal (hdmi_remove_boot_param) detected, removed, initramfs and entries rebuilt, no edid left
B7 kernel update (both kernels + headers) DKMS rebuilds 3 modules per kernel, initramfs rebuilt, loader config regenerated
B8 reboot into the default and the other kernel both boot, no failed units, power-off fix and LED modules loaded on each

Known gaps

  • "Add as non-Steam game" can't be set up at install time (no Steam account yet); not covered by any installer test.

  • ISO: steamify-install and the packagechooser pages still pass --skip (removed in 2.7.0); to be replaced by the Steamify page.

  • /etc/plasmalogin.conf missing before Steamify (a VM from vminstall.sh, not Calamares): turning the conversion off leaves an empty file instead of none (harmless; Calamares installs have one, restored from the backup).

  • R2.2: the first login's app is the newest release (run-app), so before a release it shows the old version; start the branch's app by hand (steam-machine-iso skill).

  • CEC: the driver source comes from an unofficial mirror of Valve's kernel on GitHub; since 2.9.1 it is downloaded once and cached (/var/cache/steamify; the VMs share the host's), so only a first download can hit GitHub's rate limit (HTTP 429).

Results log

Date Branch / version Blocks Result
2026-09-28 feat/defaults-options 2.7.0 (uncommitted --options, --boot) R1.1-R1.6, R2.1, F1-F7 all pass (VM --fremont)
2026-09-28 same + CEC socket fix, UI label fix R1.7, R1.10, U1-U8, H1, H4 (desktop), H5 R1.7 first failed: cec-audio-control.socket never enabled (old bug, fixed: cec_enable enables it, FEATURE_VERSION[cec]=2.7.0); after: 53 PASS / 0 FAIL / 2 SKIP. UI: progress row said "Boot into Boot into" (fixed). Rest pass. Not run: R1.8, R1.9, R2.2, U9, H3
2026-09-28 release/2.7.0 (VM from vminstall.sh, ~/vms/steamify-vm) R1.2 (fresh, CEC socket), R1.8, R1.9, R1.5 via U9, U9, R2.1, R2.2, H3 all pass except one old bug: theme on (single on) → single off → theme off left single's launcher keys; fixed (58e43d4, PR #34) and retested. BIOS dry run F7F0107 → F7F0108 passed; greeter and SDDM reboot checks passed
2026-09-28 release/2.7.0 H-Real counted as passed: power-off fix, VRAM booster, LEDs, gamescope and Steam Machine support are unchanged since 2.6.0, which passed on the real Steam Machine. HDMI-CEC's change (enabling cec-audio-control.socket) passed with the fake TV in the VM; check the TV remote's volume keys on the real TV after updating (HDMI-CEC shows as update)
2026-09-29 feature/vminstall-bootloader (Steamify ISO 2026.09.28, --fremont) B1-B8 Limine 41 / systemd-boot 40 / GRUB 40 checks pass. Found on the way (test setup, not Steamify): ufw blocks ssh, systemd-boot has no timeout/default after cachyos-installer
2026-09-28 release/2.8.0 (feature/defaults-list) G1-G3, R1.1, R1.2 all pass (VM --fremont, fake Steam Machine). Bundle shellcheck clean
2026-09-29 Steamify 2.9.0 (steamify-cachyos main), ISO feat/steamify with PR #2 (2026.09.29), dev main 5b867f8; on the PC (WSL2) everything automated: B1-B8 (3 loaders), cli, menu, hw, installer, toggles (scripts/vmtest.sh, parallel, MAX_PARALLEL=3) 328 pass, 0 fail (toggles 42 +1 expected skip, hw 70, cli 55, menu 36, installer 4, Limine 41, systemd-boot 40, GRUB 40) in 18 minutes: the first complete parallel run. Found on the way: systemd-boot had no EFI boot entry (installer's bootctl in a chroot), fixed in the ISO (PR #2); vminstall.sh fixes for parallel installs and a root host user
2026-09-29 ISO feat/steamify + PR #3 (/var/log), dev main with the B1 boot entry check B1-B8 Limine 43 / GRUB 42 pass (boot entry check passes: Limine, cachyos). systemd-boot (reinstalled): 36 pass, 8 fail, all CEC: the driver download got HTTP 429 from GitHub (rate limit); boot entry check passes (Linux Boot Manager); /var/log/steamify-install.log and steamify-bootentry.log readable after boot
2026-09-29 Steamify release/2.9.1 (CEC driver cache), ISO feat/steamify (PRs #2, #3), dev main everything automated incl. hw block 50 (CEC cache) and the B1 boot entry check 341 pass, 0 fail in 19 minutes (toggles 42 +1 expected skip, hw 77, cli 55, menu 36, installer 4, Limine 43, systemd-boot 42, GRUB 42)
2026-09-30 Steamify 2.9.6 (steamify-cachyos main d93f9ea), the official ISO steamify-cachyos-2.9.6-260930-x86_64.iso from git.upriser.nl (sha256 4a94f308…aec41), dev main; on the PC, headless (CI=1/VM_HEADLESS=1), MAX_PARALLEL=5 everything automated: B1-B8 (3 loaders, --install from the new ISO), cli, menu, hw, installer, toggles (base VM from the same ISO with VM_STEAMIFY=skip) 341 pass, 0 fail (toggles 42 +1 expected skip, hw 77, cli 55, menu 36, installer 4, Limine 43, systemd-boot 42, GRUB 42). Found on the way (test setup, not Steamify or the ISO): with five VMs at once the loaders' first boot took longer than waitssh waited (5 min), so all three stopped with FAIL no SSH although the VMs were up; waitssh now waits up to 15 minutes and the loaders were run again (install kept)
2026-10-01 Steamify feature/extended-controller-support (7dae14c; on top of feature/nvidia-gaming-fix d0e4d8c, 2.9.7), plain CachyOS ISO 260809 (VM ~/vms/steamify-vm, vminstall.sh --iso), dev main + the nvidia suite; on the PC (native CachyOS, KVM), headless N1-N5 (new suite nvidia), C1-C3 (cli block 60), R1.1-R1.6/R1.10, H1-H5 and the CEC/CEC cache blocks, R2.1, toggles 269 pass, 0 fail: cli 65, nvidia 43, menu 37, hw 78, installer 4, toggles 42. Found on the way (test side, not Steamify): R1.1 and H3 pressed menu rows by number and the new Extended controller support row shifted them (now by name); the N4 check for the parameter in /boot/limine.conf must ignore snapper's snapshot entries, which keep the command line of their time. The kernel part (parameters, early-load file, hook, initramfs) behaves in a real Limine VM; the real driver and picture are only checked on the RTX 5080 PC