Archive for March 29, 2022

Tuesday, March 29, 2022

Overcast 2022.2

Marco Arment (tweet):

Overcast’s latest update (2022.2) brings the largest redesign in its nearly-eight-year history, plus many of the most frequently requested features and lots of under-the-hood improvements.


Each playlist has a customizable color, and a custom icon can be selected from over 3,000 SF Symbols to match modern iOS design and the other icons within Overcast.


Recently played and newly published episodes can now be displayed on the home screen for quick access, much like the widget and CarPlay experience.


Podcasts can now be pinned to the top of the home-screen list.

I really like this update so far, especially the Recent section, for quickly getting back to what I was just listening to, the In Progress playlist, and the ability to pin podcasts.

The biggest issue that I have with Overcast right now is that its design doesn’t really match my situation of having some podcasts where I’m a completionist and others where I want to pick and choose certain episodes to listen to.

The problem with the second group is that it’s a lot more work to delete the episodes I don’t want than to pick the ones that I do. I can either subscribe to everything and do a lot of deletions or not subscribe, but then I need to manually check for new episodes to “pick.” I have been doing the latter because otherwise episodes pile up and I run out of space. The feature to keep the most recent n episodes is not that helpful because the ones that I want to keep are probably not the most recent. I can “retain” them by starting to play them, but then they show up as In Progress even though they really aren’t.

What I’d like to be able to do is look at a playlist and add certain episodes to my queue, then have a button to delete everything in that podcast that’s not queued or in progress. Or simply have episodes that are not “retained” by a (manual) playlist eventually go away (if they were downloaded before the last time I reviewed that podcast).


“+” means you don’t currently follow that podcast, and won’t automatically get any more episodes from it. Tapping it follows the podcast.

(“Follow” is the new word for “Subscribe” to match Apple’s terminology, since they’re the biggest podcast app, so that’s what people expect.)

Tim Hardwick (tweet):

Top of the much-requested features category is a new Mark as Played checkmark button on episode rows, which is also a left-side swipe action. There is also now a way to view all starred episodes, with special playlist options for Starred, Downloaded, and In Progress.

John Voorhees:

Overcast uses color to allow users to know if there’s anything in their playlists. If a playlist is empty, it’s gray. If the playlist has at least one episode in it, the playlist’s button turns a bright color.


I also added a Queue playlist because, in recent years, I’ve found that I listen to every episode of fewer shows than I used to. Having a Queue playlist where I can drop episodes that look interesting has been a handy way to organize my listening.


The combination of Recent episodes and my Queue playlist has become the way I manage most of the shows I listen to. If I want to start an episode now, I just tap its artwork in the Recent section. Otherwise, I long-press the artwork and send the episode to my Queue.


Overcast’s inactive list combines shows that haven’t published an episode recently with those that you no longer follow and where you manually deleted all episodes from your library[…]


Lifetime of State Properties in SwiftUI

Chris Eidhof:

However, when you have worked with @State (or @StateObject), you will notice that there might be some strange behavior. Sometimes your state disappears, especially when working with a List (or to be precise: any view that uses ForEach directly or indirectly).


List creates its subviews lazily.


The children of a List will be kept around. The lifetime of a @State’s property is directly tied to the lifetime of a view. Once a list child is created, it never goes away again, unless the list goes away itself.


It turns out that while the children of a List will be kept around (including their associated state), the bodies of those views will get destroyed. These will get recreated lazily once the view appears on screen again.

Always Show Window Proxy Icons

Adam Engst:

While I’m glad that Apple added an Accessibility option to make the window proxy icons visible again, I firmly believe that hiding them by default remains a mistake. Proxy icons show what type of content is in the window, and with documents, they visually link the document to its app. The proxy icon for a Pages document looks different from the proxy icon for a TextEdit document or any other app—it’s a valuable visual hint to the user.


Clicking the downward-pointing arrow next to the title reveals a popover that lets you rename, tag, move, and lock the file. […] Unfortunately, the popover doesn’t provide nearly the same level of functionality as the proxy icon. Consider these real-world examples of how I use proxy icons, only one of which could be accomplished through the new popover interface[…]

Monterey also added a Show toolbar button shapes accessibility option. I typically run my Mac with that, Show window title icons, and Reduce transparency. I used to use Increase contrast, too, but am less happy with how it looks in recent macOS versions.


Update (2024-03-08): Pierre Igot:

A constant source of irritation for me since Apple revamped the window toolbar/title bar: When the window title is half hidden, and you click on it to make it editable, if you go too fast, BEFORE macOS has a chance to reveal it in full, then the click fails to make it editable and is effectively ignored.

CoreFollowUp Phishing

Guilherme Rambo:

The only problem is that such a scary-looking alert, right within System Preferences, could be sent by ANY app running on your Mac. The malicious scenario would involve an app that looks like a simple, regular app (it could even be a sandboxed app) sending such a notification, which would then open up an Apple ID login panel that when submitted sent your email and password to the bad actor. The notification could even be made to look like it came from the System Preferences app itself, making it much more believable.


CoreFollowUp is used by several components of both macOS and iOS, and they communicate with it through a daemon called followupd. The problem was that the daemon failed to validate connections made to it on macOS, which meant that any process that could look up its Mach service (including sandboxed apps) would be able to send it commands, including ones that would trigger that scary dialog within System Preferences.


A more complete fix was released in macOS 12.3, preventing any random binary on the system from talking to the daemon and registering notifications, regardless of the destination URL. Apple addressed it by introducing a new entitlement:


This was my first time ever participating in Apple’s bug bounty program. […] All in all, this was a mostly positive experience. The main thing I don’t like about how Apple does it is that they don’t communicate very well throughout the process, and it can take them a really long time to completely address an issue.