When DataMind Oda changes files in a turn, each change appears in the chat as a step of its own, and the answer ends with the changed-files card, where any file can be compared with the state it had when the turn started. This page covers the card, the review in the side panel, the change on each step, and what Oda records and keeps. Delivered files covers the files Oda hands over.
The changed-files card
After a turn that changed files, the card sits under the closing message of your chat. Its header reads Edited {count} files and totals the lines the turn added and removed.
Each row names one file with its line counts. A binary file is labelled binary, and a file too large to compare is labelled too large; both are listed without line counts.
Four files show before the fold. Choose All {count} files to show the rest, or Collapse to fold them back.
The card appears only when the turn's recorded changes list at least one file. A turn that changed nothing shows no card.
This card covers every file the turn changed. The files Oda chose to hand over are a separate list next to it.
Choose the card header, named Review this turn’s changes in the sidebar, or a file row, named View changes to {name}. Enter or Space on a row does the same.
The review opens as a tab in the side panel next to the chat, titled Review · turn {turn}.
The header opens the review at the first file, and a row opens it at that row's file. Opening the review itself needs nothing but Oda; actions that open a file in another app are covered below.
Preview a comparison beside the card
Point at a file row for half a second and a single-column preview of that file's comparison opens beside the card, showing the file's path and its before and after lines.
Move onto the preview and it stays open; move away or press Escape and it closes.
If the preview cannot be read, use Retry.
Pointing at the card header replaces its counts with the Preview in sidebar hint.
Compare before and after in the review
The review shows the selected file as it was when the turn started next to how it ended. New reviews start side by side.
The file selector, named Choose the file to review, lists the turn's files with their added and removed counts (+N and -N).
The view control switches the layout and names its next state in its tooltip: Switch to split view or Switch to unified view. The wrap control turns long-line wrapping on and off: Enable line wrap or Disable line wrap.
In the side-by-side layout, the two columns scroll together.
Each review tab keeps its own view and wrap choices; a new review opens side by side, without wrapping.
What a comparison can say
Reading changes… while the file is being read.
Created in this turn for a file the turn created, and Deleted in this turn for a file it removed.
Both sides hold the same lines when the two sides match.
Binary file; changes cannot be shown and File too large; changes cannot be shown when a line comparison is not possible.
Line comparison timed out; shown as a whole-file replacement when a comparison takes too long. Oda then shows every old line as removed and every new line as added.
Showing the first {count} lines when the comparison is longer than the view shows; the view shows at most 5,000 lines.
Could not read the changes, with Retry, when the comparison cannot be read.
The contents of this turn’s changes are no longer available when the stored comparison has been retired. What Oda keeps, and for how long covers what is kept.
Open the file itself
Open the whole file in the sidebar, named Open {name} in sidebar, opens the current file as a read-only preview in the side panel; Preview workspace files covers the preview and its viewers.
Where Oda can reach a desktop on your computer, the review adds actions that open the file in its usual app or show it in the file manager, and their confirmation stays for about five seconds. Without a desktop these actions are not shown, and the sidebar open remains. Open files and folders in other apps describes the controls.
Each change as a step
While Oda works, every file change also appears in the chat as a step of its own: an Edit or a Write, named with the file's path. The step rows themselves are described in Oda's steps and tool results.
The step's row names the file by its path and carries the size of the change beside it, for example +1 -0: one line added, none removed.
Opening the step shows the change itself: the lines it removed and the lines it added. When there is no earlier text, for example when Oda creates a file or rewrites it whole, nothing is shown as removed.
A long change folds its middle: the beginning and the end stay in view, and a control on the card tells you how many lines are hidden. When two parts of the change sit far apart in the file, ⋯ marks the jump between them. Step cards in chat covers the folding and the Copy control.
The card's footer repeats the totals and counts the files the comparison covers, for example └ +1 -0 · 1 file.
The comparison shows the change as the step recorded it; later changes to the file do not alter it.
While the change runs, and once it settles
While the step runs, you can open it to read the change Oda set out to make, taken from its recorded request. An empty earlier text means the whole file is the change.
When the step settles, the comparison is replaced by the change that was actually applied.
A Write that settles without an applied change in its result falls back to the change it intended: a file Oda created or rewrote whole still shows its comparison.
An Edit whose applied change cannot be read from the result keeps its plain step: no comparison is drawn, because Oda does not guess.
When a change fails or is stopped
A failed change replaces the row's path with the first line of the failure, so the cause reads without opening the step. For example, when the text Oda was replacing is no longer in the file, the line reads old_string was not found in "<path>".
A failed change keeps no comparison and no totals, and its path stops being a link.
When a failure carries no message of its own, the line falls back to the error's name and code, for example ToolError: sandbox_denied.
A stopped change keeps the file's path as plain text and is marked as stopped for screen readers; it keeps no comparison either.
A change refused because its text no longer matches changes nothing: the file stays as it was. File safety and error messages explains each message and what to do about it.
Click the path to open the file in the side panel preview beside the chat. A change step attaches its comparison as it opens, so the preview shows what changed; when the step recorded no change to show, the file simply opens.
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, including edits you make yourself while the turn runs.
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 does not record a list of 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.
Lines in a review comparison: up to 5,000.
Content retention: the 100 most recent turns of a chat, and 30 days from when a turn was recorded.
Questions, answered
How do I open a turn's changes for review?
Choose the card header, or any file row; on a row, Enter or Space works too. The review opens in the side panel, titled Review · turn {turn}. The header opens it at the first file, and a row opens it at that row's file.
How do I switch between side-by-side and single-column comparisons?
Use the view control in the review. A new review starts side by side; the control switches to the unified view and back. Its tooltip names the next state: Switch to split view or Switch to unified view.
Why does a comparison stop partway through a file?
A comparison shows at most 5,000 lines, and the note Showing the first {count} lines tells you when a file is longer than that. Use Open the whole file in the sidebar to read the rest in a full preview.
Why is there no action to open the file in its usual app?
That action needs a desktop Oda can reach on your computer. Without one, the review keeps the sidebar open only, and the app and file-manager actions are not shown. Open files and folders in other apps describes them.
What does +1 -0 on a change mean?
One line was added and none was removed. The number after the + counts the lines the change added, and the number after the - counts the lines it removed. The same totals repeat in the step card's footer.
Why did my failed change lose its comparison and totals?
A failed change keeps no comparison: the first line of the failure takes the summary's place, and the totals go with it, so you see the cause without opening the step. To reach the file, ask Oda to read it, or open it from your computer's file manager.
Why did my turn show no changed files?
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.
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.
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 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.
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.