Thursday, November 13, 2025

Mini Apps Partner Program

Apple (MacRumors, MacStories, Hacker News):

Today, we’re introducing the Mini Apps Partner Program, which expands on the App Store’s ongoing support for apps that offer mini apps. Mini apps are self-contained experiences that are built using web technologies like HTML5 and JavaScript. This program is designed to help developers who host mini apps grow their business and further the availability of mini apps on the App Store — all while providing a great customer experience.

Participating developers may benefit from a reduced commission rate of 15% on the sales of qualifying In-App Purchases. To be eligible for this reduced commission rate, participating apps must support certain App Store technologies, including the Declared Age Range API and the Advanced Commerce API in order to help provide a safe and seamless experience for customers of all ages.

Apple:

Mini apps are software packages, scripts, or game content that are added after app installation and executed on the device, provided such code is written in HTML5 or JavaScript, or another language approved by Apple. All such code must comply with Section 3.3.1(B) of the Apple Developer Program License Agreement.

[…]

A qualifying mini app within the Mini Apps Partner Program is one that’s put out by a person or entity that’s not directly or indirectly controlled by you, nor under common control with you.

Hartley Charlton:

Under the arrangement, Apple will begin handling in-app payment processing for qualifying mini apps and mini games distributed inside WeChat, China’s dominant all-purpose mobile platform.

[…]

While the new 15% commission is half of Apple’s standard 30% rate for many App Store transactions, Bloomberg estimates that the size of the WeChat ecosystem makes the agreement potentially worth billions of dollars to Apple.

When it’s small EU developers paying a lower commission, Apple is all, “they kept the savings for themselves.” When it’s Tencent (revenue $27.2 billion per quarter), Apple’s line is that it’s to help developers grow their business.

Sarah Perez:

Today, there are a variety of native iOS apps that offer mini apps, including messengers like LINE or WeChat, or those that offer mini games, like Discord, for example. More recently, AI providers have begun moving into the mini app space. Notably, ChatGPT recently launched apps that run inside its chatbot, allowing users to engage with apps like Booking.com, Expedia, Spotify, Figma, Coursera, Zillow, and Canva. Some have theorized that this platform could eventually evolve to threaten the App Store’s business model if app engagement and transactions moved inside ChatGPT.

Previously:

Apple Developer Release Notes Tracked by Git

I’ve frequently noted my frustration with Apple’s Xcode release notes, how lately they simply don’t tell you what’s changed in a given release. Changes from multiple releases are merged together, and Apple deletes and renames old pages so that you can’t compare them unless you’d saved a copy. However, commenter F1248 has done something about this! He’s created a Git repository with Markdown documents for each macOS, iOS, and Xcode release. You can also look at the file history, e.g. to see the changes between Xcode 26.1 and 26.1.1 or from all the appleOS 26.1 betas vs. RC.

This is great for release notes, though for APIs I still miss Code Workshop and SDK News.

Previously:

Messages.app Violates Tracking Number Privacy

Jeff Johnson:

Today I received a shipment notification via text message to my phone number from a company unrelated to Apple. The shipped product was not ordered with my iPhone, and in fact the product manufacturer doesn’t even know that I own any Apple devices. The message included a US Postal Service tracking number. Messages app on my iPhone transformed the tracking number into a link. When I pressed down on the link to reveal the URL, I was surprised by it:

https://trackingshipment.apple.com/?Company=USPS&Locale=&TrackingNumber=

My tracking number, which I won’t post here, was appended to the URL. If I had tapped on the link generated by Messages app, it would have sent my tracking number not to the US Postal Service but to Apple!

As he says, “Apple considers itself implicitly trustworthy,” so there are all these specific examples of violations that it just doesn’t count. But when it comes to others, Apple will assume the worst intentions and make the least charitable reading. For example, it makes broad public statements like, “The DMA has failed to live up to its promises, delivering less security, less privacy, and a worse experience.” And most people seem to unquestioningly believe these claims, just as they assume that App Review can and does reliably provide critical protection. (The reality is that it’s not possible for it to ensure privacy in accordance with the nutrition labels, and they don’t even check that the basic functionality works.) When an Apple-funded study suggests that one potential benefit of EU legislation might not have come to pass, Apple says that’s failing to live up to its promises. But when Apple breaks a specific privacy-related promise, it just memory holes it.

There’s good privacy work being done, but it’s gotten so bound up with marketing and anti-antitrust weaponization. For example, the recent watch Wi-Fi story got presented as: Apple is removing a useful feature because the EU was going to force Apple to give your private information to data brokers. Now, it seems, the actual story is that Apple is now asking for consent (i.e. no longer self-preferencing) and has created a secure API to provide the functionality while preserving privacy. This sounds like something to celebrate, but because privacy has become a cudgel it has to be badmouthed and obscured. For a while, sprinkling the word “privacy” everywhere gave the impression that they really care about privacy. But somewhere along the line, it’s started to seem more like a Get Out of Jail Free card. So, for me, the bit has been flipped, and whenever I see that word I’m on alert to see whether a specific claim is being made and whether it actually makes sense.

Previously:

Wednesday, November 12, 2025

Apple Digital ID

Apple (MacRumors, Hacker News, The Verge):

Apple today announced the launch of Digital ID, a new way for users to create an ID in Apple Wallet using information from their U.S. passport, and present it with the security and privacy of iPhone or Apple Watch. At launch, Digital ID acceptance will roll out first in beta at TSA checkpoints at more than 250 airports in the U.S. for in-person identity verification during domestic travel, with additional Digital ID acceptance use cases to come in the future.

Digital ID gives more people a way to create and present an ID in Apple Wallet even if they do not have a REAL ID-compliant driver’s license or state ID. Digital ID is not a replacement for a physical passport, and cannot be used for international travel and border crossing in lieu of a U.S. passport.

[…]

In the future, users will be able to present their Digital ID at additional select businesses and organizations for identity and age verification in person, in apps, and online.

I find this a bit confusing. Who, other than a minor, has a passport but no state ID? It’s based on your passport but can only be used domestically? How do I know which airports will support this? Does it work for checking in, too, or only for TSA? With Apple Watch, it seems useful in that I wouldn’t have to get my ID out of my wallet and make sure that I get it back from the agent. I don’t see how it makes sense for iPhone, though. When I get to the TSA desk, my phone and wallet are already in my bag, ready to go in the scanner. So it seems like handing my ID over would be easier than using my phone. Also, in the event that I get separated from my bag, I don’t really like the idea of only having the digital watch ID on my person.

Previously:

Update (2025-11-13): Anonymous, answering my question about who doesn’t have a state ID:

The US expat population is larger than the population of half the US states. If I were flying domestically, I would much rather use an Apple Digital ID than my US passport. As an expat, I get hassled by TSA, or more often border patrol, on a regular basis. With Apple Digital ID, I’m no longer an expat, just another tech bro.

Apple-Funded Study on EU Alternative App Store Business Terms

The Analysis Group (MacRumors, Slashdot, Hacker News):

Despite commission rates typically falling by about 10 percentage points, current evidence shows that developers kept the prices of what they sold through the App Store the same or increased them more than 90% of the time.

[…]

Developers’ decision not to pass on commission savings to EU users mirrors Apple’s past experiences following the launch of multiple initiatives that reduced commission rates. For example, when Apple reduced commission rates for tens of thousands of small developers under the Small Business Program, developers decreased only a small minority of prices in the US storefront.

In addition to developers keeping most of the commission savings for themselves, the overwhelming majority of those savings—more than 86%—went to developers outside the EU.

I think the way this is framed is probably more revealing than the actual results. It seems to be using a straw man that the purpose of the DMA and the Small Business Program was to lower the prices paid by consumers. But the EU said that the DMA was meant to “make the digital sector fairer and more competitive,” and Apple said the Small Business Program was meant to “accelerate innovation and help propel your small business forward.” Now Apple is acting as though it and end users are the only parties that matter, so by implication the money must have been wasted. There’s no consideration that maybe these funds helped some developers stay in business or invest more in the products, both of which would be beneficial to the platform as a whole (including Apple).

To answer this question, this study compares the prices set by developers for digital products in EU App Store storefronts during the three months before they enrolled in the alternative business terms (the “before” period) with the prices they set during the three months after enrollment, when they benefited from decreased commission rates (the “after” period). This study focuses on the cohorts of developers who enrolled in the alternative business terms from March 2024 through September 2024.

[…]

The fact that the share of products with observed price decreases barely changed when looking at an extended after-period suggests that the small share of observed price decreases is not dependent on the length of the post-enrollment period observed.

I can see why they looked at what specific developers did after adopting the new terms, but they didn’t have a control group. I think that for a good study design you would want to compare with developers who didn’t switch to the alternative terms. Were their prices more or less likely to stay the same or increase? My impression is that software prices have overall increased over the last few years, so even staying the same would be a decrease relative to the market.

There’s also a section where they say this doesn’t have anything to do with the CTF. I guess their assumption is that these developers knew they would remain small and so would not be subject to the CTF in the future? My impression at the time was that this was all very confusing and subject to change, and everyone was worried about the looming CTF. I’m surprised that even 21,000 apps switched to the alternative terms.

Nick Heer:

The way the European Commission has generally framed the DMA is as a matter of consumer choices and reducing the distortions of a market within a market. More competition within these platforms and better interoperability between them, it is arguing here and elsewhere, can lower prices. Interpreting this sentence to mean “lower commissions and therefore lower app prices for consumers” seems to me like a stretch.

The study’s headline findings might sound negative, but it actually documents a modest increase in developer earnings[…] Against €403 million in sales, a €20 million reduction in commission is noteworthy. And even though most developers who benefitted are outside the E.U., many are probably small businesses[…] It is hard for me to believe Apple having €20 million less in its bank account is of comparable impact to that of a bunch of small developers having €20 million more to spend and invest.

Previously:

Update (2025-11-13): Kyle Howells:

In the US weirdly monopoly laws seem to be less about it being a monopoly and about the resulting price to consumers. Apple has won/lost a few times based seemly only on that.

So Apples response seems to be applying US monopoly law thinking (prices going down = good excluding all else) to EU law (more choice/user freedom, price secondary).

It’s either a misapplying US law in an EU context, or the study is designed less for the EU than for use in ongoing domestic cases in the US.

Jeff Johnson:

What’s scary about the mention of the Small Business Program, and the underlying tone of criticism, is the prospect that Apple might abolish it.

I don’t think Apple is legally required to continue it anymore, according to the terms of the settlement of Cameron, et al. v. Apple Inc.

This reminds me that when the Mac App Store was first introduced, there was some talk about whether developers would charge more in the store because Apple’s commission was higher (e.g. double to triple eSellerate’s). This pretty much never happened. They let Apple take more, without passing the expense on to customers.

iPhone Pocket

Apple (Hacker News, Slashdot):

ISSEY MIYAKE and Apple today unveiled iPhone Pocket. Inspired by the concept of “a piece of cloth,” its singular 3D-knitted construction is designed to fit any iPhone as well as all pocketable items.

[…]

“The design of iPhone Pocket speaks to the bond between iPhone and its user, while keeping in mind that an Apple product is designed to be universal in aesthetic and versatile in use,” shared Yoshiyuki Miyamae, design director of MIYAKE DESIGN STUDIO. “iPhone Pocket explores the concept of ‘the joy of wearing iPhone in your own way.’ The simplicity of its design echoes what we practice at ISSEY MIYAKE — the idea of leaving things less defined to allow for possibilities and personal interpretation.”

[…]

iPhone Pocket is a special-edition release. The short strap design is available in lemon, mandarin, purple, pink, peacock, sapphire, cinnamon, and black; the long strap design is available in sapphire, cinnamon, and black. iPhone Pocket in the short strap design retails at $149.95 (U.S.), and the long strap design at $229.95 (U.S.).

Well, that was a surprise. When I first saw the title, I had a split-second hope that this was a small iPhone that would fit better in my pocket. Then I thought it seemed like an April Fool’s joke. The pretension. And, price aside, it doesn’t even seem like a good product. I can see the appeal of a gold Apple Watch, even if I wouldn’t buy one, but to me the Pocket is neither attractive nor practical.

Does “special-edition” mean that it’s only available for a limited time? Because, being essentially a sock, it’s not as if this shape will only fit this year’s iPhone models.

I don’t begrudge anyone who wants to enjoy a colorful, crossbody case. And I know that this product is not actually taking Apple’s time away from more important things, like putting out fires of its own creation. But it sure feels like a statement about where the company’s priorities are.

Guy English:

At the rate Apple is saying “Yes” these days they’ve gotta be clocking tens of millions of “No”s.

Jason Anthony Guy:

What few people noted is that Issey Miyake is a luxury designer brand founded by the “super famous Japanese designer” (to quote my wife) who designed Steve Jobs’ iconic black mock turtleneck, and which today sells $65 socks, $390 scarves, and $485 knit bags. A $230 iPhone holder is hardly an outlier for this brand.

Furthermore, “a piece of cloth” isn’t meant in its literal sense. Rather, it’s a reference to Miyake’s apparel concept of “A Piece of Cloth (or A-POC),” a “technique to reduce textile waste“ that starts with a single thread that’s then woven into a finished garment—a design so influential, they were on display at The Met and MoMA. I’d describe it as “spiritually related” to Apple’s unibody design, which carves laptops and iPhones from blocks of aluminum.

My completely fashion-free sense tells me these will be extremely popular among a particular crowd.

Previously:

Tuesday, November 11, 2025

Xcode 26.1.1

Apple (xip, downloads):

Xcode 26.1.1 includes Swift 6.2.1 and SDKs for iOS 26.1, iPadOS 26.1, tvOS 26.1, macOS 26.1, and visionOS 26.1. Xcode 26.1.1 supports on-device debugging in iOS 15 and later, tvOS 15 and later, watchOS 8 and later, and visionOS. Xcode 26.1.1 requires a Mac running macOS Sequoia 15.6 or later.

It’s hard to see what’s new in this version because Apple is showing a combined list of release notes for 26.1 and 26.1.1. The old page for 26.1 is gone and doesn’t seem to be in the Internet Archive, either. Luckily, I had saved a copy in EagleFiler. The only new item seems to be:

Fixed: Users interacting with ChatGPT in Xcode might experience performance issues when the assistant is applying code changes. (163507099)

So I guess the simulator and visionOS issues aren’t fixed.

Previously:

DropDMG 3.7.1

DropDMG 3.7.1 is a maintenance update of my app for disk images and archives.

Previously:

Abstract App Icons Within Icons

Matthew Cassinelli:

The App Store icon is made up of three app icons supporting each other (like apps on the App Store do).

Just like the Shortcuts is two app icons, connected in the middle (like shortcuts connecting your apps together).

All these years, I thought the “new” App Store icon was just an abstract version of the original, with the A-shaped pencil and paint brush replaced by plain lines. But he says it’s actually a side view of 3D squircles representing app icons. This is also the basis for the Shortcuts icon (which I never understood) and TestFlight (the blades are apps).

Matthew Cassinelli:

Christian Selig, creator of Apollo for Reddit and Pixel Pals, went a step further and apparently spent the evening fully designing, printing, and sharing a 3D model of the App Store logo using his 3D printer[…]

[…]

However, with Liquid Glass, it has in fact been reduced to three popsicle sticks.

Previously:

Tahoe’s Terrible Icons

Paul Kafasis:

Apple updated their own app icons on Tahoe, for both the squircle shape as well as the new “Liquid Glass” interface. Mostly, these icons seem dumbed-down, with a loss of detail. For example, here’s Safari’s old icon from MacOS 15 (Sequoia) on the left, and the new Tahoe icon on the right.

To me, the new icon just feels blander, and that’s widely true for all of the updated icons. A small number, such as Screen Sharing and Audio MIDI Setup, may be improvements. Most, however, are not. Let’s review with direct comparisons, all of which again feature the older Sequoia icon on the left and the new Tahoe icon on the right.

[…]

Apple’s scripting application previously featured an awesome little robot dude. On Tahoe, it’s barely clear that’s a robot at all. What a pity.

[…]

These icons, however, make me sad. Perhaps one day, it will again be possible for icons to have shape and personality. We have the technology.

Adam Engst:

The post is worth reading for Paul’s trenchant commentary, but it also illustrates just how much of a step backward the Tahoe icons are in both concept and execution. I couldn’t quite believe they were as blurry as they looked in his comparisons until I extracted Safari’s icons and compared them by toggling between versions in Quick Look.

The only thing I can say in Apple’s defense is that the Tahoe icons aren’t as objectionable when viewed in isolation—outside of comparisons like this, most of us don’t scrutinize individual icons. But uniform shapes and softened details have real user impact: they increase visual search time in the Dock and make it harder to distinguish apps at small sizes—especially on high‑density displays and for users with low vision.

Michael Schmitt:

I can think of no squircle icon that is objectively better than the pre-squircle version. They all look like they’re being forced to compromise. Some, even a few Apple icons, look like they’re trying to show a little flair with parts extending behind the squircle, but even that is verboten in Tahoe.

And, they’re all smaller! A squircle icon isn’t permitted to be full size!

Dan Moren:

The look and feel of the Mac has always been—if you’ll pardon the pun—iconic. App icons were a place that developers could show off their creativity, and make apps that are instantly identifiable. Squircle jail remains a thing in macOS 26.1 (and, I’d argue, is worse than before, with a new lighter gray background that feels even more jarring). Here’s hoping this trend gets reversed before too long.

John Gruber (Mastodon):

They’re ugly, they’re dumb (like the new Apple Calendar icon, showing a month that somehow has only 24 days), and many of them — regardless of whether they’re aesthetically pleasing or not — are inscrutable. The fundamental purpose of an icon is to have meaning. And some of these are meaningless.

Even good styles fall out of fashion as trends change. But good styles come back into style eventually. A few decades from now, no one is going to say “Hey, let’s bring back 2020s-style icons.”

[…]

For a remarkably long stretch, Apple’s in-house icons represented the pinnacle of an art form worth celebrating. They were exquisitely crafted, and quite obviously the work of the most talented artists in the field. […] “Fuck it, who cares” is replacing “Insanely great” as the company’s design mantra for software.

Peter N. Lewis:

It’s bad enough they fuck up their own icons - but that they actively fuck up everyone else’s icons is unforgivable.

See also: the MacRumors forum.

Previously:

Update (2025-11-12): Jim Nielsen:

