samschott / maestral

Open-source Dropbox client for macOS and Linux
https://maestral.app
MIT License
3.12k stars 64 forks source link

Recent Changes Filled With "Added" Entries for Edits to iWork Files #850

Closed parrotheadjb closed 1 year ago

parrotheadjb commented 1 year ago

After the latest version (1.7.1), the Show Recent Changes window gets filled with edits to Numbers/Pages/Keynote files. It shows them as "Added", but they're just being edited while open. These edits are not recognized as being part of one event, and thus fills the panel. This isn't how it used to work, nor is it how the Dropbox client functions. It should only show one entry for a single file being edited. Screenshot below.

Show Recent Changes Window
samschott commented 1 year ago

I can definitely reproduce this but don't think that this new behaviour.

File changes in Numbers and a few other apps make use of APFS safe-save which is an atomic way to save file changes. Safe-save is implemented in a way that results in the inode of the file changing: The old file is in fact replaced with a new file which contains the modifications. This article from Eclectic Light Co does a good job at explaining it.

As a consequence, Maestral does believe that it is dealing with a new / added file, since it actually is!

That being said, I can see some value in presenting this to the user as "Modified" instead of "Added". Note however that you will still see a long list of "Modified" events in that panel, one for each time that a file change was saved.

samschott commented 1 year ago

Correction to the above, it the old safe save mechanism which is currently still used by AppKit that will result in the old file being replaced by a new one. The safe save built in to APFS will actually preserve the inode.

parrotheadjb commented 1 year ago

Thanks for the clarification. That makes sense, and I hope Apple switches them to the new save format. In the meantime, how does the official Dropbox client handle this without creating "new" files to fill recent history?

samschott commented 1 year ago

In the meantime, how does the official Dropbox client handle this without creating "new" files to fill recent history?

They handle things a bit differently and indeed show "edited" in such cases. This might be either because they use Apple's File Provider API, which is an abstraction layer specific to macOS for file syncing applications, to be notified of changes. It might also be because they compare the OS-reported state against their own index, which is what I am planning to do in #855.

They also only present one row per item in their "sync history", i.e., they only show the last change for multiple consecutive changes to the same file.

parrotheadjb commented 1 year ago

Looking forward to the update. Appreciate the explanation.