Skip to content

Support Matrix

This matrix separates detection, local validation, and public support. A working source checkout is not the same thing as a published package or a live audio-routing guarantee.

Status Vocabulary

StatusMeaning
VerifiedCovered by local automated validation in this repo.
Manual VMCovered by a VM target and ready for operator-run guest evidence.
PlannedDesigned in the contract but not implemented or validated yet.
UnsupportedIntentionally not a target for this milestone.

Host Targets

Target metadata is stored in vm/targets.tsv and validated by pnpm verify:vm, which also renders and checks cloud-init handoffs for every target. Rows marked Verified must have a passing target evidence bundle under .vm/evidence/<target>. Rows with passing evidence must be promoted to Verified; otherwise they stay Manual VM. Use scripts/collect-vm-evidence-ssh.sh after a VM is reachable over SSH to run guest validation, copy the target bundle back, and verify it locally before changing a row to Verified. Guest evidence includes a redacted support bundle plus a desktop launch smoke so maintainers can inspect backend diagnostics without relying only on screenshot or pass/fail status. It also includes environment.json, which must match the target distro, desktop/session, audio stack, and architecture before a row can be promoted. The matching detect-audio.json must also report the target audio backend as available, so a JACK or PulseAudio row cannot be promoted with only generic Linux evidence. Direct SSH collection keeps guest and copied-back output target-scoped: custom --remote-output-dir and --local-output-dir values must include the target id as a path segment and cannot contain parent traversal. After evidence verifies, promote the row with pnpm vm:promote-evidence -- --target <target>. Use --dry-run first to preview the docs change without editing the matrix. For final release support claims, pass --require-published-release --release-tag <tag> so promotion also proves the guest installed and ran the signed published artifact for the exact release. Custom verifier --evidence-root and --matrix paths are local artifacts only: the support-matrix verifier rejects root/home placeholders, parent/current-directory traversal, URL syntax, glob metacharacters, symlinks, and existing paths with the wrong file or directory type before reading the matrix or scanning copied-back VM evidence. Run pnpm vm:host-plan for cross-distro host setup hints and target-specific image, cloud-init, launch, and evidence handoff commands. Run pnpm vm:render-ssh-plan -- --all --output .vm/ssh-targets.tsv to generate the multi-guest TSV consumed by pnpm vm:collect-matrix.

TargetDesktop/sessionAudio stackCurrent status
arch-hyprland-pipewireHyprland on WaylandPipeWire/WirePlumberManual VM
fedora-kde-pipewireKDE Plasma on WaylandPipeWire/WirePlumberManual VM
fedora-kde-jackKDE Plasma on WaylandJACKManual VM
ubuntu-gnome-pipewireGNOME on WaylandPipeWire/PulseAudio compatibilityManual VM
ubuntu-gnome-pipewire-aarch64GNOME on WaylandPipeWire/PulseAudio compatibilityManual VM
debian-xfce-pulseaudioXfce on X11PulseAudioManual VM
nixos-gnome-pipewireGNOME on WaylandPipeWire/WirePlumberManual VM
fedora-sway-pipewireSway on WaylandPipeWire/WirePlumberManual VM
opensuse-kde-pipewireKDE Plasma on WaylandPipeWire/WirePlumberManual VM

Audio Backends

BackendDetectionHost mutationNotes
PipeWire nativeVerified probes and port listingVirtual sinks, routes, mute, monitor linksPer-edge gain planned.
PulseAudio compatibilityVerified read-only probesVerified with fake runnersSinks, monitors, routes; one output per source.
Native PulseAudioVerified read-only probesSame pactl adapter pathNeeds manual VM proof on a non-PipeWire PulseAudio host.
JACKVerified probes and port listingExisting-port routes, route mute, and monitor linksVirtual ports and gain still planned.
ALSAPlayback/capture hardware detectionNot a routing backendUsed for diagnostics and hardware visibility.

Host adapters are dry-run by default. Live apply is session-local and requires the desktop Host apply control plus the Tauri shell command bridge.

Install Channels

ChannelCurrent validationPublic status
Source checkoutpnpm checkSupported for contributors.
Signed curl installerLocal verification plus live /install.sh byte comparisonPublished for 0.1.0 at loopwire.app.
AppImagePublished-artifact and Tauri bundle smokePublished for 0.1.0 on GitHub Releases.
Ubuntu 24.04 / Debian 13 debVerified in matching KVM guests at commit 70eee4e; review snapshot in vm/native-package-proof/Published as direct downloads; no APT repository.
Fedora 44 / openSUSE Tumbleweed RPMVerified in matching KVM guests at commit 70eee4e; review snapshot in vm/native-package-proof/Published as direct downloads; no COPR/OBS repository.
AUR loopwireTagged source build through pnpm verify:aur:sourcePublished for 0.1.0.
AUR loopwire-binSigned release-artifact build through pnpm verify:aurPublished for 0.1.0.
AUR loopwire-gitRolling default-branch build through pnpm verify:aur:gitPublished; development snapshots are not stable releases.
Nix flake package (loopwire-bin)pnpm verify:nix-release -- --repo sandwichfarm/loopwire --tag v0.1.0 --public-key packaging/release-signing-public.pemRelease-bound for 0.1.0; locally proved on x86_64 only.

The flake package output is packages.<system>.loopwire-bin; flake.nix now pins the signed v0.1.0 tarball hashes for x86_64-linux and aarch64-linux. Fresh local non-skipped Nix build evidence in this repository currently covers x86_64-linux only; aarch64-linux still needs native proof.

Native package verification is narrower than audio-backend support. The committed snapshot proves that each official, checksum-pinned guest built and installed its target package, ran the packaged background/provider/backend commands, resolved GUI libraries, created a Loopwire X11 window under Xvfb, and removed all package-owned files. It does not promote any host-audio backend row or claim that the packages have been published.

Desktop Integration

AreaCurrent behavior
Window chromeNative chrome by default; custom mode persists and requests an undecorated Tauri window with Loopwire controls.
AutostartXDG desktop autostart can be installed and removed with scripts/manage-autostart.sh.
Background restoreSource checkout and packaged user-scoped systemd restore paths are verified locally.
Screenshotsassets/product-screenshot.png is the canonical desktop capture; refresh the docs public copy through the screenshot procedure.