Tags: ejbills/DockDoor
Tags
feat: add centered control positions and traffic light button scaling Add centeredTitleTopControlsBottom and centeredControlsTopTitleBottom layout options so title and controls can be centered on the preview instead of pushed to corners. Add trafficLightButtonScale setting (0.75x–2.0x) using scaleEffect, resolved through PreviewAppearanceSettings. Closes #683
fix: allow window switcher columns to exceed screen size limit Add "Ignore screen size limit" toggle in Window Switcher settings. When enabled, the user's max columns/rows setting is used directly without being capped by the 75% screen size calculation. Closes #1159
fix: resolve DebugLogger deadlock and embed MediaRemoteAdapter framework Replace print() with os_log() in DebugLogger to prevent a 3-way deadlock between the main thread, BSXPC, and libLogRedirect under Xcode's debugger. Add Embed Frameworks build phase for MediaRemoteAdapter so the release build doesn't crash at launch with "Library not loaded".
feat: replace AppleScript media polling with MediaRemoteAdapter Use MediaRemoteAdapter as the primary media data source for now playing controls. Any app that is the active system media source now gets controls on dock hover — not just Spotify and Apple Music. AppleScript is kept as a fallback for Spotify/Music when they are not the active source, enabling multi-source support. - Add MediaRemoteService singleton wrapping MediaController - Refactor MediaInfo to use MR as primary, AppleScript as fallback - Show calendar/media widgets for non-running apps on dock hover - Fix app icon spinner for non-running apps (fall back to bundle icon) - Separate media and calendar widget enable toggles in settings - Reorganize widget settings into Widget Controls / Display / Scroll - Clarify dock scroll gesture is limited to Music & Spotify Closes #734 Closes #792 Closes #994 Closes #1043
perf: reduce window switcher overhead with many windows - Cache filteredWindowIndices() once per render instead of 3x - Animate on windows.count instead of full [WindowInfo] array diff - Add PreviewAppearanceSettings struct resolved once per render pass, replacing 35+ @default subscriptions per WindowPreview instance - Replace Combine $frameRefreshRequestId with direct callback Closes #1157
fix: resolve race condition preventing window count updates in hover … …preview (#1145) * fix: resolve race condition preventing window count updates in hover preview When a new window is created while the hover preview is open, the preview would not update to show the new window until closed and reopened. Root cause: mergeWindowsIfShowing() was checking isVisible before allowing window list updates. This created a race condition where the async task fetching fresh windows would complete before the preview window was fully visible, causing the merge to be rejected. Solution: Remove the isVisible check and rely solely on currentlyDisplayedPID matching to determine if merge should proceed. This allows window updates to be applied even during the preview initialization phase. Additionally, ensure frameRefreshRequestId is triggered in addWindows() when windows are added via cache notifications, ensuring UI updates properly. Fixes issue where hover preview shows stale window count when new windows are created. * refactor: rename mergeWindowsIfShowing to mergeWindowsIfNeeded The function no longer checks isVisible, so 'IfShowing' is misleading. Renamed to mergeWindowsIfNeeded to match project naming conventions and better reflect that it merges based on PID matching.
PreviousNext