While Paul’s post mostly covers icons for the apps you’ll find in the primary /Applications folder, there’s also a subset of possibly lesser-known icons in the /System/Library/CoreServices folder which have suffered a similar fate.

When I first got a Mac back in college, one of the things I remember being completely intrigued by — and then later falling in love with — was how you could plumb obscure areas of the operating system and find gems, like the icons for little OS-level apps. You’d stumble on something like the “Add Printer” app and see the most beautiful printer icon you’d ever seen. Who cares what the app did, you could just stare at that icon. Admire it. Take it in. And you’d come away with a sense that the people who made it really cared.

Monday, November 10, 2025

Apple Removes Gay Dating Apps From Chinese App Store

Zeyi Yang and Louise Matsakis (Bluesky):

Apple has removed two of the most popular gay dating apps in China from the App Store after receiving an order from China’s main internet regulator and censorship authority, WIRED has learned. The move comes as reports of Blued and Finka disappearing from the iOS App Store and several Android app stores circulated on Chinese social media over the weekend. The apps appear to still be functional for users in the country who already have them downloaded.

“We follow the laws in the countries where we operate. Based on an order from the Cyberspace Administration of China, we have removed these two apps from the China storefront only,” an Apple spokesperson said in an email.

Previously:

FSF EU Notarization Complaint

Free Software Foundation Europe (via Hacker News):

The EU’s Digital Markets Act (DMA) aims for a structural reset of power in digital markets, a shift from corporate control toward device neutrality, where users decide what runs on their devices. For Free Software, this legislation can be a unique opportunity by finally opening closed ecosystems - like iOS - to Free Software alternatives. Apple has reacted aggressively against the DMA, litigating against regulators, and unfairly excluding Free Software from iOS and iPadOS by blocking the unfettered installation of software (sideloading), prohibiting alternative app stores, and hindering interoperability.

[…]

Apple’s complete review of apps – known as “notarisation” process - a mandatory step for distributing any software on its platforms, represents the very gatekeeping behaviour the DMA was written to prevent.

Notarisation forces all apps, even those distributed outside Apple’s App Store, to be submitted to Apple’s servers for scanning, approval, and cryptographic re-signing before installation. The result is that Apple retains full control over what software users can install and how developers can distribute it. This transforms Apple’s self-appointed “security review” into a choke-point of power, locking in developers and users into the company’s proprietary ecosystem.

[…]

The alternative to Apple’s notarisation already exists, and it works. Decentralised curation, as practised by repositories like F-Droid, shows that security and software freedom coexist inherently. Instead of concentrating trust in a single private authority, decentralised systems distribute it: through transparent verification pipelines, reproducible builds, and community audits. Users choose whom to trust, and curators are accountable to the public, not to corporate shareholders. This model embodies the DMA’s vision of interoperability and openness far better than Apple’s notarisation.

I continue to have problems with even the automated notarization for Mac apps. Seemingly every other build these days, I get an error like this:

[15:16:58.729Z] Warning [KEYCHAIN] Couldn't find keychain item matching ["r_Attributes": true, "acct": "com.apple.gke.notary.tool.saved-creds.AppleNotaryProfile", "sync": "syna", "labl": "com.apple.gke.notary.tool", "class": genp, "m_Limit": m_LimitOne, "r_Data": true]. An error occurred while accessing the keychain. The specified item could not be found in the keychain.
[15:16:58.729Z] Info [KEYCHAIN] No Keychain password item found for: AppleNotaryProfile
Error: No Keychain password item found for profile: AppleNotaryProfile

The first few times, I would run notarytool store-credentials to fix this, but I later found that the item really is still in the keychain, and if I keep retrying the notarization it will eventually work. So, aside from the broader policy question, the reality on the ground is that notarization was introduced more than 7 years ago (with macOS 10.14) and it still adds friction and unreliability to the development process.

Hammer:

We need to push a phrase like “freely installed apps”. Don’t use their terms. When Apple talks “sideloading” correct the record “I don’t want sideloading from the App Store either, I want freely installed apps from anywhere”.

[…]

At this rate I think we’re all going to end up using Steve Jobs’s original “sweet solution” to break free.

Previously:

Thanks for Under the Radar

Under the Radar:

In our final episode, we reflect on how indie app development has changed over the past decade.

Marco Arment:

We’re incredibly proud of our ten-year catalog of 30-minute discussions on development, marketing, monetization, work/life balance, and mental health for app developers.

I really liked the 30-minute format and the breadth of topics: everything from API details to broader design considerations, stats from their own businesses, and postmortems, plus all the stuff he mentioned.

Ricky Mondello:

I’ve listened to every episode of the Under the Radar, so I want to thank Marco and David for wearing their hearts on their sleeves while delivering a disciplined podcast that frequently jumped to the top of my queue.

I’ve never been an indie software developer, but I found the podcast extremely insightful. It’s influenced how I’ve thought about my non-indie software development career, not just as someone delivering bits that indies use, but also as a product person who writes software as a means to an end.

Some of my favorite topics touched on by the show have been taking risks, being willing to pivot when those risks don’t work out, keeping many different types of users in mind, and how to market one’s work and oneself (two different things that feed into each other!).

Previously:

NetNewsWire 6.2

Brent Simmons (release notes):

Long-time Mac users will understand when we say that this is a Snow Leopard release — it fixes a bunch of bugs, makes some things faster, and adds only a couple features.

[…]

Note also that it doesn’t adopt Liquid Glass. We’ll be doing that in NetNewsWire 7, which we’re working on now. (See The Liquid Glass Plan.)

All that said — there is one new feature of potential interest: we’ve added support for Markdown in RSS feeds. When the parser encounters a source:markdown element, we save it in the database, and the app renders the Markdown as HTML and displays it in the article view.

I still love this app and how fast it is. I’m using it to read Mastodon and Bluesky, in addition to all of my RSS feeds. It looks like they’ve figured out the bug that makes me have to restart the app daily to keep Feedbin syncing working, but the fix has been postponed until 7.1.

Previously:

Friday, November 7, 2025

Acorn 8.3 With Liquid Glass

Gus Mueller:

Acorn 8.3 is out and the big new feature is that it supports Liquid Glass for folks who are running macOS Tahoe (which is over 50% of Acorn 8 users at this point!).

[…]

But the UI was a ton of work! And I made it extra difficult on myself by making Liquid Glass optional.

[…]

The second option is “Display images edge-to-edge”. This one works on all versions of macOS that Acorn 8.3 runs on. This is the fancy look where the toolbar floats above the content as if it was a delicate and beautifully manicured piece of glass. It also removes the bottom toolbar, so there’s maximal room for your pixels to shine.

I also reworked the tool palette so that it no longer takes up the whole left side of the window and instead floats above the canvas and gives more space for your image to be viewed. (And every time I look at it, it makes me think of MacPaint and its tool palette. What a great app that was!)

That’s a good change, but I still question the premise of the new tool palette design. I kind like having the tool options and layers docked to the right side of the document window, but I don’t understand the desire to have the tool icons at the left displayed on top of the image. You save a little space but have to keep pressing Tab to see the whole image. I think the MacPaint and Acorn 6 way of having a separate tools palette worked just fine. Thankfully, Acorn still supports the Float inspector palettes in windows option.

Previously:

White Label Gemini on Private Cloud Compute

Juli Clover (Hacker News):

The smarter, more capable version of Siri that Apple is developing will be powered by Google Gemini, reports Bloomberg. Apple will pay Google approximately $1 billion per year for a 1.2 trillion parameter artificial intelligence model that was developed by Google.

[…]

Apple will use Gemini for functions related to summarizing and multi-step task planning and execution, but Apple models will also be used for some Siri features. The AI model that Google is developing for Apple will run on Apple's Private Cloud Compute servers, so Google will not have access to Apple data.

John Gruber (Mastodon):

Nothing I’ve seen from kicking the tires with Anthropic’s own app and Google’s Gemini app (and my daily use of ChatGPT) suggests that Anthropic is significantly better than Gemini or ChatGPT (or vice versa). They’re all clearly near each other technically. Siri, and today’s Apple Intelligence, is at least two generations behind. Maybe worse.

[…]

So I don’t think there’s any reason to think that Apple partnering with Google for a version of Gemini that runs on Apple’s Private Cloud Compute infrastructure is “settling”. It’s more like choosing between a Mercedes and a BMW, and maybe you like the Mercedes a little more after test-driving both, but you’re getting a way, way better deal from the BMW dealer so that’s the one you buy.

Because if Gurman’s sources are right and this deal is for around $1 billion per year, that’s an amazing deal for Apple. Remember first that Google pays Apple over $20 billion per year for web search traffic acquisition fees from Safari users. So one way to look at it is that Apple is getting access to its own private instance of Gemini in exchange for a 5 percent reduction in the fees it collects from Google for Safari search queries. Another way of looking at it is that Google has reportedly invested over $100 billion developing its AI capabilities. Apple getting access to the fruits of that labor for $1 billion per year seems like such a steal that it makes me wonder why Google agreed to it.

This seems like a win-win as far as it goes, but I maintain that the main problem with Siri is the unreliability and slowness of its infrastructure, and it’s not clear that this would help with that.

M.G. Siegler:

While this news isn’t exactly new – it has been known for a while that Apple was doing a sort of “bake off” internally to potentially find a third-party partner to help fix their AI efforts – and we even knew that Google was likely in pole position, it’s still reassuring to read a report with actual numbers and potential timetables. That suggests a deal that is indeed at the finish line, if not already over it. And it makes a new Siri – an actually working Siripossible in the Spring of 2026.

[…]

Apple may not have wanted to pay Anthropic $1.5B a year to use Claude but $1B a year to a partner that is paying you $20B+ for that Search deal? That can be just an in-kind deal! “Google, you know that $25B you owe us this year? Make it $24B, but we’ll take a custom build of Gemini. Deal?”

[…]

And while the “walled off” aspect is clearly a must for Apple here, you could also imagine that the company may be willing to share some data – fully anonymized, of course – back to help constantly improve the model. And that may speak to why Google would want to do this deal (well, that and the money).

I see speculation that both sides would want to keep the deal secret, but would that be permissible under the current privacy policy?

Apple service providers are obligated to handle personal data consistent with this Privacy Policy and according to our instructions. They cannot use the personal data we share for their own purposes and must delete or return the personal data once they’ve fulfilled our request.

They have this elaborate Private Cloud Compute system, but then they’re going to purposely break out of that box and it’s OK because everyone assumes that they properly anonymize the data?

Previously:

iOS 26.2: App Marketplaces and Browser Choice in Japan

Tim Hardwick (Hacker News, Slashdot):

Apple on Tuesday released the first beta of iOS 26.2 to developers, and it appears that the software will allow users in Japan to install alternative app marketplaces on their devices when it is released to the public in December.

According to a post shared on X by @Tzzlala, iPhones running the beta in Japan are able to install alternative app stores like AltStore PAL and Epic Games, and download apps from them, though Fortnite in-app purchases are currently region-blocked by Epic.

I remain ambivalent about App Marketplaces. They’re certainly a step forward for the availability of apps, but they may end up forestalling better options. I would rather see full sideloading via the Web with notarization optional.

Juli Clover:

With iOS 26.2, Apple is adding a prompt that allows iPhone users in Japan to select a preferred search engine. As noted on Reddit, the option to choose a search engine comes up after installing iOS 26.2 for the first time.

iPhone users in Japan can select from Bing, Google, DuckDuckGo, Yahoo Japan, or Ecosia, the same options available globally in the Safari settings.

No Kagi and still no way to add true custom search engines.

Previously:

MainActor.assumeIsolated, Preconcurrency, and Isolated Conformances

Fatbobman:

As Swift 6 gradually gains adoption, this problem becomes increasingly prominent: developers want to benefit from the concurrency safety guarantees provided by the Swift compiler, while struggling with how to make their code meet compilation requirements. This article will demonstrate the clever use of MainActor.assumeIsolated in specific scenarios through an implementation case with NSTextAttachmentViewProvider.

[…]

We seem to be caught in a dilemma: we need to construct UIHostingController in MainActor, yet we cannot assign the constructed view (UIView) to self.view within MainActor.

[…]

Looking at MainActor.assumeIsolated’s signature, we can see that this API provides a MainActor context for its trailing closure. This means we can “synchronously” run code that can only execute in a MainActor context within a non-MainActor synchronous context, without creating an async environment, and return a Sendable result.

[…]

I still hope we can move past this somewhat “chaotic” transition period soon. Perhaps in a few years, when numerous official and third-party frameworks have completed their Swift 6 migration, we’ll finally enjoy a more relaxed safe concurrent programming experience.

Matt Massicotte:

I consistently find the @preconcurrency attribute to be confusing. But, I’m tired of that. Let’s just, once and for all, get a better handle how to use this thing.

[…]

It has three distinct uses. And while they all apply to definitions, the details are quite different.

Jesse Squires:

UIKit provides two diffable data source APIs, one for collections and one for tables. Recently, while working on ReactiveCollectionKit, I noticed that the APIs were updated for Swift Concurrency in the iOS 18 SDK, but the annotations were inconsistent with the documentation.

[…]

I reached out to Tyler Fox from the UIKit team on Mastodon to ask if this was a mistake. As it turns out, it is not a mistake and his reply was incredibly helpful and insightful. For posterity and documentation purposes (and because social media is ephemeral and unreliable), I’m going to reproduce his entire response here[…]

Wade Tregaskis:

These might seem pretty similar – you’d be forgiven for assuming it’s just a convenience to put @MainActor on the protocol overall rather than having to repeat it for every member of the protocol. Less error-prone, too.

But, you generally shouldn’t do that. They are not equivalent.

The first form is not merely saying that all the members of the protocol require a certain isolation, but that the type that conforms to the protocol must have that isolation. The whole type.

Matt Massicotte:

Further, as far as the compiler is concerned, there is an actor boundary both going into and returning from assumeIsolated. This means you cannot work with non-Sendable data here and that can be an enormous pain.

[…]

Before Swift 6.0, dynamic isolation was the only option. And before Swift 6.2, I think that preconcurrency conformances were the best tool for handling protocol isolation mismatches. They address pretty much all of the weakness of the nonisolated-assumeIsolated thing. But they just feel funny.

[…]

Swift 6.2 allows us to express this idea directly, by constraining a conformance to be valid only for a particular global actor.

What we now have is exactly what we want. A MainActor type that is Equatable in that context only. This is not the same as a true, unconstrainted Equatable, because those work everywhere. It’s a little like defining a new, special variant of that protocol right in line at the conformance declaration site.

[…]

But remember, not all protocols are compatible. And making this entire thing implicit makes the problems even more surprising. Don’t get me wrong, I really like isolated conformances and am very happy to see them come to the language. But they are not a magic bullet (and neither is MainActor-by-default).

Lukas Valenta at mDevCamp (Mastodon):

The talk focuses - as the name suggests - to strategy to migrate the project from Swift 5 compilation mode to Swift 6. We will discuss several issues anyone will encounter to have project that compiles under Swift 6 mode, such as issues with Combine and Async publishers, DispatchQueue.main precondition queue checks, working with older APIs that predate the concurrency, as well as a debate whether it is all worth it. I will also mention the transition of not only the project itself but also a story of external dependencies, some of which written by me, and how did the migration in the libraries took place.

Previously:

Thursday, November 6, 2025

iOS 26.2 to Remove iPhone–Apple Watch Wi-Fi Sync in EU

Tim Hardwick:

Normally, when an iPhone connects to a new Wi-Fi network, it automatically shares the network credentials with the paired Apple Watch. This allows the watch to connect to the same network independently – for example, when the iPhone isn’t nearby – without the user needing to enter the password manually.

The feature’s removal appears to be Apple’s response to the European Commission’s Digital Markets Act (DMA) interoperability requirements, which Apple has publicly criticized on more than one occasion. Under the DMA, regulators want Apple to open iPhone Wi-Fi hardware access to third-party accessories by the end of 2025.

[…]

Apple has previously warned that complying with EU interoperability requirements could give “data-hungry companies” access to sensitive information, including notification content and complete Wi-Fi network histories.

It seems perfectly reasonable that if I have a third-party watch I should be able to opt into having my phone share Wi-Fi info with it. You can debate whether mandating this is the proper role of government, but the status quo is clearly anti-competitive and bad for the user experience. I’m open to hearing a story where Apple’s position makes sense, but so far it just seems like FUD to me. What is the argument, exactly? That Fitbit, which already has its own GPS, is going to sell your access point–based location history? That Facebook is going to trick you into granting access to their app even though they have no corresponding device?

Amy Worrall:

Of course, what they mean is “Apple refuses to let third party watches share known wifi connections, so they’d rather cut off their nose to spite their face.”

Nico Reese:

At this point I don’t know where Apple will draw the line if they now even touch existing features, albeit not a very big one. I just can’t fathom how leadership still cannot see that they lost.

Previously:

Update (2025-11-07): Rui Carmo:

I’d say we have officially reached the point where Apple is on the verge of actively harming their user experience for no good reason whatsoever. I honestly don’t know if this is bull-headedness or malicious compliance.

AirPods Live Translation Expands to the EU

Apple (9to5Mac, MacRumors, Reddit):

Next month, Live Translation on AirPods will expand to the EU, making face-to-face conversations easier by helping users communicate even if they don’t speak the same language.

[…]

Live Translation on AirPods is available in English, French, German, Portuguese, Spanish, Italian, Chinese (Simplified and Traditional Mandarin), Japanese, and Korean when using AirPods Pro 3, AirPods Pro 2, or AirPods 4 with ANC paired with an Apple Intelligence-enabled iPhone running the latest software. Live Translation on AirPods was delayed for users in the EU due to the additional engineering work needed to comply with the requirements of the Digital Markets Act.

So what happened here? What was this extra engineering work? Back in September, Apple said:

For example, we designed Live Translation so that our users’ conversations stay private — they’re processed on device and are never accessible to Apple — and our teams are doing additional engineering work to make sure they won’t be exposed to other companies or developers either.

But it doesn’t sound like Apple has opened up Live Translation to third-party Bluetooth devices or to third-party apps. Does the DMA not require that? Or is Apple actually doing that but deliberately left it out of the announcement?

The other main theory for the delay was that Apple had not yet shown the regulators how the feature complied with the GDPR. But would that require “additional engineering work”? Apple was cagey before but now specifically blames the DMA, not the GDPR.

