-
-
Notifications
You must be signed in to change notification settings - Fork 348
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
v3 POC #114
Conversation
@koekeishiya This PR implements that solution you described a while ago. It has some downsides, but also amazing upsides such as better perf, no hacks to focus other-space windows, better handling of minimized or app-is-hidden windows (or minimized and app-is-hidden, which is handled too :p), and it opens the door to live-update of thumbnails if the app/windows are closed in the background while AltTab is opened, for example when doing #94. My worry now is in the very complex corner cases of the OS, such as an app launching and during launch the screensaver triggers, or who knows which unthinkable cases like this. These would make the state of AltTab drift away from the OS. I think a brute-force solution here would be to trigger out-of-sync checks once in a while, either on some actions, on a timer, or a mix of both. Do you think this is the way to go? This POC looks amazing to me and a clear winner, but I'm worried about stability of the app after it has been up in the chaos of the OS for a few days. I'll beta-test myself for a few days before I merge the PR. If you want to review it that would be super cool of course, but I understand your time is limited so I'm mentioning just in case that's of interest to you |
// DispatchQueue.global(qos: .userInteractive).async { | ||
CFRunLoopAddSource(CFRunLoopGetCurrent(), AXObserverGetRunLoopSource(axObserver), .defaultMode) | ||
// CFRunLoopRun() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@koekeishiya this piece of code here, and the general GCD system are really a mystery to me. I spent a huge amount of time documenting myself on the topic, but it's such a mess of layer on top of layers of legacy APIs.
I used 2 dedicated DispatchQueue
in v3, and a few DispatchQueue.global.async
and DispatchQueue.main.async
calls. However the fact that I had to comment the global dispatch here is where I'm hitting a wall.
If you have experience with GCD and the run loops, could you possibly take a look at my approach here?
@lwouis I'll run this branch too an report any hiccups that may occur. So far I have 2 things I noticed:
Other than that it seem promising :) I'll look into redoing my PR on this branch, which as you said shouldn't be too hard. Update:
|
Wow, what a use-case! Nice catch 🙉 Could you open a ticket for this with a screenshot and some explanations? I think there may be ways to detect it. Also note that the other order: press alt-tab but hold alt, then open Expose, correctly hides AltTab UI. You can still release and focus though. I'm not sure if it's good UX or not. Such advanced corner-cases lol
This was the big limitation that @koekeishiya warned me about from the beginning. First I think it's not very important because this app is meant as a OS utility. It is meant to be opened on startup, so the issue will never manifest again after the first time the user manually opens the app. Even in that scenario, they will go there manually and the app will register the all windows from that space then and it will be back on track. On top of that issue being minor imo, we can also address it the same way we address the issue in v2: by using the CG apis once, on launch for the initial tracking, then we can resume to normal observation of the OS. What I don't like with this approach is that I will need to put back the old check on "windows are at least 200px tall and 200px wide" that I got to remove in v3 because I can use the AX subrole to identify actual windows in a more robust way. Like I said, the impact is very minor here. If you disagree with my perception, please open a ticket, then we can discuss it further
I just pushed a new commit on the v3 PR that fixes the GCD issues, and has the thumbnails update when the windows change in the background (window closes, window opens, app closes with multiple windows, window title change because you received a notification, etc, etc). Should be even more easy now to plug the quick-actions on top of the PR
Maybe this issue is gone after my GCD fixes? |
Nah, it's minor, I just wanted to point it out for completeness. But maybe this should be a disclaimer in the readme so new users trying the application don't think it's not working properly.
Yeah, pretty easy now :D
Unfortunately not. I think we need pretty sophisticated error checking to catch all those cases where there are animations and space switching. Which get only worse if we are the initiators of the window closing/moving/etc. For example when closing a fullscreen application we inevitably have a space switch when the window closes. |
@Robinhuett I added a commit to do that. Here is the behavior, with the commit:
I'm very happy with the behavior, however, I'm not super thrilled to add an "expensive" check at the 2 critical points in the UX: when the user summons the app, and when they release to focus another window. I'm keeping it for the moment, but hopefully we find a more efficient way to detect Mission Control in the future. Note that transition between spaces is still not covered. |
I worked more on this PR. The current state seems really robust to me. I added commits to close #93 #24 #80 #115 #92 🙏I'm pretty sure all multithreading/GCD issues are gone now. @Robinhuett
This is supported now
This is supported now
I can't reproduce it. I did the Could you please test this PR a bit? I think it's very close to mergeable 👍 |
Hi @lwouis |
For some reason often not all windows will be displayed on my machine. In the case of the screenshot below there should be 2 Firefox windows. I'm not entirely sure why this is the case. Unfortunately I haven't had time to drill into it and where it's coming from. I should have some spare time tomorrow to investigate this further. I'll update this comment when I can reproduce this consistently or at least find some clues :) Otherwise v3 pretty stable for me. Good job 👍 |
I noticed that issue yesterday! I reworked the layout code completely (it
was incorrect before. However the current code has some bug where windows
on the last row are not shown.
I'm aiming at fixing this sometime tomorrow or on monday (JST)!
…On Sat, Jan 18, 2020 at 19:44 Robin ***@***.***> wrote:
For some reason often not all windows will be displayed on my machine. In
the case of the screenshot below there should be 2 Firefox windows. I'm not
entirely sure why this is the case.
Also, as you can see in the screenshot I get an empty row in the
thumbnails panel.
[image: Screenshot 2020-01-18 at 11 35 58]
<https://user-images.githubusercontent.com/5955614/72662412-22a9bf80-39e7-11ea-89d5-7907999974b6.png>
Unfortunately I haven't had time to drill into it and where it's coming
from. I should have some spare time tomorrow to investigate this further.
I'll update this comment when I can reproduce this consistently or at least
find some clues :)
Otherwise v3 pretty stable for me. Good job 👍
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#114?email_source=notifications&email_token=AAAZ5U4SYJGR3N2SSCFTRE3Q6LMSDA5CNFSM4KELL2OKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJJVO4Y#issuecomment-575887219>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAAZ5UYF5YGRYDTM5ZJRU5DQ6LMSDANCNFSM4KELL2OA>
.
|
e53c97d
to
151ad06
Compare
For some reason, the app fails to detect new windows from IntelliJ. The |
You can check the result of AXObserverAddNotification to see whether it succeeded in observing the event or not.
IIRC there is a varying degree of time after launch before an application can be observed and that is likely the issue here.
…Sent from my iPhone
On 20 Jan 2020, at 09:24, lwouis <[email protected]> wrote:
For some reason, the app fails to detect new windows from IntelliJ. The kAXWindowCreatedNotification is not sent by the OS. I'm suspecting that either it's some Java magic, or the app has multiple processes, and the "com.jetbrains.intellij" isn't the main one somehow. I need to dig deeper here
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#114?email_source=notifications&email_token=ABPDZV7ILEBVAINY7G5ZFADQ6VNTTA5CNFSM4KELL2OKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJLYJDQ#issuecomment-576160910>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ABPDZV3K6BM2A246CEYCCXLQ6VNTTANCNFSM4KELL2OA>.
|
Thanks a lot @koekeishiya! You were spot on with your guess! The call returns |
I used the same 10ms delay as in the yabai code I linked to, and it seems to work great! |
Sorry @Robinhuett I forgot to update you in this thread! I noticed the issue too. It was a layout problem. I believe i fixed it today. The issue should be gone from this branch now! |
I just found that pressing alt-tab while a youtube video is fullscreen'd doesn't show the UI. It still switches, but without minimizing the fullscreen'd window. I'll investigate Update: the issue is actually also on Update 2: for some reason I can't reproduce this issue today. The switcher shows without adding |
Hi @lwouis I just got to test a bit. Unfortunately the retry hasn't fixed it entirely. But maybe this issue is unrelated. |
Oh interesting. I will download it and try to reproduce on my laptop. I'm not sure what to do here though. With a retry loop, there is always a chance we miss the right timing. What else can I do to wait for the app to be observable, but not too much that a window already popped? |
@Robinhuett I can't reproduce the issue with iTerm2. I notice you edited your comment and removed the issue with iTerm2. Was it a false positive? It seems like you have noticed another now with a fullscreen window scenario. How do you launch the second app, using Launchpad or Spotlight? Update: I can reproduce that issue, nice Update 2: I fixed that specific issue by triggering a check of all windows on space change. The issue I have is the following: I took the assumption that apps can't appear on other spaces without taking the user there. In my tests, I couldn't launch an app on another space without drawing focus to that app there. The fix I just made should handle that case. However, if somehow there is a way to launch an app in another space without focusing it, then until the user visits that space, it will not show in alt-tab. I could apply the same hack using a private API to handle that case, however I would rather avoid resorting to that if possible |
# [2.4.0](v2.3.4...v2.4.0) (2020-03-10) ### Bug Fixes * a title change often means the content has change ([b8d6bc9](b8d6bc9)) * add rough downscaling when there are many windows (closes [#69](#69)) ([ced5ee6](ced5ee6)) * added releases link and aligned layout left on tab 3 ([6bb73dc](6bb73dc)) * also codesign debug builds ([a5f9911](a5f9911)) * app launched while in fullscreen shows first window ([c5cbcdb](c5cbcdb)), closes [/github.com//pull/114#issuecomment-576384795](https://github.com//github.com/lwouis/alt-tab-macos/pull/114/issues/issuecomment-576384795) * auto-update preferences sync with os from launch ([b3fb222](b3fb222)) * avoid rendering if app is not used ([fdddb0f](fdddb0f)) * better float rounding = sharper cell contents ([9a96e49](9a96e49)) * better focus/order for preferences (closes [#80](#80)) ([4a8bdeb](4a8bdeb)) * better textareas ([efc9bd3](efc9bd3)) * bring back the window delay that regressed with v2 ([bb95e55](bb95e55)) * compare correctly since pid can go away when an app dies ([4ded030](4ded030)) * compiler warnings ([1faa74c](1faa74c)) * cpu and memory leaks (see discussion in [#117](#117)) ([52626aa](52626aa)) * dock being shown was blocking alt-tab ([2826a1b](2826a1b)) * don't show floating windows + efficiencies ([3f8e3ea](3f8e3ea)) * don't show ui on fast trigger ([f8e1b00](f8e1b00)) * don't trigger ui refreshes if the app is not active ([b9a0152](b9a0152)) * don't upscale thumbnails of small windows ([0bc7472](0bc7472)) * feedback token injected during ci ([effdc5f](effdc5f)) * getting sparkle ready for release ([9f1f522](9f1f522)) * handle on-all-spaces windows better ([4abe9f3](4abe9f3)) * ignore build folder ([a2bb19f](a2bb19f)) * ignore trigger shortcuts if mission control is active ([b03b0aa](b03b0aa)) * initial discovery when single space was glitching the os ([3cd4b6d](3cd4b6d)) * keyboard shortcuts didn't work without a menu ([cf92dc1](cf92dc1)) * layout is now correct; also removed layout preferences for now ([a1b5266](a1b5266)) * layout regression introduced by eed0353 ([bdc41be](bdc41be)) * layout was incorrect resulting in thumbnails clipping ([fd906f4](fd906f4)) * letsmove was not active on release builds ([6ac0658](6ac0658)) * list temporary AXDialog windows like activity monitor ([51a8838](51a8838)) * more robust screen-recording permission check ([ce574a2](ce574a2)) * notarization issues ([d125dd3](d125dd3)) * observer leak would throw and crash the app sometimes ([9ca28eb](9ca28eb)) * only test permissions on the correct os versions ([4612e37](4612e37)) * open alt-tab during space transitions (closes [#92](#92)) ([141562d](141562d)) * prevent visual flickering (closes [#115](#115)) ([9a8c83e](9a8c83e)) * quitting apps was not properly removing apps from the list ([10b2c71](10b2c71)) * quitting multiple apps would refresh the ui multiple times ([bfc2700](bfc2700)) * regression on collectionviewitem titles (not showing) ([8cb6d86](8cb6d86)) * remove debug colors ([e588d55](e588d55)) * remove unnecessary/wrong layout code ([9e719e6](9e719e6)) * sharper images on non-retina displays ([1bb4d2a](1bb4d2a)) * smaller payload for the icons ([bddb6fa](bddb6fa)) * some apps have messy launch behavior ([7eb216d](7eb216d)), closes [/github.com//issues/117#issuecomment-583868046](https://github.com//github.com/lwouis/alt-tab-macos/issues/117/issues/issuecomment-583868046) * some apps should retry observing until it works ([0c731f4](0c731f4)) * using floor() everywhere to avoid blurry rendering ([2a36196](2a36196)) ### Code Refactoring * complete rework of the internals ([547311e](547311e)), closes [#93](#93) [#24](#24) [#117](#117) [/github.com//issues/45#issuecomment-571898826](https://github.com//github.com/lwouis/alt-tab-macos/issues/45/issues/issuecomment-571898826) ### Features * add an app icon and menubar icon (closes [#38](#38)) ([a345dae](a345dae)) * add back the preferences for the new layout algo ([d52eb6d](d52eb6d)) * add debug profile to feedback message ([a14f965](a14f965)) * add feedback button on about window ([4046136](4046136)) * add in-app feedback form (closes [#145](#145)) ([725a030](725a030)) * add licence to about page ([cb66b79](cb66b79)) * add preference to start at login (closes [#159](#159)) ([982fe6c](982fe6c)) * adding cocoapods and letsmove/sparkle ([606bae7](606bae7)) * better packing; tall thumbnails are 1/2 the width of wide ones ([e34e3b1](e34e3b1)) * cleaner layout and explanation text ([fd3e768](fd3e768)) * debug build has code-signing to preserve permissions ([34a32f3](34a32f3)) * divide preferences by topic (closes [#130](#130)) ([291f872](291f872)) * drag-and-drop files on the ui (closes [#74](#74)) ([e1e3633](e1e3633)) * german and spanish localization ([6c440a7](6c440a7)) * improved translations ([debd3ae](debd3ae)) * integrate sparkle for auto-updates (closes [#131](#131)) ([069382c](069382c)) * localization (closes [#134](#134)) ([36e4bb0](36e4bb0)) * make system calls more parallel (closes [#160](#160)) ([a29b39f](a29b39f)) * migrate to standard os-backed preferences (closes [#161](#161)) ([e28c43f](e28c43f)) * more appealing presentation + minor refac ([67f291d](67f291d)) * nicer layout for about preferences ([03a5f77](03a5f77)) * quit button is clearer with explicit mention of the name ([6b6d748](6b6d748)) * replace default copyright with correct licence ([60b49ea](60b49ea)) * separating the quit button as it is a special case ([9fa0c06](9fa0c06)) * slightly increase contrast (mitigates [#82](#82)) ([291770e](291770e)) * support macos "sudden termination" ([671fdab](671fdab)), closes [/developer.apple.com/documentation/foundation/processinfo#1651129](https://github.com//developer.apple.com/documentation/foundation/processinfo/issues/1651129) ### BREAKING CHANGES * Instead of asking the OS about the state of the whole system on trigger (what we do today; hard to do fast), or asking the state of the whole system on a timer (what HyperSwitch does today; inaccurate) - instead of one of 2 approaches, v3 observes the Accessibility events such as "an app was launched", "a window was closed". This means we build a cache as we receive these events in the background, and when the user trigger the app, we can show accurate state of the windows instantly. Of course there is no free lunch, so this approach has its own issues. However from my work on it from the past week, I'm very optimistic! The thing I'm the most excited about actually is not the perf (because on my machine even v2 is instant; I have a recent macbook and no 4k displays), but the fact that we will finally have the thumbnails in order of recently-used to least-recently-used, instead of the order of their stack (z-index) on the desktop. It's a big difference! There are many more limitations that are no longer applying also with this approach.
# [3.0.0](v2.3.4...v3.0.0) (2020-03-10) ### Bug Fixes * a title change often means the content has change ([b8d6bc9](b8d6bc9)) * add rough downscaling when there are many windows (closes [#69](#69)) ([ced5ee6](ced5ee6)) * added releases link and aligned layout left on tab 3 ([6bb73dc](6bb73dc)) * also codesign debug builds ([a5f9911](a5f9911)) * app launched while in fullscreen shows first window ([c5cbcdb](c5cbcdb)), closes [/github.com//pull/114#issuecomment-576384795](https://github.com//github.com/lwouis/alt-tab-macos/pull/114/issues/issuecomment-576384795) * auto-update preferences sync with os from launch ([b3fb222](b3fb222)) * avoid rendering if app is not used ([fdddb0f](fdddb0f)) * better float rounding = sharper cell contents ([9a96e49](9a96e49)) * better focus/order for preferences (closes [#80](#80)) ([4a8bdeb](4a8bdeb)) * better textareas ([efc9bd3](efc9bd3)) * bring back the window delay that regressed with v2 ([bb95e55](bb95e55)) * compare correctly since pid can go away when an app dies ([4ded030](4ded030)) * compiler warnings ([1faa74c](1faa74c)) * cpu and memory leaks (see discussion in [#117](#117)) ([52626aa](52626aa)) * dock being shown was blocking alt-tab ([2826a1b](2826a1b)) * don't show floating windows + efficiencies ([3f8e3ea](3f8e3ea)) * don't show ui on fast trigger ([f8e1b00](f8e1b00)) * don't trigger ui refreshes if the app is not active ([b9a0152](b9a0152)) * don't upscale thumbnails of small windows ([0bc7472](0bc7472)) * feedback token injected during ci ([effdc5f](effdc5f)) * getting sparkle ready for release ([9f1f522](9f1f522)) * handle on-all-spaces windows better ([4abe9f3](4abe9f3)) * ignore build folder ([a2bb19f](a2bb19f)) * ignore trigger shortcuts if mission control is active ([b03b0aa](b03b0aa)) * initial discovery when single space was glitching the os ([3cd4b6d](3cd4b6d)) * keyboard shortcuts didn't work without a menu ([cf92dc1](cf92dc1)) * layout is now correct; also removed layout preferences for now ([a1b5266](a1b5266)) * layout regression introduced by eed0353 ([bdc41be](bdc41be)) * layout was incorrect resulting in thumbnails clipping ([fd906f4](fd906f4)) * letsmove was not active on release builds ([6ac0658](6ac0658)) * list temporary AXDialog windows like activity monitor ([51a8838](51a8838)) * more robust screen-recording permission check ([ce574a2](ce574a2)) * notarization issues ([d125dd3](d125dd3)) * observer leak would throw and crash the app sometimes ([9ca28eb](9ca28eb)) * only test permissions on the correct os versions ([4612e37](4612e37)) * open alt-tab during space transitions (closes [#92](#92)) ([141562d](141562d)) * prevent visual flickering (closes [#115](#115)) ([9a8c83e](9a8c83e)) * quitting apps was not properly removing apps from the list ([10b2c71](10b2c71)) * quitting multiple apps would refresh the ui multiple times ([bfc2700](bfc2700)) * regression on collectionviewitem titles (not showing) ([8cb6d86](8cb6d86)) * remove debug colors ([e588d55](e588d55)) * remove unnecessary/wrong layout code ([9e719e6](9e719e6)) * sharper images on non-retina displays ([1bb4d2a](1bb4d2a)) * smaller payload for the icons ([bddb6fa](bddb6fa)) * some apps have messy launch behavior ([7eb216d](7eb216d)), closes [/github.com//issues/117#issuecomment-583868046](https://github.com//github.com/lwouis/alt-tab-macos/issues/117/issues/issuecomment-583868046) * some apps should retry observing until it works ([0c731f4](0c731f4)) * using floor() everywhere to avoid blurry rendering ([2a36196](2a36196)) ### Code Refactoring * complete rework of the internals ([547311e](547311e)), closes [#93](#93) [#24](#24) [#117](#117) [/github.com//issues/45#issuecomment-571898826](https://github.com//github.com/lwouis/alt-tab-macos/issues/45/issues/issuecomment-571898826) ### Features * add an app icon and menubar icon (closes [#38](#38)) ([a345dae](a345dae)) * add back the preferences for the new layout algo ([d52eb6d](d52eb6d)) * add debug profile to feedback message ([a14f965](a14f965)) * add feedback button on about window ([4046136](4046136)) * add in-app feedback form (closes [#145](#145)) ([725a030](725a030)) * add licence to about page ([cb66b79](cb66b79)) * add preference to start at login (closes [#159](#159)) ([982fe6c](982fe6c)) * adding cocoapods and letsmove/sparkle ([606bae7](606bae7)) * better packing; tall thumbnails are 1/2 the width of wide ones ([e34e3b1](e34e3b1)) * bump major version ([3c3b18c](3c3b18c)) * cleaner layout and explanation text ([fd3e768](fd3e768)) * debug build has code-signing to preserve permissions ([34a32f3](34a32f3)) * divide preferences by topic (closes [#130](#130)) ([291f872](291f872)) * drag-and-drop files on the ui (closes [#74](#74)) ([e1e3633](e1e3633)) * german and spanish localization ([6c440a7](6c440a7)) * improved translations ([debd3ae](debd3ae)) * integrate sparkle for auto-updates (closes [#131](#131)) ([069382c](069382c)) * localization (closes [#134](#134)) ([36e4bb0](36e4bb0)) * make system calls more parallel (closes [#160](#160)) ([a29b39f](a29b39f)) * migrate to standard os-backed preferences (closes [#161](#161)) ([e28c43f](e28c43f)) * more appealing presentation + minor refac ([67f291d](67f291d)) * nicer layout for about preferences ([03a5f77](03a5f77)) * quit button is clearer with explicit mention of the name ([6b6d748](6b6d748)) * replace default copyright with correct licence ([60b49ea](60b49ea)) * separating the quit button as it is a special case ([9fa0c06](9fa0c06)) * slightly increase contrast (mitigates [#82](#82)) ([291770e](291770e)) * support macos "sudden termination" ([671fdab](671fdab)), closes [/developer.apple.com/documentation/foundation/processinfo#1651129](https://github.com//developer.apple.com/documentation/foundation/processinfo/issues/1651129) ### BREAKING CHANGES * bump major version * Instead of asking the OS about the state of the whole system on trigger (what we do today; hard to do fast), or asking the state of the whole system on a timer (what HyperSwitch does today; inaccurate) - instead of one of 2 approaches, v3 observes the Accessibility events such as "an app was launched", "a window was closed". This means we build a cache as we receive these events in the background, and when the user trigger the app, we can show accurate state of the windows instantly. Of course there is no free lunch, so this approach has its own issues. However from my work on it from the past week, I'm very optimistic! The thing I'm the most excited about actually is not the perf (because on my machine even v2 is instant; I have a recent macbook and no 4k displays), but the fact that we will finally have the thumbnails in order of recently-used to least-recently-used, instead of the order of their stack (z-index) on the desktop. It's a big difference! There are many more limitations that are no longer applying also with this approach.
# [3.0.0](v2.3.4...v3.0.0) (2020-03-10) ### Bug Fixes * a title change often means the content has change ([b8d6bc9](b8d6bc9)) * add rough downscaling when there are many windows (closes [#69](#69)) ([ced5ee6](ced5ee6)) * added releases link and aligned layout left on tab 3 ([6bb73dc](6bb73dc)) * also codesign debug builds ([a5f9911](a5f9911)) * app launched while in fullscreen shows first window ([c5cbcdb](c5cbcdb)), closes [/github.com//pull/114#issuecomment-576384795](https://github.com//github.com/lwouis/alt-tab-macos/pull/114/issues/issuecomment-576384795) * auto-update preferences sync with os from launch ([b3fb222](b3fb222)) * avoid rendering if app is not used ([fdddb0f](fdddb0f)) * better float rounding = sharper cell contents ([9a96e49](9a96e49)) * better focus/order for preferences (closes [#80](#80)) ([4a8bdeb](4a8bdeb)) * better textareas ([efc9bd3](efc9bd3)) * bring back the window delay that regressed with v2 ([bb95e55](bb95e55)) * compare correctly since pid can go away when an app dies ([4ded030](4ded030)) * compiler warnings ([1faa74c](1faa74c)) * cpu and memory leaks (see discussion in [#117](#117)) ([52626aa](52626aa)) * dock being shown was blocking alt-tab ([2826a1b](2826a1b)) * don't show floating windows + efficiencies ([3f8e3ea](3f8e3ea)) * don't show ui on fast trigger ([f8e1b00](f8e1b00)) * don't trigger ui refreshes if the app is not active ([b9a0152](b9a0152)) * don't upscale thumbnails of small windows ([0bc7472](0bc7472)) * feedback token injected during ci ([effdc5f](effdc5f)) * getting sparkle ready for release ([9f1f522](9f1f522)) * handle on-all-spaces windows better ([4abe9f3](4abe9f3)) * ignore build folder ([a2bb19f](a2bb19f)) * ignore trigger shortcuts if mission control is active ([b03b0aa](b03b0aa)) * initial discovery when single space was glitching the os ([3cd4b6d](3cd4b6d)) * keyboard shortcuts didn't work without a menu ([cf92dc1](cf92dc1)) * layout is now correct; also removed layout preferences for now ([a1b5266](a1b5266)) * layout regression introduced by eed0353 ([bdc41be](bdc41be)) * layout was incorrect resulting in thumbnails clipping ([fd906f4](fd906f4)) * letsmove was not active on release builds ([6ac0658](6ac0658)) * list temporary AXDialog windows like activity monitor ([51a8838](51a8838)) * more robust screen-recording permission check ([ce574a2](ce574a2)) * notarization issues ([d125dd3](d125dd3)) * observer leak would throw and crash the app sometimes ([9ca28eb](9ca28eb)) * only test permissions on the correct os versions ([4612e37](4612e37)) * open alt-tab during space transitions (closes [#92](#92)) ([141562d](141562d)) * prevent visual flickering (closes [#115](#115)) ([9a8c83e](9a8c83e)) * quitting apps was not properly removing apps from the list ([10b2c71](10b2c71)) * quitting multiple apps would refresh the ui multiple times ([bfc2700](bfc2700)) * regression on collectionviewitem titles (not showing) ([8cb6d86](8cb6d86)) * remove debug colors ([e588d55](e588d55)) * remove unnecessary/wrong layout code ([9e719e6](9e719e6)) * sharper images on non-retina displays ([1bb4d2a](1bb4d2a)) * smaller payload for the icons ([bddb6fa](bddb6fa)) * some apps have messy launch behavior ([7eb216d](7eb216d)), closes [/github.com//issues/117#issuecomment-583868046](https://github.com//github.com/lwouis/alt-tab-macos/issues/117/issues/issuecomment-583868046) * some apps should retry observing until it works ([0c731f4](0c731f4)) * using floor() everywhere to avoid blurry rendering ([2a36196](2a36196)) ### Code Refactoring * complete rework of the internals ([547311e](547311e)), closes [#93](#93) [#24](#24) [#117](#117) [/github.com//issues/45#issuecomment-571898826](https://github.com//github.com/lwouis/alt-tab-macos/issues/45/issues/issuecomment-571898826) ### Features * add an app icon and menubar icon (closes [#38](#38)) ([a345dae](a345dae)) * add back the preferences for the new layout algo ([d52eb6d](d52eb6d)) * add debug profile to feedback message ([a14f965](a14f965)) * add feedback button on about window ([4046136](4046136)) * add in-app feedback form (closes [#145](#145)) ([725a030](725a030)) * add licence to about page ([cb66b79](cb66b79)) * add preference to start at login (closes [#159](#159)) ([982fe6c](982fe6c)) * adding cocoapods and letsmove/sparkle ([606bae7](606bae7)) * better packing; tall thumbnails are 1/2 the width of wide ones ([e34e3b1](e34e3b1)) * bump major version ([3c3b18c](3c3b18c)) * cleaner layout and explanation text ([fd3e768](fd3e768)) * debug build has code-signing to preserve permissions ([34a32f3](34a32f3)) * divide preferences by topic (closes [#130](#130)) ([291f872](291f872)) * drag-and-drop files on the ui (closes [#74](#74)) ([e1e3633](e1e3633)) * german and spanish localization ([6c440a7](6c440a7)) * improved translations ([debd3ae](debd3ae)) * integrate sparkle for auto-updates (closes [#131](#131)) ([069382c](069382c)) * localization (closes [#134](#134)) ([36e4bb0](36e4bb0)) * make system calls more parallel (closes [#160](#160)) ([a29b39f](a29b39f)) * migrate to standard os-backed preferences (closes [#161](#161)) ([e28c43f](e28c43f)) * more appealing presentation + minor refac ([67f291d](67f291d)) * nicer layout for about preferences ([03a5f77](03a5f77)) * quit button is clearer with explicit mention of the name ([6b6d748](6b6d748)) * replace default copyright with correct licence ([60b49ea](60b49ea)) * separating the quit button as it is a special case ([9fa0c06](9fa0c06)) * slightly increase contrast (mitigates [#82](#82)) ([291770e](291770e)) * support macos "sudden termination" ([671fdab](671fdab)), closes [/developer.apple.com/documentation/foundation/processinfo#1651129](https://github.com//developer.apple.com/documentation/foundation/processinfo/issues/1651129) ### BREAKING CHANGES * bump major version * Instead of asking the OS about the state of the whole system on trigger (what we do today; hard to do fast), or asking the state of the whole system on a timer (what HyperSwitch does today; inaccurate) - instead of one of 2 approaches, v3 observes the Accessibility events such as "an app was launched", "a window was closed". This means we build a cache as we receive these events in the background, and when the user trigger the app, we can show accurate state of the windows instantly. Of course there is no free lunch, so this approach has its own issues. However from my work on it from the past week, I'm very optimistic! The thing I'm the most excited about actually is not the perf (because on my machine even v2 is instant; I have a recent macbook and no 4k displays), but the fact that we will finally have the thumbnails in order of recently-used to least-recently-used, instead of the order of their stack (z-index) on the desktop. It's a big difference! There are many more limitations that are no longer applying also with this approach.
Congratulations, appreciation and thanks for this massive update guys. Ive updated just now to 3.0; multimonitor use case on Macbook with latest OS working perfectly. |
# [3.0.0](v2.3.4...v3.0.0) (2020-03-10) ### Bug Fixes * a title change often means the content has change ([b8d6bc9](b8d6bc9)) * add rough downscaling when there are many windows (closes [#69](#69)) ([ced5ee6](ced5ee6)) * added releases link and aligned layout left on tab 3 ([6bb73dc](6bb73dc)) * also codesign debug builds ([a5f9911](a5f9911)) * app launched while in fullscreen shows first window ([c5cbcdb](c5cbcdb)), closes [/github.com//pull/114#issuecomment-576384795](https://github.com//github.com/lwouis/alt-tab-macos/pull/114/issues/issuecomment-576384795) * auto-update preferences sync with os from launch ([b3fb222](b3fb222)) * avoid rendering if app is not used ([fdddb0f](fdddb0f)) * better float rounding = sharper cell contents ([9a96e49](9a96e49)) * better focus/order for preferences (closes [#80](#80)) ([4a8bdeb](4a8bdeb)) * better textareas ([efc9bd3](efc9bd3)) * bring back the window delay that regressed with v2 ([bb95e55](bb95e55)) * compare correctly since pid can go away when an app dies ([4ded030](4ded030)) * compiler warnings ([1faa74c](1faa74c)) * cpu and memory leaks (see discussion in [#117](#117)) ([52626aa](52626aa)) * dock being shown was blocking alt-tab ([2826a1b](2826a1b)) * don't show floating windows + efficiencies ([3f8e3ea](3f8e3ea)) * don't show ui on fast trigger ([f8e1b00](f8e1b00)) * don't trigger ui refreshes if the app is not active ([b9a0152](b9a0152)) * don't upscale thumbnails of small windows ([0bc7472](0bc7472)) * feedback token injected during ci ([effdc5f](effdc5f)) * getting sparkle ready for release ([9f1f522](9f1f522)) * handle on-all-spaces windows better ([4abe9f3](4abe9f3)) * ignore build folder ([a2bb19f](a2bb19f)) * ignore trigger shortcuts if mission control is active ([b03b0aa](b03b0aa)) * initial discovery when single space was glitching the os ([3cd4b6d](3cd4b6d)) * keyboard shortcuts didn't work without a menu ([cf92dc1](cf92dc1)) * layout is now correct; also removed layout preferences for now ([a1b5266](a1b5266)) * layout regression introduced by eed0353 ([bdc41be](bdc41be)) * layout was incorrect resulting in thumbnails clipping ([fd906f4](fd906f4)) * letsmove was not active on release builds ([6ac0658](6ac0658)) * list temporary AXDialog windows like activity monitor ([51a8838](51a8838)) * more robust screen-recording permission check ([ce574a2](ce574a2)) * notarization issues ([d125dd3](d125dd3)) * observer leak would throw and crash the app sometimes ([9ca28eb](9ca28eb)) * only test permissions on the correct os versions ([4612e37](4612e37)) * open alt-tab during space transitions (closes [#92](#92)) ([141562d](141562d)) * prevent visual flickering (closes [#115](#115)) ([9a8c83e](9a8c83e)) * quitting apps was not properly removing apps from the list ([10b2c71](10b2c71)) * quitting multiple apps would refresh the ui multiple times ([bfc2700](bfc2700)) * regression on collectionviewitem titles (not showing) ([8cb6d86](8cb6d86)) * remove debug colors ([e588d55](e588d55)) * remove unnecessary/wrong layout code ([9e719e6](9e719e6)) * sharper images on non-retina displays ([1bb4d2a](1bb4d2a)) * smaller payload for the icons ([bddb6fa](bddb6fa)) * some apps have messy launch behavior ([7eb216d](7eb216d)), closes [/github.com//issues/117#issuecomment-583868046](https://github.com//github.com/lwouis/alt-tab-macos/issues/117/issues/issuecomment-583868046) * some apps should retry observing until it works ([0c731f4](0c731f4)) * using floor() everywhere to avoid blurry rendering ([2a36196](2a36196)) ### Code Refactoring * complete rework of the internals ([547311e](547311e)), closes [#93](#93) [#24](#24) [#117](#117) [/github.com//issues/45#issuecomment-571898826](https://github.com//github.com/lwouis/alt-tab-macos/issues/45/issues/issuecomment-571898826) ### Features * add an app icon and menubar icon (closes [#38](#38)) ([a345dae](a345dae)) * add back the preferences for the new layout algo ([d52eb6d](d52eb6d)) * add debug profile to feedback message ([a14f965](a14f965)) * add feedback button on about window ([4046136](4046136)) * add in-app feedback form (closes [#145](#145)) ([725a030](725a030)) * add licence to about page ([cb66b79](cb66b79)) * add preference to start at login (closes [#159](#159)) ([982fe6c](982fe6c)) * adding cocoapods and letsmove/sparkle ([606bae7](606bae7)) * better packing; tall thumbnails are 1/2 the width of wide ones ([e34e3b1](e34e3b1)) * bump major version ([3c3b18c](3c3b18c)) * cleaner layout and explanation text ([fd3e768](fd3e768)) * debug build has code-signing to preserve permissions ([34a32f3](34a32f3)) * divide preferences by topic (closes [#130](#130)) ([291f872](291f872)) * drag-and-drop files on the ui (closes [#74](#74)) ([e1e3633](e1e3633)) * german and spanish localization ([6c440a7](6c440a7)) * improved translations ([debd3ae](debd3ae)) * integrate sparkle for auto-updates (closes [#131](#131)) ([069382c](069382c)) * localization (closes [#134](#134)) ([36e4bb0](36e4bb0)) * make system calls more parallel (closes [#160](#160)) ([a29b39f](a29b39f)) * migrate to standard os-backed preferences (closes [#161](#161)) ([e28c43f](e28c43f)) * more appealing presentation + minor refac ([67f291d](67f291d)) * nicer layout for about preferences ([03a5f77](03a5f77)) * quit button is clearer with explicit mention of the name ([6b6d748](6b6d748)) * replace default copyright with correct licence ([60b49ea](60b49ea)) * separating the quit button as it is a special case ([9fa0c06](9fa0c06)) * slightly increase contrast (mitigates [#82](#82)) ([291770e](291770e)) * support macos "sudden termination" ([671fdab](671fdab)), closes [/developer.apple.com/documentation/foundation/processinfo#1651129](https://github.com//developer.apple.com/documentation/foundation/processinfo/issues/1651129) ### BREAKING CHANGES * bump major version * Instead of asking the OS about the state of the whole system on trigger (what we do today; hard to do fast), or asking the state of the whole system on a timer (what HyperSwitch does today; inaccurate) - instead of one of 2 approaches, v3 observes the Accessibility events such as "an app was launched", "a window was closed". This means we build a cache as we receive these events in the background, and when the user trigger the app, we can show accurate state of the windows instantly. Of course there is no free lunch, so this approach has its own issues. However from my work on it from the past week, I'm very optimistic! The thing I'm the most excited about actually is not the perf (because on my machine even v2 is instant; I have a recent macbook and no 4k displays), but the fact that we will finally have the thumbnails in order of recently-used to least-recently-used, instead of the order of their stack (z-index) on the desktop. It's a big difference! There are many more limitations that are no longer applying also with this approach.
# [3.0.0](v2.3.4...v3.0.0) (2020-03-10) ### Bug Fixes * a title change often means the content has change ([b8d6bc9](b8d6bc9)) * add rough downscaling when there are many windows (closes [#69](#69)) ([ced5ee6](ced5ee6)) * added releases link and aligned layout left on tab 3 ([6bb73dc](6bb73dc)) * also codesign debug builds ([a5f9911](a5f9911)) * app launched while in fullscreen shows first window ([c5cbcdb](c5cbcdb)), closes [/github.com//pull/114#issuecomment-576384795](https://github.com//github.com/lwouis/alt-tab-macos/pull/114/issues/issuecomment-576384795) * auto-update preferences sync with os from launch ([b3fb222](b3fb222)) * avoid rendering if app is not used ([fdddb0f](fdddb0f)) * better float rounding = sharper cell contents ([9a96e49](9a96e49)) * better focus/order for preferences (closes [#80](#80)) ([4a8bdeb](4a8bdeb)) * better textareas ([efc9bd3](efc9bd3)) * bring back the window delay that regressed with v2 ([bb95e55](bb95e55)) * compare correctly since pid can go away when an app dies ([4ded030](4ded030)) * compiler warnings ([1faa74c](1faa74c)) * cpu and memory leaks (see discussion in [#117](#117)) ([52626aa](52626aa)) * dock being shown was blocking alt-tab ([2826a1b](2826a1b)) * don't show floating windows + efficiencies ([3f8e3ea](3f8e3ea)) * don't show ui on fast trigger ([f8e1b00](f8e1b00)) * don't trigger ui refreshes if the app is not active ([b9a0152](b9a0152)) * don't upscale thumbnails of small windows ([0bc7472](0bc7472)) * feedback token injected during ci ([effdc5f](effdc5f)) * getting sparkle ready for release ([9f1f522](9f1f522)) * handle on-all-spaces windows better ([4abe9f3](4abe9f3)) * ignore build folder ([a2bb19f](a2bb19f)) * ignore trigger shortcuts if mission control is active ([b03b0aa](b03b0aa)) * initial discovery when single space was glitching the os ([3cd4b6d](3cd4b6d)) * keyboard shortcuts didn't work without a menu ([cf92dc1](cf92dc1)) * layout is now correct; also removed layout preferences for now ([a1b5266](a1b5266)) * layout regression introduced by eed0353 ([bdc41be](bdc41be)) * layout was incorrect resulting in thumbnails clipping ([fd906f4](fd906f4)) * letsmove was not active on release builds ([6ac0658](6ac0658)) * list temporary AXDialog windows like activity monitor ([51a8838](51a8838)) * more robust screen-recording permission check ([ce574a2](ce574a2)) * notarization issues ([d125dd3](d125dd3)) * observer leak would throw and crash the app sometimes ([9ca28eb](9ca28eb)) * only test permissions on the correct os versions ([4612e37](4612e37)) * open alt-tab during space transitions (closes [#92](#92)) ([141562d](141562d)) * prevent visual flickering (closes [#115](#115)) ([9a8c83e](9a8c83e)) * quitting apps was not properly removing apps from the list ([10b2c71](10b2c71)) * quitting multiple apps would refresh the ui multiple times ([bfc2700](bfc2700)) * regression on collectionviewitem titles (not showing) ([8cb6d86](8cb6d86)) * remove debug colors ([e588d55](e588d55)) * remove unnecessary/wrong layout code ([9e719e6](9e719e6)) * sharper images on non-retina displays ([1bb4d2a](1bb4d2a)) * smaller payload for the icons ([bddb6fa](bddb6fa)) * some apps have messy launch behavior ([7eb216d](7eb216d)), closes [/github.com//issues/117#issuecomment-583868046](https://github.com//github.com/lwouis/alt-tab-macos/issues/117/issues/issuecomment-583868046) * some apps should retry observing until it works ([0c731f4](0c731f4)) * using floor() everywhere to avoid blurry rendering ([2a36196](2a36196)) ### Code Refactoring * complete rework of the internals ([547311e](547311e)), closes [#93](#93) [#24](#24) [#117](#117) [/github.com//issues/45#issuecomment-571898826](https://github.com//github.com/lwouis/alt-tab-macos/issues/45/issues/issuecomment-571898826) ### Features * add an app icon and menubar icon (closes [#38](#38)) ([a345dae](a345dae)) * add back the preferences for the new layout algo ([d52eb6d](d52eb6d)) * add debug profile to feedback message ([a14f965](a14f965)) * add feedback button on about window ([4046136](4046136)) * add in-app feedback form (closes [#145](#145)) ([725a030](725a030)) * add licence to about page ([cb66b79](cb66b79)) * add preference to start at login (closes [#159](#159)) ([982fe6c](982fe6c)) * adding cocoapods and letsmove/sparkle ([606bae7](606bae7)) * better packing; tall thumbnails are 1/2 the width of wide ones ([e34e3b1](e34e3b1)) * bump major version ([3c3b18c](3c3b18c)) * cleaner layout and explanation text ([fd3e768](fd3e768)) * debug build has code-signing to preserve permissions ([34a32f3](34a32f3)) * divide preferences by topic (closes [#130](#130)) ([291f872](291f872)) * drag-and-drop files on the ui (closes [#74](#74)) ([e1e3633](e1e3633)) * german and spanish localization ([6c440a7](6c440a7)) * improved translations ([debd3ae](debd3ae)) * integrate sparkle for auto-updates (closes [#131](#131)) ([069382c](069382c)) * localization (closes [#134](#134)) ([36e4bb0](36e4bb0)) * make system calls more parallel (closes [#160](#160)) ([a29b39f](a29b39f)) * migrate to standard os-backed preferences (closes [#161](#161)) ([e28c43f](e28c43f)) * more appealing presentation + minor refac ([67f291d](67f291d)) * nicer layout for about preferences ([03a5f77](03a5f77)) * quit button is clearer with explicit mention of the name ([6b6d748](6b6d748)) * replace default copyright with correct licence ([60b49ea](60b49ea)) * separating the quit button as it is a special case ([9fa0c06](9fa0c06)) * slightly increase contrast (mitigates [#82](#82)) ([291770e](291770e)) * support macos "sudden termination" ([671fdab](671fdab)), closes [/developer.apple.com/documentation/foundation/processinfo#1651129](https://github.com//developer.apple.com/documentation/foundation/processinfo/issues/1651129) ### BREAKING CHANGES * bump major version * Instead of asking the OS about the state of the whole system on trigger (what we do today; hard to do fast), or asking the state of the whole system on a timer (what HyperSwitch does today; inaccurate) - instead of one of 2 approaches, v3 observes the Accessibility events such as "an app was launched", "a window was closed". This means we build a cache as we receive these events in the background, and when the user trigger the app, we can show accurate state of the windows instantly. Of course there is no free lunch, so this approach has its own issues. However from my work on it from the past week, I'm very optimistic! The thing I'm the most excited about actually is not the perf (because on my machine even v2 is instant; I have a recent macbook and no 4k displays), but the fact that we will finally have the thumbnails in order of recently-used to least-recently-used, instead of the order of their stack (z-index) on the desktop. It's a big difference! There are many more limitations that are no longer applying also with this approach.
# [3.0.0](v2.3.4...v3.0.0) (2020-03-10) ### Bug Fixes * a title change often means the content has change ([b8d6bc9](b8d6bc9)) * add rough downscaling when there are many windows (closes [#69](#69)) ([ced5ee6](ced5ee6)) * added releases link and aligned layout left on tab 3 ([6bb73dc](6bb73dc)) * also codesign debug builds ([a5f9911](a5f9911)) * app launched while in fullscreen shows first window ([c5cbcdb](c5cbcdb)), closes [/github.com//pull/114#issuecomment-576384795](https://github.com//github.com/lwouis/alt-tab-macos/pull/114/issues/issuecomment-576384795) * auto-update preferences sync with os from launch ([b3fb222](b3fb222)) * avoid rendering if app is not used ([fdddb0f](fdddb0f)) * better float rounding = sharper cell contents ([9a96e49](9a96e49)) * better focus/order for preferences (closes [#80](#80)) ([4a8bdeb](4a8bdeb)) * better textareas ([efc9bd3](efc9bd3)) * bring back the window delay that regressed with v2 ([bb95e55](bb95e55)) * compare correctly since pid can go away when an app dies ([4ded030](4ded030)) * compiler warnings ([1faa74c](1faa74c)) * cpu and memory leaks (see discussion in [#117](#117)) ([52626aa](52626aa)) * dock being shown was blocking alt-tab ([2826a1b](2826a1b)) * don't show floating windows + efficiencies ([3f8e3ea](3f8e3ea)) * don't show ui on fast trigger ([f8e1b00](f8e1b00)) * don't trigger ui refreshes if the app is not active ([b9a0152](b9a0152)) * don't upscale thumbnails of small windows ([0bc7472](0bc7472)) * feedback token injected during ci ([effdc5f](effdc5f)) * getting sparkle ready for release ([9f1f522](9f1f522)) * handle on-all-spaces windows better ([4abe9f3](4abe9f3)) * ignore build folder ([a2bb19f](a2bb19f)) * ignore trigger shortcuts if mission control is active ([b03b0aa](b03b0aa)) * initial discovery when single space was glitching the os ([3cd4b6d](3cd4b6d)) * keyboard shortcuts didn't work without a menu ([cf92dc1](cf92dc1)) * layout is now correct; also removed layout preferences for now ([a1b5266](a1b5266)) * layout regression introduced by eed0353 ([bdc41be](bdc41be)) * layout was incorrect resulting in thumbnails clipping ([fd906f4](fd906f4)) * letsmove was not active on release builds ([6ac0658](6ac0658)) * list temporary AXDialog windows like activity monitor ([51a8838](51a8838)) * more robust screen-recording permission check ([ce574a2](ce574a2)) * notarization issues ([d125dd3](d125dd3)) * observer leak would throw and crash the app sometimes ([9ca28eb](9ca28eb)) * only test permissions on the correct os versions ([4612e37](4612e37)) * open alt-tab during space transitions (closes [#92](#92)) ([141562d](141562d)) * prevent visual flickering (closes [#115](#115)) ([9a8c83e](9a8c83e)) * quitting apps was not properly removing apps from the list ([10b2c71](10b2c71)) * quitting multiple apps would refresh the ui multiple times ([bfc2700](bfc2700)) * regression on collectionviewitem titles (not showing) ([8cb6d86](8cb6d86)) * remove debug colors ([e588d55](e588d55)) * remove unnecessary/wrong layout code ([9e719e6](9e719e6)) * sharper images on non-retina displays ([1bb4d2a](1bb4d2a)) * smaller payload for the icons ([bddb6fa](bddb6fa)) * some apps have messy launch behavior ([7eb216d](7eb216d)), closes [/github.com//issues/117#issuecomment-583868046](https://github.com//github.com/lwouis/alt-tab-macos/issues/117/issues/issuecomment-583868046) * some apps should retry observing until it works ([0c731f4](0c731f4)) * using floor() everywhere to avoid blurry rendering ([2a36196](2a36196)) ### Code Refactoring * complete rework of the internals ([547311e](547311e)), closes [#93](#93) [#24](#24) [#117](#117) [/github.com//issues/45#issuecomment-571898826](https://github.com//github.com/lwouis/alt-tab-macos/issues/45/issues/issuecomment-571898826) ### Features * add an app icon and menubar icon (closes [#38](#38)) ([a345dae](a345dae)) * add back the preferences for the new layout algo ([d52eb6d](d52eb6d)) * add debug profile to feedback message ([a14f965](a14f965)) * add feedback button on about window ([4046136](4046136)) * add in-app feedback form (closes [#145](#145)) ([725a030](725a030)) * add licence to about page ([cb66b79](cb66b79)) * add preference to start at login (closes [#159](#159)) ([982fe6c](982fe6c)) * adding cocoapods and letsmove/sparkle ([606bae7](606bae7)) * better packing; tall thumbnails are 1/2 the width of wide ones ([e34e3b1](e34e3b1)) * bump major version ([3c3b18c](3c3b18c)) * cleaner layout and explanation text ([fd3e768](fd3e768)) * debug build has code-signing to preserve permissions ([34a32f3](34a32f3)) * divide preferences by topic (closes [#130](#130)) ([291f872](291f872)) * drag-and-drop files on the ui (closes [#74](#74)) ([e1e3633](e1e3633)) * german and spanish localization ([6c440a7](6c440a7)) * improved translations ([debd3ae](debd3ae)) * integrate sparkle for auto-updates (closes [#131](#131)) ([069382c](069382c)) * localization (closes [#134](#134)) ([36e4bb0](36e4bb0)) * make system calls more parallel (closes [#160](#160)) ([a29b39f](a29b39f)) * migrate to standard os-backed preferences (closes [#161](#161)) ([e28c43f](e28c43f)) * more appealing presentation + minor refac ([67f291d](67f291d)) * nicer layout for about preferences ([03a5f77](03a5f77)) * quit button is clearer with explicit mention of the name ([6b6d748](6b6d748)) * replace default copyright with correct licence ([60b49ea](60b49ea)) * separating the quit button as it is a special case ([9fa0c06](9fa0c06)) * slightly increase contrast (mitigates [#82](#82)) ([291770e](291770e)) * support macos "sudden termination" ([671fdab](671fdab)), closes [/developer.apple.com/documentation/foundation/processinfo#1651129](https://github.com//developer.apple.com/documentation/foundation/processinfo/issues/1651129) ### BREAKING CHANGES * bump major version * Instead of asking the OS about the state of the whole system on trigger (what we do today; hard to do fast), or asking the state of the whole system on a timer (what HyperSwitch does today; inaccurate) - instead of one of 2 approaches, v3 observes the Accessibility events such as "an app was launched", "a window was closed". This means we build a cache as we receive these events in the background, and when the user trigger the app, we can show accurate state of the windows instantly. Of course there is no free lunch, so this approach has its own issues. However from my work on it from the past week, I'm very optimistic! The thing I'm the most excited about actually is not the perf (because on my machine even v2 is instant; I have a recent macbook and no 4k displays), but the fact that we will finally have the thumbnails in order of recently-used to least-recently-used, instead of the order of their stack (z-index) on the desktop. It's a big difference! There are many more limitations that are no longer applying also with this approach.
# [3.0.0](v2.3.4...v3.0.0) (2020-03-10) ### Bug Fixes * a title change often means the content has change ([b8d6bc9](b8d6bc9)) * add rough downscaling when there are many windows (closes [#69](#69)) ([ced5ee6](ced5ee6)) * added releases link and aligned layout left on tab 3 ([6bb73dc](6bb73dc)) * also codesign debug builds ([a5f9911](a5f9911)) * app launched while in fullscreen shows first window ([c5cbcdb](c5cbcdb)), closes [/github.com//pull/114#issuecomment-576384795](https://github.com//github.com/lwouis/alt-tab-macos/pull/114/issues/issuecomment-576384795) * auto-update preferences sync with os from launch ([b3fb222](b3fb222)) * avoid rendering if app is not used ([fdddb0f](fdddb0f)) * better float rounding = sharper cell contents ([9a96e49](9a96e49)) * better focus/order for preferences (closes [#80](#80)) ([4a8bdeb](4a8bdeb)) * better textareas ([efc9bd3](efc9bd3)) * bring back the window delay that regressed with v2 ([bb95e55](bb95e55)) * compare correctly since pid can go away when an app dies ([4ded030](4ded030)) * compiler warnings ([1faa74c](1faa74c)) * cpu and memory leaks (see discussion in [#117](#117)) ([52626aa](52626aa)) * dock being shown was blocking alt-tab ([2826a1b](2826a1b)) * don't show floating windows + efficiencies ([3f8e3ea](3f8e3ea)) * don't show ui on fast trigger ([f8e1b00](f8e1b00)) * don't trigger ui refreshes if the app is not active ([b9a0152](b9a0152)) * don't upscale thumbnails of small windows ([0bc7472](0bc7472)) * feedback token injected during ci ([effdc5f](effdc5f)) * getting sparkle ready for release ([9f1f522](9f1f522)) * handle on-all-spaces windows better ([4abe9f3](4abe9f3)) * ignore build folder ([a2bb19f](a2bb19f)) * ignore trigger shortcuts if mission control is active ([b03b0aa](b03b0aa)) * initial discovery when single space was glitching the os ([3cd4b6d](3cd4b6d)) * keyboard shortcuts didn't work without a menu ([cf92dc1](cf92dc1)) * layout is now correct; also removed layout preferences for now ([a1b5266](a1b5266)) * layout regression introduced by eed0353 ([bdc41be](bdc41be)) * layout was incorrect resulting in thumbnails clipping ([fd906f4](fd906f4)) * letsmove was not active on release builds ([6ac0658](6ac0658)) * list temporary AXDialog windows like activity monitor ([51a8838](51a8838)) * more robust screen-recording permission check ([ce574a2](ce574a2)) * notarization issues ([d125dd3](d125dd3)) * observer leak would throw and crash the app sometimes ([9ca28eb](9ca28eb)) * only test permissions on the correct os versions ([4612e37](4612e37)) * open alt-tab during space transitions (closes [#92](#92)) ([141562d](141562d)) * prevent visual flickering (closes [#115](#115)) ([9a8c83e](9a8c83e)) * quitting apps was not properly removing apps from the list ([10b2c71](10b2c71)) * quitting multiple apps would refresh the ui multiple times ([bfc2700](bfc2700)) * regression on collectionviewitem titles (not showing) ([8cb6d86](8cb6d86)) * remove debug colors ([e588d55](e588d55)) * remove unnecessary/wrong layout code ([9e719e6](9e719e6)) * sharper images on non-retina displays ([1bb4d2a](1bb4d2a)) * smaller payload for the icons ([bddb6fa](bddb6fa)) * some apps have messy launch behavior ([7eb216d](7eb216d)), closes [/github.com//issues/117#issuecomment-583868046](https://github.com//github.com/lwouis/alt-tab-macos/issues/117/issues/issuecomment-583868046) * some apps should retry observing until it works ([0c731f4](0c731f4)) * using floor() everywhere to avoid blurry rendering ([2a36196](2a36196)) ### Code Refactoring * complete rework of the internals ([547311e](547311e)), closes [#93](#93) [#24](#24) [#117](#117) [/github.com//issues/45#issuecomment-571898826](https://github.com//github.com/lwouis/alt-tab-macos/issues/45/issues/issuecomment-571898826) ### Features * add an app icon and menubar icon (closes [#38](#38)) ([a345dae](a345dae)) * add back the preferences for the new layout algo ([d52eb6d](d52eb6d)) * add debug profile to feedback message ([a14f965](a14f965)) * add feedback button on about window ([4046136](4046136)) * add in-app feedback form (closes [#145](#145)) ([725a030](725a030)) * add licence to about page ([cb66b79](cb66b79)) * add preference to start at login (closes [#159](#159)) ([982fe6c](982fe6c)) * adding cocoapods and letsmove/sparkle ([606bae7](606bae7)) * better packing; tall thumbnails are 1/2 the width of wide ones ([e34e3b1](e34e3b1)) * bump major version ([3c3b18c](3c3b18c)) * cleaner layout and explanation text ([fd3e768](fd3e768)) * debug build has code-signing to preserve permissions ([34a32f3](34a32f3)) * divide preferences by topic (closes [#130](#130)) ([291f872](291f872)) * drag-and-drop files on the ui (closes [#74](#74)) ([e1e3633](e1e3633)) * german and spanish localization ([6c440a7](6c440a7)) * improved translations ([debd3ae](debd3ae)) * integrate sparkle for auto-updates (closes [#131](#131)) ([069382c](069382c)) * localization (closes [#134](#134)) ([36e4bb0](36e4bb0)) * make system calls more parallel (closes [#160](#160)) ([a29b39f](a29b39f)) * migrate to standard os-backed preferences (closes [#161](#161)) ([e28c43f](e28c43f)) * more appealing presentation + minor refac ([67f291d](67f291d)) * nicer layout for about preferences ([03a5f77](03a5f77)) * quit button is clearer with explicit mention of the name ([6b6d748](6b6d748)) * replace default copyright with correct licence ([60b49ea](60b49ea)) * separating the quit button as it is a special case ([9fa0c06](9fa0c06)) * slightly increase contrast (mitigates [#82](#82)) ([291770e](291770e)) * support macos "sudden termination" ([671fdab](671fdab)), closes [/developer.apple.com/documentation/foundation/processinfo#1651129](https://github.com//developer.apple.com/documentation/foundation/processinfo/issues/1651129) ### BREAKING CHANGES * bump major version * Instead of asking the OS about the state of the whole system on trigger (what we do today; hard to do fast), or asking the state of the whole system on a timer (what HyperSwitch does today; inaccurate) - instead of one of 2 approaches, v3 observes the Accessibility events such as "an app was launched", "a window was closed". This means we build a cache as we receive these events in the background, and when the user trigger the app, we can show accurate state of the windows instantly. Of course there is no free lunch, so this approach has its own issues. However from my work on it from the past week, I'm very optimistic! The thing I'm the most excited about actually is not the perf (because on my machine even v2 is instant; I have a recent macbook and no 4k displays), but the fact that we will finally have the thumbnails in order of recently-used to least-recently-used, instead of the order of their stack (z-index) on the desktop. It's a big difference! There are many more limitations that are no longer applying also with this approach.
@gingerr note that I've had some issues with CI after the release, as you can see in the updates above. I introduced many hard-to-test CI steps with this releases. For instance, CI now:
I just fixed all the issues right now. I had to re-release v3 a few times as a result, unfortunately. I think the version you downloaded is fine, but if you wanna be 100% safe, I suggest you re-download the current v3 :) |
Thanks for the hint! Ive updated to 3.0.2 and then 3.0.5 with the integrated auto-update process, love it 💯 I expected to re-allow the screen recording and accesibility permissions after the update but the OS didnt ask me to. I assume this is also no longer needed cause of the app being now signed with your paid developer certificate which is great 🥇 Thank you for this awesome release. Improvement idea for the README.md: |
Yes indeed!
Done! Thanks for pointing it out! |
Closes #93 #24 #80 #115 #92 #13 #75 #69 #160 #161 #131 #74 #134 #145 #130
BREAKING CHANGE: Instead of asking the OS about the state of the whole system on trigger (what we do today; hard to do fast), or asking the state of the whole system on a timer (what HyperSwitch does today; inaccurate) - instead of one of 2 approaches, v3 observes the Accessibility events such as "an app was launched", "a window was closed". This means we build a cache as we receive these events in the background, and when the user trigger the app, we can show accurate state of the windows instantly.
Of course there is no free lunch, so this approach has its own issues. However from my work on it from the past week, I'm very optimistic! The thing I'm the most excited about actually is not the perf (because on my machine even v2 is instant; I have a recent macbook and no 4k displays), but the fact that we will finally have the thumbnails in order of recently-used to least-recently-used, instead of the order of their stack (z-index) on the desktop. It's a big difference! There are many more limitations that are no longer applying also with this approach.
More context: #45 (comment)