Release v18.5.0

Another release :partying_face: Thank you so much to everyone who contributed to this one!

I’m not posting the changelog on the blog this time. I’d rather keep them here, and post more interesting things there!

Fixes for fish 4.0

Fish 4.0 was released with a few breaking changes that affected our shell integration. These should be resolved with 18.5.

Atuin Scripts

These will also be getting a post of their own! I’ll also be updating the docs asap. Atuin Scripts allow you to build, sync + execute scripts with Atuin.

Scripts can be built from shell history

atuin scripts new --help
Usage: atuin scripts new [OPTIONS] <NAME>

Arguments:
  <NAME>

Options:
  -d, --description <DESCRIPTION>
  -t, --tags <TAGS>
  -s, --shebang <SHEBANG>
      --script <SCRIPT>
      --last [<LAST>]              Use the last command as the script content Optionally specify a number to use the last N commands
      --no-edit                    Skip opening editor when using --last
  -h, --help                       Print help

Creating a script out of the last command ran

Running

atuin scripts new --name my-script --last

will open up your editor with the last command pre-loaded. Save and quit the editor, and the script is saved to your account :sparkles:

atuin scripts list

You can then execute the script with atuin scripts run <name>

Scripts can be created from stdin, from file, or interactively from your editor

Variables

We also support variables within scripts. Specify those with Jinja2-style templating, for example

echo "Hello {{name}}"

Running the script will prompt the user to provide a value for the variable. Alternatively, variable values can be provided from the CLI interface

atuin scripts run my-script -v name=ellie -v foo=bar -v key=value

We have a bunch planned for these, including the ability to create them interactively, include them in the search TUI, and more. Let me know what you think!

Bug Fixes

  • (1289) Clear terminal area if inline (#2600)
  • (bash) Fix preexec of child Bash session started by enter_accept (#2558)
  • (build) Change atuin-daemon build script .proto paths (#2638)
  • (kv) Filter deleted keys from kv list (#2665)
  • (stats) Ignore leading environment variables when calculating stats (#2659)
  • (wrapped) Fix crash when history is empty (#2508)
  • (zsh) Fix an error introduced earilier with support for bracketed paste mode (#2651)
  • (zsh) Avoid calling user-defined widgets when searching for history position (#2670)
  • Add .histfile as file to look for when doing atuin import zsh (#2588)
  • Panic when invoking delete on empty tui (#2584)
  • Sql files checksums (#2601)
  • Up binding with fish 4.0 (#2613) (#2616)
  • Don’t save empty commands (#2605)
  • Improve broken symlink error handling (#2589)
  • Multiline command does not honour max_preview_height (#2624)
  • Typeerror in client sync code (#2647)
  • Add redundant clones to clippy and cleanup instances of it (#2654)
  • Allow -ve values for timezone (#2609)
  • Fish up binding bug (#2677)

Documentation

  • Update logo and badges in README for zh-CN (#2392)

Features

  • (client) Update AWS secrets env var handling checks (#2501)
  • (health) Add health check endpoint at /healthz (#2549)
  • (kv) Add support for ‘atuin kv delete’ (#2660)
  • (wrapped) Add more pkg managers (#2503)
  • (zsh) Try to go to the position in zsh’s history (#1469)
  • (zsh) Re-enable bracketed paste (#2646)
  • Add the --print0 option to search (#2562)
  • Make new arrow key behavior configurable (#2606)
  • Use readline binding for ctrl-a when it is not the prefix (#2626)
  • Option to include duplicate commands when printing history commands (#2407)
  • Binaries as subcommands (#2661)
  • Support storing, syncing and executing scripts (#2644)
  • Add ‘atuin scripts rm’ and ‘atuin scripts ls’ aliases; allow reading from stdin (#2680)

Miscellaneous Tasks

  • Remove unneeded dependencies (#2523)
  • Update rust toolchain to 1.85 (#2618)
  • Align daemon and client sync freq (#2628)
  • Migrate to rust 2024 (#2635)
  • Show host and user in inspector (#2634)
  • Update to rust 1.85.1 (#2642)
  • Update to rust 1.86 (#2666)

Performance

  • Cache SECRET_PATTERNS’s RegexSet (#2570)

Styling

  • Avoid calling unwrap() when we don’t have to (#2519)

Build

  • (nix) Bump flake.lock (#2637)

Flake.lock

12 Likes

Thanks a lot for the fish 4.0 fix, @ellie!

4 Likes

Congrats on the Release!

atuin scripts looks like it will be amazing for syncing a full shell environment! I see you put up the blog post now as well: Atuin Scripts: Shareable, Syncable Shell Snippets

The current feature set looks like it’s mainly targeting simple scripts that fit into a few lines and that don’t benefit much from diffing/change tracking/full editor support.

Is the plan to mainly target short shell “snippets” or longer complex scripting/runbooks?

1 Like

Correct! Although it is possible to use a full editor, and we store every version. So if there’s enough interest it could be expanded pretty significantly.

Currently somewhere between snippets and larger scripts - the kind of thing you might store in your own dotfiles. Something else in the works for runbooks, though scripts definitely fit in there nicely

1 Like