That's persuasive, and it lines up with where the code already is. Today's baseline is literally one snapshot ezMD writes to disk. Extending that to a small set of pinned snapshots ("mark this as a milestone") is a much shorter path than teaching it to read packfiles, and when it breaks I can actually see why.
Drifting from true git state is a fair trade. Most people reading agent-written .md files don't care about the exact commit hash, they care about "what changed since the version I signed off on."
Thanks for thinking this through with me. If you want to try it when it lands, DM me and I'll send you a build.
I'd lean toward your own lightweight history for local folders. Parsing .git objects directly means you inherit every edge case git has, packed refs, gc, submodules, and you can't shell out to debug when it breaks. Your own snapshot layer is smaller surface area and fully within your control, even if it drifts slightly from "true" git state.
I shipped my first app today. 🎉
ezMD is a Markdown reader for the Mac, built for people who live in .md files that AI helped write. Open a whole folder or GitHub repo, tab between files like Chrome, and see every change an AI made highlighted.
Free on the Mac App Store, Pro unlocks GitHub, export, and change tracking.
Small correction on "last saw": it doesn't reset when you reopen. The baseline is written to disk, and it only moves when you save or explicitly dismiss the diff. So you can close ezMD, let an agent work overnight, and still see everything it changed the next morning.
On chosen commit: no git binary. ezMD is sandboxed for the Mac App Store, so it can't shell out to git at all. For GitHub repos the plan is to pull the commit straight from the GitHub API. For local folders that's the hard part, and I haven't decided between reading .git objects directly or keeping my own lightweight history. Curious which you'd trust more.
@Joshua_WD Thank you, that means a lot.
That's exactly the gap I kept hitting. Today it diffs against the version you last saw. Diffing against a chosen commit is next on my list.