Testing release for the 19th week of 2024
Caveats
This is a pre-release, and is not as tested as a production build
- It may not always be easy and without manual steps to downgrade from a weekly build to the last stable. It will be possible to upgrade automatically to the next stable after a weekly.
- Weekly builds are more likely to contain bugs or regressions. They are unlikely to lose data, but do be cautious when running the bleeding edge.
- Weekly builds may contain functionality not yet in a production release. Please let us know what you think!
Download
You can download binaries here: Release · atuinsh/atuin@ce67e52 · GitHub
Download, extract, and put atuin
somewhere in your PATH.
Alternatively, run
cargo install --git https://github.com/atuinsh/atuin atuin --tag weekly
Note: you will now require the protobuf compiler to be installed on your system to build from source. This can be installed with
brew install protobuf
on macOS, and
apt install -y protobuf-compiler
on Debian/Ubuntu/similar.
Read more here
Changes
feat(daemon): add support for daemon on windows (#2014)
fix: add incremental rebuild to daemon loop (#2010)
fix: add protobuf compiler to docker image (#2009)
feat: add background daemon (#2006)
fix(config): add quotes for strategy value in comment (#1993)
fix: adapt help to `enter_accept` config (#2001)
feat(ui): scroll history infinitely (#1999)
chore(deps): bump serde_with from 3.7.0 to 3.8.1 (#2002)
chore(deps): bump serde_json from 1.0.115 to 1.0.116 (#2003)
chore(deps): bump lukemathwalker/cargo-chef (#2004)
fix(dotfiles): allow clearing aliases, disable import (#1995)
refactor: preview_auto to use enum and different option (#1991)
chore(deps): flake.lock: Update (#1992)
feat(history): create atuin-history, add stats to it (#1990)
feat(ui/dotfiles): add vars (#1989)
chore(deps): bump rustix from 0.38.32 to 0.38.34 (#1986)
chore(deps): bump unicode-width from 0.1.11 to 0.1.12 (#1987)
chore(deps): bump debian (#1988)
perf(nushell): use version.(major|minor|patch) if available (#1963)
chore(deps): bump typed-builder from 0.18.1 to 0.18.2 (#1967)
chore: add some more debug logs (#1979)
feat(dotfiles): support syncing shell/env vars (#1977)
fix(ci): release workflow (#1978)
Testing
For now, alias importing has been disabled. There are too many issues with certain shell configs, and I need a reliable way of executing a command and getting the output in an interactive shell session. I’m currently seeing what I can do with a pty, and how any extrenuous output can be trimmed
Syncing shell/env vars
Along with aliases, we can now sync global env or shell vars. These can be set with a similar interface to aliases
atuin dotfiles var set <NAME> <VALUE>
By default, this will export the var. If you would not like to export it, pass --no-export
, or -n
Vars can be listed
atuin dotfiles var list
or deleted
atuin dotfiles var delete <NAME>
Here are some of mine, for example
I’d like to formalize workspaces a little more in the future (beyond just a filter on search), so scoping vars and aliases by workspace would be a pretty cool thing to have.
Daemon
Discussed a bunch in the daemon thread, but Atuin can now sync with a background daemon. A long time ago I decided to sync in a forked process after the command completes - this was to avoid complexity, and I thought it would be Good Enough.
It has been! However, there has been issues with certain filesystems, and this method requires that we write to sqlite before any commands can run. In order to minimize any possible latency there, the daemon runs everything in the background.
It also means that sync is not tied to shell activity. Remote machines can have your full history and up-to-date dotfiles from the second you ssh into them (next: realtime?)
To configure the Atuin daemon:
[daemon]
## Enables using the daemon to sync
# enabled = false
## How often the daemon should sync in seconds
# sync_frequency = 300
## The path to the unix socket used by the daemon (on unix systems)
## linux/mac: ~/.local/share/atuin/atuin.sock
## windows: Not Supported
# socket_path = "~/atuin.sock"
## The port that should be used for TCP on non unix systems
# tcp_port = 8889
You’ll then need to run atuin daemon
somewhere. I currently have it in a tmux session, with ATUIN_LOG=info atuin daemon
. The intent is for this to end up as a systemd unit/similar, however for now I’d like to keep it as simple and visible as possible. We’ll probably have some sort of integration to automatically set up the services on most platforms.