Skip to content

Releases: kdbaustert/Cmd-Tab

Cmd-Tab 1.0.1

Choose a tag to compare

@kdbaustert kdbaustert released this 26 Sep 15:08
cf539d7

This build is ad-hoc signed, not notarised — there is no Apple Developer Program
membership behind it yet. macOS Gatekeeper will call the download damaged or from an
unidentified developer on first launch. To open it: right-click Cmd-Tab.app → Open, or
xattr -cr /path/to/Cmd-Tab.app in Terminal.

A bug-fix release, headlined by the invisible switcher: macOS could quietly pin the switcher's window to one Desktop, so ⌘-Tab kept switching while the panel only ever appeared on that Desktop. The self-repair for this now actually works.

Fixed

Switching

  • The switcher shows on every Desktop again when macOS pins its window to one; the repair in 1.0.0 silently did nothing.
  • The ✕ on a browser-tab tile closed the whole window with all its tabs. Tab tiles no longer offer close.
  • This desktop now holds for the whole session; other Desktops' windows no longer slip in a moment after the panel opens.
  • With Hide if it is frontmost on, picking a specific window of the front app now switches to that window instead of hiding the app.
  • Releasing the trigger on the run as shell command tile no longer runs the command — that takes Return or a click now.
  • localhost:3000 and other host:port searches open in the browser instead of doing nothing; searches containing & + = # ? are sent correctly.
  • Tab search covers the recent apps first, so one app with a huge window no longer crowds the browsers out.
  • A favourite whose app was uninstalled no longer stays as a tile that does nothing.

Window management

  • A modifier-drag resize that reaches a screen edge keeps the resize instead of snapping the window to half the screen.
  • Modifier-drag, hold-and-point and Desktop moves leave floating windows (picture-in-picture, panels) alone instead of acting on the window underneath.
  • The ½ → ⅔ → ⅓ width cycle starts over after the window was moved by hand.
  • Previous/next display now follows the physical left-to-right arrangement, in the tiling chords and in the switcher.
  • A launch rule that names a display places the window on that display even in apps that apply window moves late.
  • Restore after tiling returns to the window's original spot even after an undo-then-tile sequence.

Settings

  • Turning a setting back to its default now syncs to your other Macs; before, the other Mac kept the old value and put it back.
  • Exported settings and the config file carry only what you actually set.
  • The last settings change before quitting is saved; it used to be lost if you quit within half a second.
  • A corrupted number in stored settings no longer crashes the app on every launch.
  • The iCloud sync switch can be turned off after signing out of iCloud.
  • Shortcut import no longer refuses a chord that differs from an existing one only by Shift.
  • The About tab's permission status updates when you return from System Settings.

Also faster: filtering, hover previews and focus-follows-mouse all do less work per event, and the app holds a few MB less memory.

Known issues

  • Apps with only minimized windows still show under Hide apps with no windows.

Full Changelog: v1.0.0...v1.0.1

Cmd-Tab 1.0.0

Choose a tag to compare

@kdbaustert kdbaustert released this 26 Sep 12:54
0523c47

This build is ad-hoc signed, not notarised — there is no Apple Developer Program
membership behind it yet. macOS Gatekeeper will call the download damaged or from an
unidentified developer on first launch. To open it: right-click Cmd-Tab.app → Open, or
xattr -cr /path/to/Cmd-Tab.app in Terminal.

The first stable release. The app is the same as 0.5.1-beta, which fixed about fifty-five defects found in a full read of the source; everything since is documentation and release tooling. Existing installs are offered it through the built-in updater.

Known issues

  • Apps with only minimized windows still show under Hide apps with no windows.

Full Changelog: v0.5.1-beta...v1.0.0

Cmd-Tab 0.5.1-beta

Choose a tag to compare

@kdbaustert kdbaustert released this 26 Sep 10:34
f9120eb

This build is ad-hoc signed, not notarised — there is no Apple Developer Program
membership behind it yet. macOS Gatekeeper will call the download damaged or from an
unidentified developer on first launch. To open it: right-click Cmd-Tab.app → Open, or
xattr -cr /path/to/Cmd-Tab.app in Terminal.

A bug-fix release: a full read of the source turned up about fifty-five defects, and this fixes them.

Fixed

Switching

  • Reaching a window on another Desktop through its app's Window menu now finds the window by its title; before, it almost never had a title to match.
  • A later pick now takes over from one still waiting for macOS to travel, instead of queueing behind it.
  • Tab search keeps to its time limit inside a slow app.
  • Hide apps with no windows no longer counts menu-bar-only windows as real ones, while still keeping apps whose windows macOS fails to place (seen with Ghostty).
  • Releasing ⌘, Return or Tab on a filter that matches nothing now closes the switcher without switching. A click or ⌘-number still takes the tile you named.

The panel

  • The ✕ on a tile closes that tile, not the marked set.
  • Fallback tiles follow the filter as you type instead of freezing on the first miss.
  • The panel shrinks to fit when there are more tiles than room; matching ignores accents.
  • Confirmation alerts can no longer freeze the app behind an invisible switcher.