Based only on a plain reading of the public statements above, the logical conclusion is that the initial version of Live Translation had privacy flaws, which the EU forced Apple to address before shipping in that region. That would be a very interesting story and completely at odds with Apple’s framing that the EU’s demands would reduce privacy.

There are some other possibilities. Maybe the feature just wasn’t ready before. Maybe Apple created a false conflict to drum up anti-DMA sentiment. Maybe the EU caved and let Apple ship the feature without changes—though that doesn’t explain the additional engineering. All of Apple’s communication about this feature in the EU seems designed to obscure rather than elucidate, so who knows?

Nick Heer:

If Apple wants to be petty and weird about the DMA in its European press releases, I guess that is its prerogative, though I will note it is less snippy about other regulatory hurdles. Still, I cannot imagine a delay of what will amount to three-ish months will be particularly memorable for many users by this time next year.

Previously:

Update (2025-11-07): Nick Heer:

Tsai is referencing Apple’s Digital Markets Act press release. After listing the features delayed in the E.U., one of which is Live Translation, and all attributed to the DMA, it goes on to say (emphasis mine):

We’ve suggested changes to these features that would protect our users’ data, but so far, the European Commission has rejected our proposals. And according to the European Commission, under the DMA, it’s illegal for us to share these features with Apple users until we bring them to other companies’ products. If we shared them any sooner, we’d be fined and potentially forced to stop shipping our products in the EU.

[…]

I do not see anything in the release notes about greater third-party support or new APIs.

So it’s still a mystery. Dan points to another theory from numerama, but I don’t think it makes sense given Apple’s statements, either.

Proposal to Settle Epic and Google Antitrust Case

Sean Hollister (PDF, Hacker News, Slashdot):

Just when we thought Epic v. Google might be over, just one Supreme Court rejection away from a complete victory for Epic, both sides have agreed to settle Tuesday evening.

[…]

Now, instead, Google is agreeing to reduce its standard fee to 20 percent or 9 percent, depending on the kind of transaction and when an app was first installed. It’s agreeing to create a new program in the very next version of Android where alternative app stores can register with Google and (theoretically) become first-class citizens that users can easily install. And it appears to be agreeing to offer “Registered App Stores” and lower fees around the world, not just in the US, lasting through June 2032 — six and a half years instead of just three.

[…]

The details also seem to be somewhat tailored to the needs of a game developer like Epic Games. Google can charge 20 percent for an in-app purchase that provides “more than a de minimis gameplay advantage,” for example, or 9 percent if the purchase does not.

[…]

If Judge Donato approves the settlement and these revisions, it sounds like it could also resolve one of Epic’s biggest arguments against the big app stores since day one: the friction and “scare screens” that Epic alleged keep users from sideloading alternative app stores.

Juli Clover:

Google agreed not to enter into agreements that would see apps launch "first or exclusively" on Google Play, and it will not require an app to provide the same features on Google Play that it does on another app store. Developers are also free to communicate with customers about cheaper prices available outside of the Google Play Store.

Tim Sweeney:

Google has made an awesome proposal, subject to court approval, to open up Android in the US Epic v Google case and settle our disputes. It genuinely doubles down on Android’s original vision as an open platform to streamline competing store installs globally, reduce service fees for developers on Google Play, and enable third-party in-app and web payments.

Sarah Perez:

In a post on X, Sameer Samat, president of the Android Ecosystem at Google, wrote that the company’s proposed changes “focus on expanding developer choice and flexibility, lowering fees, and encouraging more competition all while keeping users safe.”

Manton Reece:

Epic’s lawsuits were derided by many, years ago, but there’s no question now on how consequential their approach has been.

John Voorhees:

What does this mean for Apple and its App Store skirmishes with regulators around the world? Nothing technically; however, contextually, if the settlement is implemented, it should add to the pressure on Apple to open the App Store more widely in the U.S. and elsewhere.

Previously:

Update (2025-11-10): Neil Long (via John Voorhees):

The US judge overseeing the Epic-Google case has cast doubt over the settlement reached between the two companies.

[…]

“My concern here is that these proposed modifications … [are] not providing an adequate remedy for Google’s wrongdoing,” said Judge Donato, according to Law360.

Microsoft Australia Refunds for Office/Copilot Dark Pattern

Nassim Khadem (via Diego Barros):

Microsoft has apologised to customers and said it will refund them, after the consumer watchdog alleged the tech giant misled about 2.7 million Australians over subscription costs so they would remain on more expensive plans.

[…]

Announcing the court action last week, the consumer watchdog slammed Microsoft for the conduct, alleging it “deliberately hid” a subscription option from Australian customers and said it would be seeking a penalty that would deter similar behaviour from other firms.

[…]

Following the integration of Microsoft’s AI feature, Copilot, the company increased the annual subscription price of its Microsoft 365 personal plan by 45 per cent from $109 to $159.

[…]

The ACCC alleged that since October 31, 2024, Microsoft had told these subscribers with auto-renewal enabled that to maintain their subscription, they “must accept the integration of Copilot and pay higher prices for their plan, or, alternatively, cancel their subscription”.

Simon Sharwood:

Your correspondent, who has a personal account for M365, tried to find info about Classic mode by re-subscribing to the service. I saw dialog boxes reading, “I don’t want my subscription,” and “I want to keep my benefits”, but no info about a Classic version.

That’s a classic “dark pattern” – a deliberately confusing or complex process that vendors use to steer customers towards the things they want them to buy, instead of presenting a comprehensive menu of choices.

[…]

Microsoft also sent its January price rise advice to subscribers in Malaysia, Singapore, Taiwan, and Thailand. We’ve asked if the company plans to issue apologies in those nations, too, but haven’t received a response at the time of writing.

Previously:

Wednesday, November 5, 2025

Xcode 26.1

Apple (xip, downloads):

Xcode 26.1 includes Swift 6.2.1 and SDKs for iOS 26.1, iPadOS 26.1, tvOS 26.1, macOS 26.1, and visionOS 26.1. Xcode 26.1 supports on-device debugging in iOS 15 and later, tvOS 15 and later, watchOS 8 and later, and visionOS. Xcode 26.1 requires a Mac running macOS Sequoia 15.6 or later.

Steve Troughton-Smith:

It might be just me, but Xcode 26.1 seems to have thrown a grenade into the visionOS build process. Getting things to build with the right deployment targets and the correct images in the assets catalog is a mess

Steve Troughton-Smith:

PSA: from what I’ve seen, Xcode 26.1 ignores your minimum deployment target for visionOS apps, and sets it to 26.1. Re-setting it to the intended version does seem to work. Saw this across a bunch of my projects. I haven’t checked if it does this for iOS or other platforms, but that’s a nasty bug to slip through…

Paul Haddad:

Xcode 26.1 still doesn’t seem to let you get rid of the AI icon from the Toolbar, but hey at least it still works on Sequoia.

James Thomson:

Xcode 26.1 seemingly removes the undocumented “—enable-icon-stack-fallback-generation=disabled” flag for actool, which enabled you to supply different icons for older systems.

It also means if you have lots of alternative icons, you’re back to extensive rebuild times as it re-renders all those icons every single time you touch your asset catalog.

I do not recommend updating to Xcode 26.1 if you, like me, are relying on this flag.

Previously:

Update (2025-11-06): Avi Drissman:

Since several folks noted it, while “enable-icon-stack-fallback-generation” still exists as a string in Xcode 26.1, it is no longer parsed as a flag in -imageCatalogCompilerOptionsFromToolArguments:…, and it is no longer processed in _IBICIconStackCommonCreateNamedAssetImportInfos(). I have no further details nor advice.

Update (2025-11-10): Artem Mirzabekian (via Fatbobman):

If you’re noticing unusually high CPU usage when running the iOS 26.1 simulator, you’re not alone.

It appears that a process called MercuryPosterExtension is repeatedly crashing, which in turn triggers ReportCrash to spin up constantly - flooding the system and causing heavy CPU load.

Forcing Copilot AI

Thomas Claburn (Hacker News, Slashdot):

Among the software developers who use Microsoft’s GitHub, the most popular community discussion in the past 12 months has been a request for a way to block Copilot, the company’s AI service, from generating issues and pull requests in code repositories.

The second most popular discussion – where popularity is measured in upvotes – is a bug report that seeks a fix for the inability of users to disable Copilot code reviews.

Both of these questions, the first opened in May and the second opened a month ago, remain unanswered, despite an abundance of comments critical of generative AI and Copilot.

Sergiu Gatlan (Hacker News):

“Starting in October 2025, Microsoft will begin automatically installing the Microsoft 365 Copilot app on Windows devices [outside Europe] that have Microsoft 365 desktop client apps,” the company said in a Microsoft 365 message center update on Friday.

[…]

While the newly installed app will be added to the Windows Start Menu and enabled by default, IT administrators responsible for managing Microsoft 365 app deployments will be able to opt out in the Apps Admin Center.

Pierre Igot:

Once Microsoft introduced its AI crap (Copilot) in its Office apps and forced me to pay for the “upgrade”, even though it initially was possible to completely turn it off, I knew it wouldn’t take long before it would invade my work environment.

Sure enough, a couple of months later, even though I still have everything turned off under “Privacy”, I now have all kinds of Copilot-related controls in PowerPoint that I cannot remove or make disappear. (And of course they don’t work.)

Pierre Igot:

Example of Copilot now interfering with my work in Microsoft PowerPoint even though I’ve turned off everything I could: If the text spills beyond the frame at the bottom, the floating button that I cannot turn off hides the left side of the text.

Emma Roth (Slashdot):

Microsoft Excel is testing a new AI-powered function that can automatically fill cells in your spreadsheets, which is similar to the feature that Google Sheets rolled out in June. You would use the “COPILOT” function followed by a natural language prompt and (optionally) specify the cells you want it to reference; the AI would then classify information, generate summaries, create tables, and more.

[…]

Microsoft notes that you can combine its new AI function with other Excel functions, including IF, SWITCH, LAMBDA, or WRAPROWS. The company adds that information sent through Excel’s COPILOT function is “never” used for AI training, as “the input remains confidential and is used solely to generate your requested output.”

The COPILOT function comes with a couple of limitations, as it can’t access information outside your spreadsheet, and you can only use it to calculate 100 functions every 10 minutes. Microsoft also warns against using the AI function for numerical calculations or in “high-stakes scenarios” with legal, regulatory, and compliance implications, as COPILOT “can give incorrect responses.”

Dare Obasanjo:

This is going to cause some hilarious and disastrous results as people inevitably forget about hallucinations and use this to crunch numbers.

Avram Piltch:

As of the latest Windows Insider Dev and Beta builds, the “Ask Copilot anything” box is available if you know how to switch it on.

Though it’s off by default, using the Copilot search box feels like glancing into the future. As Microsoft has become more aggressive about pushing its AI services, we can totally see this becoming a default part of the UI.

Previously:

AI in Microsoft Edge

Tom Warren:

The AI-powered mode allows Copilot to search across all your open tabs and handle tasks like booking a restaurant, and it brings the Copilot chatbot to your new tab page.

[…]

Copilot in Edge also supports voice navigation to locate information on a website or to open tabs with products to compare. Microsoft is also planning to let Copilot, with your permission, access your Edge browser history and credentials so the chatbot can book reservations on your behalf.

Sean Lyndersay:

With Copilot Mode on, you enable innovative AI features in Edge that enhance your browser. It doesn’t just wait idly for you to click but anticipates what you might want to do next. It doesn’t just give you endless tabs to sift through but works with you as a collaborator that makes sense of it all. It keeps you browsing, cuts through clutter and removes friction to unlock your flow – all built to the highest Microsoft standards of security, privacy and performance trusted by billions of people and businesses worldwide – with you as the user always in control.

Thomas Claburn:

Whether this process would be quicker than submitting a search query, choosing a paddleboarding location from the results, and making an online reservation would depend upon how long the searcher considered the options and how easily the searcher could navigate the relevant sites. It also requires the AI model not to be confused by the web pages it scans to perform the tasks.

Copilot Mode in Edge can also handle other common LLM-oriented tasks like summarizing web pages and remembering browsing sessions by topic, so that these can be picked up where they were left off.

Of course Copilot Mode has privacy implications similar to those raised by browser extensions. Both potentially have access to everything going on within the browser and Copilot may get even broader data access through explicit tool use permissions. Microsoft however insists it can manage the privacy risks.

John Gruber:

Color me skeptical about the idea that my web browser should be “working for me”, rather than serving as a tool for me to work with. The AI hype cycle is pointing to a future where automated agentic web browsers surf automated AI-generated websites.

[…]

I am reminded of the decade-ago Netflix strategy espoused by Ted Sarandos: “The goal is to become HBO faster than HBO can become us.” I think something similar is behind Microsoft trying to make Copilot front-and-center in Edge, and Google’s concurrent move to junk up Chrome with AI-generated suggestions. Their goal is to make their web browsers chatbots faster than OpenAI can make ChatGPT a web browser.

Tim Hardwick:

Microsoft has launched new features for its AI “Copilot Mode” in Edge, following a raft of recent new offerings from competing browsers.

[…]

Copilot Actions adds agentic capabilities, letting the AI handle tasks like unsubscribing from emails or making reservations. Actions also includes voice capabilities, allowing users to speak to their browser to open web pages or ask Copilot to find specific topics within articles.

Meanwhile, the Journeys feature organizes browsing history by topic and suggests next steps, making it easier to resume research sessions. It can also group past browsing sessions thematically.

Adam Engst:

But being able to start a conversation with a tab’s contents as context isn’t much more helpful than working directly with ChatGPT or Perplexity. As a result, I haven’t been tempted to switch to these browsers from Arc, where I can navigate fluidly among numerous websites with just a couple of clicks.

[…]

The new hotness is “agentic browsers,” which can perform tasks for you. I’ve struggled to come up with tasks that are even mildly realistic.

[…]

The Copilot chatbot in Microsoft Edge was noticeably faster than the others, even when I prompted it to think more deeply about the task and added three tabs with confirmation lists to the prompt. However, it never even came close to producing the correct results, whether I let it try the entire task at once (154, 174, 144) or asked it to count the number of minors on each list (228, 213, 181).

[…]

When it comes to system prompts, the anxious tone of Copilot’s internal responses suggests a “ship now, apologize later, if you’re caught” system prompt that, if reflected in a real-world workplace, would be problematic. Obviously, AIs don’t have feelings that can be hurt and won’t complain to HR, but such a culture tends to encourage people to cut corners and make poor decisions that compromise quality and customer service. If Copilot is any indication, the same is true for AIs.

Previously:

Bending Spoons Acquires AOL

Sara Fischer (via Hacker News):

Apollo Global Management has reached a deal to sell AOL to Italian tech holding group Bending Spoons in a deal valued at roughly $1.5 billion, Axios has learned.

[…]

AOL still drives hundreds of millions of dollars of free cash flow. […] Bending Spoons CEO Luca Ferrari said AOL has around 30 million monthly active users across its email and web content properties.

[…]

Bending Spoons has also raised $2.8 billion in debt financing that will be used to fund the AOL deal as well as future research and development investments and merger and acquisition opportunities.

Previously:

Tuesday, November 4, 2025

macOS 26.1

Juli Clover (release notes, security, enterprise, developer, full installer, IPSW):

macOS Tahoe 26.1 adds a toggle that allows you to select a Tinted mode for Liquid Glass, adding additional opacity. There are also improvements to AirPlay and FaceTime, with Apple’s full release notes below.

See also: Howard Oakley.

Tim Hardwick:

Apple quietly added a small but notable enhancement to Spotlight in macOS Tahoe 26.1, which was released on Monday. The update introduces new clipboard history controls for Spotlight, allowing users to decide how long copied items remain accessible in search results.

Previously, Spotlight could optionally retain clipboard contents for up to eight hours, but the latest update expands that flexibility with three options – 30 minutes, 8 hours, or 7 days.

John Siracusa:

Tahoe changed the timing of some app launch, termination, and run-state changes when monitored via the relevant public notification APIs.

Dan Moren:

Absolutely baffling Shortcuts bug that has persisted even in the 26.1 RC: my workflow that moves podcast files after I finish recording still gives me an incomprehensible error after it moves some of the files (“This action could not be run with the current user interface.”). Even worse, sometimes it works, sometimes it doesn’t. My workaround has been to change it from moving the files to copying them, which works fine. But it used to work with no problems. 🤷

Mario Guzmán:

Apple has fixed so many #AppKit bugs in #macOSTahoe 26.1 that I think I can release my app. It was so, so broken, especially split views and their tracking dividers in the toolbar. I think all those issues I reported are now fixed.

Andrew Cunningham:

Mac owners should also notice better audio quality for FaceTime calls “in low-bandwidth conditions,” and there’s now support for AutoMix transitions when using Apple Music over AirPlay.

Radiccio:

We have discovered a severe performance regression caused by macOS 26.1. Scrolling may appear to be very slow and the UI may stop updating entirely.

Rich Trouton:

After talking with colleagues in the Mac Admins Slack, I was pointed to a Known Issues entry for Virtualization in the macOS 26.1.0 release notes:

The serial number published for the virtual machine is 0, which prevents iCloud and related applications from functioning correctly.

Howard Oakley:

In some Finder views, such as Column View, selecting an item at the left displays the item’s thumbnail and associated metadata. Below those are a selection of tools offering Finder services, such as Rotate Left, Markup, and more. Those are non-functional in 26.1, and if you want to use any of those services, you’ll have to use an alternative method, such as the contextual menu.

Paul Kafasis:

We’re happy to report that the issues we reported have been resolved with the recent release of MacOS 26.1, and that Tahoe contains several additional fixes for various audio bugs. With that in mind, we’re now able to recommend upgrading your Mac to Tahoe (26.1 or higher).

Adam Engst:

macOS 26.1 Tahoe also adds the Tinted view, accessible in System Settings > Appearance, but in my example screenshot from “How to Turn Liquid Glass into a Solid Interface” (9 October 2025), I cannot discern any changes at all after selecting it. Maybe the changes are visible in apps other than the Finder?

Jeff Johnson:

I don’t understand what the big deal was about the Clear/Tinted toggle, because AFAICT it doesn’t make much of a difference.

Previously:

Update (2025-11-05): Pierre Igot:

How on earth does this qualify as “reduced transparency” in macOS 26?

Rui Carmo:

macOS window corners are still rounded in too many different ways (my last count was five different styles, was hoping for a 20% reduction at least).

