chore(release): bump workspace version to 0.9.1
audit / bun-audit (push) Successful in 13s
ci / web (push) Successful in 53s
ci / docs-site (push) Successful in 55s
apple / swift (push) Successful in 1m10s
audit / cargo-audit (push) Successful in 2m41s
ci / bench (push) Successful in 5m39s
android-screenshots / screenshots (push) Successful in 3m3s
windows / build (aarch64-pc-windows-msvc) (push) Successful in 58s
windows / build (x86_64-pc-windows-msvc) (push) Successful in 1m15s
decky / build-publish (push) Successful in 17s
flatpak / build-publish (push) Failing after 2m17s
android / android (push) Successful in 12m47s
arch / build-publish (push) Successful in 11m58s
windows-host / package (push) Successful in 8m53s
deb / build-publish (push) Successful in 12m37s
ci / rust (push) Successful in 24m59s
release / apple (push) Successful in 12m36s
windows-msix / package (arm64, C:\Users\Public\ffmpeg-arm64, --no-default-features, aarch64-pc-windows-msvc, C:\t-a64) (push) Successful in 2m5s
web-screenshots / screenshots (push) Successful in 2m44s
windows-msix / package (x64, C:\Users\Public\ffmpeg, , x86_64-pc-windows-msvc, C:\t) (push) Successful in 2m18s
linux-client-screenshots / screenshots (push) Successful in 8m34s
apple / screenshots (push) Successful in 5m41s
rpm / build-publish (44, fedora-44, punktfunk-fedora44-rpm) (push) Successful in 13m48s
rpm / build-publish (43, bazzite, punktfunk-fedora-rpm) (push) Successful in 21m19s
docker / deploy-docs (push) Successful in 22s
docker / build-push (--build-arg FEDORA_VERSION=44, ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm) (push) Successful in 9s
docker / build-push (ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 7s
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 7s
docker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 8s
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 8s

Release 0.9.1 — a patch release led by three field-reported crash/brick
fixes, a security-review hardening pass, and the tiered stats overlay
landing on every platform.

The regression that forces the release: 0.9.0's stats-HUD display stage
hard-linked an API-33 NDK symbol believed API-26, so the native library
failed to load on every Android < 13 device — "Identity unavailable:
…NativeBridge", dead pair button, no discovery. The callback is now
dlsym-resolved (pre-13 devices simply lose that one HUD row), and a new CI
guard fails the APK build if the native lib ever imports a symbol beyond
the API-28 floor.

Two more crash-class host fixes ride along. GNOME: one console Approve
admitted every parked knock a retrying client had stacked up — three
instant Mutter virtual monitors segfaulted gnome-shell down to the GDM
greeter; knock generations now admit exactly one, Mutter topology
mutations are serialized process-wide, stale session-env is cleared, and
an opt-in PUNKTFUNK_RECOVER_SESSION_CMD hook can revive a dead session on
the next connect. Windows: twin identical GPUs died in a TEX_FAIL retry
loop when the IDD-push ring opened on the wrong twin — the ring now
rebinds once onto the render LUID the driver reports, and GPU inventory
ordering is LUID-sorted and stable for the boot.

Input: held gamepad state is rock-solid — Android pins one qualified pad
device (motion-sensor siblings zeroed axes on every event interleave), and
pad state now travels as sequence-gated idempotent snapshots
(HOST_CAP_GAMEPAD_STATE, negotiated; either end older falls back to the
per-transition path).

Security review findings addressed: sliding-window anti-replay on the
AEAD-authenticated data-plane sequence, 0600 client key + 0700 config dir
(existing stores re-locked), the web console's post-login open redirect
closed, the Windows installer's FFmpeg DLLs SHA-256-pinned, and a fork
guard on PR jobs sharing signing-runner labels.

Features: the 3-tier stats overlay (Compact/Normal/Detailed) ships on
every platform with cycle shortcuts and settings pickers; Apple gains the
experimental stage-3 glass-gated presenter (fixes the hidden 29-30 ms
display-stage queue on 120 Hz ProMotion; stage 2 stays default) and a
morphing, device-corner-concentric overlay card. Plus repo-wide docs sync
and the flatpak CI network hardening.

The [workspace.package] version (inherited by every crate via
version.workspace) is the release being cut; the 14 workspace entries in
Cargo.lock and the api/openapi.json info.version are refreshed to match
(CI builds --locked). Canary derives from the tag as minor+1 of the latest
stable.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-10 10:49:10 +02:00
parent 3d6c06bb06
commit aaed4380e5
3 changed files with 16 additions and 16 deletions
Generated
+14 -14
View File
@@ -2154,7 +2154,7 @@ dependencies = [
[[package]]
name = "latency-probe"
version = "0.9.0"
version = "0.9.1"
[[package]]
name = "lazy_static"
@@ -2286,7 +2286,7 @@ checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
[[package]]
name = "loss-harness"
version = "0.9.0"
version = "0.9.1"
dependencies = [
"punktfunk-core",
]
@@ -2765,7 +2765,7 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
[[package]]
name = "pf-client-core"
version = "0.9.0"
version = "0.9.1"
dependencies = [
"anyhow",
"async-channel",
@@ -2787,7 +2787,7 @@ dependencies = [
[[package]]
name = "pf-console-ui"
version = "0.9.0"
version = "0.9.1"
dependencies = [
"anyhow",
"ash",
@@ -2808,7 +2808,7 @@ dependencies = [
[[package]]
name = "pf-ffvk"
version = "0.9.0"
version = "0.9.1"
dependencies = [
"ash",
"bindgen",
@@ -2817,7 +2817,7 @@ dependencies = [
[[package]]
name = "pf-presenter"
version = "0.9.0"
version = "0.9.1"
dependencies = [
"anyhow",
"ash",
@@ -3001,7 +3001,7 @@ dependencies = [
[[package]]
name = "punktfunk-client-android"
version = "0.9.0"
version = "0.9.1"
dependencies = [
"android_logger",
"jni",
@@ -3017,7 +3017,7 @@ dependencies = [
[[package]]
name = "punktfunk-client-linux"
version = "0.9.0"
version = "0.9.1"
dependencies = [
"anyhow",
"async-channel",
@@ -3033,7 +3033,7 @@ dependencies = [
[[package]]
name = "punktfunk-client-session"
version = "0.9.0"
version = "0.9.1"
dependencies = [
"anyhow",
"pf-client-core",
@@ -3048,7 +3048,7 @@ dependencies = [
[[package]]
name = "punktfunk-client-windows"
version = "0.9.0"
version = "0.9.1"
dependencies = [
"anyhow",
"async-channel",
@@ -3072,7 +3072,7 @@ dependencies = [
[[package]]
name = "punktfunk-core"
version = "0.9.0"
version = "0.9.1"
dependencies = [
"aes-gcm",
"bytes",
@@ -3103,7 +3103,7 @@ dependencies = [
[[package]]
name = "punktfunk-host"
version = "0.9.0"
version = "0.9.1"
dependencies = [
"aes",
"aes-gcm",
@@ -3175,7 +3175,7 @@ dependencies = [
[[package]]
name = "punktfunk-probe"
version = "0.9.0"
version = "0.9.1"
dependencies = [
"anyhow",
"mdns-sd",
@@ -3189,7 +3189,7 @@ dependencies = [
[[package]]
name = "punktfunk-tray"
version = "0.9.0"
version = "0.9.1"
dependencies = [
"anyhow",
"ksni",
+1 -1
View File
@@ -35,7 +35,7 @@ exclude = [
ndk = { path = "clients/android/native/vendor/ndk" }
[workspace.package]
version = "0.9.0"
version = "0.9.1"
edition = "2021"
rust-version = "1.82"
license = "MIT OR Apache-2.0"
+1 -1
View File
@@ -10,7 +10,7 @@
"name": "MIT OR Apache-2.0",
"identifier": "MIT OR Apache-2.0"
},
"version": "0.9.0"
"version": "0.9.1"
},
"paths": {
"/api/v1/clients": {