Skip to content

The right column shows what the agents did to your files - #43

Merged
keirsalterego merged 1 commit into
identra-dev:mainfrom
keirsalterego:feat/the-right-column-shows-what-changed
Aug 2, 2026
Merged

The right column shows what the agents did to your files#43
keirsalterego merged 1 commit into
identra-dev:mainfrom
keirsalterego:feat/the-right-column-shows-what-changed

Conversation

@keirsalterego

Copy link
Copy Markdown
Contributor

Identra ran four agents editing your repository and gave you no way to see what they touched. The task board showed what they claimed, the memory showed what they decided, and finding out what actually changed meant opening a terminal and typing git status — inside the app you opened so you would not have to.

This is the largest remaining gap from the reference teardown's layout comparison, and it is the one that is embarrassing rather than merely missing.

How

identra-core::changes shells out to git, the way worktree.rs already does. No new dependency, and no second idea of what a repository is: the numbers in the panel are the ones you get typing the same commands in the terminal one pane over. A library would be faster and would give the panel a way to disagree with the terminal beside it.

Four things that are not obvious

Untracked files are in the list. A file an agent created and never added is the most interesting row here — and the one git diff will not show you at all. Filtering to tracked changes would have hidden exactly the work you did not ask for.

-z everywhere. Git quotes and escapes paths with spaces or newlines in its default output, so a line parser both mangles ordinary filenames and can be made to see rows that are not there by a file with a newline in its name — which an agent can create. NUL separation has no escaping.

A binary file gets no line count rather than zeroes. Git says -, meaning it will not diff this. +0 −0 on a 4MB image an agent just wrote reads as nothing happened.

Two numstat calls, not git diff HEAD. A file can be partly staged and the panel shows one row per file, so the row has to be how far the file has moved from HEAD — both halves added up. diff HEAD reports nothing at all for a path staged as a rename.

The branch line

Says which branch, and says so when the checkout is one of Identra's isolated worktrees. A helper's diff read as your own branch is how someone commits the wrong thing.

It is read-only, and that is a decision rather than a first cut

Staging without a commit control is half a gesture, and the terminal that finishes it is one pane away.

Revert is the real reason. Discarding uncommitted work is the only operation in this app that destroys something no undo brings back, and it would sit one click from a list you scan quickly, describing files an agent wrote while you were not watching. That is a decision to make on its own, not one to smuggle in behind a panel.


On provenance: no Superset code was read or ported for this. Superset is Elastic License 2.0 and cannot enter an Apache-2.0 tree. This was built from the clean-room behaviour teardown in identra-ops (docs/research/reference-superset.md §3: study behaviour, reimplement in Rust, never paste), which describes what the column does, not how they do it.

Five tests, including the porcelain shapes that have to agree with git rather than with my reading of the manual, and one against a real repository covering an edit, an untracked file and a non-repository folder.

cargo fmt, clippy --all-targets, 10 test suites, tsc, bun test and the frontend build are clean.

Identra ran four agents editing your repository and gave you no way to see what they touched. The
task board showed what they claimed, the memory showed what they decided, and finding out what
actually changed meant opening a terminal and typing `git status` — inside the app you opened so
you would not have to.

`identra-core::changes` answers it by shelling out to git, the way `worktree.rs` already does. No
new dependency, and no second idea of what a repository is: the numbers in the panel are the ones
you get typing the same commands in the terminal one pane over. A library would be faster and would
give the panel a way to disagree with the terminal beside it.

Four things in it are not obvious:

**Untracked files are in the list.** A file an agent created and never added is the most
interesting row here and the one `git diff` will not show you at all. Filtering to tracked changes
would have hidden exactly the work you did not ask for.

**`-z` everywhere.** Git quotes and escapes paths with spaces or newlines in its default output, so
a line parser both mangles ordinary filenames and can be made to see rows that are not there by a
file with a newline in its name — which an agent can create. NUL separation has no escaping.

**A binary file gets no line count rather than zeroes.** Git says `-`, meaning it will not diff
this, and "+0 −0" on a 4MB image an agent just wrote reads as nothing happened.

**Two numstat calls, not `git diff HEAD`.** A file can be partly staged and the panel shows one row
per file, so the row has to be how far the file has moved from HEAD — both halves. `diff HEAD`
reports nothing for a path staged as a rename.

The branch line says which branch, and says so when the checkout is one of Identra's isolated
worktrees. A helper's diff read as your own branch is how someone commits the wrong thing.

**It is read-only, and that is a decision rather than a first cut.** Staging without a commit
control is half a gesture and the terminal that finishes it is one pane away. Revert is the real
reason: discarding uncommitted work is the only operation in this app that destroys something no
undo brings back, and it would sit one click from a list you scan quickly, describing files an
agent wrote while you were not watching. That is a decision to make on its own, not one to smuggle
in behind a panel.

Five tests, including the porcelain shapes that have to agree with git rather than with my reading
of the manual, and one against a real repository covering an edit, an untracked file and a
non-repository folder.

cargo fmt, clippy --all-targets, 10 test suites, tsc, bun test and the frontend build are clean.
Copilot AI review requested due to automatic review settings August 2, 2026 04:33

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@keirsalterego
keirsalterego merged commit b90c272 into identra-dev:main Aug 2, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants