Running tuist generate on a project whose inputs are unchanged no longer rewrites project.pbxproj. Tuist was always serializing and overwriting the file even when the bytes were identical to what was on disk; it now serializes once, compares against the existing file, and only writes when something actually changed.
The practical effect is a quieter working copy: the pbxproj’s modification time and inode stay the same on no-op regenerations, so git status stays clean for it and file-watcher tools (and the Xcode IDE) stop seeing spurious changes. A real structural edit still rewrites the file exactly as before, so behavior on actual regenerations is unchanged.
Source: tuist/tuist#11500