Just my opinion. I'm still looking for a better editor with "auto-save" commits, or maybe a VSCode plugin. It should just wrap around my build command (or let me pass something), and if it builds, it should do this in the background as a snapshot. I think defining a good build in the context of runtime behavior is hard. I don't necessarily need all of the intermediate states it in git, though I don't mind if this tool uses git to power the snapshots. Maybe there's a world where version control is abstracted
Vim's non-linear undo[1] history is hard to beat. Set undofile [2] and you are done with local versioning. For visualisation of the undo tree, install undotree [3]
[1] https://vimhelp.org/undo.txt.html#undo