the Tupperware toggle does not improve appearance or readability as much as I expected (on the Mac–on the iPhone I can now read some of my home screen notifications again).

Howard Oakley:

Those terms indicate an overlap with Accessibility settings. However, if either of the Accessibility settings is enabled, then the Liquid Glass setting is unavailable. I also presume that the word tinted here refers to the faint colouration that might be seen in what would otherwise be a transparent view, rather than any more generalised addition of colour.

[…]

This is one of the obvious drawbacks in Tahoe’s flexibility, in that many combinations of appearance mode, Accessibility settings and icon and widget style degrade its human interface rather than enhancing it.

Todd Thomas:

The developers responsible for Apple’s Developer app must not have tested their app on macOS 26.1. :-0

Update (2025-11-06): Howard Oakley:

If you have updated your Mac to Tahoe 26.1, you may be blissfully unaware that it will now automatically download and install some security updates, regardless of its Software Update settings. Open Privacy & Security settings, scroll down to the end and you’ll see a new item, Background Security Improvements, that Apple has kindly turned on for you. There are matching new settings in iOS and iPadOS 26.1 that are also enabled by default.

Apple seemingly forgot to mention these when listing the changes in 26.1, and its documentation of these Background Security Improvements (BSI) is sketchy to say the least. However, the description there as “lightweight security releases for components such as the Safari browser, WebKit framework stack and other system libraries” is so similar to that for RSRs as “improvements to the Safari web browser, the WebKit framework stack, and other critical system libraries” that we can only conclude the BSI is a rebranded RSR.

[…]

If Apple’s current account of BSIs is complete, the only control we have over them is whether they’re downloaded and installed automatically. If you opt for that, as Apple has set as the default, then you won’t be given any warning, or even informed when the BSI has been installed on your Mac.

[…]

If there’s a problem with a BSI, such as that in the second RSR in July 2023, then there’s no option to uninstall the BSI and revert to a previous version of that cryptex, as there was with RSRs. However, Apple might decide to remove the BSI from your Mac.

Brian Webster:

OMG everyone update to macOS 26.1 then press command-j in column mode in the Finder RIGHT NOW

There’s a new Resize columns to fit filenames option.

Previously:

Update (2025-11-10): Ryan Ashcraft:

Still haven’t shipped a macOS Tahoe update for Foodnoms because of issues like this and crashes in Catalyst.

Howard Oakley:

After many attempts to find some difference between Clear and Tinted in the bundled apps I use most often, I’ve decided that they are visually identical. And where the Liquid Glass effect results in optical interference between layers, Tinted doesn’t alter opacity to eliminate that interference.

[…]

Numbering of macOS versions needs to be restructured to accommodate RSRs.

Now, over two years later, it seems Apple has forgotten those lessons. It won’t even describe these as security updates, but “improvements”, won’t include them in the release notes for 26.1, hides their single control at the very bottom of a long list in Privacy & Security settings, rather than in Software Update, provides no manual option, and no means to uninstall them.

I wonder how long it will be before we all regret those decisions, and have to repeat past mistakes before we can learn from them.

macOS 15.7.2 and 14.8.2

macOS 15.7.2 (full installer, security):

This update provides important security fixes and is recommended for all users.

macOS 14.8.2 (full installer, security):

This update provides important security fixes and is recommended for all users.

Howard Oakley:

To be certain the correct updates will be installed, in the Also Available section of Software Update, click on the ⓘ button to the right of the Update Now button for Other Updates and select the appropriate macOS update and Safari, deselecting the Tahoe update there. That should ensure you don’t inadvertently upgrade to Tahoe.

Jack Brewster:

It’s some kinda bullshit that clicking the info button next to the Sequoia 15.7.2 update selects the Tahoe upgrade in the updates window. I’m sure there’s a few folks out there who will footgun themselves with this.

Jeff Johnson:

It’s diabolical that pressing this info button selects the Tahoe update instead of the Sequoia update.

Riccardo Mori:

I’m still on Ventura on this Mac. You’d think that under that “Other Updates Available” I would find the option to update to Sonoma in case I don’t want to “ “ “ “upgrade” ” ” ” to Mac OS Tahoe.

But no, it’s just a link to update Safari.

I also ‘love’ how half the preference pane becomes a marketing pitch for Tahoe.

Previously:

Update (2025-11-05): ednl:

The one-click-close of inactive tabs is finally back in Safari 26.1 (for me on MacOS 15.7.2), see quoted post for a little bit more detail.

Remaining annoyance: flash of a completely white page when navigating to a new website, despite dark mode on both MacOS and the old and new websites.

Update (2025-11-12): John Gruber (Mastodon):

Leon Cowle was brave enough to try this out, and, it turns out, just clicking the “Update Now” button next to Sequoia will, thankfully, do the right thing: install the Sequoia 15.7.2 update, not Tahoe. (I followed Cowle’s brave lead and tried it myself, and can confirm that “Update Now” installed the Sequoia 15.7.2 update.) Why the Info panel presented by clicking the “ⓘ” button next to Sequoia in the “Other Updates” section defaults to installing the upgrade to 26.1 Tahoe, I don’t know. But it sure makes it seem like we need to be more careful than we actually do if we want to stick with MacOS 15 Sequoia for now.

The “ⓘ” buttons do not, as I would expect, open a sheet with detailed information about the software updates per each section of the Software Update settings panel. Instead, even though there are separate “ⓘ” buttons in each section of the settings panel, they each open the same sheet that allows exact control over which available software updates to install. That includes the exact same default selections in this sheet.

[…]

I don’t know what the i in the “ⓘ” button is supposed to stand for, but it isn’t intuitive.

Jeff Johnson:

What the article does not state explicitly is that in the info panel opened from Also Available, the Upgrade Now button does indeed install macOS Tahoe.

iOS 26.1

Juli Clover (release notes, security, enterprise, developer):

iOS 26.1 adds a toggle to increase the opacity of Liquid Glass for those who want less translucency. Alarms and Timers now require a swipe to turn them off, and there’s finally an option to turn off the Lock Screen Camera swipe.

Beta Profiles:

Apple brings back transparent navigation buttons in Photos.

Steve Troughton-Smith:

There are so many critical framework fixes in iOS/macOS 26.1 that if you were planning on debuting an app with a 26.0 deployment target, I would shift that to a minimum of 26.1. Even so, there’s yet not enough here to help me get Broadcasts (and other apps) out the door.

Ryan Christoffel:

iOS 26.1 beta 4 now lets you disable the Camera swipe gesture entirely.

Lee Bennett:

I’m admittedly a little bemused by the new setting to disable the swipe right to left gesture to open the camera from the lock screen. Clearly I’m not the norm. I’ve never known a time I mistakenly opened the camera this way. In fact, I replaced the lock screen button for the camera with a shortcut action to log water consumption. The swipe gesture is almost always how I intentionally get to the camera these days.

I always use the Action button now, so it would be nice to be able to configure the swipe to do something else.

John Voorhees:

Apple has also refined Local Capture for the iPhone and iPad, which is great. Local capture allows you to record high-quality audio and video from an iPhone or iPad, while simultaneously on a video call using a service like Zoom. It’s a feature that podcasters wanted for many years, and although I was excited to find that Apple had listened to our annual requests with iOS and iPadOS 26, the implementation fell a little short because it didn’t allow for gain control, making it difficult to get a properly balanced recording with some microphones. Likewise, there was no option in the first iteration of the feature to pick where your recording was saved.

With iOS and iPadOS 26.1, both issues have been addressed sooner than many of us expected, which is fantastic.

Juli Clover:

We’ve complied a list of all of the new features in iOS 26.1, down to the tiniest interface change.

Adam Engst:

If you’re already running version 26 of any of these operating systems, you should update soon. The new features, security improvements, and unspecified bug fixes feel worthwhile given that we’re coming from an initial release with just a handful of high-profile bug fixes in 26.0.1.

However, if you haven’t yet upgraded, I recommend holding off until version 26.2, due out in mid-December.

Previously:

Update (2025-11-06): Benjamin Mayo (via John Gruber):

The Tinted glass option generally has a relatively subdued impact inside apps, making bars a bit frostier. But on the lock screen, it transforms all the notifications into grey opaque blobs. I would never choose this mode because that effect is just too ugly.

Russell Ivanovic:

iOS 26.1 review: eh it’s fine. Most of the glass effects aren’t that offensive. Do I love it? No. Do I hate it? Also no.

That said I legit can’t read the percentages on this Apple battery widget. Why the tiny font? Why so much transparency? It’s a giant widget. Gimme bigger text you cowards.

Update (2025-11-12): Marc Edwards:

I think iOS 26.1 changed the dock, so icons are no longer aligned with the grid above. I am not into this.

iPadOS 26.1

Juli Clover (release notes, security, enterprise, developer):

iPadOS 26.1 reintroduces Slide Over, a multitasking feature that was removed with the multitasking overhaul in iPadOS 26 .

Slide Over works alongside the window-based multitasking functionality in iPadOS 26 , so you can open up multiple app windows and still swipe over to quickly access a Slide Over app. Only one Slide Over app is supported at a time in iPadOS 26.1, and the feature is accessible by tapping on the green window resizing button and choosing Enter Slide Over.

There was more discussion of this when the feature was in beta.

John Voorhees:

Apple heard from a vocal group of iPad users who relied on Slide Over to get their work done and has added the feature back to the OS with a twist. The new Slide Over supports a single app tucked just offscreen with a little Picture-In-Picture style indicator along the edge of your iPad’s screen. Previously, you could switch between multiple apps using a dedicated Slide Over switcher interface. However, now, your Slide Over window can be resized to any size, which wasn’t possible before. Also, the single Slide Over app is a per-display restriction, meaning that if you use an external display with your iPad, you get a second Slide Over app.

Second, Apple has added some new menu items for managing window. There are now options to hide your current window, hide your other windows, and close all of your windows, all of which close gaps between how windows work on the iPad and Mac.

Warner Crocker:

I do question why Apple only allows one app in this returning version as opposed to multiple apps as it did before. It was always handy to keep multiple apps available throughout rehearsal, given that I prefer to have my script open full screen on the 11 inch iPad Pro.

As a side note, I’m not a fan of the Liquid Glass border around the window in Slide Over. It waists screen real estate, almost begging you to look at the feature. Even switching Liquid Glass to the new Tinted version, now also available in iOS 26, doesn’t erase or lessen that border or its distracting impact.

Previously:

Update (2025-11-10): Greg Pierce:

I feel like the biggest usability issue with the iPadOS 26 multi-window implementation is how easy it is to accidentally make a full-screen window switch out of that mode.

It’s great that they have this affordance at the bottom right to indicate that’s where to grab it. But, it does the same thing if you grab the bottom left, which doesn’t have the affordance. Or if you pan too close to the title bar.

If it only switched using the affordance, it would be better.

watchOS 26.1

Juli Clover (release notes, security, developer):

No new features were discovered in watchOS 26.1 during the beta testing process, and Apple’s release notes say the update includes unspecified “improvements and bug fixes.”

Previously:

tvOS 26.1

Juli Clover (release notes, security, developer):

Apple shares release notes for tvOS in its tvOS support document when new versions are released, but no new features were found during the beta testing process.

Previously:

visionOS 26.1

Juli Clover (release notes, security, enterprise, developer):

visionOS 26.1 adds a Vision Pro app for the iPad, allowing users to discover Vision Pro content and spatial experiences. The app also now supports AirPlay for viewing experiences from the Vision Pro on both iPhone and iPad.

Steve Troughton-Smith:

New API on NSProcessInfo in visionOS 26.1 — isiOSAppOnVision.

Finally there’s an API to check if you’re running on visionOS in compatibility mode.

Steve Troughton-Smith:

So, so much of the visionOS experience could be vastly improved if Apple just convinced Netflix and YouTube to release their native apps.

Two companies.

Apple, you can figure out a deal with two companies, surely? Don’t you have a master negotiator SVP? Why would you spend 7 years and billions of dollars developing a product and not be able to convince two partners to ship apps they already have?

Previously:

audioOS 26.1

Juli Clover (release notes):

According to Apple’s release notes, HomePod Software 26.1 includes performance and stability improvements.

Previously:

Monday, November 3, 2025

Web Version of the App Store

Juli Clover:

Apple launched a new App Store on the web today, allowing users to browse through and search for apps across all of its platforms.

[…]

There is a search interface for looking up a specific app, and clicking on “View” on any app in the store provides screenshots and information optimized for a web view. The design mirrors the App Store on each of Apple’s platforms, but it has a much friendlier web interface.

[…]

Prior to now, Apple provided webpages for each app in the App Store , but there was no central site for content discovery.

Finally. But sadly, just like in the App Store app, Apple prevents you from selecting any of the text. I don’t understand why Apple insists on making its stores user-hostile in this way. However, unlike in the App Store app, you can find within the page using the browser’s built-in search feature. You can also fix text selection using StopTheMadness Pro’s “Protect text selection” feature.

Dan Moren:

What you can’t do is install or update those apps on your devices. At least some of that is because there’s no link to your Apple account: instead, this is really just a catalog. If you’re browsing the App Store for the device you’re on, you can easily jump to the app you’re looking at in the actual App Store app. In other cases, the usual “Get” or “Buy” link has been replaced with a Share button.

As someone who’s written about apps for years, this does get rid of one longstanding frustration where you would put a link to an app in your story, but it would force you to open the App Store app to see all the details of the program.

Previously:

Update (2025-11-04): John Voorhees:

I really don’t get it. At least on the Mac, there’s a button to open an app in the Mac App Store, but the same isn’t true on the iPhone and iPad.

[…]

Sure, you can always share an app to yourself on a device where you can buy it. But shouldn’t the point of a web store be to allow you to make purchases when you’re not on an Apple device or, for example, to buy a Mac app on your iPhone and have it waiting for you when you return to your Mac?

Jeff Johnson:

The new apps.apple.com apparently renders my app Stop The Mac App Store obsolete, because the web page no longer automatically opens the App Store app.

Nick Heer:

I hoped one thing this store might correct — finally — is that app links opened from Safari would no longer automatically open the App Store app. Sadly, in my testing, app links continue to behave as they previously did. That is, if you visit an app listing’s URL directly or from within the App Store on the web, your experience will remain in the browser, but if you click on an app link from a third-party website, the App Store app will be opened.

Jeff Johnson:

I can’t open apps.apple.com in Safari on iOS 18

I can’t, either. It just redirects to the App Store app.

Jason Anthony Guy:

“User-hostile” is exactly the right phrase—the same I used to describe this scourge in 2024 after I was prevented from copying text from the USPS Postal Store. I shared then a method for restoring the ability to copy text for Safari users, which I’ll share again: a custom style sheet to override the user-select CSS property many sites use to prevent content selection[…]

ednl:

Regarding the screenshots in the web app store; they are shown on the webpage in a frame of 496x310 but they’re actually just 313x196, so they look really bad. And they aren’t clickable to enlarge them, but the larger versions ARE there!

Previously:

Update (2025-11-05): Adam Engst:

You can’t copy the URL directly from the share sheet, but you can grab it from your browser’s address bar.

Searches are limited to one store at a time, but if you switch stores while viewing results, the site automatically re-runs your search for the new store.

Jeff Johnson:

The rumors of the demise of Stop The Mac App Store are greatly exaggerated.

Update (2025-11-06): rxliuli (Hacker News):

The App Store appears to have been rebuilt using Svelte, but they forgot to remove the sourcemap configuration in production, resulting in the complete exposure of the source code.

Update (2025-11-10): Craig Grannell:

The web version of the App Store is a major improvement in terms of search and accessibility – Apple on Mac flipping to the Mac App Store caused a massive vestibular trigger that was never fixed. But why can’t I buy and install from the web? Google Play has allowed this for years!

iOS 18 and iOS 26 Autocorrect

Michi NekoMichi:

Ever noticed you’re getting way more typos on iPhone lately? You’re not going crazy - it’s iOS.

Watch the video where he presses the U key, and the iOS keyboard confirms this visually, but then the U ends up changed to an H or a J, resulting in a word that isn’t even spelled correctly. I have not been able to reproduce this specific example, but I’ve been seeing behavior like this since at least iOS 18, and it’s clearly resonating as the video has more than 10K comments.

Nick Heer:

There is no word in the English language that begins or even contains the character string “thj”.

[…]

I cannot reproduce it today on an iPhone running iOS 26.1; perhaps it has been fixed, or it is intermittent. However, I have noticed entry lags in iOS 26 immediately after the keyboard becomes visible. It nearly always misses the first one or two characters I type.

Jason Anthony Guy:

I’ve certainly noticed an increase in typos over the years (which, for whatever reason, I attribute to Apple’s introduction of “differential privacy” in iOS 10). Alas (or perhaps, fortunately), while others can reproduce the specific issue shown the video, where typing “thumbs up” gives (for example) “thjmbs up,” I cannot.

Previously:

Update (2025-11-04): Peter N Lewis:

As a long long time Apple user, the saddest thing about this report of mixed up keystrokes in typing is the trailing comment “It is just Apple being Apple”. How far has Apple fallen, that “Apple being Apple” means “Apple shipping buggy crap” and not “Apple paying attention to the details”. It’s heartbreaking really.

Sherief, FYI:

there are other avenues linked video doesn’t consider:

  1. maybe the hitbox adjustment has one hit box used for visual effect triggering and another hitbox determines which key actually hit
  2. UI effect is shown depending on where the touch was down, but key selected from touch up

Previously:

Lightroom Classic 15.0

Adobe:

Quickly select the best shots from a large set of images with Assisted Culling. [link]

[…]

Easily stack your images based on time and visual similarity. You can also use the Stack filter in the Attribute panel. [link]

[…]

Quickly detect and remove dust spots caused by the camera’s sensor or lens. [link]

[…]

Achieve substantial performance improvements with enhanced speed, accuracy, and smooth responsiveness across tools and adjustments for interactive editing tasks. [link]

[…]

You can now zoom in while cropping an image to make the best selection. [link]

[…]

Fine-tune the overall tone and color in a photo using the Variance slider in Point Color. [link]

There doesn’t seem to be a permalink, so in the future you may need to find these notes under the October 2025 release.

Victoria Bampton:

This is a hidden gem! The new Variance slider is in Point Color. It lets you increase or decrease color contrast, for example, evening out tone variations or increasing contrast between similar colors. If you haven’t used Point Color before, and the rest of the panel looks a bit overwhelming, don’t worry, because this slider can be used without touching any of the others. It works well to adjust redness in cheeks; also to enhance foliage colors, add drama to sunsets, balancing out wide-angle polarized skies, and much more!

