Archive for September 15, 2023

Friday, September 15, 2023

Automatically Pausing Animated Images


Pause animated images by default, such as GIFs in Messages and Safari for your visual comfort.

Via Jeff Johnson:

In my opinion, the feature should have been highlighted in the WWDC keynote. It’s that huge.


It would be better if you could just click the image to play and pause the animation, but the contextual menu is certainly way better than nothing! More than 30 years of nothing… until now.

And you can’t see whether there is an animation until you click?

By the way, I seem to have found a bug in Sonoma System Settings where the “Auto-play animated images” toggle button appears to be enabled after it has been disabled. This happens when you quit and relaunch the System Settings app.

It seems like the most important settings are in Accessibility.


New Apple ID Sign-In Options

Joe Rossignol:

First, it is now possible to sign into an Apple ID with any phone number or secondary email address on file with the account. We were able to sign into an Apple ID with a phone number on the Apple ID website using a Mac running macOS Ventura, so it’s unclear if this feature specifically requires the new software updates or is simply a backend change.

This is not referring to two-factor authentication, which has long been possible via a phone number and SMS. Rather, this change lets you use your phone number as the user ID if you don’t remember which e-mail address is on file.

Second, starting with an iOS 17 update coming later this year, there will be a new Apple ID proximity sign-in feature. This will allow you to bring an existing signed-in and trusted iPhone or iPad into proximity with a new device being set up, pair the devices by scanning an on-screen “particle cloud,” and complete sign-in automatically.

And they now support passkeys.


Limitations on macOS Virtual Machines

Howard Oakley:

This is a draft summary of the limitations of lightweight virtualisation of macOS on Apple silicon Macs, using the macOS API in late versions of Ventura and early Sonoma, VMs designated VirtualMac2,1.


Shared folders are only available in Ventura and later VMs. Transferring items using drag and drop is available in all VMs by using Screen Sharing or ARD.


Apple ID isn’t supported in VMs, and they can’t be connected to iCloud Drive or support apps using CloudKit. This means that VMs can’t run the great majority of App Store apps, apart from Apple’s free products such as Numbers, Pages and Keynote.


The shared clipboard to allow copy and paste between host and VM currently appears non-functional, at least when using Apple’s example code.

With all the limitations, I’ve never gotten into using macOS VMs the way I expected to. I do testing using a second Mac either directly or via Screen Sharing. It has multiple partitions for different macOS versions, and the data volumes can be rolled back via APFS snapshots to reset things if necessary.


Update (2023-12-29): Howard Oakley:

The biggest limitation, and the elephant in the room, is the complete lack of support for signing in with an Apple ID. iCloud Drive access from a VM is possible through the host, although as apps running in the VM can’t recognise that they’re dealing with cloud storage, that can get fraught at times. But without an Apple ID, no third-party apps distributed through the App Store can be run in a macOS VM on an Apple silicon guest, even if they’re free to use.

While Apple has been steadily improving macOS virtualisation since it was released over two years ago, there has only been silence over Apple ID. This is most probably the result of a direct conflict between the inherent untrustworthiness of VMs and the host Mac’s need to protect the Apple ID and its password. VMs are likely to be running a version of macOS that lacks some if not many of the protections of the current release. The VM may even be deliberately affected by malicious software designed to exfiltrate passwords. While the Virtio driver architecture works well for most services provided by the host, it hasn’t been developed with security in mind, for which it looks quite inappropriate. Finally, VMs are by definition both portable and ephemeral, the antithesis of what you’d want to store and use an Apple ID.

I can’t believe that Apple hasn’t been wrestling with these issues for several years now, but there’s still no solution in sight.

Core Data Lab 2.4 Beta


However, the data model of a SwiftData project is based on Swift class files with a Model macro notation, instead of entities in a Core Data Object Model designer file. As a consequence of this, compiled SwiftData apps don’t have an embedded compiled Core Data Object Model. This makes it impossible for Core Data Lab to search for a matching database by comparing the model of a database with the embedded model of a Core Data app. Core Data Lab uses instead some sparsely documented conventions to determine the location of the database files for a given SwiftData app.

This only affects finding databases that are related to a given app. The databases themselves still contain cached models/schemas, so Core Data Lab can read them without having a compiled model file. My Core Data apps don’t have model files, either, since I’ve been building the models in code.

Model files for previous versions are needed for lightweight migration, as there is no API to directly control the migration. This may have been addressed in Sonoma, although the API is not very clear. You can now create an NSLightweightMigrationStage, but you can’t directly specify a model, only a versionChecksum. If you create an NSManagedObjectModelReference, you can give it a model and checksum, but there is no way to provide the references to the NSStagedMigrationManager. Perhaps simply creating a reference registers it globally to be looked up by checksum?

New in Core Data when used in the latest OS versions, is support for NSCompositeAttributeType attributes. Regarding this, Core Data Lab 2.4 beta adds support for:

  • Displaying composite values in the table, detail and content views as readonly dictionaries.
  • Displaying composite attributes in the Entity Description view of a selected entity.
  • Export and import of composite attributes values via CSV or JSON import and export files.

We want to add editing support for composite attributes in a future update. In the current OS beta’s of Apple it seems that the implementation of composite attributes is not completely ready. Nested composite attributes for example should be supported, but don’t yet work in practice.

I have not tried the Core Data Lab beta yet, but I’ve been enjoying the release version of the app. Version 1.6 added basic support for non–Core Data SQLite files. It’s not as fully featured for this as Base, but the interface is nice. Version 2.3 added viewing improvements such as persistent table column configurations and control over fonts.


Update (2023-12-12): I forgot to note that it’s out of beta.