Skip to content

v0.4.0

Latest

Choose a tag to compare

@sjh9714 sjh9714 released this 17 Aug 08:56

Finishes #1.

Reads the workspace against HEAD. Counting the shell writes in 0.3.1 was the honest floor. Naming the files is what was actually asked for, and that needs a different source than the session log, because a shell's tool/result carries no file information at all.

The two readings stay separate on purpose. They disagree in both directions and each disagreement is information. git sees what a shell wrote and the fold cannot. The fold sees a write that was later reverted, and a refusal, and git cannot. One merged number would hide both.

The projection stays a pure fold. This is a host service and one route, POST /what-changed/worktree, behind the same fences dsh-git-graph puts on its own: loopback only, POST only, application/json only, and the browser-named path canonicalized and matched against the workspace registry before git runs anywhere. It only ever reads.

Porcelain fixtures are transcribed from real git output, not guessed. Under -z a rename spends two status fields, the new path in the record and the old path bare after it, and numstat prints an empty inline path for a rename and spends two more. A binary file's - counts are dropped rather than reported as zero, since zero would say it did not change.

Verified in a live session. The agent ran echo > NOTES.md, sed -i and rm README.md, all through bash. The panel admits three unnameable shell writes, and git names README.md deleted, greet.js modified +1 -1, and NOTES.md untracked. The route's fences were exercised against the running server: a path outside the registry is refused, GET is 405, a non-JSON content-type is 415.