47 commits since v0.25.0, most of them from field reports on 0.25.0 itself, plus Wave 2 of the PyroWave Linux host-performance program.
Nothing breaks
Wire protocol 2 → 2, C ABI 17 → 17 — no symbol added, removed or changed; no new message, no new capability bit. crates/pf-driver-proto is byte-for-byte identical to v0.25.0 and v0.24.0, so anyone shipping the virtual-display driver or the gamepad channel is untouched by the last two releases.
Contrast v0.25.0, which moved the ABI 14 → 17 and renamed 149 macros.
What moved
v0.25.0
v0.26.0
gamescope patch level
+pfhdr2
+pfhdr4 (3 patches → 6, pkgrel 1 → 2)
@punktfunk/host (SDK)
0.1.2
0.1.4
@punktfunk/plugin-kit
0.3.2
0.4.0 (the plugin launch kind)
api/openapi.json
0.24.0
0.25.0 (lags one release by convention — already correct, needed no edit)
Four new environment variables — PUNKTFUNK_OVERLAY_MASK, PUNKTFUNK_GAMESCOPE_REFRESH_RATES, PUNKTFUNK_PYROWAVE_CHUNK_KIB, PUNKTFUNK_PYROWAVE_STREAMED_AU. Verified new by git grepat the v0.25.0 tag rather than assumed; the other six that show up in the diff (PUNKTFUNK_JUMBO, _WIRE_MTU, _STREAMED_AU, _LIBRARY_ART_ROOTS, _RECOVER_SESSION_CMD, _GAMESCOPE_SDR_NITS) all already existed.
⚠ Two deliberate changes that make a client advertise LESS
Both are the point, not regressions, and both belong in any triage of "it worked in 0.25":
VIDEO_CAP_444 is probed now, not asserted. Every Steam Deck with "Full chroma" on was losing HEVC entirely (→ H.264), not losing crispness — the host grants 4:4:4 on HEVC only and answers the resolved chroma in the Welcomebefore the client builds a decoder, and no AMD silicon decodes HEVC 4:4:4. Per-profile and default-off is why it read as intermittent.
The Decky client-update check reports failure instead of rendering it as "up to date".
The version was forced, not chosen
bash scripts/ci/pf-version.sh → PF_BASE=0.26.0. Canary is always minor+1 of the newest stable, so canary has been building as 0.26.0 all along and testers already carry that number.
Contents
The same four files as the 0.25.0 bump — Cargo.toml, Cargo.lock, docs/releases/v0.26.0.md, docs/releases/whatsnew/v0.26.0.txt — plus the CHANGELOG.md section, which the 0.25.0 split made part of the ritual.
Notes are 66 lines against 0.25.0's 83, covering 47 commits.
Gates run locally, all green
cargo fmt --all --check
clean
cargo metadata --locked
resolves
Cargo.lock diff
versions-only, 70/70 changed lines, 35 crates
Play whatsnew gate
398/500 chars, not byte-identical to any other release
Notes voice check
0 internal-vocabulary hits above ## For developers
⚠ The Play gate counts characters, not bytes — • is 3 bytes in UTF-8, so wc -c reads 405 and would mislead. The check above is the gate's own python3 arithmetic.
⏳ Owed on glass
Recorded in the CHANGELOG's own verification table rather than left implicit: iPhone + Bluetooth listen, the Apple TV stats overlay, a MacBook audio listen, the Deck HEVC/4:4:4 retest, a Windows wake-from-sleep cycle, and the PyroWave-under-game-load A/B with CAP_SYS_NICE actually granted — the number that whole wave is aimed at.
⚠ Main moved 12 commits during an earlier pass of this prep, and 0.25.0's record has it moving 190 twice while a release PR sat open. Re-check v0.25.0..origin/main before tagging.
47 commits since v0.25.0, most of them from field reports on 0.25.0 itself, plus Wave 2 of the PyroWave Linux host-performance program.
## Nothing breaks
Wire protocol **2 → 2**, C ABI **17 → 17** — no symbol added, removed or changed; no new message, no new capability bit. `crates/pf-driver-proto` is byte-for-byte identical to v0.25.0 **and** v0.24.0, so anyone shipping the virtual-display driver or the gamepad channel is untouched by the last two releases.
Contrast v0.25.0, which moved the ABI 14 → 17 and renamed 149 macros.
## What moved
| | v0.25.0 | v0.26.0 |
|---|---|---|
| gamescope patch level | `+pfhdr2` | **`+pfhdr4`** (3 patches → 6, `pkgrel` 1 → 2) |
| `@punktfunk/host` (SDK) | 0.1.2 | **0.1.4** |
| `@punktfunk/plugin-kit` | 0.3.2 | **0.4.0** (the `plugin` launch kind) |
| `api/openapi.json` | 0.24.0 | **0.25.0** (lags one release by convention — already correct, needed no edit) |
Four new environment variables — `PUNKTFUNK_OVERLAY_MASK`, `PUNKTFUNK_GAMESCOPE_REFRESH_RATES`, `PUNKTFUNK_PYROWAVE_CHUNK_KIB`, `PUNKTFUNK_PYROWAVE_STREAMED_AU`. Verified new by `git grep` **at the v0.25.0 tag** rather than assumed; the other six that show up in the diff (`PUNKTFUNK_JUMBO`, `_WIRE_MTU`, `_STREAMED_AU`, `_LIBRARY_ART_ROOTS`, `_RECOVER_SESSION_CMD`, `_GAMESCOPE_SDR_NITS`) all already existed.
## ⚠ Two deliberate changes that make a client advertise LESS
Both are the point, not regressions, and both belong in any triage of "it worked in 0.25":
1. **`VIDEO_CAP_444` is probed now, not asserted.** Every Steam Deck with "Full chroma" on was losing **HEVC entirely** (→ H.264), not losing crispness — the host grants 4:4:4 on HEVC only and answers the resolved chroma in the `Welcome` *before* the client builds a decoder, and no AMD silicon decodes HEVC 4:4:4. Per-profile and default-off is why it read as intermittent.
2. **The Decky client-update check reports failure** instead of rendering it as "up to date".
## The version was forced, not chosen
`bash scripts/ci/pf-version.sh` → `PF_BASE=0.26.0`. Canary is always minor+1 of the newest stable, so canary has been building as 0.26.0 all along and testers already carry that number.
## Contents
The same four files as the 0.25.0 bump — `Cargo.toml`, `Cargo.lock`, `docs/releases/v0.26.0.md`, `docs/releases/whatsnew/v0.26.0.txt` — plus the `CHANGELOG.md` section, which the 0.25.0 split made part of the ritual.
Notes are **66 lines** against 0.25.0's 83, covering 47 commits.
## Gates run locally, all green
| | |
|---|---|
| `cargo fmt --all --check` | clean |
| `cargo metadata --locked` | resolves |
| `Cargo.lock` diff | **versions-only**, 70/70 changed lines, 35 crates |
| Play whatsnew gate | **398/500 chars**, not byte-identical to any other release |
| Notes voice check | **0** internal-vocabulary hits above `## For developers` |
⚠ The Play gate counts **characters, not bytes** — `•` is 3 bytes in UTF-8, so `wc -c` reads 405 and would mislead. The check above is the gate's own `python3` arithmetic.
## ⏳ Owed on glass
Recorded in the CHANGELOG's own verification table rather than left implicit: iPhone + Bluetooth listen, the Apple TV stats overlay, a MacBook audio listen, the Deck HEVC/4:4:4 retest, a Windows wake-from-sleep cycle, and the PyroWave-under-game-load A/B with `CAP_SYS_NICE` actually granted — the number that whole wave is aimed at.
⚠ Main moved 12 commits during an earlier pass of this prep, and 0.25.0's record has it moving 190 twice while a release PR sat open. Re-check `v0.25.0..origin/main` before tagging.
47 commits since v0.25.0, most of them from field reports on 0.25.0 itself,
plus Wave 2 of the PyroWave Linux host-performance program.
Nothing breaks: the wire protocol stays at 2 and the C ABI stays at 17, so
this release adds no call, no message and no capability bit. pf-driver-proto
is byte-for-byte identical to v0.25.0 and to v0.24.0.
Four new environment variables (PUNKTFUNK_OVERLAY_MASK,
PUNKTFUNK_GAMESCOPE_REFRESH_RATES, PUNKTFUNK_PYROWAVE_CHUNK_KIB,
PUNKTFUNK_PYROWAVE_STREAMED_AU), verified new by git grep at the v0.25.0 tag
rather than assumed. plugin-kit goes 0.3.2 -> 0.4.0 for the `plugin` launch
kind; the SDK goes 0.1.2 -> 0.1.4; gamescope patch level +pfhdr2 -> +pfhdr4.
Two behaviour changes make a client advertise LESS than it used to, both
deliberate: VIDEO_CAP_444 is now probed against the driver rather than ridden
off the setting alone (every Steam Deck with "Full chroma" on was losing HEVC
entirely, not crispness — no AMD silicon decodes HEVC 4:4:4), and the Decky
client-update check now reports a failure instead of dressing it up as
"up to date".
Bump is the same four files as 0.25.0: Cargo.toml, Cargo.lock,
docs/releases/v0.26.0.md, docs/releases/whatsnew/v0.26.0.txt — plus the
CHANGELOG.md section, which the split at 0.25.0 made part of the ritual.
Gates run locally, all green:
* cargo fmt --all --check clean
* cargo metadata --locked resolves
* Cargo.lock diff versions-only, 70/70 changed lines, 35 crates
* Play whatsnew gate 398/500 chars, not byte-identical to any other release
* notes voice check 0 internal-vocabulary hits above "## For developers"
Notes are 66 lines against 0.25.0's 83, covering 47 commits.
Still owed on glass and recorded in the CHANGELOG's verification table:
iPhone + Bluetooth listen, Apple TV stats overlay, MacBook audio listen, the
Deck HEVC/4:4:4 retest, a Windows wake-from-sleep cycle, and the
PyroWave-under-game-load A/B with CAP_SYS_NICE actually granted.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
47 commits since v0.25.0, most of them from field reports on 0.25.0 itself, plus Wave 2 of the PyroWave Linux host-performance program.
Nothing breaks
Wire protocol 2 → 2, C ABI 17 → 17 — no symbol added, removed or changed; no new message, no new capability bit.
crates/pf-driver-protois byte-for-byte identical to v0.25.0 and v0.24.0, so anyone shipping the virtual-display driver or the gamepad channel is untouched by the last two releases.Contrast v0.25.0, which moved the ABI 14 → 17 and renamed 149 macros.
What moved
+pfhdr2+pfhdr4(3 patches → 6,pkgrel1 → 2)@punktfunk/host(SDK)@punktfunk/plugin-kitpluginlaunch kind)api/openapi.jsonFour new environment variables —
PUNKTFUNK_OVERLAY_MASK,PUNKTFUNK_GAMESCOPE_REFRESH_RATES,PUNKTFUNK_PYROWAVE_CHUNK_KIB,PUNKTFUNK_PYROWAVE_STREAMED_AU. Verified new bygit grepat the v0.25.0 tag rather than assumed; the other six that show up in the diff (PUNKTFUNK_JUMBO,_WIRE_MTU,_STREAMED_AU,_LIBRARY_ART_ROOTS,_RECOVER_SESSION_CMD,_GAMESCOPE_SDR_NITS) all already existed.⚠ Two deliberate changes that make a client advertise LESS
Both are the point, not regressions, and both belong in any triage of "it worked in 0.25":
VIDEO_CAP_444is probed now, not asserted. Every Steam Deck with "Full chroma" on was losing HEVC entirely (→ H.264), not losing crispness — the host grants 4:4:4 on HEVC only and answers the resolved chroma in theWelcomebefore the client builds a decoder, and no AMD silicon decodes HEVC 4:4:4. Per-profile and default-off is why it read as intermittent.The version was forced, not chosen
bash scripts/ci/pf-version.sh→PF_BASE=0.26.0. Canary is always minor+1 of the newest stable, so canary has been building as 0.26.0 all along and testers already carry that number.Contents
The same four files as the 0.25.0 bump —
Cargo.toml,Cargo.lock,docs/releases/v0.26.0.md,docs/releases/whatsnew/v0.26.0.txt— plus theCHANGELOG.mdsection, which the 0.25.0 split made part of the ritual.Notes are 66 lines against 0.25.0's 83, covering 47 commits.
Gates run locally, all green
cargo fmt --all --checkcargo metadata --lockedCargo.lockdiff## For developers⚠ The Play gate counts characters, not bytes —
•is 3 bytes in UTF-8, sowc -creads 405 and would mislead. The check above is the gate's ownpython3arithmetic.⏳ Owed on glass
Recorded in the CHANGELOG's own verification table rather than left implicit: iPhone + Bluetooth listen, the Apple TV stats overlay, a MacBook audio listen, the Deck HEVC/4:4:4 retest, a Windows wake-from-sleep cycle, and the PyroWave-under-game-load A/B with
CAP_SYS_NICEactually granted — the number that whole wave is aimed at.⚠ Main moved 12 commits during an earlier pass of this prep, and 0.25.0's record has it moving 190 twice while a release PR sat open. Re-check
v0.25.0..origin/mainbefore tagging.