[…]

You might say that AI can’t replace the creativity and intelligence of a human, and you’d be absolutely right, but there are some things it can do very well, like judging sharpness and grouping photos by visual similarity. These don’t remove the human touch from the culling process, but they do help speed it up.

[…]

The AI model for the Reflections removal tool has been updated, and the improvements are quite impressive…

Matt Kloskowski:

As usual, I’ve put together a video that shows you everything that’s new.

See also: Julieanne Kost.

Previously:

Swift 6.2: Approachable Concurrency

Holly Borla:

Swift 6.2 lowers the barrier to concurrent programming with a set of changes designed to reduce boilerplate and let you write safe concurrent code more naturally:

  • Single-threaded by default: Run your code on the main thread without explicit @MainActor annotations using the new option to isolate code to the main actor by default. This option is ideal for scripts, UI code, and other executable targets.
  • Intuitive async functions: Write async code without concurrent access to mutable state. Previously, nonisolated async methods always switched to the global executor that manages the concurrent thread pool, which made it difficult to write async methods for class types without data-race safety errors. In Swift 6.2, you can migrate to an upcoming feature where async functions run in the caller’s execution context, even when called on the main actor.
  • Opting into concurrency with @concurrent: Introduce code that runs concurrently using the new @concurrent attribute. This makes it clear when you want code to remain serialized on actor, and when code may run in parallel.

Donny Wals:

With Swift 6.2, Apple has made a several improvements to Swift Concurrency and its approachability. One of the biggest changes is that new Xcode projects will now, by default, apply an implicit main actor annotation to all your code. This essentially makes your apps single-threaded by default.

I really like this change because without this change it was far too easy to accidentally introduce loads of concurrency in your apps.

In this post I’d like to take a quick look at how you can control this setting as well as the setting for nonisolated(nonsending) from Xcode 26’s build settings menu.

Donny Wals:

Xcode 26 allows developers to opt-in to several of Swift 6.2’s features that will make concurrency more approachable to developers through a compiler setting called “Approachable Concurrency” or SWIFT_APPROACHABLE_CONCURRENCY. In this post, we’ll take a look at how to enable approachable concurrency, and which compiler settings are affected by it.

Matt Massicotte:

“Approachable Concurrency” is just a big group of settings. It is completely independent of making the default isolation MainActor.

Matt Massicotte:

In the Swift 6 language mode, there are only two flags “Approachable Concurrency” changes: InferIsolatedConformances and NonisolatedNonsendingByDefault. It switches on more stuff in 5 mode, but those will not affect this material.

Paul Hudson (Mastodon, Hacker News):

SE-0466 introduces the ability for code to opt into running on a single actor by default – to effectively go back to being a single-threaded program, where most code runs on the main actor until you say otherwise.

[…]

SE-0470 resolves a small but important concurrency problem by making it possible to restrict a protocol conformance to a specific global actor.

[…]

SE-0472 introduces a new way to create tasks so they start immediately if possible, rather than the existing behavior that only allows tasks to be queued to run at the next opportunity.

[…]

SE-0461 adjusts the way nonisolated async functions are called so that they run on the same actor as their caller. This sounds like a really abstract change, but it is important so I would recommend you spend the time to understand what’s changing and why.

[…]

SE-0371 introduces the ability to mark the deinitializers of actor-isolated classes as being isolated, which allows them to safely access data elsewhere in the class.

[…]

SE-0462 introduces the ability for tasks to detect when their priority has been escalated, and also for us to manually escalate task priority if needed.

[…]

SE-0469 introduces a useful change to the way we create tasks and child tasks: we can now give them names, which is ideal for debugging when one particular task goes rogue.

Matt Massicotte:

As we started getting closer to the release of Swift 6.0, I had this bright idea. I decided to write about every evolution proposal related to concurrency that would ship with that release. This resulted in 12 posts and let me tell you, it was a lot of work.

[…]

I don’t think I can pull off a post for each proposal this year. But, I’m not sure that’s even necessary anyways. Many of them are minor things. But not all.

[…]

I wanted to go on this little side-quest because people don’t find understanding isolation easy. Adding the distinction between static vs dynamic just makes it that much harder. And I really wanted to find a way to help explain this, because this is the Big Idea you need to get to understand what’s changing.

[…]

Setting the default has the potential to completely remove the need to think about concurrency. This could be an enormous win in many situations. For example, it would make the Swift 6 language mode a more friendly choice for true beginner programmers.

[…]

Right now, though, I see myself sticking with a nonisolated default. I need more experience trying this out with real systems before I make up my mind.

Steve Troughton-Smith:

As I understand it, the whole point of Swift 6 is to add syntactic sugar all over your projects to try to codify ahead of time that you know which thread everything will run on. The ‘approachable concurrency’ changes in 6.2 feels like an admission that nobody is actually going to do that, because it’s too hard, if not impossible, for most apps. It’s a major lift and a lot of work that, at best, leaves your app the same as before you started 😅

Approachable Concurrency, instead of making you annotate everything piece by piece, flips it and just assumes that none of your app is concurrent unless you specify otherwise, which is absolutely what should have been the default for Swift 6. If you were halfway through a Swift 6 port under the previous model, you now… delete all your code and go back to how it was before you annotated it?

Donny Wals:

Finding the solution to the issues I describe above is pretty tedious, and it forces us to explicitly opt-out of concurrency for specific methods and eventually an entire class. This feels wrong. It feels like we’re having to decrease the quality of our code just to make the compiler happy.

In reality, the default in Swift 6.1 and earlier was to introduce concurrency by default. Run as much as possible in parallel and things will be great.

This is almost never true. Concurrency is not the best default to have.

Amy Worrall:

imo the thing they tried to make safe is not the thing that’s actually the problem for most devs, and they did it in such a way that you can’t make a halfway house solution. Especially when you’re interacting with other people’s code, sometimes there’s just no way to architect things how you want.

Matt Massicotte:

I do not think you need to go and read every proposal. I did, and honestly, it was a lot of work. But, something I learned from doing it is many of these new language features were specifically built to help hide details. It’s still pretty early, but I think ultimately this is going to end up largely succeeding. What it all comes down to is how much concurrency you have in your project. (Probably too much)

You cannot progressively disclose the details of features you are actively using. Concurrency touches virtually all existing Swift code so tons of stuff gets shoved in your face all at once.

[…]

But, accidentally running stuff off the main thread is the simplest and most straight-forward concurrency problem you could possibly have it was absolutely pervasive.

[…]

Now there are some well-established patterns that can help avoid many concurrency issues, that one definitely included. But, these are often employed by advanced users that have been practicing for years. I think it is easy for these habits to make “I don’t have this problem” feel like “this is not a problem”.

[…]

Actors are not queues. Let me say it again, actor is an advanced tool. Be wary of any material that makes it seem otherwise. You should be sticking to the binary main/not-main until you are very comfortable with isolation before trying them out.

travisgriggs (Helge Heß):

One of the pitches in the earlier days was “C/Objective-C OK, but you can’t write safe/next level code with it—-Swift will close that gap.”

N years later, it doesn’t feel like there has been a step change in Apple software quality; if anything Apple software feels less solid, and looks cool “look what I did” extension points. I mean, some of the [things] you could do with runtime categories, and runtime prototypes were really cool. Now when I work on my 2 apps that originally happily port to Swift/UIKit, I’m just left confused with how to make things work. I’m happy when it finally works, and don’t ever try to improve the thing, it’s too much work.

Steve Troughton-Smith:

Swift 6 language mode is still a no-go, even with approachable concurrency turned on. I would be surprised if any full-featured UIKit app is able to use it, even now. Toy apps, or something that stays entirely within SwiftUI-land, maybe. It’s a major lift.

Jacob Bartlett (ios_memes):

Is Swift 6 strict concurrency going to be our Python 3 moment?

Sean Heber:

So I now have Tapestry entirely compiling with Swift 6 mode.

That was… fun.

Daniel Jalkut:

I achieved a major development milestone for my biggest app, MarsEdit, today. I can now build against Swift 6 with strict concurrency, and no warnings. It was harder than it should be (though Apple’s working on that), but it feels good knowing I can move forward with concurrent confidence.

Gwendal Roué:

GRDB is in a strange bucket. I think it goes back to the introduction of Swift concurrency.

[…]

Want to use the new MainActor isolation by default? It’s the default for new Xcode 26 projects, after all. Well this new language dialect creates incomprehensible compiler errors, and is so incompatible with the normal language that I’m supposed to rewrite all sample codes and documentation (hint: I won’t, SE-0466 is a sick joke).

Want to await SQLite with non-Sendable types? Well, I’m not sure the language makes it possible to express that.

Nico Reese (forum):

What would I do about this?

“Main actor-isolated property ‘timestamp’ can not be mutated from a Sendable closure”

[…]

It seems to be an issue with Core Data not being 100% ready for these concurrency changes? The workaround gets rid of the warning but does not look very nice.

Dave DeLong:

It’s hard to look at the state of @swiftlang’s concurrency model these days and draw any other conclusion than “this is a hodge podge of conflicting models that are basically inoperable together”.

IMO Swift Concurrency needs a huge “reset” button. Throw it all away and start over.

Ryan Ashcraft:

All I want from Swift is a fast compiler that gives actually useful error messages. Enough syntax sugar. Oh and also, Swift Concurrency has been a disaster.

Kyle Hughes:

It doesn’t feel like any plane has been landed in the realm of Apple platform development since the introduction of SwiftUI in 2019. Nothing new introduced fits well together. Everything that is released feels unfinished and gets informally deprecated, only to be replaced with another incomplete solution. It’s a confusing moment to be in—we will likely reflect on this as the time where we should have known what direction we were headed in.

Modern Apple platform development is optimized for building miniature versions of Apple’s own apps or for tackling interesting programming-language puzzles. It is, at present, poorly suited to making strategic, long-term decisions about economically viable software—or to providing the tools needed to make such decisions.

That gap will either get solved or not, but regardless, the end of this narrative arc is likely in the air right now.

Previously:

Update (2025-11-04): Helge Heß:

If you actually understand concurrency, you don’t need all the boilerplate 😬 I think, like with static typing, the key idea is to help people who don’t understand it. And like the former it mostly fails those promises.

It’s like driving with training wheels.

Also that the static checks guarantee valid concurrent code is a huge misconception. Like static typing it just removes a small, mostly irrelevant, class of errors.

Sebastián Benítez:

The walled garden, as it is called, has a door through which the users can easily exit if they find they don’t want it anymore. But for a Mac exclusive developer, it’s a prison. There is no way out other than escaping.

[…]

Yes, [Swift is] great for some things, such as modelling data and has some nice FP in it. But then you have to deal with async functions (colouring) invading all your code, and all the troubles they bring with so much concurrency. That has to be one of the reasons Apple now provides an option to make everything @MainActor.

It’s becoming bloated and complex. At the same time, the standard library is lacking, compared to C++ at least.

Macro implementation is horrible, period. I’m a lisper, so I have a high bar. There is no way Swift macros are as useable as Common Lisp’s macros. I gave up just looking at the documentation on how to implement one.

One last thing about it: so much evolution, so many changes, lack of directed design, makes all code constantly obsolete, bit-rotting. You are pushed to adopt new language features, newer frameworks, since they are updated with the new features, so your hand is sometimes forced. Then there comes all the refactoring or you are left behind.

Previously:

Friday, October 31, 2025

Combined Affinity Studio Now Free

Marcus Mendes (MacRumors, Hacker News, TidBITS-Talk, Mac Power Users):

Affinity has announced a complete overhaul of its design suite. Starting today, the company is unifying all its tools into a single app for vector, photo, and layout work, and making it permanently free.

[…]

Here’s Ash Hewson, CEO of Affinity:

“There’s no catch, no stripped-back version, and no gotchas. The same precise, high-performance tools that professionals rely on every day are now open to all, because creative freedom shouldn’t come with a cost.”

[…]

The all-new Affinity was completely redesigned to offer a seamless way to switch between vector, photo, and layout work.

Combining Affinity Designer, Photo, and Publisher into a single app is an interesting move. There was clearly duplication and extra friction from having them separate yet integrated, but it’s hard to get the user interface right in a mega app. I still prefer when Interface Builder was spearate from Xcode (though it matters less as I phase out my usage of nib files).

The immediate catch is that now you need to log into a Canva account to use the app, and there will probably be constant upselling UI, like with Apple’s services apps. Maybe that seems like a small price to pay for getting all these professional tools for free. But I have a bad feeling about this, both because it seems like the pro app functionality will no longer be the focus and because I don’t understand how they’re going to make money. Is the subscription with AI features that compelling?

Ernie Smith (via Hacker News):

Canva is well-suited for those smaller tasks, which is why they’ve convinced 24 million people to pay $120 per year or more for its offering, many in workplaces. Potentially, though, Canva Pro could be nearly as popular as Microsoft 365, which has an estimated 440 million paid subscribers. The pitch to employers: Rather than buying graphics software for one or two departments, everyone gets a Canva Pro subscription.

If only the market wasn’t so split because of all the professionals favoring Creative Cloud and looking down on Canva.

That’s where the make-Affinity-free logic comes into play. For years, Adobe’s Achilles heel has been its overwhelming high cost, which has left many early-career or freelance professional designers feeling sustained sticker shock, year after year.

[…]

If Canva can get more than 6 normies for every professional Adobe serves, they come out ahead.

[…]

Canva just flipped 40 years of design-business logic on its head, and if they pull this off, they look like geniuses. If they don’t, hopefully Affinity doesn’t get lost in the shuffle.

Jesus Diaz:

So, how does a free professional tool make business sense for Canva? Adams explains it to me with a simple mantra: “craft and scale.” The high-end, pixel-perfect “craft” happens in Affinity Studio. The “scale”—where that craft is used to generate massive amounts of content—happens in Canva. By making the craft tool free, Canva is betting it can grow the entire design ecosystem.​

The strategy is to build a frictionless bridge between these two worlds.

Craig Grannell (Mastodon):

All was good for a while. But fans got twitchy last year when Serif was snapped up by Canva, a company rather fond of subscriptions itself. Such concern escalated to full-blown panic this October when Affinity desktop apps vanished from sale, replaced by the cryptic slogan “Creative Freedom Is Coming”.

[…]

So what’s the catch? Well, the iPad version won’t be ready until next year, which explains why the iPad Affinity suite quietly went free rather than being pulled from the App Store. And there’s the integration of Canva AI tools, such as Generative Fill, Expand & Edit and Remove Background. GenAI is… divisive (let’s say) in the creative world. But those tools are entirely optional and Canva promises your work in Affinity “is not accessed to train AI features” anyway.

[…]

It does technically break Canva’s pledge to “offer perpetual licenses”, but given that the new price is literally zero, I think we can forgive the company for that. What I’m interested in now is not just how Affinity evolves, but also how Adobe responds.

Presumably, most of the future work will be on new features that require a subscription.

Brody Ford (Slashdot):

Adobe Inc. brought together 10,000 marketers, filmmakers and content creators to its annual conference this week to persuade them that the company’s software products are adapting to artificial intelligence and remain the best tools for their work.

But it’s Adobe’s investors, rather than its users, who are the most skeptical that generative AI technology won’t disrupt the company’s business as the top seller of software for creative professionals.

[…]

The company’s shares have lost about a quarter of their value this year as AI tools like Google’s video-generating model Veo have gained steam.

Previously:

Update (2025-11-03): Adam Engst:

Using the new Affinity app requires a Canva account, which is causing conniptions among a vocal subset of users in the Affinity Discord community who would prefer the promised perpetual license to a free app that requires an online account. You can choose not to share usage data with Affinity, and privacy preferences in your Canva account let you specify which other data-sharing and AI-training options you’re willing to allow. You must be online to download and activate Affinity with your free Canva account, but once activated, the app works offline. Features like help documentation, stock libraries, and Canva AI integrations require an Internet connection.

[…]

If you only need tools for one discipline, you can work entirely within a single studio (Pixel, Vector, or Layout) and ignore the others. My understanding is that the apps had extensive shared code, so it may have been efficient for the Affinity developers to combine everything into a single tool once there was no business advantage to selling three separate apps. The new app is 3.5 GB on disk, whereas each of the three previous apps was 2.88 GB.

From what I hear, the new Affinity app offers all the same features as V2 of Affinity Photo, Designer, and Publisher. The new app can open files from previous apps, but its files are not backward-compatible with older apps; those apps remain functional but will no longer receive updates.

Update (2025-11-04): Marc Edwards:

“When we made Affinity free, some people assumed there had to be a catch. Let me be absolutely clear. There is no catch.”

I do not think this comment will age well. You don’t spend USD$1 billion on something just to give it away.

Apple’s Q4 2025 Results

Apple (transcript, MacRumors, MacStories, Hacker News):

“Today, Apple is very proud to report a September quarter revenue record of $102.5 billion, including a September quarter revenue record for iPhone and an all-time revenue record for Services,” said Tim Cook, Apple’s CEO.

[…]

“Our September quarter results capped off a record fiscal year, with revenue reaching $416 billion, as well as double-digit EPS growth,” said Kevan Parekh, Apple’s CFO.

Jason Snell (podcast):

Now on to the charts!

The gross margin continues to climb and is now at 47.2%. I wish Apple reported separate numbers for hardware and services.

John Gruber (Mastodon):

Looking at Apple’s Consolidated Statement (PDF), the numbers look great across the board year-over-year: iPhone up 6%, Mac up 13%, iPad even, Wearables/Home even, and Services up 15%. Services now generates more revenue ($28.8 billion) than Mac, iPad, and Wearables/Home combined ($24.7 billion).

Manton Reece:

If iPhone revenue is essentially maxed out and flat, Apple will eventually become mostly a services revenue company. Very weird. 💰

As a fan of the devices but not the services, I don’t see how this can be good.

M.G. Siegler:

So yes, they’re well ahead of the $100B run rate. And so yes, that business – again, just Services – is now set to be bigger than Disney, Tesla, and all but around 40 companies in the Fortune 500, which is wild.

Jason Snell:

And to top it all off, Cook dropped the mother of all forms of “guidance,” which is what you call it when companies publicly predict their next-quarter results three months in advance: “We expect the December quarter’s revenue to be the best ever for the company and the best ever for iPhone.”

