Releases: CCMurphy-dev/Aegis
Releases · CCMurphy-dev/Aegis
v1.0.28
What's New in v1.0.28
Fixed
- Crash on macOS 26 (complete coverage) — Extended the macOS 26 crash fix to all remaining unprotected windows: Settings panel, Yabai setup prompt, AeroSpace setup prompt, and App Switcher. Added
AegisOverlayPanel(anNSPanelsubclass with identical@try/@catchoverrides) to cover the App Switcher panel. AllNSHostingViewinstances in Aegis are now fully protected against the macOS 26 constraint-update exception.
Installation
Download Aegis.app.zip, extract, and move to /Applications, or update in-app via Settings → Check for Updates.
Requirements
- macOS 14.0+ (Sonoma)
- Yabai, AeroSpace, or Rift window manager
v1.0.27
What's New in v1.0.27
Fixed
- Crash on macOS 26 — follow-up — A later macOS 26 beta build renamed
postWindowNeedsUpdateConstraintsto_postWindowNeedsUpdateConstraints. The v1.0.25 override targeted the public name and no longer fired on these builds. v1.0.27 overrides both the public and private variants, covering all known macOS 26 beta builds.
Installation
Download Aegis.app.zip, extract, and move to /Applications — or update in-app via Settings > General > Check for Updates.
Requirements
- macOS 14.0+ (Sonoma)
- Yabai, AeroSpace, or Rift window manager
v1.0.26
What's New in v1.0.26
Fixed
- AeroSpace setup scripts not updated on upgrade — The setup prompt now copies all integration scripts directly from the app bundle, overwriting any file whose content differs. Users upgrading from v1.0.23 who were missing the mode-notify script no longer need to manually re-run the setup script
- AeroSpace scripts not created after deleting
~/.config/aegis— Clicking Run Setup in Settings now correctly restores all three integration scripts and resets the dismissed state so auto-checking resumes - "Check Again" silently closing the setup prompt — The retry button now always re-opens the setup window instead of silently aborting when the user had previously clicked Skip
Installation
Download Aegis.app.zip, extract, and move to /Applications — or update in-app via Settings > General > Check for Updates.
Requirements
- macOS 14.0+ (Sonoma)
- Yabai, AeroSpace, or Rift window manager
v1.0.25
What's New in v1.0.25
Fixed
- Crash on macOS 26 — complete fix — v1.0.24 only blocked one of two crash paths (
invalidateSafeAreaCornerInsets). A second path (invalidateSafeAreaInsets) was still hittingNSWindow.postWindowNeedsUpdateConstraintsand throwing. This release adds an Objective-C@try/@catchoverride directly in the window subclass, intercepting the throw at the source regardless of which code path reaches it.
Installation
Download Aegis.app.zip, extract, and move to /Applications — or update in-app via Settings > General > Check for Updates.
Requirements
- macOS 14.0+ (Sonoma)
- Yabai, AeroSpace, or Rift window manager
v1.0.24
What's New in v1.0.24
Added
- AeroSpace mode visualiser — Pill badge in the menu bar displays your active AeroSpace mode (e.g.
RESIZE) when not inmainmode, styled to match the active space indicator. Disappears automatically on return tomain. Setup script now installs theon-mode-changedhook alongside the workspace hook.
Fixed
- AeroSpace config path — Installer and setup checker now detect
~/.config/aerospace/aerospace.toml(alongside the existing~/.aerospace.tomlfallback) - Crash on macOS 26 — Fixed a crash on launch after granting permissions, caused by a new exception in
NSWindow.postWindowNeedsUpdateConstraintson macOS 26.3 - #2
Installation
Download Aegis.app.zip, extract, and move to /Applications — or update in-app via Settings > General > Check for Updates.
Requirements
- macOS 14.0+ (Sonoma)
- Yabai, AeroSpace, or Rift window manager
v1.0.23: AeroSpace & Rift Support
What's New
- AeroSpace Integration — Full workspace switching and window management via AeroSpace CLI with FIFO pipe event system (no polling). First-launch setup wizard configures the
exec-on-workspace-changehook automatically. - Rift Integration — Window management via Rift Mach subscription API. Auto-connects on launch with no setup required.
- Multi-WM Auto-Detection — Aegis detects your running window manager (Yabai, AeroSpace, or Rift) at startup. No configuration needed.
- App Switcher by Workspace — Cmd+Tab replacement now groups windows by virtual workspace for AeroSpace and Rift.
- WM-Aware Settings — Advanced tab shows correct integration info and setup button for the active window manager.
See WINDOW_MANAGERS.md for the full feature matrix.
v1.0.22: Fix external monitor offset on wake
Fixed
- Wake with external monitor — Menu bar windows now correctly reposition after waking from sleep with an external monitor connected. Previously the external monitor's Aegis bar would render at the wrong position on the MacBook screen.
v1.0.21: HUD Border & Theme Colors
What's New
- HUD Border — Configurable border outline on notch HUD panels (Settings > Notch HUD)
- HUD Theme Colors — Custom theme colors now apply to HUD text, icons, and progress bars (previously hardcoded white)
v1.0.20
What's New in 1.0.20
Fixed
- Fullscreen visibility - Menu bar now correctly hides when entering native fullscreen and reappears when leaving
- Fullscreen state callback fires after data refresh completes, fixing race condition where coordinator read stale state
- Space change detection now compares
typeandisNativeFullscreenfields, not justfocusedstate
v1.0.19
What's New in 1.0.19
Added
- Custom theme - New "Custom" theme option with hex color pickers for background, text/icons, and borders
- Save and load color presets for quick switching between custom color schemes
- Fullscreen dedup - Pre-compute fullscreen state in
performUpdate, eliminating a redundantgetCurrentSpaces()call per space change
Changed
- Coalescing event gate - Replaced per-event immediate refresh with a 30ms coalescing gate that merges overlapping events and determines the minimum refresh scope needed
window_focusedandapplication_front_switchednow triggerwindowsOnlyrefresh (1 subprocess) instead of fullrefreshAll(3 subprocesses)application_front_switchedhandled explicitly instead of falling through to default case- NSWorkspace fallback handlers (
activeSpaceChanged,appChanged) skip when FIFO pipe events were received within 500ms - Result: space switch drops from 7-13 subprocesses to exactly 2
- SharedMenuBarState - Replaced all
@Publishedproperties withCurrentValueSubjectto prevent cross-space re-render cascades - Expand/collapse animations - Switched from spring animations (700ms+ asymptotic tail) to
easeOutwith fixed durations (0.15-0.2s), eliminating continuous 120fps rendering between space switches - Rapid switch detection - Switches faster than 300ms skip animation entirely to prevent overlapping animation CPU spikes
- Font measurement caching -
WindowIcon.expandedWidthnow cached by title+appName key, avoiding expensiveNSString.size()on every update - Non-reactive GeometryReader - Width measurement for drag calculations uses a class ref instead of
@State, preventing ~42 unnecessary body re-evaluations per animation - Equatable icon isolation - Extracted
ExpandableWindowIconwith.equatable()so only affected icons re-render during expand/collapse animation
Fixed
- Removed stale debug print statements from fullscreen visibility toggle