StackWM app iconStackWM

Changelog

What's new in each version of StackWM.

v1.4.1

Window command reliability fixes

  • FixedPush and Pick & Drop commands now recover when a relaunched app briefly reports an unavailable Accessibility (AX) server
  • FixedRapid window boundary hotkeys no longer replay stale geometry targets

v1.4.0

Chromium window fixes & direct zone hotkeys

  • FixedCycle/focus hotkeys no longer bail when a Chromium window's AXWindowNumber doesn't match its CGWindowID — selecting won't crash or detach from zone
  • FixedPick & Drop now skips Chromium helper windows (GPU process, tab strip overlays) that steal cursor hits
  • FixedEliminated ~300ms AX self-deadlock when StackWM queries its own focused window during hotkey processing
  • NewCycle region: press ⌥⌘+digit to directly cycle a numbered zone without focusing it first
  • NewScene Manager now shows a display selector when more than one monitor is connected
  • FixedSettings license error messages now show the actual failure reason
  • FixedZoneSwitcher item view retain cycle in icon loading closure
  • FixedNavigation flash overlay retain cycle in DispatchQueue closure

v1.3.1

Layout editor and license activation fixes

  • NewZone Switcher: press ⌥⇥ / ⌥⇧⇥ to switch between windows in the current zone
  • ImprovedZone Switcher now supports mouse selection, drag reordering, live window updates, and safer long-title wrapping
  • FixedAdding an app in the layout editor no longer lets app picker typing trigger split shortcuts
  • ImprovedLicense activation now separates rejected keys, activation limits, service errors, and real network errors

v1.2.8

Scene switching reliability & memory optimization

  • NewUnified parking system replaces hide/unhide for scene switching
  • NewScored candidate pool for smarter window-to-zone matching on scene restore
  • ImprovedScene Manager layout UX simplified — cleaner grid editor and preset panel
  • ImprovedAXUtil consolidated to a single shared instance (reduced memory overhead)
  • ImprovedIconCache now has a defensive 8 MB byte limit
  • FixedApp picker keyboard navigation in scene editor
  • FixedFive canvas interaction bugs in scene editor
  • FixedNew windows no longer auto-assigned to zones — user decides placement

v1.2.6

Bidirectional stack cycle & UI polish

  • NewCycle backward hotkey for stack cycle (reverse direction)
  • NewOperation hints on layout editor toolbar and scene section headers
  • NewPer-zone app picker for manual app assignment when saving scenes
  • ImprovedStartup and Settings panel open latency reduced
  • ImprovedUnified card backgrounds with accentColor fill and vibrancy
  • ImprovedConsistent color, radius, and typography across scene surfaces
  • FixedCycle backward not traversing full stack
  • FixedLayout preview not showing for user-defined layouts in scene switcher
  • FixedScene manager panel not refreshing when editor saves layout
  • FixedDivider positions drifting on drag in scene editor
  • FixedWindow swap using wrong stack element (stack.first → stack.last)

v1.2.5

Auto-launch missing apps on scene restore

  • NewAuto-launch and place missing apps when restoring a scene
  • ImprovedUnified window-first activation across sync and async paths
  • FixedAuto Layout ambiguity warnings in UI

v1.2.4

Scene card switcher & hotkey overhaul

  • NewEdit button in Scene Card Switcher for quick scene editing
  • NewFocus left/right hotkeys and cycle bounce toast
  • NewExtension code system for legacy users
  • NewSDP-style hotkey actions with Shift modifier for window swap
  • ImprovedScene manager app picker flow and visual hierarchy
  • ImprovedSwitcher cold-start icon loading performance
  • ImprovedComprehensive SwiftUI modernization and optimization
  • ImprovedSimplified hotkeys to ⌃⌥-only scheme
  • FixedHotkey/scene conflict between Scene Card Switcher and push region 1
  • FixedQWERTY keycode mapping for letter keys
  • FixedPreferences window not coming to front when opened
  • FixedScene save (⌃⌥S) now updates active scene instead of creating new
  • FixedZone ID allocation changed from row-major to column-major