[…]

Just so we’re clear, that’s about $138B in total revenue and a minimum of $76B in iPhone revenue. (Check back in January to see if they were right.) Keep in mind that the results reported on Thursday only have a week or two of iPhone sales, while Apple now has an addition month of sales data with which to make projections. And if Apple is this confident, iPhone 17 sales data has to be really, really good.

One reason Apple is so confident is that it’s supply-constrained. In other words, for at least some iPhone models, it just can’t make enough to fulfill demand. Cook specifically called out Greater China revenue decreasing largely because the company faced iPhone supply constraints, and said that generally Apple was “constrained on several [iPhone] 17 models.”

The iPhone 17 is fine, but I have no idea why this is the model that’s setting records.

Mac revenue was a real highlight this quarter, with revenue up 13% over the year-ago quarter. That’s eight straight quarters of year-over-year growth, so it’s been two very strong years for the Mac after a year where it fell a bit off the heights of improved sales due to COVID and the advent of Apple silicon.

Adam Engst:

Apple warned that next quarter will be a “very difficult compare” because of the “mother of all Mac launches” from last year—the M4-powered MacBook Pro, Mac mini, and iMac (see “New MacBook Pros Gain M4 Chips, 12MP Center Stage Camera, and Thunderbolt 5,” 30 October 2024). While sales of the M5 MacBook Pro will boost next quarter (see “New M5 Chip Accelerates the MacBook Pro, iPad Pro, and Vision Pro,” 15 October 2025), Apple’s warning suggests we won’t see M5 models of the Mac mini, iMac, or MacBook Air until next year.

Juli Clover:

Apple is still on track to release an upgraded version of Siri next year, according to Cook. Apple is also planning for more partnerships like the ChatGPT integration in Apple Intelligence.

Previously:

Update (2025-11-03): Dr. Drang:

After [inflation] adjustment, the climb after the big work-from-home jump isn’t as impressive, although the non-Q1 quarters of fiscal 2025 are quite good. The just-reported Q4 revenue truly is the best Q4 ever, even after adjustment.

Update (2025-11-05): Jason Snell:

Let’s dig into the charts, starting with the big one, overall Apple revenue for the last 27 years[…]

[…]

Also, if you toss out those 2021 and 2022 outliers, this year’s $4B Mac increase is the biggest since 2011. What that says to me is that the Mac is doing really well, and that the effects of those two big years are largely out of the equation now. After a decade of hanging out in the $20s, the Mac is now firmly a $30 billion-plus business, and growing.

Swift 6.2: Observations

Holly Borla:

Swift 6.2 enables streaming transactional state changes of observable types using the new Observations async sequence type. Updates include all synchronous changes to the observable properties, and the transaction ends at the next await that suspends. This avoids redundant UI updates, improves performance, and ensures that your code reacts to a consistent snapshot of the value.

As with notification center messages, this is really part of the macOS 26 frameworks rather than Swift 6.2 itself.

Donny Wals:

Sequences created by Observations will automatically observe all properties that you accessed in your Observations closure. In this case we’ve only accessed a single property so we’re informed whenever count is changed. If we accessed more properties, a change to any of the accessed properties will cause us to receive a new value. Whatever we return from Observations is what our async sequence will output. In this case that’s a string but it can be anything we want. The properties we access don’t have to be part of our return value. Accessing the property is enough to have your closure called, even when you don’t use that property to compute your return value.

[…]

When iterating over our Observations sequence we’ll receive values in our loop after they’ve been assigned to our @Observable model. This means that Observations sequences have “did set semantics” while withObservationTracking would have given us “will set semantics”.

Keith Harrison:

The updates are transactional so multiple synchronous changes arrive as a single updated value.

SE-0475:

Observation was introduced to add the ability to observe changes in graphs of objects. The initial tools for observation afforded seamless integration into SwiftUI, however aiding SwiftUI is not the only intent of the module - it is more general than that. This proposal describes a new safe, ergonomic and composable way to observe changes to models using an AsyncSequence, starting transactions at the first willSet and then emitting a value upon that transaction end at the first point of consistency by interoperating with Swift Concurrency.

[…]

This proposal does not change the fact that the spectrum of APIs may range from favoring AsyncSequence properties to purely @Observable models. They both have their place. However the calculus of determining the best exposition may be slightly more refined now with Observations.

Jared Sinclair:

Apple has effectively deprecated the reigning paradigm of the ObservableObject protocol and @Published properties observed via the Combine framework, but they’ve only partially provided its replacement via the @Observable macro and the withObservationTracking free function. The gaps between the old way and the new way are worth careful consideration.

[…]

Observations is an Apple-provided way for one object to subscribe to long-running changes to some other, @Observable-macro’ed object. It is written to use the AsyncSequence protocol. Despite the fact that withObservationTracking was released in OS 17, Observations has not been back-ported and requires OS 26.

[…]

To implement cancellation you need to wrap the entire thing in a Task, store that task in an instance variable, and determine key points in the lifecycle of your object to cancel that task[…]

[…]

It is important that your Task and your Observations structs weakly-capture both self and whatever object you’re trying to observe. But it’s still easy to get it wrong.

[…]

You can’t access a mutable var property from the deinit. You would need to wrap that property in some kind of synchronization box, like a Mutex, which comes with its own kinds of hassles and boilerplate.

Combine was much more succinct, but it seems like this API is a work in progress so it may get better next year.

Paul Hudson (Mastodon, Hacker News):

There are a handful of important usage notes you should be aware of when using Observations:

  1. It will emit the initial value as well as all future values.
  2. If multiple changes come in at the same time, they might be coalesced into a single value being emitted. For example, if our Task code incremented score twice, the values emitted would go up in 2s.
  3. The AsyncSequence of values being emitted can potentially run forever, so you should put it on a separate task or otherwise handle it carefully.
  4. If you want iteration to stop – to end the loop – you should make the value being observed optional, then set it to nil.

Lucas van Dongen:

I built a simple demo app with both the new and existing stuff.

Previously:

Thursday, October 30, 2025

Swift 6.2: Subprocess

Holly Borla:

Swift 6.2 introduces a new Subprocess package that offers a streamlined, concurrency‑friendly API for launching and managing external processes.

SF-0007:

The existing Foundation API for spawning a process, NSTask, originated in Objective-C. It was subsequently renamed to Process in Swift. As the language has continued to evolve, Process has not kept up. It lacks support for async/await, makes extensive use of completion handlers, and uses Objective-C exceptions to indicate developer error. This proposal introduces a new package called Subprocess, which addresses the ergonomic shortcomings of Process and enhances the experience of using Swift for scripting and other areas such as server-side development.

It’s currently available as a package, rather than being built into the OS, so the API may not be fully stable, but you can use it on older OS versions.

One of the issues with NSTask/Process is that the simple API works for small amounts of input/output but (unbeknownst to many, even some experts) hangs once you exceed the OS’s buffer size. There are ways around this, but they are awkward (though you can hide them in a helper class). As Christian Tietze (Mastodon) writes:

Helge Heß pointed out that naive usage of Pipe in child Processes can break your program if you pipe too much data.

[…]

If the data is larger than the pipe buffer, you need to drain the corresponding FileHandle with repeated read calls. (Or provide data larger than 64KiB with repeated write calls, respectively.)

If you try to send/receive the whole buffer in one go, from a user’s perspective, your program will freeze, and the read call never return. As a CLI app, it’ll never terminate.

Subprocess seems to be designed to transparently handle this. You can specify the output size limit (and the encoding, if you want a string output), and it will collect the pieces of output as they arrive.

I’ve been using Swift to write scripts, and scripts often need to run shell commands. Unfortunately, Subprocess is currently cumbersome to use for scripting, as Jacob Bartlett writes:

These simple scripts have ludicrous amounts of overhead for what are trivial one-liner operations in the bash shell. Bear with me, because later we’ll look at where Swift subprocess can actually work well, in a more complex workflow.

The additional overhead of requiring a full SwiftPM project, compared to a Bash script, makes it incredibly cumbersome for simple workloads. Also, it’s still not an actual script, so it’ll always require a compilation (and potentially dependency resolution) overhead whenever your code changes.

On the other hand, the syntax, type safety, and composability of Swift code work pretty nicely when you have complex automation workflows to orchestrate, build, and run on demand.

Previously:

NeoFinder 9.0

Norbert Doerner:

New Cataloging engine with more speed and reliability

[…]

Ability to move files to new folders inside a Catalog

Text Replacements for the XMP Editor for faster annotations

[…]

Image Capture to import photos and videos from connected cameras, including adding XMP presets, and store them in a date based folder structure [guide]

[…]

QuickPerson panel to add persons with just a single click

QuickTags panel to add keywords with just a single click

[…]

Multi Renamer has ten more variables to be placed in the new names

NeoFinder (formerly CDFinder) is now 30 years old. The new version is $39.99 to purchase or $25.99 to upgrade.

Previously:

Wednesday, October 29, 2025

Swift 6.2: NotificationCenter Messages

Holly Borla:

In Swift 6.2, the Foundation library includes a modern NotificationCenter API that uses concrete notification types instead of relying on strings and untyped dictionaries for notification names and payloads. This means you can define a notification struct with stored properties, and observers can use the type without error-prone indexing and dynamic casting.

Apple:

In Swift, the Notification type is nonisolated, even in cases where it’s posted on a known isolation. To provide specific isolation information and better support Swift concurrency, NotificationCenter defines two message types. A NotificationCenter.MainActorMessage binds to the main actor, whereas a NotificationCenter.AsyncMessage uses an arbitrary isolation. Frameworks extend these types to define distinct messages, typically corresponding to an existing Notification.Name, that declare instance properties for their values instead of using a userInfo dictionary. As a result, messages can conform to Sendable when they either don’t use properties or contain only sendable properties.

If your project only needs to support Swift, you can just use the Message types. For projects with both Objective-C and Swift code, define a Notification as well as a corresponding Message type.

However, the new API is part of Foundation, not Swift 6.2, so even in a pure-Swift app you can only use it on macOS 26 and later. This is a bummer because notifications aren’t a new feature that you can make available in your app only on the latest OS. Rather, they’re central to the design of the app itself. You can’t even begin migrating your code to the new API until you drop support for all the previous OS versions.

You can post a message with the post(_:subject:) method, passing a message instance and optionally providing a subject. To receive messages, add an observer with the addObserver(of:for:using:) method. The overloads of this method allow you to observe either messages from a single object or from any object of a given type. Observation ends when you discard the token returned from addObserver(of:for:using:) or after an explicit call to removeObserver(_:).

You can also receive messages as an AsyncSequence with the messages(of:for:bufferSize:) methods.

SF-0011:

The optional lookup type, NotificationCenter.MessageIdentifier, provides an SE-0299-style ergonomic experience for finding notification types when registering observers.

[…]

Optional bi-directional interoperability with the existing Notification type is available by using the Notification.Name property and two optional methods, makeMessage(:Notification) and makeNotification(:Self)[…]

[…]

Observers called via the existing, pre-Swift Concurrency .post() methods are either called on the same thread as the poster, or called in an explicitly passed OperationQueue.

However, users can still adopt Message-style types with pre-Swift Concurrency .post() calls by providing a Message-style type with the proper Notification.Name value and picking the correct type between MainActorMessage and AsyncMessage.

See also: Fatbobman.

Previously:

Swift 6.2

Holly Borla:

InlineArray is a new fixed-size array with inline storage for elements, which can be stored on the stack or directly within other types without additional heap allocation.

[…]

The new Span type offers safe, direct access to contiguous memory. Span maintains memory safety by ensuring the memory remains valid while you’re using it.

[…]

Swift 6.2 introduces opt-in strict memory safety, which flags uses of unsafe constructs, so you can replace them with safe alternatives or explicitly acknowledge them in source code.

[…]

Swift 6.2 significantly improves clean build times for projects that use macro-based APIs.

Most of these proposals have been previously discussed here. Strict memory safety is in SE-0458:

This proposal introduces an opt-in strict memory safety checking mode that identifies all uses of unsafe behavior within the given module. There are several parts to this change:

  • A compiler flag -strict-memory-safety that enables warnings for all uses of unsafe constructs within a given module. All warnings will be in the diagnostic group StrictMemorySafety, enabling precise control over memory-safety-related warnings per SE-0443. When strict memory safety is enabled, the StrictMemorySafety feature will be set: #if hasFeature(StrictMemorySafety) can be used to detect when Swift code is being compiled in this mode.
  • An attribute @unsafe that indicates that a declaration is unsafe to use. Such declarations may use unsafe constructs within their signatures.
  • A corresponding attribute @safe that indicates that a declaration whose signature contains unsafe constructs is actually safe to use. For example, the withUnsafeBufferPointer method on Array has an unsafe type in its signature (self), but is actually safe to use because it handles safety for the unsafe buffer pointer it vends to its closure argument. The closure itself will need to handle the unsafety when using that unsafe buffer pointer.
  • An unsafe expression that marks any use of unsafe constructs in an expression, much like try and await.
  • Standard library annotations to identify unsafe declarations.

SE-0477:

A new string interpolation syntax for providing a default string when interpolating an optional value.

Keith Harrison:

One issue is that I’ve been unable to get this to work with localization. The problem seems to be that LocalizedStringKey doesn't’t support the default value parameter.

Paul Hudson (Mastodon, Hacker News):

SE-0451 dramatically expands the range of characters we can use to create identifiers – the names of variables, functions, enum cases and similar – so we can name them pretty much however we want when placed inside backticks.

[…]

SE-0459 makes the type returned by enumerated() conform to Collection.

[…]

SE-0479 extends Swift’s key paths to support methods alongside the existing support for properties and subscripts, which, along with SE-0438 introduced in Swift 6.1, promises to round out what key paths can do.

[…]

SE-0419 introduces a new Backtrace struct, which is capable of capturing data about the call stack of our app at any given moment – the exact sequence of function calls leading up to the current point.

[…]

SE-0448 expands Swift’s regular expression support to include lookbehind assertions, which allow us to check if a specific pattern appears immediately before the current position in the string, without including it in the matched text.

[…]

It’s SE-0476, which introduces a new @abi attribute that makes it easier for ABI-stable library authors to make changes to their libraries without breaking things.

Matt Gallagher (CwlDemangle):

It looks like Swift 6.2 will finally let us access the built-in Swift demangling so we can turn runtime mangled names into something human readable without resorting to half-assed third party libraries (like my own CwlDemangle).

Technically, the demangling is part of the new Backtrace API but it offers SymbolicatedBacktrace.Symbol with a lazily evaluated name that performs demangling on the rawName.

It doesn’t expose DemangleOptions but it’s a huge improvement.

Swift 6.2 also includes some other big features, which I’m going to write separate posts about:

Previously:

Imgur Blocks UK Users Over Age Verification

Imgur TOS Update (2021, via Hacker News):

No nudity or sexually explicit content.

Provocative, inflammatory, unsettling, or suggestive content should be marked as Mature.

No hate speech, abuse or harassment.

No content that condones illegal or violent activity.

Connor Jones (Hacker News):

The UK’s data watchdog has described Imgur’s move to block UK users as “a commercial decision” after signaling plans to fine parent company MediaLab.

It opened an investigation into various companies, including TikTok and Reddit, in March, focused on how these major platforms handle children’s data and verify their ages, which led to issuing a notice of intent to fine MediaLab in September.

[…]

Capel also hinted that even if Imgur continues to block UK users, the ICO may still seek to penalize its parent company.

[…]

The ICO said the investigation was instead related to its Children's code strategy, which it first published in 2021 [rather than the Online Safety Act].

Previously:

Update (2025-11-10): Preston Byrne (via Hacker News):

I am currently representing every single U.S. social-media enforcement target of the UK Online Safety Act, again pro bono,without exception. I will continue to do so until the Online Safety Act’s capacity to harm American citizens is destroyed, by America enacting a shield law.

[…]

SaSu is a tiny forum which didn’t have much of an appetite for a fight. Accordingly, when Ofcom came calling at the end of February, SaSu more or less immediately IP blocked the entire UK in hopes of avoiding enforcement action. (Ofcom claims this occurred in July; it in fact occurred in May.)

And, for a time, this worked. Today, however, I can reveal that Ofcom has reversed its decision and is going after the site anyway.

[…]

What might have happened is that a third party, understanding this, could have found SaSu’s mirror, hit SaSu’s mirror with one of these IPs, and then handed the file off to the regulator as some kind of “gotcha” demonstrating that the IP geoblock was ineffective, and using the fact of the access plus the fact that there was a mirror URL to claim that SaSu was somehow trying to dishonestly mislead the regulator about its compliance with the OSA through geoblocking.

[…]

Ofcom is trying to set the precedent that no matter where you are in the world, and no matter how much you try to keep UK users off your site, Ofcom believes you have to follow its rules – even if you’re American and you’re engaged in constitutionally protected speech and conduct.

Tuesday, October 28, 2025

AirTrafficDevice: Ignored, Reluctantly Fixed, No CVE, No Bounty

Rosyna Keller:

I wholly and utterly believe in the principle behind Apple’s App Tracking Transparency initiative. I therefore consider anything that is both

  • uniquely tied to a user and

  • available when “Allow Apps to Request to Track“ is disabled to be a gross violation of the spirit of App Tracking Transparency.

[…]

While Apple has fixed 3-4 (search for my name) of the 21 privacy bugs (and one kernel panic) I reported, Apple decided they weren’t eligible for the bug bounty.

[…]

When I first reported OE11020806152810, it was almost immediately closed as “Not to be fixed”. I had to gently poke a few bears to get it back to “we’ll fix this.”

However, Apple never assigned a CVE while reluctantly fixing this serious bug/privacy leak.

Previously:

Update (2025-11-07): Another example, from Joseph Goydish II:

A critical vulnerability in Apple’s iOS activation backend allows for the injection of unauthenticated XML .plist payloads during the device setup phase. The flaw permits arbitrary provisioning changes without authentication, signature verification, or error feedback—exposing devices to pre-activation tampering and persistent configuration manipulation.

He says this had already been actively exploited when he reported it to Apple back in May:

Forensic analysis on devices freshly reset and activated on iOS 18.5 revealed persistent entries in system caches such as CloudKitAccountInfoCache and CommCenter, as well as configuration drifts that could not be attributed to any user action.

However, Apple “continues to classify it as ‘hypothetical’ and has not acknowledged the evidence as sufficient to deem it a vulnerability.”

