main went from35ba64catoa8a4b11fwhile this branch sat open — 190 more commits, taking 0.25.0 to 327 since v0.24.0 and making it the largest release so far. That scale is what forced the restructure. THE SPLIT. Through v0.24.0 the engineering detail lived in an `## Under the hood (for developers)` section at the bottom of the notes. It had grown to 21 dense bullets sitting under the user-facing half — the exact burying the voice rules exist to prevent, and it would only have got worse here. So: * `CHANGELOG.md` at the repo root is now the technical half, newest release first. It opens with a version table that lists every protocol number INCLUDING the unchanged ones, because "did the driver protocol move?" is the question an embedder most often needs answered and "no" is a real answer. Then breaking changes, capability bits, wire planes, env vars, and the rest. * `docs/releases/vX.Y.Z.md` keeps a short `## For developers` pointer and otherwise contains no internal names at all. * The link targets the file AT THE TAG, not at main. A release's notes are frozen; a main link would silently start describing a later release. * README.md and TEMPLATE.md now document this as the ritual rather than leaving it a one-off, including a new rule 7 requiring the TL;DR. The notes are SHORTER than before the merge — 83 lines against 108 — while covering three times as much. That is the point. TL;DR, six bullets: FFmpeg gone from the desktop clients; AV1 at 4K shipping half of every frame; HDR/10-bit leaving half the encoder idle; Windows hosts minting their own audio devices; the controller sweep; and settings silently resetting. The last bullet points at `## Before you update` rather than restating it. WHAT I DELIBERATELY DID NOT PROMOTE. #96 (HEVC DPB) and the rav1d half of #97 are ship-blockers for the NEW decode stack, not live field bugs — verified, `git ls-tree v0.24.0 -- crates/` has none of pf-vkdecode/pf-bitstream/pf-dxvadec/ pf-vaadec and `dpb_limit` did not exist at the tag. Nobody on a released build has ever hit them. They are in Fixed and in the changelog, not the TL;DR, which is reserved for things a reader is living with today. (A memory note claiming shipped 0.24.x clients carry the HEVC bug was wrong and has been corrected — it was about to drive a release decision.) Also kept out of user-facing Fixed: the plugin-UI empty panel (fixes the origin split from earlier in THIS release, so it folds into that change — but its 47993 firewall consequence IS in `## Before you update`, because an upgraded host keeps a 47992-only rule and every plugin interface goes blank), and the pad-audio WASAPI path fix (repairs a Windows build break in never-shipped code). HONESTY CARRIED FORWARD rather than smoothed. The notes say plainly that the Android overlay change did not make the stream faster, that nothing is recoverable from the Windows non-C: settings loss, that Deck HDR still needs Steam's own display setting, and that VB-CABLE should be left installed. The changelog's verification section says the FFmpeg-deletion milestone never executed on a GPU, pf-vaadec has never decoded a frame anywhere, openh264 has never run on glass, and controller audio has never touched a real DualSense. Play's "What's new" refreshed and re-fitted: swapped the TV-profiles line for the safe-area/notch fix, which is visible to every modern phone user. First draft came out at 525 chars; trimmed to 497/500, verified with android.yml's gate logic. Re-verified after the merge (Cargo.lock conflicted — took main's and regenerated the bump): lock diff versions-only 35/35 against origin/main, `cargo metadata --locked` resolves (39 members; fec-rs, pf-driver-proto, usbip-sim and the newly vendored cros-codecs keep their own versions), `cargo fmt --all --check` clean in both workspaces, doc lazy-continuation scanner 0 hits over 579 files, notes body 0 internal-vocabulary hits above `## For developers`. Wire 2. C ABI 14 -> 17 (15 rumble floor, 16 pad audio, 17 session end reason). Driver protocol 6 and gamepad channel 3 untouched. host_caps is down to its last free bit (0x80) and video_caps has been full since 0.23.0 — both now stated in the changelog rather than left to be rediscovered.
1.3 KiB
Wire-compatible with X.Y.x — existing pairings and clients keep working. <one sentence on how older/newer clients negotiate or fall back, so nobody fears updating.>
<Optional: one or two sentences naming the headline change of this release — this whole lead-in
(everything above the first ##) is what the Discord #releases embed shows, so make it read as a
standalone summary.>
TL;DR
- <Second. Anything that needs the reader to ACT goes here too, and in
## Before you update.> - <Third. Three to six bullets, one line each. This is what a reader sees instead of giving up.>
Before you update
<DELETE THIS SECTION if nothing in the release needs the reader to do anything. Otherwise: one bullet per action, saying plainly what breaks if they skip it.>
New
- . <What changed and why it matters, concretely. Which side to update.>
Improved
- . <…>
Fixed
- . <…>
For developers
Protocol, ABI, driver and embedder detail — including the version table and any breaking changes — is in CHANGELOG.md.
<One sentence if and only if there is a breaking change an embedder must act on, so it is not missed by someone who does not follow the link.>