This release primarily features performance improvements, the new icon and contributions from the community.
Previously, AeroSpace suffered from major performance problems caused by the fact that AeroSpace was a single-threaded application, and macOS accessibility API is a blocking API. If at least one application was unresponsive, it'd block the entire system. Starting from this release, AeroSpace implements thread-per-application model, which allows it to stay responsive even in the mentioned case. On top of that, the accessibility requests were made cancellable, which helps to avoid doing unnecessary work when consecutive accessibility requests could be coalesced.
AeroSpace is migrated to Swift 6 strict concurrency mode which hopefully will help to prevent data-races.
The performance problems are not fixed entirely, but the release lays down a good foundation for future fixes. In particular, Godot (and maybe some other apps) still introduces half a second delay for AeroSpace, but it doesn't entirely block the system anymore! (tracking issue for investigating Godot: #218) Another optimization direction is to entirely avoid accessibility requests to windows which are located on invisible workspaces (tracking issue: #545)
Thread-per-application is a significant shift in AeroSpace architecture, I expect quite a few bugs in this release. Please report bugs as usual, but I encourage you to check if the bug is introduced in 0.18.0.
Performance improvements
- #131 AeroSpace now implements thread-per-application model. More details: #131 (comment) #131 (comment)
- #131 #1249 Coalesce idempotent accessibility requests. By @rickyz
New features
- New icon
- #748 Support pageUp, pageDown, home, end, forwardDelete
- 2bb435b Support European/ISO
sectionSignkey in config - #1073 Add
failaction to--boundaries-action. By @MediosZ - #846 Add
workspace-is-focusedandworkspace-is-visiblequery data types. By @xiamaz - #730 Add Colemak keyboard layout preset. By @ll1zt
Bug fixes
- #1257 Fix bug: Dead windows may appear in
aerospace list-windows --all. By @rickyz - #1231 Fix bug: Binding
reload-configin themainbinding mode is unreliable. By @rickyz
Met vriendelijke groeten,
Nikita Bobko