-
v0.33.0
Stableaudit / bun-audit (plugin-kit) (push) Successful in 29saudit / bun-audit (web) (push) Successful in 31saudit / bun-audit (sdk) (push) Successful in 38saudit / docs-site-audit (push) Successful in 32saudit / license-gate (push) Successful in 5m5saudit / c-abi-asan (push) Successful in 5m43sci / web (push) Successful in 51sci / bun-nix (push) Successful in 26sci / docs-site (push) Successful in 56sci / docs-drift (push) Successful in 29sci / rust-arm64 (push) Successful in 5m48saudit / miri (push) Successful in 8m13saudit / pnpm-audit (push) Successful in 16saudit / cargo-audit (push) Successful in 1m10sci / rust (push) Successful in 16m29snix / flake (push) Successful in 19m50sdeb / build-publish-gamescope (push) Successful in 1m3sandroid-screenshots / screenshots (push) Successful in 1m52sdeb / build-publish-client-arm64 (push) Successful in 1m54sdecky / build-publish (push) Successful in 1m4sdeb / build-publish (push) Successful in 4m44sdeb / build-publish-host (push) Successful in 5m17ssbom / sbom (push) Successful in 36sandroid / android (push) Successful in 9m35swindows-client / client (arm64, --no-default-features, aarch64-pc-windows-msvc, C:\t-a64) (push) Successful in 8m4sarch / build-publish (push) Successful in 10m5sflatpak / build-publish (push) Successful in 7m17slinux-client-screenshots / screenshots (push) Successful in 4m43sdeb / smoke-install (push) Successful in 2m48sweb-screenshots / screenshots (push) Successful in 6m11swindows-client / client (x64, , x86_64-pc-windows-msvc, C:\t) (push) Successful in 10m36srpm / build-publish (43, bazzite, punktfunk-fedora-rpm) (push) Successful in 17m8srpm / build-publish (44, fedora-44, punktfunk-fedora44-rpm) (push) Successful in 19m5swindows-host / package (push) Successful in 15m11swindows-host / canary-manifest (push) Skippedwindows-host / winget-source (push) Successful in 52sdocker / builders (ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 21sdocker / builders (--build-arg FEDORA_VERSION=44, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm, -f44) (push) Successful in 24sdocker / builders (ci/arch-ci.Dockerfile, punktfunk-arch-ci) (push) Successful in 21sdocker / builders (ci/flatpak-ci.Dockerfile, punktfunk-flatpak-ci) (push) Successful in 21sdocker / builders (ci/gamescope-trixie.Dockerfile, punktfunk-gamescope-trixie) (push) Successful in 22sdocker / builders (ci/rust-ci-noble.Dockerfile, punktfunk-rust-ci-noble) (push) Successful in 22sdocker / builders (ci/android-ci.Dockerfile, punktfunk-android-ci) (push) Successful in 23sdocker / builders (ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 11sdocker / apps (., web/Dockerfile, punktfunk-web) (push) Successful in 34sdocker / builders-arm64cross (push) Successful in 13sdocker / apps (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 1m6sapple / swift (push) Successful in 2m17sdocker / deploy-docs (push) Successful in 36sapple / distribute (push) Successful in 12m38sapple / screenshots (push) Successful in 9m59sreleased this
2026-08-28 23:46:59 +00:00 | 6664 commits to main since this releaseThis release is for everyone who streams games or a desktop with Punktfunk. It works with 0.32.x, so everything you have already paired keeps working, and you can update one side at a time.
If you are on 0.32.0, update. That release broke automatic bitrate. The first moment of packet loss dropped a stream from 20 Mbps to around 2 Mbps, and it never climbed back. Two people reported it from opposite setups, which is what made the cause findable. It is fixed here.
The headline feature is the other half of a round trip we only ever did once. Punktfunk has been able to wake your host from the couch for a while. Now it can put it back: sleep, restart and shut down appear on every client, in the same menu that woke the machine. Finish on the TV and send the host to sleep from the sofa.
Omarchy is now a first-class host. A one-command install, a setup command that wires the firewall and the app menu for you, and a console that wears your desktop theme instead of ignoring it. Five things we had assumed about that system turned out to be wrong when we ran it on real hardware, and all five are fixed rather than documented.
TL;DR
- Automatic bitrate is fixed. On 0.32.0 one bad moment cost you the whole session. Read "Before you update" if you turned automatic off because of it.
- You can sleep, restart or shut down your host from any client. Read "Before you update" if you have paired a device with Full control.
- Omarchy is a supported host. One-command install, a setup step, and the console follows your theme.
- Fixed a black screen on Hyprland desktops. The streamed display was never focused, so nothing was ever drawn on it.
- Your client no longer picks a random route to your host. One person's stream went over a virtual private network while both machines sat on the same Wi-Fi.
- Intel Arc graphics: fixed a green picture on every high dynamic range (HDR) session.
- "Keep host audio playing" now works on Apple and Android, not just the desktop clients.
What's in this release
Before you update
- A device paired with "Full control" can now shut down your host. Host power is a new permission, and it is included in Full control. Any device you already trust with everything gains it when you update. If that is not what you want, open the device's access settings and switch host power off. Every other access level is unaffected.
- If you turned automatic bitrate off on 0.32.0, you can turn it back on. The collapse you were working around is fixed. If you set a manual rate to escape it, that rate is now a ceiling you no longer need.
- Omarchy users: run
punktfunk-omarchy setupafter installing. The package installs the command but never runs it, because opening a firewall and editing your app menu behind your back is not something a package should do. The install guide walks through it.
New
- Sleep, restart and shut down your host from the couch. Every client's host menu grows the three rows, right where "Wake host" appears when the machine is asleep. Restart and shut down ask you to confirm. Sleep does not, because it is reversible from the same menu. An action your host cannot run right now stays listed, greyed out, and says why.
- Omarchy is a supported host. It gets its own install page, a one-command installer, and a setup step. Setup opens the firewall for your local network only, adds Punktfunk to the app menu, and starts the host with your session. It also checks whether anything else is already using the same ports.
punktfunk-omarchy removeputs everything back. - The web console follows your desktop theme. Switch theme and the console switches with it, within a couple of seconds, including your background and text colours. Warning and delete buttons deliberately keep their own colours: a theme with a red accent must not make "delete" and "save" look the same. Every colour combination is checked for readable contrast against six shipped themes before it ships.
- Opening the console from your own app menu no longer asks who you are. It recognises you as the person running the host, using a one-time pass that expires in a minute. Anyone arriving without one still meets the login page, so the console stays safe to reach from your phone.
- A command-line interface for the host.
punktfunk-host ctlhandles pairing, device lists, access levels, stopping a session, and following host events as they happen. It verifies it is talking to your real host before it sends anything, so a program squatting on the port learns nothing. - The installer can move a host between release channels.
--channel canaryand--channel stablenow work on a machine that already has Punktfunk, in both directions. Going back to stable is a downgrade, which package managers refuse unless told, so the installer tells them. Re-running the installer without naming a channel leaves you on the one you are on.
Improved
- The one-command install is on every page it works for. It used to be mentioned only on the install hub, so anyone landing on the Ubuntu page from a search never learned it existed.
- The troubleshooting page names two failures that used to report nothing. Hyprland can silently refuse a program permission to capture the screen or send input, which looks like a black screen with dead controls and no error anywhere. And on Omarchy the console's update button is deliberately absent, so the page now says where updates come from instead.
- The tray's restart row says "Restart Punktfunk", so it is not confused with restarting the machine.
Fixed
- Automatic bitrate collapsed and stayed collapsed. On 0.32.0, and only on 0.32.0, every automatic session dropped from around 20 Mbps to around 2 Mbps at the first sign of packet loss, and could never climb back. It was reported twice from opposite setups: a Windows client over a virtual private network, and an Android client on Wi-Fi. The cause was 0.32.0's own bitrate rework, where a rounding step of one or two kilobits made every successful rate change look like the host refusing to go faster. Your client learned that as a hard limit, then lowered it again on the next dip.
- A stream could start with five to eleven seconds of black video. Your client measures your connection's capacity by sending a short burst at startup. It fired on a fixed two-second timer, but a Windows host can take six to eight seconds to get its display ready. So the burst landed exactly on the first video frame and buried it, then missed its own deadline and threw the measurement away. The burst now waits until a frame has actually arrived.
- Hyprland desktops: a black screen on every session. The display Punktfunk creates for your stream was never given focus, and a display nothing is looking at draws nothing at all. No drawing means no frames, so capture gave up waiting and the client showed black. Getting focus onto it needed a spelling that only works on newer Hyprland setups, and we had the wrong one.
- Hyprland desktops: only the first session worked. Punktfunk borrows your screen-share picker while it streams and hands it back afterwards. Handing it back after every session restarted a system service underneath the next one, and a stream started across that restart never receives a single frame. The picker is now handed back when the host exits. In between, it passes anything that is not us straight through, so an ordinary browser screen share behaves exactly as before.
- Switching desktop theme reset your stream's resolution. Changing an Omarchy theme reloads the compositor's configuration, and a reload discards the display settings Punktfunk had applied — so the stream silently dropped to a default resolution mid-session. Resizing the client window appeared to fix it, which is why this looked like a client bug. Punktfunk now watches for the reload and re-applies its settings. Any reload is covered, including one you run yourself.
- Hyprland desktops: your monitors could stay dark after a failed session. When Punktfunk streams your desk exclusively it turns your physical monitors off, and puts them back at the end. If starting the session failed and it retried, the retry overwrote the note saying which monitors to restore. So nothing was restored, and recovery meant reloading the compositor by hand.
- Your client picked a route to your host at random. One person's stream ran over a virtual private network while both machines sat on the same Wi-Fi, and neither end chose that. Your operating system answers name lookups on every network it can see, so the list your client gets is polluted by every virtual network reaching it. The client then took whichever entry came first, re-rolling every time your host announced itself. Desktop and Android now both prefer the network they share with your host, then the address your host says to use.
- Intel Arc graphics: a green picture on every HDR session. Reported on an Arc A370M, where 8-bit sessions at the same resolution and frame rate looked perfect. Your client was promising it could display HDR without ever checking whether the graphics driver could actually convert it. It now asks the driver first, and only a definite "no" turns HDR off.
- "Keep host audio playing" was missing on Apple and Android. The setting shipped in 0.32.0, but only three clients ever offered it. So a phone or an Apple TV was the one place someone would look for "why did my host go quiet" and find nothing. It is now on every client, in the same place, worded the same way. A per-host profile can keep the study machine's headphones live while the living-room profile mutes them.
- A fresh install reported that the web console had failed to start. It then started two seconds later and worked fine, but the first attempt printed a hard failure on a perfectly good install — and anything watching the result believed it. The console was starting before the host had written the files it needs. It now waits for them.
- Uninstalling left things behind. Removing Punktfunk took the packages but left firewall rules, an app-menu entry, a startup file, and a screen-share setting still pointing at something no longer installed. Uninstall now undoes its own setup first.
- Omarchy: the install command could not work. The command we published combined two options that Omarchy deliberately blocks, so it installed nothing at all. Two other things were wrong on that system. The setting that keeps your machine awake during a stream was never restored afterward. And the status command reported firewall rules missing seconds after adding them.
- Punktfunk's entry in your app menu drew no icon, because the host package never shipped one.
- Updating our website under an open tab no longer blanks the page. A tab left open across a deployment asked for files the new version had renamed, and the page went blank on the next click. It now reloads onto the page you were going to. This affected the web console and the documentation site.
Thanks
Most of this release started as somebody describing what they actually saw:
- The stream that fell to 2 Mbps and stayed there, reported twice from setups with nothing in common. That pair is what ruled out the network.
- The green picture on an Arc card, with the detail that 8-bit sessions at the same resolution were clean. That is what pointed at the conversion rather than the decoder.
- The stream running over a virtual private network while both machines were on the same Wi-Fi. Nobody would have gone looking for that one.
- A real Omarchy machine, run through the whole plan step by step. Five of our assumptions were wrong, and every one of them was a bug somebody would have hit in their first ten minutes.
Thank you.
One caveat we would rather write down than have you find. The Hyprland fixes are verified on a real Omarchy machine, with one exception. Re-applying your resolution after a theme switch is unit-tested, and we confirmed the trigger fires on that machine. Testing the re-application itself would have meant interrupting a live stream on the only box we had. If a theme switch still costs you your resolution, please tell us.
For developers
Protocol, application binary interface (ABI), driver and embedder detail is in the v0.33.0 CHANGELOG. It carries the version table and the full breaking-change list.
The short version: nothing versioned moves. The streaming protocol, the ABI, the driver protocol, the gamepad channel, the add-on contract and the event schema are all where 0.32.0 left them. The management API grows two routes for host actions.
Two changes will still break a build. The "everything" permission mask widens to include host power, so code comparing a stored mask against it for equality now reads an older record as custom. There is a compatibility constant for the old value, and the host applies the compatibility rule itself. Separately, a capability constant that 0.32.0 exported without its prefix is renamed to carry one. Its value is unchanged.
Downloads