Skip to content

v1.2.13

Latest

Choose a tag to compare

@zembutsu zembutsu released this 14 Dec 02:14
· 22 commits to main since this release
93f3921

[1.2.13] - 2025-12-14

Changed

  • Architecture refactoring (#47 Phase 2-4)
    • Unified monitoring flag management (single source of truth)
    • Unified snapshot data to manualSnapshots[0] (fixes data loss on app restart)
    • Made pauseMonitoring() idempotent (fixes duplicate log on sleep)
    • Extracted timing constants for maintainability

Added

  • Project documentation
    • ARCHITECTURE.md: Technical structure and data flow
    • PROJECT.md: Entry point for developers and systems

Fixed

  • AXUIElement position mismatch after long sleep (#50)
    • Window restoration failed when CGWindowID matched but position coordinates diverged
    • Changed to size-based matching (10px tolerance) when CGWindowID exact match succeeds
    • Position matching remains as fallback for non-CGWindowID cases
  • Monitoring flag not restored on wake (#54)
    • WindowTimingSettings.isMonitoringEnabled was set false on sleep but never restored
    • Added restoration in checkStabilization() alongside isDisplayMonitoringEnabled
    • Prevents permanent "snapshot skipped (monitoring disabled)" state
  • Phantom display IDs at login screen (#56)
    • Added isUserLoggedIn() check using SCDynamicStoreCopyConsoleUser
    • Guards displayConfigurationChanged(), takeWindowSnapshot(), and restoreWindowsIfNeeded()
    • Prevents data corruption from login screen display IDs
  • Window restore fails after app restart during sleep (#56)
    • windowPositions (memory-only) was lost on app restart
    • Phase 3 unified data to manualSnapshots[0] (persisted), eliminating this issue