Window management

  • An extra modifier on an armed chord cancels instead of snapping.
  • Never-tile apps keep their modifier-clicks.
  • Window-title rules now also apply to drag-snap, display layouts, launch arrangements and Desktop assignments.
  • Edge and size steps never move an edge the wrong way; Show All restores every Hide All.
  • Focus-follows-mouse leaves menus and the Dock alone.

Settings

  • Hand edits to the config file (including through a symlink or a git pull) are no longer reverted.
  • Reset and Import stick, and Import replaces rather than merges.
  • A trigger with no modifier falls back to the default instead of swallowing a bare key.
  • One bad rule or list entry no longer empties the whole list, and unknown keys survive a rewrite.
  • A failed theme export or save now tells you, instead of failing silently.

Known issues

  • Apps with only minimized windows still show under Hide apps with no windows.

Full Changelog: v0.5.0-beta...v0.5.1-beta

Cmd-Tab 0.5.0-beta

Choose a tag to compare

@kdbaustert kdbaustert released this 18 Sep 17:00
6446553

This build is ad-hoc signed, not notarised — there is no Apple Developer Program
membership behind it yet. macOS Gatekeeper will call the download damaged or from an
unidentified developer on first launch. To open it: right-click Cmd-Tab.app → Open, or
xattr -cr /path/to/Cmd-Tab.app in Terminal.

New

  • Tiling toggle. Pressing a tiling shortcut again puts the window back where it was, and a second press undoes the undo.
  • Tab search. A new tabs scope lists every open tab of each running app's front window — Safari, Chromium browsers and Ghostty.
  • Marked set. ⌥-Space or ⌥-click marks tiles; window actions apply to the whole set, and ⌥-T tiles two to four marked windows side by side.
  • By desktop order. A third sort order that follows your Desktops' left-to-right layout.
  • Desktop assignments. After a display change, apps the Dock keeps on a Desktop are moved back there.
  • Per-app rules gain a launch display and window-title rules (hide, always expand, never tile by a regex on the title).
  • Filter fallbacks (all off by default): open the query as a URL, search the web, or run it as a shell command.
  • Shortcuts menu in the menu bar item listing every bound chord, and import of hotkeys from Rectangle, Rectangle Pro or AltTab, reviewed before anything is applied.
  • Raycast and Alfred integrations under integrations/, driving every tiling arrangement over the cmdtab:// scheme.
  • Shortcut conflicts now also flag chords macOS itself owns (Mission Control, Spotlight, App Shortcuts).

Fixed

  • The switcher could stop appearing on every Desktop but one. The window server had pinned the panel to a single Desktop while the app believed it was on all of them; it now checks and repairs that every time it opens (and the drag-snap overlays do the same).
  • ⌘-Tab could be lost after a restart — the outgoing copy handed the shortcut back to macOS after the new one had taken it. The new copy now notices and takes it back, and logs the two ways a press can vanish (secure input held elsewhere, native ⌘-Tab re-enabled).
  • Picking a window on another Desktop that macOS declined to travel to is now reached through the app's own Window menu instead of appearing on the wrong Desktop and snapping back.
  • Moving a window to the next/previous Desktop works on macOS 27 again (Mission Control's accessibility tree moved), the drop lands on the right thumbnail, and the moved window is raised on arrival.
  • Snap-by-dragging redraws its preview when the same edge is reached on an adjacent display.
  • The panel sizes itself per display when shown on all of them.

Full Changelog: v0.4.0-beta...v0.5.0-beta

Cmd-Tab 0.4.0-beta

Choose a tag to compare

@kdbaustert kdbaustert released this 12 Sep 10:08
52cb4ad

This build is ad-hoc signed, not notarised — there is no Apple Developer Program
membership behind it yet. macOS Gatekeeper will call the download damaged or from an
unidentified developer on first launch. To open it: right-click Cmd-Tab.app → Open, or
xattr -cr /path/to/Cmd-Tab.app in Terminal.

Full Changelog: v0.2.0-beta...v0.4.0-beta

v0.2.0 — Critical keyboard-lockout fix, window drill-down, multi-display panels

Choose a tag to compare

@kdbaustert kdbaustert released this 21 Jul 12:13
6a9f4ed
  • Preview strip appearing at the far-left screen edge, or not at all
  • Hover highlighting and tile clicking silently breaking after the list relayed out
  • Wrong app activating when ⌘-Tab was pressed with the pointer resting over the panel
  • Long filter queries widening the panel and shifting clicks onto the neighbouring app
  • Preview strip covering the tiles it was meant to sit clear of
  • Scrolling directly over the switcher panel doing nothing
  • Shortcut recording assigning to the wrong action, or nothing at all
  • Action shortcuts silently unreachable when the trigger itself uses ⌥ or ⌃ — Settings now
    refuses the conflicting combination and explains why
  • Undefined behaviour in preview blank-detection that could drop real windows at random
  • Screen captures continuing after the hover moved on

Internal

  • Test target added: 43 tests over the trigger-modifier logic, shortcut conflicts, filtering
    and metrics
  • Event-tap callback no longer performs SwiftUI layout, Accessibility calls, or
    LaunchServices lookups; tap-disable events are now counted and logged
  • PanelGroup, PreviewCoordinator and TriggerModifiers extracted; SettingsWindow
    split into four files
  • Settings panes rebuilt as two columns with tooltips, in a wider window