Polaris v1.3.11
Polaris v1.3.11 is a support, private-runtime recovery, display-truth, and reproducibility patch. It makes crash and silent-failure evidence useful enough to hand off, accepts a bounded diagnostic report from an authenticated paired client, repairs private Steam and Gamescope reconnect ownership, keeps PipeWire VAAPI capture on the safe SHM path by default, and makes both Arch and Ubuntu release gates independent of live mirror selection.
Existing configuration remains valid when upgrading from v1.3.10. This release is especially relevant if Heroic or Lutris is installed as a Flatpak, headless_dongle is configured in polaris.conf, a Hyprland mode request silently kept the compositor's old geometry, a packaged gamescope_stream session could not find its launcher, or a stale private runtime blocked reconnects.
Fedora 44
wget --output-document=./Polaris-fedora44-x86_64.rpm https://github.com/papi-ux/polaris/releases/download/v1.3.11/Polaris-fedora44-x86_64.rpm &&
sudo dnf install "./Polaris-fedora44-x86_64.rpm" &&
sudo -H polaris --setup-host &&
systemctl --user restart polarisArch Linux / CachyOS
wget --output-document=./Polaris-arch-x86_64.pkg.tar.zst https://github.com/papi-ux/polaris/releases/download/v1.3.11/Polaris-arch-x86_64.pkg.tar.zst &&
sudo pacman -U ./Polaris-arch-x86_64.pkg.tar.zst &&
sudo -H polaris --setup-host &&
systemctl --user restart polarisUbuntu 24.04
wget --output-document=./Polaris-ubuntu24.04-x86_64.deb https://github.com/papi-ux/polaris/releases/download/v1.3.11/Polaris-ubuntu24.04-x86_64.deb &&
sudo apt install ./Polaris-ubuntu24.04-x86_64.deb &&
sudo -H polaris --setup-host &&
systemctl --user restart polarisBazzite users should follow the exact-output rpm-ostree flow in the Bazzite guide. SteamOS 3.8 users should follow the SteamOS guide, including its keyring bootstrap and read-only-root restoration. SteamOS remains experimental Desktop Mode support rather than certified Game Mode support.
Changes
Support evidence and paired-client intake
- Retains abnormal process termination evidence and actions that reported success without taking effect, including what was requested and what the host actually observed. Troubleshooting can package that evidence in a redacted support bundle and a bounded pre-filled GitHub issue.
- Adds
POST /polaris/v1/support/client-report. The route accepts only the authenticated paired-client certificate associated with the request, rejects revoked or unpaired identities, bounds the payload and request rate, redacts again at the host boundary, and stores the client half beside the host evidence for the next bundle. - Hardens redaction across snake case, kebab case, camel case, run-together credential names, quoted JSON keys, nested structures, numeric PIN/passcode/OTP fields, and the exact Web UI bearer name
session_id. A generalidrule is deliberately avoided soclient_id,user_id, andapp_idremain useful diagnostics. - Keeps non-string scalars unchanged unless their field name is sensitive. This protects a numeric credential while preserving measurements such as bitrate, frame rate, packet loss, port, and GPU index.
- Preserves repeated shared values and the contents of
Map,Set,Date, andErrorobjects. True ancestor cycles remain bounded; an error's message is redacted and retained without exporting its path-bearing stack. - Normalizes one configured quoting layer around trusted-subnet CIDRs, rejects an actually empty pairing identifier before session creation, and logs the stored identifier rather than a moved-from request value. Bare CIDRs and non-empty client-defined identifiers remain valid; the separate VoidLink handshake stall is not claimed fixed.
- Adds the public papi-ux Matrix Space to the README and System > Resources as a community-chat entry point beside the existing support and project links.
Linux runtime, display, and library truth
- Reports the effective Private Stream path independently of the configured path, so a fallback or pending relaunch no longer looks like the requested backend is already active.
- Discovers Heroic and Lutris games from native and Flatpak installations, launches through the installation that produced each entry, deduplicates titles across both sources, and validates launcher identifiers before they reach a shell command.
- Allows a configured
headless_donglepath to enter the setup that auto-detects connectors and enables display management. Previously that setup was gated on a flag that only the setup itself could enable, so the stream ran while doing none of the promised topology work. - Serves
session_overridablewith each stream-display mode. A topology-changing mode such asheadless_dongleremains a valid Every Game host default but is explicitly unavailable as a one-session client choice. - Reads the applied mode back from Hyprland instead of trusting a zero exit status. If the first command did not land, Polaris tries the Hyprland 0.56-compatible
hl.monitorform; if that also misses, logs and diagnostics preserve requested versus actual geometry rather than claiming success. - Marks only Steam launched into a Polaris private compositor with
POLARIS_PRIVATE_SESSION=1, so that exact private workload cannot be mistaken for desktop Steam and block the next connection. Missing, malformed, or unreadable provenance remains fail-closed. - Installs
polaris-gamescope-sessionand its shared runtime library in the Arch, SteamOS, Ubuntu, and Fedora packages, with an explicit Bash interpreter, package dependency, payload receipt, and syntax check. A packaged session no longer falls back to attach merely because the helper was absent fromPATH. - Finalizes the immutable runtime selected by each launch generation. An owned Gamescope group is drained through its marker/pidfd authority, then only the proven-owned
gamescope-0andgamescope-0-eisockets are reclaimed under the existing lock and live-holder checks. Ambiguous cleanup retains authority for a later bounded stop attempt instead of attaching the next session to a dead runtime or destroying an unowned socket. - Warns when a client requests HDR but the final live stream is SDR, after the final colorspace decision and outside encoder probes. The warning names the black-video/working-audio symptom and the immediate SDR recovery without changing request acceptance or protocol behavior.
- Keeps PipeWire VAAPI capture on SHM by default for both local Gamescope/KWin graphs and portal-remoted streams. CUDA DMA-BUF behavior is unchanged.
POLARIS_PORTAL_DMABUF=1is a narrow operator opt-in for hosts that have already proved the route; unset, malformed, and exact0values stay on SHM.
Reproducible release gates
- Runs every
BUILD_FULL_TESTSsanitizer executable, including audio, audit, config, HTTP, input, network, pairing, platform, Steam shutdown, stream, and video coverage plus the Gamescope lifecycle scripts. - Pins both the Arch container digest and the Arch Linux package database/pool to the immutable
2026/08/17archive snapshot. Retrying against a live mirror cannot repair a database and package pool from different sync generations, so the release build no longer depends on that race. - Pins sanitizer and Ubuntu package jobs to Ubuntu snapshot
20260818T000000Z, isolates their APT sources and indexes from runner state, treats a partial index update as failure, and runs the DEB smoke against that identical snapshot state with bounded request and whole-step deadlines. - Keeps the four official Linux package formats and the mandatory high-severity npm audit unchanged.
Field-validation limits
- The
headless_dongleconfiguration fix was exercised end to end on a real 4K dummy-plug host: Polaris auto-selected the connectors, blanked the primary panel, applied the stream mode, and restored the topology at teardown. The known SHM capture ceiling at that resolution remains a performance limitation, not a regression this release claims to fix. - The Hyprland parser, applied-mode comparison, fallback selection, and failure reporting are unit tested. The maintainer host runs KWin, so the compositor call itself still needs an affected Hyprland host before it can be called field-validated.
- Native/Flatpak library paths, command selection, deduplication, and hostile identifier handling are contract tested. A real Flatpak Heroic or Lutris installation was not available for this candidate smoke.
- The paired-client endpoint is authenticated, bounded, and covered by integration tests. Nova v1.3.7 has a manual Report a problem action that opens Android's share sheet; that user-facing action does not yet automatically post to this host endpoint, so this release must not be described as automatic paired reporting.
- The affected RX 7800 XT has not physically tested this exact candidate. The shipped change contains the reported no-media stall by defaulting PipeWire VAAPI capture to SHM; it does not claim that the underlying DMA-BUF import, conversion, encode, lifetime, or producer stall is fixed. Exact
POLARIS_PORTAL_DMABUF=1remains explicitly unvalidated unless the operator has proved it on that host. - Final publication also remains gated on exact-candidate host/client evidence: version identity, signer continuity on the Nova APK, the restricted per-session mode UI, the manual report/share path with secret-safe output, one live stream, clean teardown, and no new host coredump or retained session resource.
Official assets
Polaris-arch-x86_64.pkg.tar.zstPolaris-fedora44-x86_64.rpmPolaris-steamos3.8-x86_64.pkg.tar.zstPolaris-ubuntu24.04-x86_64.deb