When DataMind Oda changes files in a turn, the end of the answer shows the changed-files card, and each listed file can be compared with its state before the turn. This page explains what Oda records, what stays out of the list, and how long the comparisons stay available.
The changed-files card
After a turn that changed files, the card appears with the closing message of your chat. Each row names a file with the lines the turn added and removed. A turn that changed nothing shows no card.
Point at a row to preview that file's comparison, or use Review this turn's changes in the sidebar to open the turn's changes in the side panel, comparing each file as it was when the turn started with how it ended. Review changed files describes the review view and its controls.
This card covers every file the turn changed. The files Oda chose to hand over are a separate list next to it; see Deliverables.
Each change also appears in the chat's transcript as a diff card. Those cards, and the rest of what commands print, are described in Command output, diffs and previews.
How Oda records a turn
Oda records changes for the chat you are working in, once per turn:
When a turn starts, Oda notes the current state of the folder the chat works in.
Before Oda changes a file with its own file tools, it keeps a copy of the file as it was. Each file is copied once per turn, so several edits to one file count once.
When the turn ends, Oda compares the folder with its state at the turn's start and builds the list of changed files.
The list arrives in the chat as the card, and the content behind each comparison is stored for later viewing.
Note
These records are Oda's own. Taking them never changes your repository or your saved work, and work you had already saved before the turn started never enters the list.
What appears on the list
In the folder. Every file the turn changed in the chat's workspace folder is listed.
Commands. Edits made with commands appear when they are inside a Git repository: Oda compares the whole repository when the turn ends. In a folder outside Git, only files changed with Oda's own file tools are recorded.
Outside the folder. A file outside the workspace folder can be listed too, named by its path, when Oda changed it there.
Ignored files. A file your Git setup ignores can still be listed and compared when Oda edited it.
Nested repositories. Changes inside a nested repository or a submodule are never listed; the nested folder itself can appear as a single changed entry.
Temporary files. Files in the system's temporary area stay out, unless they sit inside the repository.
Other chats. When two chats share a folder, an edit the other chat makes with Oda's file tools is not added to this chat's card unless this chat changed the same file. A helper chat Oda starts for part of the work is not recorded on its own.
When a file cannot be compared
Binary files. An image, an archive or another binary file is listed without line counts, and a line-by-line comparison cannot be shown.
Large files. A file larger than 2 MiB is listed without counts, and no comparison is kept for it.
Whole-file replacement. A very large line comparison can be simplified: instead of matched lines, the view shows every old line removed and every new line added. This happens when a comparison runs longer than 100 ms.
What Oda keeps, and for how long
Oda keeps the content behind the comparisons for the 100 most recent turns of a chat, and for 30 days from when a turn was recorded.
When that content is retired, the card stays: the list is still in the chat, and opening its comparison reports that the contents are no longer available.
With Oda's permanent storage in place, records survive a restart: reopen the conversation later and its cards are still there, and comparisons open again while their content is within the limits above.
If Oda runs without the permanent store, cards last only while the conversation stays open. If it runs without the content folder, a card returns after a restart but its comparison cannot be opened.
If part of the recording cannot run
Oda writes a line about it in its logs. These are the lines to know:
workspace-changes: git is unavailable; only file-tool edits are summarized - Oda cannot use Git on this computer, so only edits made with its own file tools are recorded. Command edits are not. If command edits need to be recorded, this computer needs a working Git installation.
workspace-changes: durable summaries unavailable: ... - Oda could not write the card to its permanent storage, so the card may not return after a restart. The turn itself is not lost.
workspace-changes: could not keep stored content: ... - the content behind a comparison could not be stored, so that comparison may not open later. The card itself still shows.
Limits at a glance
The standard setup uses these limits:
Reading a turn's folder: up to 30 seconds; if it runs longer, that turn records no changes.
Files on one card: up to 500, with the totals still covering every changed file, including any left off the list.
File size for a comparison: up to 2 MiB.
Line comparison time: up to 100 ms, then the whole-file replacement view.
Content retention: the 100 most recent turns of a chat, and 30 days from when a turn was recorded.
Questions, answered
Why did my turn show no changed files?
The list records changes in the folder the chat works in, once per turn. No card appears when the turn changed nothing, when a file was changed back to its earlier state by the turn's end, or when edits came only from commands in a folder Git does not track.
Which of my own edits appear on the card?
Edits made while a turn runs count towards that turn, including edits you make yourself. Work you had already changed and saved before the turn started never enters the list.
Are edits from terminal commands recorded?
Inside a Git repository, yes: Oda compares the whole repository when the turn ends, so an edit from a command appears like any other change. Outside Git, only files changed with Oda's own file tools are recorded, and Oda notes this in its logs. Files in the system's temporary area stay out either way, unless they sit inside the repository.
Why does a file have no line counts?
The file is binary or too large. A binary file cannot be compared line by line, and a file larger than 2 MiB is listed without counts and without a comparison. Both are still listed, so you can see that they changed.
Why does a comparison show the whole file replaced?
When a line comparison takes longer than 100 ms, Oda falls back to a simplified view: every old line shown as removed, every new line shown as added. Very large or complex changes can land here.
Why can't I open the comparison of an older turn?
Oda keeps the content behind comparisons for the 100 most recent turns of a chat and for 30 days from when a turn was recorded. When content is retired, the card stays in the chat, and the comparison reports that the contents are no longer available.
Do the cards survive restarting Oda?
With Oda's permanent storage in place, yes: reopen the conversation and its cards are there, and comparisons open again while their content is within the limits. If Oda runs without the permanent store, cards last only while the conversation stays open; without the content folder, a card returns after a restart but its comparison cannot be opened.
Does recording changes touch my Git repository?
No. Oda records changes through its own copies and comparisons. Your repository and your saved work stay as they are, and work you had uncommitted before the turn never enters the list.
Another chat shares my folder. Why is its change not on my card?
Each chat records its own changes. An edit the other chat makes with Oda's file tools is not added to this chat's card unless this chat changed the same file.
Why do changes inside a submodule not appear?
Changes inside a nested repository or a submodule are never listed; the nested folder itself can appear as a single changed entry, but what changed inside it is hidden.