Keep saved meeting dates when the app rewrites them - #1859
Merged
Merged
Conversation
Speaker renames, merges, discards, meeting renames, summaries and restyles rewrote saved Markdown with a plain atomic write. That swaps in a new file, so Finder and note apps showed old meetings as created today, and a rewrite with identical bytes still bumped Modified. Add TranscriptFileRewrite: skip the write when the bytes already match, otherwise write atomically and put the original creation date back. Modification date still moves on a real change so the MCP index and Home's cache notice it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011A6EG6MJcFSNvDLMx3YEH9
… fix Daily dictation files had the same bug: every new dictation appended by rewriting the whole file, and delete/edit/undo rewrote it too, so Created reset each time. Route those through TranscriptFileRewrite, and let DictionaryPastMeetingFix use it instead of its own copy. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011A6EG6MJcFSNvDLMx3YEH9
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by Justin · project thread
Why
Before: a user reported 39 of 90 old meetings suddenly showing "Created" as today in Finder and his notes app, with their text intact. Every app path that edits a saved meeting after the fact (speaker rename, merge, discard, deferred naming, meeting rename, quick summary, restyle, summary sidecar rename) used a plain atomic write. That swaps in a brand-new file, so the creation date resets. A rewrite with identical bytes still bumped Modified too. Daily dictation files had the same problem: every new dictation, delete, edit and undo rewrote the whole day file.
After: those paths skip the write when nothing changed, and when something did change they keep the file's original creation date. Modified still moves on a real edit, on purpose, since the MCP index, Home's capture cache and the dictionary-fix scan all use it to spot changes.
The user thinks he merged a couple of speakers around then, which fits: a merge rewrites every meeting that speaker was in.
Product Impact
meetings/dictation/agent artifactsmeeting reliabilityWhat changed
TranscriptFileRewriteinSources/TranscriptedCore/Storage/: skip identical bytes, else atomic write + restore creation date.RetroactiveSpeakerUpdater,SpeakerIdentityMutationService,SpeakerNamingCoordinator(rollback),HomeMeetingRename,MeetingTranscriptStyler,MeetingQuickSummaryWriter,MeetingArtifactRenamer(summary sidecar).DictationTranscriptWriterappend andDictationTranscriptStoredelete/edit/undo switched to it.DictionaryPastMeetingFix.writePreservingCreationDatenow calls the helper instead of its own copy.SHARED_TEST_STORAGE_SOURCES(fast tests + E2E smoke) and the home-captures benchmark script.TranscriptFileRewriteTests(StorageTests) and a merge+rename creation-date test inRetroactiveSpeakerUpdaterTests. The existing dictionary-fix fast test already checks creation date is kept.How I checked it
bash scripts/dev/linux-checks.sh(48 passed)check-source-pins.py --changed-onlypassesbash build.sh --no-open,bash run-tests.sh,swift test,bash run-integration-smoke.sh,bash run-e2e-smoke.sh: CIChecks I could not run, and why:
Mac or hardware test still needed?
mainit jumps to now).Risk Review
Notes
Finder's "Date Added", Finder tags and other xattrs still don't survive a real atomic rewrite (pre-existing). Creation date is what sorting and most note apps use. Skipping no-op writes means those files aren't touched at all.
🤖 Generated with Claude Code
https://claude.ai/code/session_011A6EG6MJcFSNvDLMx3YEH9