Skip to content

Tags: ejbills/DockDoor

Tags

1.32.2.9

Toggle 1.32.2.9's commit message
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

1.32.2.8

Toggle 1.32.2.8's commit message
fix:(wake recovery) canary-gated wake recovery with AX readiness probe

targets #1184

1.32.2.7

Toggle 1.32.2.7's commit message
chore: move dynamic option

1.32.2.5

Toggle 1.32.2.5's commit message
fix: windows being destroyed when minimized or hidden

1.32.2.4

Toggle 1.32.2.4's commit message
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

1.32.2.3

Toggle 1.32.2.3's commit message
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".

1.32.2.2

Toggle 1.32.2.2's commit message
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

1.32.2.1

Toggle 1.32.2.1's commit message
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

1.32.2

Toggle 1.32.2's commit message
fix: window switcher backwards customization rework

1.32.1.1

Toggle 1.32.1.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
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.