From aaed4380e5272eaa65e8b2237c41c18a87064a31 Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Fri, 10 Jul 2026 10:49:10 +0200 Subject: [PATCH] chore(release): bump workspace version to 0.9.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- Cargo.lock | 28 ++++++++++++++-------------- Cargo.toml | 2 +- api/openapi.json | 2 +- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b1ac5b00..239e3500 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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", diff --git a/Cargo.toml b/Cargo.toml index 512362c9..bac2cd1d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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" diff --git a/api/openapi.json b/api/openapi.json index 061c3998..2845eda0 100644 --- a/api/openapi.json +++ b/api/openapi.json @@ -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": {