This is cool! I've thought many times that something like this would be useful, as previous commands seem to never be in history when you need them again, especially across multiple terminal panes/tabs.
More details on how the encryption for server sync works would be helpful for assessing security.
> More details on how the encryption for server sync works would be helpful for assessing security.
Good point - I'll add something more detailed to the README shortly
For now though, it's fairly simple. Almost all of the information is first serialized with MessagePack, and then encrypted using libsodium's secretbox. This blob is what ends up being POSTed to the server
The only other information available to the server operator is
- the username/email address/hashed password of the user
- the UUID of this history item
- the history timestamp (needed for sync at the moment)
- the hash of the machine's hostname (also useful for sync)
I think mcfly's ( https://github.com/cantino/mcfly ) prioritization engine is still the killer feature for my purposes, but the sync server and timing display are both fantastic ideas, and I'd love to see them all together. Mcfly's also Rust+SQLite, even....
I git commit my `fish_history` file such that I have a history of commands going back 7 years. It's been the single best tool of my career and the single greatest showcase of the power of an outboard brain I've struggled to prove with other solutions such as org-brain or org-roam.
More details on how the encryption for server sync works would be helpful for assessing security.