Rendered at 23:42:00 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
Diti 1 days ago [-]
It’s fun to see the difference between the LLMs (or between the LLM and the person) before and after commit `3c275fdˋ. The project switches from big diffs with commit messages on day one, to smaller diffs with no commit messages besides the summary on day two (today).
Good idea though, I’ll ask Claude to make me the same but without the `fzf` dependency – Zsh’s “ZLE” is powerful enough.
overflowy 1 days ago [-]
Thanks. I also thought of skipping fzf, but it's old, battle‑tested, and does one thing exceptionally well. I doubt I could implement something better myself. The current implementation can handle hundreds of thousands of commands relatively fast (under 50 ms on my machine).
throw-the-towel 1 days ago [-]
Cool work, and I'd really appreciate a comparison to Atuin.
overflowy 13 hours ago [-]
Atuin is a venture‑backed product, while zhist is like 1k lines of Go code you could probably read in one sitting.
I tried Atuin before and liked it, but the idea of a background service sending my command history to servers I don't control never sat well with me. A small boring tool that runs locally doesn't care about revenue nor will have to sunset any feature hehe
Atuin works with several shells, zhist only supports zsh because that's what I use. Both Atuin and zhist record each command together with its working directory and exit status. They both offer global and per‑directory modes. If I remember correctly, Atuin did not provide a quick way to delete an entry, whereas zhist assigns Ctrl‑D for that purpose (or Ctrl+X if you want to remove all occurrences of that command). Atuin also records how long each command ran, zhist does not but it will in the next release. Under the hood, Atuin uses SQLite, runs a daemon, and uses a sync protocol. zhist is a single binary that writes to a flat JSON file, with no service and no sync feature. With zhist, if you want to sync your history to another machine, you'd have to rsync the JSON file.
throw-the-towel 44 minutes ago [-]
Thank you for the detailed answer!
idbnstra 1 days ago [-]
what is this used for?
overflowy 1 days ago [-]
It replaces the default Zsh history functionality. It adds fuzzy searching, tracks the command's exit code and the directory it was launched from. There's a short demo video in the README.
Good idea though, I’ll ask Claude to make me the same but without the `fzf` dependency – Zsh’s “ZLE” is powerful enough.
I tried Atuin before and liked it, but the idea of a background service sending my command history to servers I don't control never sat well with me. A small boring tool that runs locally doesn't care about revenue nor will have to sunset any feature hehe
Atuin works with several shells, zhist only supports zsh because that's what I use. Both Atuin and zhist record each command together with its working directory and exit status. They both offer global and per‑directory modes. If I remember correctly, Atuin did not provide a quick way to delete an entry, whereas zhist assigns Ctrl‑D for that purpose (or Ctrl+X if you want to remove all occurrences of that command). Atuin also records how long each command ran, zhist does not but it will in the next release. Under the hood, Atuin uses SQLite, runs a daemon, and uses a sync protocol. zhist is a single binary that writes to a flat JSON file, with no service and no sync feature. With zhist, if you want to sync your history to another machine, you'd have to rsync the JSON file.