The lack of remediation leaves iOS devices, including those running the latest stable release, vulnerable to advanced post-exploitation tactics, warranting immediate attention from both Apple and enterprise security teams.

Update (2025-11-07): Jeff Johnson:

There’s an anonymous GitHub account that just joined a few months ago and this month posted a bunch of fake Apple vulnerabilities with no reproduction steps.

Reddit Sues SerpApi

Mike Isaac (PDF):

Practically overnight, a class of companies like SerpApi — known as “data scrapers” — found a new business selling data scraped from Google to companies looking to train their A.I. chatbots.

On Wednesday, the internet message board Reddit decided to fight the data scrapers. It filed a lawsuit in the U.S. District Court for the Southern District of New York claiming that four companies had illegally stolen its data by scraping Google search results in which Reddit content appeared.

Three of those companies — SerpApi; a Lithuanian start-up, Oxylabs; and a Russian company, AWMProxy — sold data to A.I. companies like OpenAI and Meta, according to the lawsuit. The fourth company, Perplexity, is a San Francisco start-up that makes an A.I. search engine.

Via John Gruber (Mastodon):

The entire premise of their business is crazy. SerpApi prints the crime right on the tin, describing their service as a “Google Search API” and “Scrape Google and other search engines from our fast, easy, and complete API.” What makes this so crazy is that Google doesn’t offer a search API. SerpApi is offering the Google search API that Google itself doesn’t offer, and charging companies money for it. Everyone, upon hearing the premise and nature of SerpApi, asks the same question: How is this legal? The answer is, it probably isn’t. But right on SerpApi’s home page they claim to offer customers a “U.S. Legal Shield”[…]

[…]

Why Google hasn’t sued them yet, I don’t understand.

This is a weird case. SerpApi is not like Common Crawl, building an index by scraping the Web. It’s scraping Google search results. Google actually does have legal access to scrape Reddit. And SerpApi is probably right that there’s First Amendment protection for indexing public search results, just as there is for indexing other public content. But, obviously, they’re trying to get at the Reddit data without paying to license it, and maybe the means for doing this violate the DMCA. On the one hand, hiring a hitman is illegal; you don’t get a legal shield by contracting out the crime. On the other hand, it’s not exactly clear to me which step of this chain is illegal, especially if Google seems not to object. Whatever, the result, I expect it to have far-reaching consequences for the Web.

Mike Masnick:

Reddit is NOT arguing that these companies are illegally scraping Reddit, but rather that they are illegally scraping… Google (which is not a party to the lawsuit) and in doing so violating the DMCA’s anti-circumvention clause, over content Reddit holds no copyright over. And, then, Perplexity is effectively being sued for linking to Reddit.

[…]

And, incredibly, within their lawsuit, Reddit defends its arguments by claiming it’s filing this lawsuit to protect the open internet. It is not. It is doing the exact opposite.

[…]

Reddit has a license to the content users post in order to operate the service, but they don’t hold the copyright on it. Indeed, Reddit’s terms state clearly that users retain “any ownership rights you have in Your content.” Because of Reddit’s agreement that it can license content, the deal with Google could sorta squeeze under that term, but that doesn’t give Reddit the right to then sue over users’ copyrights (as it’s doing in this case).

[…]

But here, Reddit is doing something even crazier. Because it’s saying that since these companies (allegedly) get around Google’s technological measures, then somehow Reddit can accuse them of violating 1201.

Nick Heer:

I am glad Masnick wrote about this despite my disagreement with his views on how much control a website owner ought to have over scraping. This is a necessary dissection of the suit, though I would appreciate views on it from actual intellectual property lawyers. They might be able to explain how a positive outcome of this case for Reddit would have clear rules delineating this conduct from the ways in which artificial intelligence companies have so far benefitted from a generous reading of fair use and terms of service documents.

Jeff Johnson:

OpenAI is blatantly ignoring my robots.txt User-agent: ChatGPT-User Disallow: /

ClaudeBot too, apparently.

John Gruber (Mastodon):

At the bottom of their “Use Cases” page, SerpApi lists the following companies and organizations as customers (“They trust us. You are in good company. Join them.”)

[…]

Was Apple removed from the list because they’re no longer (or never were?) a customer, or because they remain a customer but don’t want to be listed?

Previously:

“LG” Spotlight Indexing Bug

Howard Oakley:

There’s a bug in Spotlight that can prevent it from indexing any of the contents of susceptible text files. This has been present since macOS 13 Ventura if not before, and is still present in Tahoe 26.0.1.

[…]

To demonstrate this bug, all you need is a single UTF-8 plain text file, created by TextEdit or any other app capable of saving plain text. Start the text with the two characters L and G, both in capitals.

[…]

This isn’t the first bug in the RichText.mdimporter. In macOS Catalina 10.15.6, the same mdimporter (then build 319.60.100) introduced a bug that broke indexing of Rich Text (RTF) files.

Drew:

The same thing happens for ‘HPA’. I suspect this might have something to do with the magic entry for Arhangel archive data (/usr/share/file/magic/archive; see also HPA archive data), or something that is trying to make an equivalent check. Notice that ‘file’ reports such a text file as being ‘Arhangel archive data’.

Like Oakley, I wouldn’t expect this to matter. Spotlight uses the file extension to determine the UTI (and therefore the importer), rather than using “magic” to look at the contents of the file. But it appears the problem is occurring after that and that the importer itself is using “magic.”

Howard Oakley:

What happens is that saving a text file starting with forbidden characters correctly triggers Spotlight’s indexing service. That identifies the file as having the UTI public.plain-text and hands it over for its contents to be indexed. But the indexer inspects those first few characters, decides it’s a different type of file altogether, and promptly returns an error 4864 for an NSCoderReadCorruptError without going any further.

[…]

It turns out that files starting with the characters Draw were characteristic of a binary vector graphics format used by the !Draw app for RISC OS 2 in 1989. Rather than believing the file’s UTI for one of the most common types of files in macOS, Spotlight’s indexer therefore decided that it was trying to import file data that must now be as rare as hens’ teeth, and wouldn’t go any further.

Previously:

Monday, October 27, 2025

Line Wraps and the Zero-Width Joiner

I was reminded of this post from former Nisus developer Martin Wierschin:

How does does an emoji do that in text? By using a zero-width joiner character between its constituent characters. That way software knows to display all the codes together as a single glyph or image on screen. This joiner trick is used for a variety of purposes like skin tone and gender modifiers.

Now to the part where we explain how the zero-width joiner character can help your writing. In certain situations you might consider inserting a joiner character to change where line wrapping occurs. The joiner acts as a signal to the text layout engine that the adjacent characters should be joined. You can think of the joiner like a glob of glue that keeps its neighbors together. The characters won’t display a single image as with emoji, but rather they will be kept together on the same line.

Nisus Writer Pro has a built-in menu command to insert the zero-width joiner. There’s also a built-in way to insert it into any macOS text view, but it’s not obvious:

  1. Open the Emoji & Symbols inspector.
  2. If necessary, click the rightmost button to switch it to the full Character Viewer.
  3. From the menu, choose Customize List….
  4. At the bottom of the list, check the box next to Code Tables ‣ Unicode and click Done.
  5. Select Unicode at the left and then select 2000 General Punctuation at the right.
  6. Zero Width Joiner (U+200D) and related characters are in the first row.

You can add them as favorites. Unfortunately, even then, they do not seem to be searchable by name. For me, the easiest way to make unusual characters accessible is to add them as LaunchBar snippets. macOS text replacements would probably work, too.

Here are the characters from Wierschin’s “female chef” example if you want to copy/paste them to try it out:

👩 + U+200D + 🍳 = 👩‍🍳

Previously:

Update (2025-10-28): Thanks to Ralf for helping me to realize that searching for “joiner” does find the character. It looks like it only finds the letters “j,” “o,” “i,” “n,” “e,” and “r,” but there are actually invisible characters after that that only show up if you click on what looks like empty space.

Nisus Probably Moribund

Joe Kissell:

For more than a year, we’ve heard scattered complaints: problems with Nisus Software’s website, particularly the user discussion forum; slow or absent responses to support requests; assorted bugs; and other issues. But earlier this week, on 22 October 2025, the reports changed to: “Did you know the Nisus website is completely down, and that Nisus Writer is no longer in the Mac App Store? Does this mean they’re out of business?”

On the one hand: The site is back online as I write this. The app still works. I’m writing the first draft of this article in Nisus Writer Pro on a Mac running macOS 26 Tahoe, and it’s fine. You can still download it and buy a license. At least one person is actively involved in the company, to some extent. It’s (mostly) alive!

On the other hand: All available evidence suggests that development and support for Nisus Writer have ceased, and barring some new information, its future is doubtful. It’s (mostly) dead!

[…]

Martin Wierschin, Dave Larson, and Mark Hurvitz (each of whom was the public face of Nisus Software at one point) are no longer at the company. Jolanta is in her late 80s, and Jerzy is older than Jolanta. As best I can determine, Jerzy is not actively involved with the business anymore, and Jolanta’s involvement appears to be minimal. I don’t think there are any other employees left at Nisus Software.

The latest update to the app was on 12 November 2024, and it appears the last time a Nisus employee posted on their discussion forum was also in November 2024.

It’s an odd situation, with no public activity in nearly a year and the apps removed from the Mac App Store but still available for purchase from the Web site.

And a sad one. Nisus Writer was the coolest demo I saw at my first Macworld Expo in 1992 or so, and it remained a great app through all of Apple’s transitions: PowerPC, Mac OS X, Cocoa, Intel, 64-bit, Apple Silicon, etc. But over time it became my favorite app that I no longer actually use. And I suspect that usage declined for others as well. iOS and Markdown brought a revival of apps that use plain text. And most people who need rich text don’t need the power of Nisus Writer. The more basic use cases got squeezed by Pages, Microsoft Word, and Google Docs, which are free and/or ubiquitous. But for those who need it, there’s no clear replacement:

True, there’s no shortage of other Mac word processors. I’m sure that for many people, any number of them would be perfectly adequate. However, if you’re the sort of person who needs the tools that only Nisus Writer provides, none of that matters. Although I can’t speak for anyone else, I can definitely speak for Take Control Books, and we would be unable to do what we need to do in any of those other apps. Users who have built up libraries of complex macros in Nisus Writer, or who require find-and-replace based on style-sensitive regular expressions (to take just two examples) would be seriously hampered by another app.

Here are some forum threads discussing the state of things:

Previously:

Update (2025-10-28): John Gordon:

We are in the dark ages of word processing — Pages is buggy and incomplete and Word for macOS is eye-bleach.

John Gruber:

Seems like an ignominious demise for a once-great app. Nisus Writer has been an acclaimed Mac-only (and Mac-assed) word processor since 1989. I never got into it, but I could always see the appeal.

As he says, one way to think of it was like a BBEdit for rich text. (The developers had previously built a plain text editor called QUED/M.) But while I prefer BBEdit, there are many plain text editors that can do regex processing, and there wasn’t really anything else like Nisus Writer.

Update (2025-10-30): Eyal Redler:

In the 90’s I used to be a Nisus user and I liked it a lot. It’s true that as a Hebrew speaker, I had very little choice - nobody supported Hebrew well (or at all) except Nisus and Claris Works, but Nisus was also a very solid application.

Mac OS X rendered the classic Nisus (and many other apps) obsolete, and the complete lack of any Hebrew support on Mac OS X seemed like an opportunity, which I grabbed, and with my brother Ori started to develop what was to become Mellel.

It took a while for Nisus to introduce their version for macOS, and by that time we had made a lot of progress and were quite a bit ahead, but they caught up rapidly and, in some areas, went further. It is fair to say we drew some inspiration from the classic Nisus and, I think it is also fair to say, they draw some inspiration from us.

Mellel and Nisus share have quite a bit in common: we’re both what you might call a “traditional” word-processor, are geared towards academic and scientific writing, and we’re both small players in a world of giants, trying to compete as a paid product against products that are often licensed by institutions or given away for free.

Another thing we shared is a considerable chunk of customers who used both applications. It is always nice to know there’s room for everybody.

We’re not sure what’s going to happen with Nisus and we hope they recover - we can all flourish together. In any case, we would like to offer Nisus users the chance to get Mellel at a discounted price — $51.75.

Twitter to Show Link Content and Tweet Simultaneously

Nikita Bier:

We’re testing a new link experience, starting on iOS -- to make it easier for your followers to engage with your post while browsing links.

For creators, a common complaint is that posts with links tend to get lower reach. This is because the web browser covers the post and people forget to Like or Reply. So X doesn’t get a clear signal whether the content is any good.

To help get better signal, posts will now collapse to the bottom of the page so people can react while you’re reading.

As always, remember: the post should stand alone as great content so write a solid caption.

This seems like a better design, anyway. But my understanding is that, separate from naturally lower engagement, Twitter is still artificially deboosting posts with links, leading to an unfortunate pattern where people post the link in a reply to the main tweet. He insists that this is not the case.

Rosyna Keller:

Note that this new “feature” makes articles load slower and allows Twitter to see more of your browsing habits because it’s no longer using SFSafariViewController. That means no more fraudulent website warnings and no more content/ad/tracker blockers.

Léo Natan:

Part of the blame is on Apple for making SFSVC such a rigid and badly constructed API, that supports zero customization.

Previously:

Don’t know about better design, but it is atrocious from performance, usability, privacy and security perspective. Had it on for a couple of days and now it’s back to normal SFVC. Hopefully the experiment is all negative and they’ll drop the idea.

I run an ecom store that gets a lot of its customers from Twitter. I was also shocked to see my traffic double or triple overnight and thought the algorithm had blessed me and my business. Soon realized what was actually happening. Thought other traffic-monitors might appreciate this explanation.

[…]

Meanwhile Nikita Bier is pretending they never suppressed tweets with links to begin with[…] A bit of a rewriting of history since Elon and his mom both tweeted about how it wasn’t fair to use his platform to promote other links/platforms, even banning people who shared profiles of other social networks (including Paul Graham for a period). They suppressed all links shortly after.

Aaron:

Here is the latest list of domains that X has excluded from using the new in-app link viewer on iOS

Friday, October 24, 2025

Sky Acquired by OpenAI

OpenAI (Hacker News):

We will bring Sky’s deep macOS integration and product craft into ChatGPT, and all members of the team will join OpenAI.

John Voorhees:

I’m not surprised by this development at all. OpenAI, Anthropic, and Perplexity have all been developing features similar to what Sky could do for a while now. In addition, Sam Altman was an investor in Software Applications Incorporated, the company behind Sky.

Samuel Axon:

That includes SAI co-founders Ari Weinstein (CEO), Conrad Kramer (CTO), and Kim Beverett (Product Lead)—all of whom worked together for several years at Apple after Apple acquired Weinstein and Kramer’s previous company, which produced an automation tool called Workflows, to integrate Shortcuts across Apple’s software platforms.

The three SAI founders left Apple to work on Sky, which leverages Apple APIs and accessibility features to provide context about what’s on screen to a large language model; the LLM takes plain language user commands and executes them across multiple applications. At its best, the tool aimed to be a bit like Shortcuts, but with no setup, generating workflows on the fly based on user prompts.

Rui Carmo:

Well, guess what: OpenAI did what Apple should have done and acquired them.

[…]

At the time it was announced I ranted on about how Apple had managed to mis-manage this kind of talent and vision for Mac automation so badly that they ended up leaving the company and not having any of what they showed at the time incorporated in Apple Intelligence, and I am sticking to my guns on that one[…]

Juli Clover:

OpenAI’s Sky acquisition comes just a day after OpenAI announced ChatGPT Atlas, a new browser that’s designed to compete with Safari and Chrome.

Ryan Jones:

It’s a chatbot.
It’s a browser.
It’s an OS.

Are you getting it yet @Apple?

Previously:

Europe vs. App Tracking Transparency

Marcus Mendes:

In its statement issued earlier this week to the German Press Agency, Apple said the following:

“Intense lobbying efforts in Germany, Italy and other countries in Europe may force us to withdraw this feature to the detriment of European consumers. (…) We will continue to urge the relevant authorities in Germany, Italy and across Europe to allow Apple to continue providing this important privacy tool to our users.”

Juli Clover:

Germany launched a probe into App Tracking Transparency back in 2022, and in February 2025, Germany’s Federal Cartel Office preliminarily ruled that Apple abused its market power with ATT, giving itself preferential treatment, even though Apple says it does not collect data from third-party apps. The cartel said that Apple’s restrictions made it “far more difficult” for app publishers to access user data relevant for advertising.

In March 2025, Apple was fined 150 million euros by France’s Competition Authority. French regulators said that Apple complicated the process for users to opt out of tracking and unfairly disadvantaged third-party developers and ad providers. Apple is facing a similar investigation in Italy, with a ruling expected later this year.

Steve Troughton-Smith:

Apple would rather disable app tracking prevention in Europe entirely than to have to conform to the rules in its own apps that it imposes on third party developers.

And then it tries to blame regulators and lobbyists for the situation.

At every turn, Apple is determined to prove that it’s a scummy company that can’t remotely be trusted

“Apple (…) holds itself to a higher standard than it requires of any third-party developer. [Just trust us, bro 🤞]”

Josh Calvetti:

Apple does LOTS of telemetry and tracking in their apps. They just believe that it’s okay because they are trustworthy because they said so.

Dare Obasanjo:

You can fool some of the people all of the time, and all of the people some of the time, but you can not fool all of the people all of the time.

Regulators are now catching on how Apple uses protecting users as an excuse for anticompetitive practices.

Previously:

Update (2025-10-27): Nick Heer:

I believe there are people within Apple who care deeply about privacy. However, when Apple also gets to define privacy and tracking, it is no coincidence it found an explanation allowing it to use platform activity and in-app purchases for ad targeting. This is hardly as sensitive as the tracking performed by Google and Meta, and Apple does not use third-party data for targeting.

But why would it? Apple owns the platform and, if it wanted, could exploit far more user information without it being considered “tracking” since it is all first-party data. That it does not is a positive reflection of self-policing and, ideally, something it will not change. But it could.

