# v2.43.1 — fixes from the first macOS reports, and what ARM Windows PCs install

**Released 2026-10-17.** Upgrade:

```sh
sudo snap refresh yazses     # snap
pipx upgrade yazses          # or: uv tool upgrade yazses
scoop update yazses          # Windows
```

Restart the daemon afterwards. From this release on, starting a newer YazSes also replaces an older
running one (below), so an upgrade no longer leaves the previous daemon answering.

## A daemon from before the upgrade no longer wins

A YazSes daemon reads its permissions, its config and its code once, when it starts. After an upgrade the
previous daemon used to keep running, and opening the new app found it and exited with *"Another YazSes
daemon is already running"*. On macOS that is how a keyboard permission read before it was granted stayed in
force for days ([#562](https://github.com/MSKazemi/yazses/issues/562)). A starting daemon that finds the lock
held now asks the holder its version; if the holder is strictly older, it asks it to shut down and takes
over. An equal version (a plain duplicate start), a newer one, one that will not say, and one that does not
answer are all left alone and reported as before.

## macOS: Quit now stops the daemon

The menu bar's Quit ended the tray process from inside its event loop, so the tray never got to tell the daemon
to shut down, and the daemon kept running ([#578](https://github.com/MSKazemi/yazses/issues/578)). The shutdown
is now sent from the library's quit event as well. This was found by reading the library's source and Apple's
documented behaviour; it has not been run on a Mac yet, so the confirmation from the person who reported it
(`ps aux | grep -i yazses` before and after Quit) is still outstanding.

## The tray's Re-calibrate measures the room and your voice

`yazses mic-level --set` has measured the room and then your voice since v2.36.0, but the tray's **Re-calibrate**
button, the mic-guard toast and the spoken "re-calibrate" still recorded one clip, assumed it was speech and
wrote half its level ([#579](https://github.com/MSKazemi/yazses/issues/579)). A loud sentence set a gate above
your quieter speech; an empty room set one below its own noise. It now asks for the room, then your voice, places
the gate between them, and writes nothing if the two are too close together.

## Windows on ARM: use the x64 installer

v2.43.0 shipped without `YazSes-<version>-windows-arm64.exe`, and this release does not bring it back. The speech
engine, `ctranslate2`, publishes no ARM Windows wheel in any release, so a native ARM build cannot include it.
The build logs show the arm64 installers of earlier releases contained the x64 `ctranslate2`, which means they were
x64 builds under an arm64 name; they stopped being produced when the build tool changed which Python it gives an
ARM runner. Use `YazSes-<version>-windows-x64.exe` on an ARM PC: it runs under Windows' emulation, exactly as the
earlier "arm64" file did. Scoop and winget install the same x64 build. This was inferred from the dependency and the
logs; the shipped binaries were not inspected.

## Also

The packaging manifests (Scoop, Chocolatey, winget, Homebrew, AUR, Fedora) were refreshed for v2.43.0 from the
assets actually attached to that release.

The complete list is in the [changelog](https://github.com/MSKazemi/yazses/blob/main/CHANGELOG.md).
