There's a 3-second debounce. Don't hold me to that timeframe, that's the default now.
It doesn't read the file the instant the OS fires the event. It accumulates events and waits for 3 seconds of silence before reading. So if an editor does write-tmp → rename (atomic save), or a tool writes in chunks, we only read after the dust settles.
I accept there are cases if the editor crashes mid-state that you have a corrupted state but there was never a good state to save, so, arguably you'd just restore to what's on file and remove the corrupt partial write.
It's not bulletproof against a program that holds a file open and writes to it continuously for more than 3 seconds, but in practice that doesn't happen with text files by Agent tools or IDEs.
OP Here, hard to attempt to read and respond to this in good faith.
I think it would be dishonest if I didn't share that your approach to discourse here isn't a productive way of asking what insights I'm bringing.
If that's your concern, I agree I can't claim that nothing exists to solve pieces of the puzzle in different ways. I did my research and was happy that I could get a domain that explained the struggle -- namely unfucked.ai/unfudged.io -- moreover I do feel there are many pieces and nuances to the experience which give pause to folks who create versioning tools.
I'm open to engaging if you have a question or comment that doesn't diminish my motives, assumes I must operate in your world view "problems can only be solved once", and discourages people to try new things and learn.
Look, I'm grateful that you stopped by and hope you'll recognize I'm doing my best to manage my own sadness that my children have to exist in a world where folks think this is how we should address strangers.
> assumes I must operate in your world view "problems can only be solved once"
I never claimed anyone else has to agree with this. That's why people are allowed different opinions.
Nobody ought to give a damn what I think, the only opinion that matters about you is your own.
But just like I won't ask you adopt my view, I also won't go around patting people on the back for TODO apps.
My opinion: people ought to spend more time contributing to solving genuine problems. The world needs more of that, and less "I built a TODO app" or "Here's my bespoke curl wrapper".
Some use cases are better served by a system-wide process, I agree, but when I think source code, I think VSCodium. It is about configuration and starting/stopping. I don't mind the browser based web UI, but I do mind having to babysit one more (albeit super useful) tool. I'd rather have it as a VSCodium extension that would AUTOMATICALLY start when I load a workspace, configure the watched directory from that workspace, and stop when I close the workspace. So instead of me spending my attention on babysitting UNF, through VSCodium, UNF would just follow me wherever I go with zero configuration needed.
Well, if I have 10 different projects across 10 different drives, then, yes, I would need to babysit it. Furthermore, I wouldn't want it run it 24/7, but only when the files are actually going to be changed.
Thanks for the feedback. Didn't really consider folks may want a transient mode which shuts off after session completion, e.g. no edits in X timeframe. Interesting idea.
OP Here - I'm migrating the code from a monorepo to its own repo where I can share the source. We'll include a Debian setup in that transition with a build modification. It'll be in the automated releases on github so you can snag a build or build from source. I'll also update the site to clarify the existence of the source / builds for folks not using homebrew
Given the scale of code moving, I'll need to do a full manual regression so I can build, going forward, off the new setup.
My goal for that release is this Friday and if I miss that It'll be the next Wednesday.
We posted show the same day to solve the similar problems.
My solution https://news.ycombinator.com/item?id=47172238 (unfucked.ai) works with any agent and any file in the folder whether it's edited by the agent or anyone by tracking all file writes.
Amazing how this problem was top of mind for all of us at the same time!
That same concept utilizing a cow filesystem would be neat I think, you'd be able to skip your hashing and replace the sqlite with hardlinks, effectively versioning passively whenever something was written to
But now that I think about it, its too obvious not to exist already. Probably just dont know about it yet •́ ‿ , •̀
Op here - grateful you gave it a look but want to clarify TM can’t be used for this use case.
UNF is one install command + unf watch to protect a repo on every file change, takes 30s.
Time Machine snapshots hourly, not on every change, so you can lose real work between snapshots. This may have changed or I missed something but I reviewed that app to see if it was possible.
And while tmutil exists, it wasn’t designed to be invoked mid-workflow by an agent. UNF* captures every write and is built to be part of the recovery loop
reply