What E.U. authorities are concerned about is this self-serving definition of privacy and the self-policing that results, conflicting with the role of European regulators and privacy laws, and its effects on competition. I think those are reasonable grounds for questioning the validity of App Tracking Transparency. Furthermore, the consequences emanating from violations of privacy law are documented; Meta was penalized €1.2 billion as a result of GDPR violations. Potential violations of App Store policy, on the other hand, are handled differently. If Meta has, as a former employee alleges, circumvented App Tracking Transparency, would the penalties be handled by similar regulatory bodies, or would it — like Uber before — be dealt with privately and rather quietly?

What Happened to Apple’s Legendary Attention to Detail?

John Ozbay (Hacker News):

In my mind, “Apple” as a brand used to be synonymous with “attention to detail” but sadly, over the course of the last 8 - 10 years, their choices have become anything but detail oriented.

[…]

If you are privacy conscious like me, and don’t give the Reminders app permission to access your location, it will ask you for location permissions every single damn time you launch it.

[…]

For some reason, Mac OS X doesn’t have a standard and consistent design for tabs.

[…]

Here’s the iOS 26 Files app in dark mode, and light mode side by side. Notice anything missing? Like the folder name or the barely visible down arrow? It’s almost as if they haven’t tested iOS 26 in dark mode at all.

[…]

I fired up Settings to disable transparency, and none of the icons showed up there at first. […] Feeling frustrated beyond measure, I enabled “reduced transparency” mode, which fixed the icons but broke other things even further.

There are just a huge number of little problems, which really degrade the experience of Apple’s platforms. This morning, the “d” key on my keyboard stopped working. This has happened several times over the last few months. I know it’s a software issue because the problem also occurs with other keyboards (both Bluetooth and USB). Restarting the Mac always fixes it. When I tried that today, the Mac showed the login prompt on the wrong display and in the wrong resolution. After a few seconds it moved to the proper display. I started typing my password but, even though I use a USB keyboard, the first few characters were dropped, and I had to backspace and start again. There was a little glitch where nothing happened for a second or two after I pressed Delete. After booting finished, everything was extremely slow for no apparent reason. The cursor was jumpy. Moving between messages in Mail took several seconds even though it was otherwise idle. LaunchBar took a few minutes to finish launching. I clicked on iStat Menus to see what was going on, and it took 30 seconds for the menu to pull down. Activity Monitor showed little CPU use and disk activity, and samples just seemed to show various apps spending lots of time waiting. Eventually, everything returned to normal speed.

A few years ago, I started collecting links for a massive post about design paper cuts. I never found the time to write it all up, and many of the posts have since been deleted, but it seems worth including some of the relevant links here instead of letting them languish in a draft:

Joe Rosensteel:

One of the things that I think about from time to time is Apple’s collection of apps. Some are the crown jewels, like Apple’s pro apps, and others help an everyday consumer to tackle their iLife. All are pretty starved for attention and resources, outside of infrequent updates aligned with showing off the native power of Apple Silicon, Apple Intelligence, or demos of platform integration that never quite get all the way there.

Previously:

Update (2025-10-28): Sarah Reichelt:

It’s the software that lets down the hardware and the quality has been going downhill for some years now. We are way out of the “it just works” phase of using Apple products. I consider myself an expert and I have great trouble accomplishing some tasks.

The latest versions of all the operating systems seem particularly buggy, even if one ignores the obvious readability problems of Liquid Glass. Apple is a company that has always prided itself on its commitment to accessibility, so how they got this so wrong is a mystery. It seems like they wanted a major redesign just for the sake of it, and were prepared to put up with a huge reduction in usability in order to look different.

[…]

Move Craig Federighi from software to marketing.

[…]

Use the developer community which is full of people who want to help, but are sick of being treated like the enemy.

Update (2025-10-30): Nick Heer:

I promise that users notice these bugs all the time and, especially in products that do not have a more technically literate audience, they become sources of confusion and dissatisfaction. They make software feel brittle. Product managers, please encourage your developers to hunt down and resolve these bugs every single day. Chip away at the list until nothing remains, and you will end up with software that feels like users can rely on it.

Update (2025-11-04): Dave Wood:

I dropped iPhone and macOS and have switched to Android (Pixel 10) and Linux (Fedora). No issues at all. Fewer issues actually because iOS and macOS are so damn buggy now.

I do still have a mac as a build server since I still have to produce builds, but all my code etc is done on Linux now.

Bart:

It amazes me how Apple still fails to learn from the lessons they themselves inflicted on Microsoft.

Microsoft lost the developer battle a long time ago, and if they didn’t already have decades of irreplaceable business software no one was ever gonna rewrite, they would have gone out of business.

[…]

Apple doesn’t seem to want anyone to write proper native Mac apps anymore. They don’t even seem to be able to define for themselves what that actually means.

Sebastián Benítez:

Bit by bit, they are ruining it. It’s still good compared to Windows, but in a yearly decay. I find it comically sad how all the well known Indie developers complain and cry about the newest release, every fucking year. And still nothing changes. They will remain imprisoned by Apple, unable (and unwilling) to escape. As long as they make money, of course they will carry the flag.

Previously:

Excel for iOS Borked

Thomas Claburn:

Microsoft Excel for the past week has been hanging or crashing on iOS and iPadOS devices, to customers’ great annoyance.

The problems appear to have begun following the release of Excel version 2.102.1 for iOS and iPadOS on October 13, 2025. The release added support for Apple’s Liquid Glass design, which debuted with the September 15, 2025 release of iOS 26 and iPadOS 26 – also credited with dozens of bugs.

The Register downloaded Excel for iOS, version 2.102.2, released three days ago, and found the app non-functional. The “+ Create” icon did not respond to touch events, which prevented the creation of a new spreadsheet from the menu of provided templates.

[…]

Reports of problems began surfacing about a week ago and have continued since then.

Poor testing and communication from Microsoft, and because of the App Store customers have no way to revert to the last stable version.

Update (2025-10-24): Erik Schwiebert:

This has been addressed. It was unfortunately the intersection of a latent client-side bug (been there for a long time) and a change in a server-side policy that exposed the latent bug; the issue was not connected to the monthly update and Liquid Glass changes. It took more time than desired to identify the server-side change as the root cause.

Thursday, October 23, 2025

General Motors Doubles Down on Removing CarPlay

Juli Clover:

General Motors began phasing out support for CarPlay in its electric vehicles back in 2023, leading to complaints from iPhone users, but the company has no plans to back down.

In fact, GM is going further and plans to remove CarPlay from all future gas vehicles, too. In an interview with The Verge, GM CEO Mary Barra said that the company opted to prioritize its platform for EVs, but the change will eventually expand across the entire GM portfolio.

[…]

GM Chief Product Officer Sterling Anderson suggested that GM’s decision to embrace its own system is a “very Jobsian approach to things” that he likened to phasing out the disk drive.

I would just be laughing at this except I worry about getting stuck with a GM rental car.

John Gruber:

Someone should investigate whether Mary Barra is a mole planted at GM by Ford.

Joe Rosensteel:

Allow me to summarize this: Mary really wants to sell services, or have recurring revenue from partnerships and deals with companies in services to earn money over the lifespan of the vehicle. She cites how disorienting it is to jump in and out of CarPlay, but that’s hardly a hurdle that justifies the development work they’re putting into not supporting CarPlay and Android Auto projection systems.

[…]

The only salient point he raises is that there are features of the car that do not currently integrate with CarPlay, or CarPlay Ultra. It can’t do anything with Super Cruise. Apple, as far as I know, has no real plans for integrating Maps on a phone with any kind of assisted driving, or autonomous technology. I hope that they are working on something for that.

[…]

I do think Mary Barra would love to cut a deal with Apple to have Apple Music as an app on their own platform. Apple currently offers Apple Music apps for Tesla and Rivian and neither has ever supported CarPlay, because it is far more important to Apple to get the recurring services revenue than it is for them to use Apple Music as some kind of wedge issue for car shoppers.

[…]

I’m not going to sign up for a GM federated ID that stores my login credentials in their cloud. I’m not going to individually sign into apps in the car like Google Maps with my Google ID that I use for way more than just navigation.

Previously:

Update (2025-10-24): See also: Mac Power Users.

Dave Rahardja:

My interest in buying new cars is already at an all-time low. Now GM products are crossed off the list.

[…]

The main benefit for me is that I carry the state with me. Podcasts, for example, will pick up where I left off. Text messages read/unread state will update accordingly, and so on.

Update (2025-10-29): Andrew J. Hawkins:

But today, the company is clarifying that this won’t happen overnight.

“We are not making any changes to existing vehicles,” Malorie Lucich, a spokesperson for GM, said in a statement. “If your car supports Apple CarPlay or Android Auto, that will continue. Both will remain available in all GM gas-powered vehicles for the foreseeable future.

Update (2025-10-31): John Gruber (Mastodon):

If GM goes through with this abandonment of CarPlay, I don’t see how they’ll continue to sell any vehicles to rental agencies. I would never rent a car without CarPlay, and I would never consider signing up for a GM cloud service just to drive a rental car.

I hope so. I worry that all the rental agencies will just keep buying them and customers won’t have a choice.

Update (2025-11-03): Patrick George:

Although GM is the largest automaker that is ditching CarPlay, other car brands are also locking features behind a paywall. Toyota has some navigation tools that require a subscription, but CarPlay does about the same thing at no cost. I own an older Mazda with a remote-start feature that works every time I hit a button on my key fob; on my newer electric Kia, I have to pay up to $200 a year if I want to unlock that service. (I haven’t yet; in fact, study after study shows that consumers are broadly skeptical of more subscription features.)

Some automakers have made a point of proclaiming their allegiance to CarPlay, knowing that’s what buyers want. Toyota’s EVs tell CarPlay how much electric range they have left, so that Apple Maps can prompt the driver to stop at a nearby charger on a road trip. But the relationship between Detroit and Silicon Valley can be a tense one.

[…]

No matter what car you drive, the glory days of CarPlay may be numbered.

Update (2025-11-12): Chris Adamson:

One thing I don’t notice people talking about is how nice it is for CarPlay to be consistent across auto brands. We have a Ford and a Toyota, and our kid has a Honda. It really helps when maps, messages, music, podcasts, and notifications all work the same regardless of which vehicle we’re using.

Nick Heer:

I cannot imagine going back to a pre-CarPlay era. I like bringing my music collection seamlessly into my car, having Maps and Messages at my disposal, and not needing to sync anything with a different system. I wish I could replace Siri with something even borderline functional, though.

CarPlay Ultra, on the other hand, has not moved the needle for me, at least based on early reviews. The problem CarPlay solves is that it augments the infotainment system with the same environment I am used to elsewhere while still letting the rest of the car feel normal. CarPlay Ultra attempts to replace the entire dashboard, which has not so far been a problem I want solved. I worry that this could be a step too far for some automakers, too, and I hope it does not nudge more of them toward abandoning CarPlay in favour of a parasitic relationship with customers’ bank accounts.

I don’t like CarPlay Ultra, either. I’ve been concerned since it was announced that Apple would eventually force us to use it instead of regular CarPlay or that it would cause a rift with the automakers.

UK: Commission Lawsuit Ruling and Strategic Market Status

Sam Tobin:

Apple abused its dominant position by charging app developers unfair commissions, a London tribunal ruled on Thursday, in a blow which could leave the U.S. tech company on the hook for hundreds of millions of pounds in damages.

[…]

Thursday’s ruling comes after Apple was hit with a complaint to European antitrust regulators over the terms and conditions of its App Store under rules aimed at reining in Big Tech.

[…]

Rachael Kent, the British academic who brought the case, argued Apple had made “exorbitant profits” by excluding all competition for the distribution of apps and in-app purchases.

Sarah Perez:

The U.K.’s Competition and Markets Authority (CMA) said on Wednesday that it’s designating Apple and Google with strategic market status in their respective mobile platforms. The decision, which affects the companies’ operating systems, app stores, browsers, and browser engines, will enable the regulator to take targeted actions to enhance competition in the space.

[…]

Among other findings, the CMA discovered that U.K. mobile device owners are unlikely to switch between Apple and Google’s mobile platforms once they have adopted the ecosystem of their choice. It noted that both platforms require businesses to distribute apps through their app stores to reach consumers.

Notably, it also said that new technologies, like AI, were “unlikely to eliminate Apple or Google’s market power over the five-year designation period.”

Nick Heer:

Pretty soon it may be easier to list the significant markets in which Apple is still able to exercise complete control over iOS app distribution.

Previously:

Update (2025-10-24): Juli Clover (Hacker News):

According to the CAT, Apple had a monopoly over iOS app distribution and in-app payments. Apple’s argument that Android and other platforms were viable alternatives for consumers and developers was rejected. The Tribunal also did not accept Apple’s argument that its rules and fees were required for user security and privacy.

[…]

A damages trial is scheduled for November. Apple said it will appeal the ruling.

Update (2025-10-28): John Gruber (Mastodon):

Apple has approached all this regulatory conflict from a perspective that they’re right, and the regulators are wrong. That the App Store, as Apple wants it, is (a) good for users, (b) fair to developers, and (c) competitive, not anti-competitive, legally. But even if Apple is correct about that, at some point, after being handed loss after loss in rulings from courts and regulatory bodies around the globe, shouldn’t they change their strategy and start trying to offer their own concessions, rather than wait for bureaucrat-designed concessions to be forced upon them?

Regulatory Complaint About App Store in China

Hartley Charlton:

A law firm in China has filed a new antitrust complaint accusing Apple of abusing its control over iOS app distribution and payments, escalating a dispute that previously failed in civil court by seeking action from state regulators instead, Reuters reports.

[…]

Wang has now re-opened the case more broadly via a different channel, telling the media that the new administrative complaint is intended to prompt regulatory enforcement rather than a civil judgment. Unlike the 2021 filing, this complaint incorporates a comparative argument based on changes made in other jurisdictions. The filing asserts that Apple is continuing to operate a closed App Store in China while permitting alternative payment methods and sideloading in the European Union following enforcement of the Digital Markets Act and a U.S. court ruling that obliges Apple to allow outside payment links.

Previously:

Wednesday, October 22, 2025

ChatGPT Atlas

OpenAI (MacRumors, Reddit):

Today we’re introducing ChatGPT Atlas, a new web browser built with ChatGPT at its core.

[…]

With Atlas, ChatGPT can come with you anywhere across the web—helping you in the window right where you are, understanding what you’re trying to do, and completing tasks for you, all without copying and pasting or leaving the page. Your ChatGPT memory is built in, so conversations can draw on past chats and details to help you get new things done.

[…]

ChatGPT Atlas is launching worldwide on macOS today to Free, Plus, Pro, and Go users. Atlas is also available in beta for Business, and if enabled by their plan administrator, for Enterprise and Edu users. Experiences for Windows, iOS, and Android are coming soon.

Alas, it doesn’t support AppleScript and has System Settings–style preferences.

Nick Heer:

Atlas, like Perplexity’s Comet, is a Chromium-based browser. You cannot use it without signing in to ChatGPT.

[…]

The company says it only retains pages until they have been summarized, and I am sure it thinks it is taking privacy as seriously as it can. But what about down the road? What could it do with all of this data it does retain — information that is tied to your ChatGPT account?

Matt Birchler:

The new tab page is predictably a text box that intelligently does what you ask it to do, routing your queries to perform web searches, start a standard ChatGPT chat, or simply load a website from your bookmarks or history. You can, of course, also just paste in the URL and go.

[…]

I’m also a big proponent of the “show full URL in address bar” feature in all browsers, and I’m happy to see this is here as well. It’s a little thing, but I’m always worried it’s on its way out.

[…]

The app does not have an agent mode as of yet, but it sounds like that will be coming in the relatively near future. My experience with these modes in other browsers has been a major letdown, so we’ll see if OpenAI can do any better, but I’m not holding my breath here.

Nicolas Magand:

I use the ChatGPT app at work, and I actually like having a separate window for all A.I. shenanigans: I can switch apps quickly, I can close it, and I can call it with a keyboard shortcut. Sure, it’s way more limited, and I need to jump from one app to another more often, but I actually see this as a feature.

This is not just about Atlas; I haven’t read about any cool use case of an A.I. browser, whether it is Dia or Comet. Maybe this new browser will change things, maybe it will reach more people and we will see good examples, but so far, it feels like even folks at OpenAI struggled to find compelling use cases. Or maybe I was too bored by the video to pay attention?

Previously:

Update (2025-10-23): Lukas Valenta:

I can confirm there is an agent mode - alas, it is hard to find (at least to me) - it is hidden in “chat rectangle” preferences.

I’ve tried it for two tasks - finding ticket and filling the whole booking for me (worked great), and then create a new identifier + app in Apple developer / AppStore Connect. Had to manually step in once (didn’t change account), had to confirm once.

I think with correct prompts, this may be the way to optimize these tasks we don’t like anyway.

Certainly interesting, but I’m skeptical about giving an LLM this sort of access to my accounts.

Thomas Claburn:

OpenAI’s brand new Atlas browser is more than willing to follow commands maliciously embedded in a web page, an attack type known as indirect prompt injection.

Prompt injection vulnerability is a common flaw among browsers that incorporate AI agents like Perplexity’s Comet and Fellou, as noted in a report published by Brave Software on Tuesday, coincidentally amid OpenAI’s handwaving about the debut of Atlas.

[…]

A spokesperson pointed to a lengthy X post published Wednesday by Dane Stuckey, OpenAI’s chief information security officer, that acknowledges the possibility of prompt injection and touches on various mitigation strategies.

Update (2025-10-29): John Gruber (Mastodon):

After giving it a try over the last week, to me Atlas feels like … Chrome with a chat button bolted on. I do not see the appeal, at all, despite being a daily user of ChatGPT. Atlas offers nothing to me that’s better than using Safari as a standalone browser and ChatGPT’s excellent native Mac app as a standalone AI chatbot. But, for me, my browser is not “where all of [my] work, tools, and context come together”. I use an email app for email, a notes app for notes, a text editor and blog editor for writing and programming, a photos app for my photo library, a native feed reader app for feed reading, etc. My web browser is for browsing pages on the web. Perhaps this sort of browser/chat hybrid appeals better to people who live the majority of their desktop-computing lives in browser tabs.

Update (2025-11-05): Adam Engst:

Read Hart’s article for more details on the security and privacy concerns plaguing agentic browsers, but in short, they’re all somewhat vulnerable to “prompt injection“ attacks, in which malicious instructions are concealed within content read by an AI. These instructions could be hidden in HTML comments, white text on a white background, or in the page metadata. They might trick the chatbot into requesting personal information or instruct the browser to download and execute malware.