Repository navigation
KeyVault v1.11.1
Fixed
- The vault key can no longer be read while another thread replaces it. The session and suspended keys were plain statics, touched from several threads at once: a passphrase derived on a detached task, an export reading the key on its own actor, and the main thread locking, suspending and resuming. A lock or an idle suspend landing during an export, or Touch ID racing a passphrase unlock, could read the key as another thread released it — rare, and a crash when it happened. Both keys now sit behind one lock, held for the read or the swap and never across a derivation or an encryption, so a large file never holds up locking the vault.
- A downloaded copy is properly notarized on its own. Only the disk image carried the notarization ticket, so the app lost it the moment it was dragged to Applications, and Gatekeeper had to ask Apple instead — which needs a working network on first launch. The app now carries its own ticket. The image itself is also signed now; unsigned, it read as having no usable signature to Gatekeeper even with a valid ticket stapled to it.
Changed
- The toolbar is three groups on macOS 26. macOS 26 draws a run of buttons as a single capsule, so all eight read as one strip with nothing to say where adding a secret ends and backing up the vault begins. They are now grouped the way the sidebar is: the secrets KeyVault stores, the keys it indexes, and the vault as a whole. Earlier versions of macOS draw no capsule, and see the toolbar exactly as before. The order is unchanged.
- The idle timer no longer insists on waking the Mac at its own moment. It ticked every 15 seconds with no tolerance; it now allows a few seconds' slack, which a lock measured in minutes cannot tell from being on time.
- Built in the Swift 6 language mode, where data-race safety is a compile error rather than a hope — the race fixed above is the kind it refuses to build.