This is a Beta version, if you get any questions or bugs while using it, please feel free to open an issue to let us know.
📜 Change log
- Supported AirPods 4, AirPods 4 (ANC) and AirPods Pro 3, each with its own animation.
- Completed all 59 strings in German, French, Japanese, Korean, Russian, Simplified Chinese and Traditional Chinese.
- Fixed the close button overlapping long device names.
- Fixed the information popup's DPI scaling, rounded corners and screen placement.
- Fixed a crash that could happen while quitting.
- Fixed the window freezing when binding or unbinding a device.
- Fixed the tray icon reading "Disconnected" instead of "Waiting for Binding" before a device is bound.
- Fixed the update prompt showing an empty change log.
- Fixed pre-release users being silently moved to the stable-only update channel.
- Fixed the app losing track of an AirPods binding that no longer exists.
- Update installers are now verified against the release digest before they run.
- Rebuilt the internal architecture into layered modules and added a first-party test suite.
✨ New devices
AirPods 4, AirPods 4 (ANC) and AirPods Pro 3 are recognised, and each shows its own animation
rather than borrowing an older model's.
🛠️ Reliability
Several long-standing rough edges around the window and the Bluetooth layer are gone:
- The information popup now scales correctly on high-DPI displays, keeps its rounded corners, and
anchors to the working area rather than drifting over the taskbar. - Long device names no longer run underneath the close button.
- Quitting is now clean. The advertisement watcher is stopped before the state manager it calls
into is torn down, closing a window where a Bluetooth callback could arrive mid-shutdown. - Binding or unbinding a device no longer stalls the window. The blocking Bluetooth query was
running on the UI thread, and the settings lock was held across a full paired-device enumeration. - A binding that points at a device Windows no longer knows about now clears itself instead of
leaving the app stuck.
🔄 Updates
- The update prompt shows the change log again. The parser could not read this project's own
release notes, so every prompt appeared blank. - Users on a pre-release build are offered pre-release updates again. The check that decides this
was failing silently and falling back to the stable channel. - Downloaded installers are checked against the SHA-256 digest published with the release before
they are executed. - Releases are now built, packaged and published automatically from a tag, with optional installer
signing when a certificate is configured.
🔧 Under the hood
The codebase is split into layered targets — support, domain, core, presentation and GUI — with a
one-way dependency direction, so the protocol and state logic no longer depend on Qt widgets or on
Windows APIs. That layering is what makes the new test suite possible: 19 cases now cover
advertisement parsing, two-sided state merging, RSSI and model filtering, settings persistence,
release metadata parsing, digest verification, and the main window's presentation model — none of
which need a Bluetooth radio or a window to run.
⚠️ Known issues
- The AirPods 4 (ANC) animation is currently the same file as the AirPods 4 one. The two models
look nearly identical, so the difference is hard to spot, but it will be corrected. AirPodsDesktop.exeis not code-signed in this release, so Windows SmartScreen may warn on first
run. Verify the checksum below if you want to confirm the download.
✅ Checksum
AirPodsDesktop-0.5.0-win32.exe
| Algorithm | Hash |
|---|---|
| MD5 | 5ea34c7d9f519d0dcf8205a5d134c90f |
| SHA1 | 1c2465e3e1c72afa25d4a7e36aa48f5903b889cd |
| SHA256 | 3a63d69f2f422c1638693901b5ec9d926e46117a565ccfb5d8a80db0fbe82a2b |
AirPodsDesktop-0.5.0-win32-portable.zip
| Algorithm | Hash |
|---|---|
| SHA256 | bae581da7f47cee81780197c9e7cbbe32bb9ab984ce6607061935c30ef8c1c6b |
Full Changelog: 0.4.2...v0.5.0