SpamSieve 3.0.5 is a maintenance release for my Mac e-mail spam filter. It seems to work great with the current macOS Sequoia beta, though I expect another update will be required when Apple releases the AI-enabled beta of Mail later this summer. Unfortunately, Apple tends to make big changes to Mail through August, so we never quite know where we stand until the GM, and a couple times there were even significant changes after that.
Some interesting issues were:
Xcode 15 still has a bug where Swift apps crash at launch prior to macOS 14 when using a macOS 10.13 deployment target, in this case triggered by accessing libswiftNetwork.dylib, which SpamSieve is now using for reachability checks. I describe a workaround here.
Apple Mail’s support for Mail App Extensions continues to be unreliable, to the point where some customers are finding that it works best to turn off the extension entirely. This can avoid a bug where Mail ignores (and possibly even clears) the cached data for a message, leading to unnecessary redownloads and slowness. Mail already has issues with not sending all the new messages to the extension for filtering, and so SpamSieve already has workarounds to filter the new messages without needing the extension. Of course, things would smoother with extensions working properly, but my Radars and DTS incidents do not seem to have affected that over the last year.
Separate from the extension issues, SpamSieve is better at detecting when Mail is busy downloading messages, as during that time it can block the user interface and starve its other threads, so SpamSieve will back off its requests until Mail is less busy.
Xcode 16 has a regression where tests will fail to access the Contacts database and take a very long time as they wait for 8 failed attempts to contact the XPC server. It’s not clear how to give Xcode TCC access as it doesn’t prompt.
With Xcode 16, the responder chain no longer seems to work properly when running tests. I updated various toolbar validation and undo tests to use hard-coded targets.
NSString
in macOS Sequoia is more strict about not accepting data that doesn’t conform to the specified encoding. Previously, it would make a “best effort,” but now it will just fail outright, which is probably a good thing.
Swift 6 doesn’t like my adding ExpressibleByUnicodeScalarLiteral
to the FourCharCode
type (since Apple owns it). The warning can be silenced using the @retroactive
attribute, but that won’t compile with Xcode 15.
macOS Sequoia has made significant changes to how text is extracted from PDFs.
macOS Sequoia has changed the way Thai text is tokenized.
Core Data can crash when resolving uniqueness conflicts if the database file is damaged. This is not because SQLite is crashing, but rather that the corruption seems to be getting Core Data into a state that it didn’t expect.
SQLite UNIQUE
constraints really cannot be relied upon. I’ve now seen multiple cases of duplicates (sometimes dozens of the same row) because the database was damaged and so the index enforcing the constraint didn’t work. Recovering such databases is not straightforward because building a new database will fail due to constraint violations.
I had only anticipated disk full errors to occur when saving a database, but they can also occur in other situations and get reported as NSFileReadUnknownError
.
Previously:
Apple Mail AppleScript Bug Cocoa Contacts Core Data Database Mac Mac App macOS 10.13 High Sierra macOS 15 Sequoia Mail App Extensions Programming SpamSieve SQLite Swift Programming Language Transparency Consent and Control (TCC) Unicode
Nathan Manceaux-Panot:
Haven’t seen this mentioned yet: in macOS Sequoia, you can open a context menu by pressing ⌃⏎, for the current selection. Very nice—Windows has had this for ages!
The shortcut is Control-Return. I’m looking forward to this, since I’ve often made the selection using the keyboard and don’t want my fingers to leave it. With BBEdit, LaunchBar, and some other apps, I can already access menu commands from the keyboard, but this will hopefully work everywhere.
Previously:
Wait, when did the Apple Style Guide change the terminology for “contextual menus” to “shortcut menus”?
Keyboard Shortcuts Mac macOS 15 Sequoia Windows
Ming-Chi Kuo (tweet, via Hacker News):
Increasing the energy density of the battery cells will increase the battery temperature when running. To avoid overheating the battery, Apple uses the stainless steel battery case for the first time as a thermal solution.
Stainless steel is not as effective as aluminum in dissipating heat, but it is more robust and less susceptible to corrosion, so in addition to dissipating heat, the stainless steel battery case provides better protection for the battery and the iPhone system.
The use of a stainless steel battery case also reduces the difficulty of removing the battery, which will help Apple comply with the European Union’s requirements for mobile phone batteries’ replaceability in the future.
Previously:
Battery Replacement European Union iPhone iPhone 16 Pro Legal Rumor Thermal Unauthorized Repair
Thomas Claburn:
Mustafa Suleyman, the CEO of Microsoft AI, said this week that machine-learning companies can scrape most content published online and use it to train neural networks because it’s essentially “freeware.”
Shortly afterwards the Center for Investigative Reporting sued OpenAI and its largest investor Microsoft “for using the nonprofit news organization’s content without permission or offering compensation.”
[…]
Asked in an interview with CNBC’s Andrew Ross Sorkin at the Aspen Ideas Festival whether AI companies have effectively stolen the world’s intellectual property, Suleyman acknowledged the controversy and attempted to draw a distinction between content people put online and content backed by corporate copyright holders.
“I think that with respect to content that is already on the open web, the social contract of that content since the 1990s has been it is fair use,” he opined. “Anyone can copy it, recreate with it, reproduce with it. That has been freeware, if you like. That’s been the understanding.”
He also refers to robots.txt as a “grey area” that will “work its way through the courts.”
Kali Hays:
OpenAI and Anthropic are two big names found to be ignoring robots.txt, put in place by news publishers to block their web content being freely scraped for AI training data, I learned today.
Sean Hollister (via Dan Moren, Hacker News):
I am not a lawyer, but even I can tell you that the moment you create a work, it’s automatically protected by copyright in the US. You don’t even need to apply for it, and you certainly don’t void your rights just by publishing it on the web. In fact, it’s so difficult to waive your rights that lawyers had to come up with special web licenses to help!
Fair use, meanwhile, is not granted by a “social contract” — it’s granted by a court. It’s a legal defense that allows some uses of copyrighted material once that court weighs what you’re copying, why, how much, and whether it’ll harm the copyright owner.
As Claburn notes, many people have “compromised their rights” by posting their content on social media sites.
I don’t think that training an AI to the point where it can reproduce an article is fair use any more than photocopying a whole book or using a camera to record a movie is. But, as a practical matter, it seems like the AI companies are going to keep scraping and no one is going to stop them, except for the big names that will make licensing deals.
Previously:
Artificial Intelligence Business Copyright Legal Microsoft OpenAI Web Web Crawlers