5f807bcf23
The editor re-ships the payload it loaded on open, so a sync or import that rewrote the same entry meanwhile was silently clobbered by Save — the last hole editorAbsorbChange doesn't cover, since those paths rewrite every field including the ciphertext. Save now compares the live entry against the baseline soState already keeps and asks before overwriting. Ciphertext comparison, so no decryption; changes the editor absorbed read as equal (editorAbsorbChange updates `original` too), so local tag/folder actions never trip it; the post-save reload re-baselines, so a second save is clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>