Thursday, April 6, 2023

Violation of Undo in Apple Mail

Daniel Jackson:

Appropriately, Apple synchronized this action with the undo action of the general Undo concept. So if you send a message and then immediately execute an undo, it is interpreted as undo send, even without clicking the special transient button carrying that label.

But Apple went further. The undo action is synchronized with undo send for as long as the message has not been sent, even if another action has been performed in the meantime.


Initially, I thought that the effect of the undo was to pop the undo-stack all the way back to the send. In fact, it’s not that bad, and what it does instead is to keep the send action on the top of the stack even as other actions are performed. Either way, this violates the simple and intuitive operational principle of Undo that executing undo reverses the last action performed.

9 Comments RSS · Twitter · Mastodon

I usually like when apps ahdere to rules but I can understand Apple in this context. The undo send option is time limited and it is called "undo". Because of that it needs to be immediately accessible via the menu or keyboard shortcut as this would be the intuitive action that people would perform if they wanted to undo sending.

Undo after deleting Apple Mail trash does not work. Now with macOS 13 Ventura and before.

If you are sticking an action at the top level of the undo stack…it almost certainly doesn’t belong on the undo stack at all.

You can’t undo send anyway. The action was never performed, so it isn’t being undone; it is being cancelled. Did they not think to make this its own separate action? How about “Cancel Send”? It could have its own menu bar item and its own keyboard shortcut.

Yeah, it's clearly a violation, but I agree with Tobol that, as kludges go, this is about the most intuitive. It's not surprising that they're cutting corners either, though, and if done properly this would be a menu command with intuitive shortcut, and the Undo command would otherwise function normally i.e. it undoes send only if that was the most recent action.

And MeX is correct, undo of message delete that is not moving to Trash i.e. Cmd+Opt+Delete has been broken for some time now, and nobody at Apple seems to be in any great rush to fix it. Watch those careless butterfingers if you often delete immediately and bypass Trash, which I often do.

@Sebby For me, Command-Delete (which moves to Trash) is undoable. Option-Delete means to delete immediately, and so it is not undoable. This makes sense to me because the whole point is to efficiently delete lots of messages; storing them for undo would negate that benefit. However, I do think there is a bug because it still adds a no-op undo action.

@Michael This isn't a problem for IMAP though, where the delete operation is actually two steps, setting the \Deleted flag on a message, rendering it invisible in the default view, and then doing an EXPUNGE at some convenient time later to actually compress the mailbox, usually when switching view to another folder; as long as the undelete is done quickly enough, it really ought to work, as it once used to. When the "Trash" (or whatever your localisation calls it, irrespective of how it's actually stored on the server) folder is employed, Mail just makes a copy of the message using an IMAP copy before deleting the original message as just described. I liked the old behaviour because, although the Trash was often useful, I could often distinguish between messages that I might need to see again later, and those which I saw no future need for and which would only clutter the Trash folder. And I think the no-op undo is actually a manifestation of the pre-existing behaviour that is broken, so Apple could either bring back the old behaviour or just render the new behaviour official. I don't know whether Apple even supports the classical IMAP deletion model any more by offering a way to see deleted messages (not trashed) in the folder they are deleted in (crossed-out). I'll check the options, but I think it's still in there somewhere.

*speaking while jotting down notes with a pencil*

Do... not... use... Apple Mail... in Ventura...

*pauses, and then continues writing*

Do... not... use... Ventura.

@Bri The rot in Apple Mail started long, long before Ventura, sadly. It's been one step forward, two steps back, for quite a few steps. Unfortunately Apple Mail remains the only really credible native Mac app that still has first-class local folders, POP (yes, I know, but sometimes ...) and usable rules and scripting support. If MailMate could support reading from local mail spools in mbox or maildir, I'd use that, but it never seems to get traction. I think Mail probably peaked at its absolute best some time during the Snow Leopard release, probably 10.6.2.

And I've discovered that classic IMAP delete is no longer, and that it (and the Undo issue) were broken when Catalina released, which matches my recollection approximately.

@Sebby I'm still using Mojave, actually, and I constantly hit annoying bugs in Mail all the time. Nothing as bad as undo not working properly, but sometimes smart mailboxes stop updating, the number of unread messages gets stuck, accounts still updating, and all sorts of other annoying issues. I really want to use another mail client, but there don't seem to be any good alternatives!

Email has been around for how long now? And we still can't get it right...?

Leave a Comment