Release notes
WindowHop 2.0.0
Released on 23 September 2026. All release notes.
WindowHop 2.0.0
Added
- Settings shows how to switch windows: General now opens with a "Switch windows" section that explains holding the switcher shortcut and releasing it to switch, and opening WindowHop with its own shortcut and confirming with Return or Space. It uses the shortcuts you have set and updates as soon as you change them.
- The shortcut recorder warns about conflicts: recording ⌘Q, ⌘W, ⌘, or another standard app command as the Open WindowHop shortcut is refused with the command's name, since WindowHop would take it over in every app; so are the Force Quit shortcuts. A chord that macOS itself uses, such as ⌘Space, asks first, and Cancel keeps your previous shortcut. Shortcuts you already have are kept as they are.
- About shows when your build was released: Settings → About and Updates now show the release date next to the version and build, in your language's date format. Development builds say "Development build" instead of an invented version.
- The menu bar item shows when WindowHop is paused or needs Accessibility access: its symbol changes shape, VoiceOver reads the state, and its menu explains it, with a shortcut to Accessibility setup when access is missing.
- A complete menu bar with the Dock icon on: when "Show Dock icon" is enabled, the WindowHop menu now offers Services, Hide WindowHop (⌘H), Hide Others (⌥⌘H) and Show All, the Window menu offers Zoom, and a Help menu offers Report an Issue….
- Settings reopens where you left it: the Settings window keeps its position across launches instead of re-centering every time, and returns to the main display when the display it was on is no longer connected.
- The website compares WindowHop with AltTab: a new section explains when WindowHop suits you and when AltTab is the better choice, and the page title and description now name WindowHop as a free Mac window switcher and AltTab alternative.
Changed
- The switcher stays responsive while windows move: with many windows open, dragging or resizing a window, or a changing window title, no longer redraws every card in the open switcher. Only the cards whose window changed are redrawn, so the arrow keys keep responding at once.
- Diagnostics go to the macOS unified log: to investigate a switching or shortcut problem, run
log stream --level debug --process WindowHopin Terminal while you reproduce it. TheWINDOWHOP_DEBUGenvironment variable no longer exists. - The website downloads the disk image directly: Download on windowhop.martonpaulo.com now gets
WindowHop-<version>.dmginstead of a ZIP you had to unzip first, and the download section shows how many times WindowHop was downloaded. The number is taken from GitHub's public release data when the site is published; the page itself makes no request for it. - The website shows how to install and get help: a new Install section walks from the download to your first ⌘Tab, including the first-launch prompt and the Accessibility permission, and a Help section covers "⌘Tab still shows Apple's switcher" and how to uninstall. Accent text on the light page now meets WCAG AA contrast.
- Settings no longer opens at every launch: once the first launch is done and you show the menu bar item or the Dock icon, starting WindowHop opens nothing. With both icons hidden it still opens Settings, and opening WindowHop again while it runs always does. If Accessibility is missing, the setup window opens on any launch, including at login.
- One About for WindowHop: WindowHop › About WindowHop now opens Settings → About, the same page the Settings toolbar shows, instead of a separate About window. Its copyright line is the one the app bundle carries.
- Report an Issue… fills in your versions: from Settings → About or the Help menu, it now opens the bug report form with your WindowHop version, build, release date and macOS version already entered. Nothing else is included, and nothing is sent until you review and submit the form.
- Launch at login is off for new installs: turn it on in Settings → General. Existing installations keep their current choice, including the previous On default.
- Restore Defaults leaves launch at login alone: it no longer registers or removes the login item, so it cannot fail and never changes system settings.
- WindowHop now requires macOS 26 or later: Macs on macOS 14 or 15 keep the current version and are not offered this update.
- Same-named windows show their folder: when two windows of one app have the same title, such as two
Notes.txtdocuments, each tile and its VoiceOver label now add the name of the folder the document is in. Windows without a saved document, such as two Untitled ones, keep their title as it is. - The expanded-preview delay says when it applies: Settings → Appearance now disables the "Show an expanded preview after pausing" picker in App Icons mode and states that it works with Window Previews only. Your chosen delay is kept and returns when you switch back to Window Previews.
- Sparkle 2.10.0 handles updates: the updater framework moves from 2.9.6 to 2.10.0, with upstream fixes for update download progress and cleanup after a failed delta update. Updates keep the same signature checks.
- A clearer website icon in browser tabs and search results: the website's favicon now fills its square with a bolder hop arrow, so the WindowHop mark stays readable at 16 to 48 pixels. The app icon itself is unchanged.
Fixed
- Window previews recover from a short capture failure: when macOS fails to capture a window for a moment, WindowHop now tries that window once more during the same switcher session, so its preview can appear without closing and reopening the switcher. A window that cannot be captured still shows its placeholder at once.
- No pause when windows open during a Window Previews session: WindowHop now checks the Screen Recording permission once when the switcher opens, instead of once for each window that appears while it is open. Each check took about 15 ms, so several new windows could make the switcher stop responding for a moment.
- A key release is no longer swallowed after macOS pauses WindowHop's keyboard monitor: if macOS paused it (after a slow moment or sleep) while you still held Tab from a switch, the next release of Tab could be hidden from the app you were typing in, or from the native ⌘Tab switcher. The next press of that key now corrects it.
- Merged windows become one entry right away: after Window › Merge All Windows, the next switcher session shows the merged window once, with its tab count, instead of listing every former window until something else changed.
- Floating windows stay in the switcher: an app's ordinary window that floats above the others, such as a pinned document or an always-on-top dialog, is no longer mistaken for Picture in Picture and hidden. Browser Picture in Picture, in Chrome, Brave, Edge, Firefox and Zen, is still left out unless you include it in Settings.
- A tab moved to its own window shows up again: after Window ▸ Move Tab to New Window splits a two-tab group, both windows now appear in the switcher. The window left behind used to stay hidden as if it were still a tab.
- Alerts and open panels stay in the switcher: an app's alert or Open/Save panel shown in its own window, such as an update prompt, is no longer mistaken for Picture in Picture and hidden.
- Window Previews use far less memory after dwelling: each expanded preview used to stay in memory, about nine times the size of a card's snapshot, for every window you had dwelled on, until the window closed. Now only the latest one is kept, and only while the switcher is open; cards keep their own snapshot as before.
- Launch at login shows what macOS actually holds: the toggle in Settings → General now reads the real login-item status instead of remembering what you last clicked. When macOS waits for your approval, it says so and offers Open Login Items Settings…. Changes you make in System Settings appear as soon as you return to WindowHop.
- Closing a same-named window names its folder: the close confirmation and the expanded preview now show the same folder-qualified title as the tile, such as "Notes.txt — Work", so you can tell which of two same-named windows you are closing.
- Shortcuts show the letter your keyboard types: on layouts such as German or French, the Open WindowHop shortcut used to be shown and spoken with US letters, so a recorded ⌥Y read as ⌥Z. Letters and symbols now follow your current keyboard layout and update when you switch input sources; the shortcut itself stays on the same physical key.
- VoiceOver reads the Open WindowHop shortcut field completely: the recorder now speaks the current chord in words ("Option Tab"), says "None" when it is cleared and "Recording" while it waits for a chord, explains that Escape cancels and Delete clears, and announces why a chord was rejected.
- Windows no longer vanish when an app is slow during a Space switch: with other Spaces hidden, an app that did not answer in time had all its windows treated as off-Space until the next focus change. They now stay where they were last seen.
- VoiceOver names each selection once: with the switcher shown on several displays, every panel announced the same selection, so it was spoken once per display.
- VoiceOver follows the selection when its window closes: if the selected window disappeared while the switcher was open, VoiceOver kept naming it while Return would activate a different window. The new target is now announced.
- Preview cards no longer pulse forever: a window whose preview could not be captured, or every card while Screen Recording was off, went back to the animated loading placeholder as soon as any window changed its title or the list reordered. Those cards now stay a calm static placeholder for the rest of the session.
- Recording a shortcut no longer opens the switcher: while Settings records the Open WindowHop shortcut, pressing a chord WindowHop already uses reaches the recorder instead of opening a session. ⌘Tab reaches macOS as it does in any shortcut field, and interception resumes as soon as recording ends.
- VoiceOver commands work while the switcher is open: ⌃⌥ with an arrow, Space, Return or Delete now reaches VoiceOver instead of moving the switcher. Keys still navigate with the modifier you hold (⌘ + arrows after ⌘Tab) or with none in a persistent session.
- Open WindowHop never shadows the switcher shortcut: an installation that cycles with ⌥Tab and never chose an Open WindowHop shortcut received ⌥Tab for both, so Open WindowHop could not fire. A chord that conflicts with the switcher shortcut now loads as unassigned, exactly as when you pick a conflicting pair in Settings; every other choice is kept.
- Check for Updates… stays in the menu bar item: when the menu bar item was already on at launch, its menu never offered Check for Updates…. The menu now shows it whenever the updater is running, and dims it while a check is already in progress.
- A window no longer disappears because it shares a tab's title: when an independent window had the same title as an inactive tab of another window in the same app, the independent window could be hidden while the tab showed up instead. Tabs are now matched by position as well as title, and a window that cannot be told apart stays visible.
- A tab no longer pops out as its own window when an app answers slowly: if one tab of a native tab group could not be read, the remaining tabs were treated as the whole group and the unread tab appeared as a separate switcher entry. An incomplete read now leaves the group as it was until the next complete one.
- Tabs of a background app stay grouped at startup: when WindowHop found a window's visible tab before its other tabs, those tabs could show up as separate entries until the app was focused. Tabs are now grouped whichever order they are found in.