Last paperwork change before the v0.28.1 tag. Ten commits landed after the release commit — the deb image fix (#220), the two macOS audio fixes (#221, #223) and the TV screenshot automation (#222) — so the release notes no longer described the release.
What changes
CHANGELOG: 50 → 60 commits since v0.28.0. Nothing else moves. The version table is unchanged on every row, re-verified against the tag: include/, crates/pf-driver-proto, plugin-kit/package.json and sdk/ are all still byte-identical to v0.28.0, so the C ABI stays 19. #221 brought its own CHANGELOG section, so the technical half already covered the macOS work.
Notes: the user-facing file had no mention of the macOS fault at all, and it is headline-grade — streaming from a Mac with the mic on cut audio and froze input on a ~2.5 s metronome, with "turn the microphone off" as the only workaround. It now leads the summary paragraph, has a TL;DR line, and a full Fixed entry explaining the loop in plain terms.
TL;DR trimmed from nine multi-line bullets to seven one-liners. docs/releases/README.md asks for 3–6; this release has an unusual number of genuinely severe entries, so seven is the honest floor without hiding one, and the long-form detail was already duplicated in Fixed where it belongs. The Apple stats-overlay and Apple TV colour bullets lose their TL;DR slots and keep their Fixed entries.
SessionAudio.start() is now asynchronous on macOS — added to the notes' For developers paragraph. It is the one embedder-visible edge in #223, and an embedder who only reads the notes would otherwise meet it at runtime.
Play notes are untouched and still accurate: the only commit to touch clients/android since is b6b3c10c, which is screenshot CI, not app behaviour.
Gates
fmt clean · cargo metadata --locked consistent · cargo test -p punktfunk-core210 passed · C ABI harness abi_version=19 · api/openapi.json and the docs-site copy still byte-identical.
⚠ Do not tag until the builder image has published
The punktfunk-gamescope-trixie job in docker.yml on the #220 merge (run 18154) was cancelled before it started — the next push superseded it — so the fixed image was never actually built or pushed. :latest in the LAN registry is still the one without libx11-xcb-dev.
Merging this produces a fresh main push, which re-runs docker.yml and rebuilds the image (its key hashes the ci/ tree, which #220 changed). Wait for that job to go green, and for this sha's deb run to build build-publish-gamescope successfully, before pushing the tag — otherwise the tag's deb leg pulls the stale image and fails exactly as it did on ceb081f0.
Last paperwork change before the **v0.28.1** tag. Ten commits landed after the release commit — the deb image fix (#220), the two macOS audio fixes (#221, #223) and the TV screenshot automation (#222) — so the release notes no longer described the release.
## What changes
- **CHANGELOG**: `50` → `60` commits since v0.28.0. Nothing else moves. The version table is unchanged on every row, re-verified against the tag: `include/`, `crates/pf-driver-proto`, `plugin-kit/package.json` and `sdk/` are all still byte-identical to v0.28.0, so the **C ABI stays 19**. #221 brought its own CHANGELOG section, so the technical half already covered the macOS work.
- **Notes**: the user-facing file had **no mention of the macOS fault at all**, and it is headline-grade — streaming from a Mac with the mic on cut audio *and* froze input on a ~2.5 s metronome, with "turn the microphone off" as the only workaround. It now leads the summary paragraph, has a TL;DR line, and a full `Fixed` entry explaining the loop in plain terms.
- **TL;DR trimmed** from nine multi-line bullets to seven one-liners. `docs/releases/README.md` asks for 3–6; this release has an unusual number of genuinely severe entries, so seven is the honest floor without hiding one, and the long-form detail was already duplicated in `Fixed` where it belongs. The Apple stats-overlay and Apple TV colour bullets lose their TL;DR slots and keep their `Fixed` entries.
- **`SessionAudio.start()` is now asynchronous on macOS** — added to the notes' `For developers` paragraph. It is the one embedder-visible edge in #223, and an embedder who only reads the notes would otherwise meet it at runtime.
Play notes are untouched and still accurate: the only commit to touch `clients/android` since is `b6b3c10c`, which is screenshot CI, not app behaviour.
## Gates
fmt clean · `cargo metadata --locked` consistent · `cargo test -p punktfunk-core` **210 passed** · C ABI harness `abi_version=19` · `api/openapi.json` and the docs-site copy still byte-identical.
## ⚠ Do not tag until the builder image has published
The `punktfunk-gamescope-trixie` job in docker.yml on the #220 merge (run [18154](https://git.unom.io/unom/punktfunk/actions/runs/18154)) was **cancelled before it started** — the next push superseded it — so **the fixed image was never actually built or pushed**. `:latest` in the LAN registry is still the one without `libx11-xcb-dev`.
Merging this produces a fresh main push, which re-runs docker.yml and rebuilds the image (its key hashes the `ci/` tree, which #220 changed). **Wait for that job to go green, and for this sha's deb run to build `build-publish-gamescope` successfully, before pushing the tag** — otherwise the tag's deb leg pulls the stale image and fails exactly as it did on `ceb081f0`.
Ten more commits landed after the 0.28.1 release commit — the deb image fix, the
two macOS audio ones (#221 + #223) and the TV screenshot automation — so the
release paperwork no longer described the release.
CHANGELOG: 50 -> 60 commits since v0.28.0. Nothing else moves; the version table
is unchanged on every row, re-verified against the tag (`include/`,
`crates/pf-driver-proto`, `plugin-kit/package.json` and `sdk/` are all still
byte-identical to v0.28.0, so the C ABI stays 19). #221 brought its own CHANGELOG
section, so the technical half already covered it.
NOTES: the user-facing file had no mention of the macOS fault at all, and it is
headline-grade — streaming from a Mac with the mic on cut audio AND froze input
on a ~2.5 s metronome, with turning the microphone off as the only workaround. It
now leads the summary paragraph, has a TL;DR line and a full Fixed entry
explaining the loop in plain terms (a mic that cannot run echo cancellation, each
failed attempt knocking out the working path and thereby triggering the next).
The TL;DR was also trimmed from nine multi-line bullets to seven one-liners.
`docs/releases/README.md` asks for 3-6, and this release has an unusual number of
genuinely severe entries — seven is the honest floor without hiding one, and the
long-form detail was already duplicated below in Fixed, which is where it belongs.
The Apple stats-overlay and Apple TV colour bullets lost their TL;DR slots and
keep their Fixed entries.
`SessionAudio.start()` being asynchronous on macOS is added to the notes' `For
developers` paragraph — it is the one embedder-visible edge in #223, and an
embedder who only reads the notes would otherwise meet it at runtime.
Play notes are untouched and still accurate: the only commit to touch
clients/android since is `b6b3c10c`, which is screenshot CI, not app behaviour.
Gates on this tree: fmt clean, `cargo metadata --locked` consistent,
`cargo test -p punktfunk-core` 210 passed, C ABI harness abi_version=19,
`api/openapi.json` and the docs-site copy still byte-identical.
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.
Last paperwork change before the v0.28.1 tag. Ten commits landed after the release commit — the deb image fix (#220), the two macOS audio fixes (#221, #223) and the TV screenshot automation (#222) — so the release notes no longer described the release.
What changes
50→60commits since v0.28.0. Nothing else moves. The version table is unchanged on every row, re-verified against the tag:include/,crates/pf-driver-proto,plugin-kit/package.jsonandsdk/are all still byte-identical to v0.28.0, so the C ABI stays 19. #221 brought its own CHANGELOG section, so the technical half already covered the macOS work.Fixedentry explaining the loop in plain terms.docs/releases/README.mdasks for 3–6; this release has an unusual number of genuinely severe entries, so seven is the honest floor without hiding one, and the long-form detail was already duplicated inFixedwhere it belongs. The Apple stats-overlay and Apple TV colour bullets lose their TL;DR slots and keep theirFixedentries.SessionAudio.start()is now asynchronous on macOS — added to the notes'For developersparagraph. It is the one embedder-visible edge in #223, and an embedder who only reads the notes would otherwise meet it at runtime.Play notes are untouched and still accurate: the only commit to touch
clients/androidsince isb6b3c10c, which is screenshot CI, not app behaviour.Gates
fmt clean ·
cargo metadata --lockedconsistent ·cargo test -p punktfunk-core210 passed · C ABI harnessabi_version=19·api/openapi.jsonand the docs-site copy still byte-identical.⚠ Do not tag until the builder image has published
The
punktfunk-gamescope-trixiejob in docker.yml on the #220 merge (run 18154) was cancelled before it started — the next push superseded it — so the fixed image was never actually built or pushed.:latestin the LAN registry is still the one withoutlibx11-xcb-dev.Merging this produces a fresh main push, which re-runs docker.yml and rebuilds the image (its key hashes the
ci/tree, which #220 changed). Wait for that job to go green, and for this sha's deb run to buildbuild-publish-gamescopesuccessfully, before pushing the tag — otherwise the tag's deb leg pulls the stale image and fails exactly as it did onceb081f0.