Skip to content

Releases: atuinsh/atuin

v17.0.0

26 Oct 07:16
1a20afe
Compare
Choose a tag to compare

A new release! Thank you so much to everyone that contributed

Self hosted changes

We are no longer building docker images for main, and all images are now tagged either by release (17.0.0) or by short commit sha (1a20afe).

We advise that users stick to running tagged releases, and do not track an unstable branch. If you wish to run potentially unstable and unreleased code, then please do watch the repo and keep your install up to date!

We now also build docker images for ARM! This has been an issue for a long time for us, as GitHub does not provide ARM runners + emulation is very very slow. Thank you so much to @alexellis and @self-actuated for helping us out there!

enter_accept and keybinding changes

For a long time, we have been asked about Atuin requiring two enter presses - once to select the search item, and then once more to run it from your shell. While some users were happy with this, many felt that the additional keypress slowed them down unnecessarily.

v17 introduces the enter_accept config option. If set to true, pressing enter will immediately select and execute the search result selected. If you'd rather select the item and then edit it in your shell, you can press tab instead.

This is enabled by default for new users only. Existing users will need to edit their config. Currently, this does not support NuShell.

We have also temporarily disabled the "up" arrow keybinding by default for NuShell, while awaiting an upstream fix, see #1329 for more.

What's Changed

New Contributors

Read more

v16.0.0

07 Aug 10:35
0d5332a
Compare
Choose a tag to compare

Announcing a new release of Atuin! v16 is out now.

This has been an interesting one. Two pretty core parts of the Atuin sync have
remained the same for the past couple of years, and performed better than I
ever anticipated. I'd always intended to replace the sync, but initially just
released something that worked "fine".

We've had issues though. In some rare circumstances, sync just won't complete.
In others, it requires atuin sync -f, which attempts to upload/download all
history again in case some has been missed. As we grow, it becomes increasingly
important that we revisit sync and ensure it is as reliable as possible - with
lots of users, "rare" circumstances happen more often.

In this release we're introducing the "key value store". This is a new feature,
built on top of new sync and new cryptography.

The reasoning behind this is two-fold - we'd like to extend Atuin's sync and
storage capabilities, but also build a sync protocol we can truly rely upon.

Conrad did an excellent job explaining the
crypto
we are using for this feature,
and I'll be following up with a similar post about the new sync protocol soon!

The goal here is to first prove that this crypto + sync are stable and
scalable, and then switch history sync over. Once done, we should be syncing
history much faster, with fewer errors, and with less data transferred. Your
data will also be kept safe with newer crypto algorithms, and we will have the
ability to upgrade and replace them as needed.

Community

kv store

So first! Atuin v16 adds a kv store. This can be used for storing small
snippets of text and syncing them encrypted across machines. Env, small shell
scripts, whatever you can fit into 100KiB. After a sync, all kv pairs you set
will be available across machines.

Presently this should be considered "beta". Data loss is unlikely, and it has
been tested pretty thoroughly. However we don't make any promises for the
longer-term life or scalability of this, and you probably don't want to go
putting production secrets in there. There are many improvements we can make
to performance and user experience here.

We will also be using it to generally enhance Atuin (eg, synced config, host
aliases, etc). With v17, we hope to polish this off and release it fully.

Please do give it a try and let us know what you think!

# set foo = bar
atuin kv set -k foo bar

# kv supports namespaces
# set foo = bar in the "nsp" namespace
atuin kv set -n nsp -k foo baz

atuin kv get foo => prints "bar"

atuin kv get -n nsp foo => prints "baz"

# run sync to ensure you are up to date
atuin sync

Workspaces

Atuin now has workspaces! This is a pseudo filter-mode, which automatically
enables when you are in a git repository.

To enable workspaces, try

workspaces = true

in your Atuin config. With workspace filtering enabled, Atuin will filter for
commands executed in any directory within a git repo tree! Filtering modes can
still be cycled with ctrl-r.

Self hosted

This release runs database migrations on both the client and the server, though
nothing touching the history tables. No dependency versions have changed.

GitHub org

Atuin now lives in an org! The project has grown a lot since I first released
it back in 2021, and it's reached the point where an org makes more sense. Please ensure
you update any references to https://github.com/atuinsh/atuin!

ARM Builds

For a long time, Atuin has lacked aarch64 builds, which has been in demand
(especially for M1 mac). Cross compilation was never very reliable for us, but
GitHub actions does not offer runners for ARM.

For this release I bought an older M1 mac, which is now setup as a runner on
the main branch. All future releases will have ARM binaries available.

Growth stats

Atuin sync continues to grow! api.atuin.sh, at time of writing:

  • serves 2300 registered users
  • stores 27m (or 35GiB) of shell history
  • averages around 100,000 new lines of history per day
  • sees 40 signups per week
  • gets 1200 MAU, 1000 WAU, and 800 DAU

This data is gathered only from what we can infer from usage patterns, which
are tracked in order to prevent abuse. Your data is end-to-end encrypted and
can only be read by you.

Full changelog

Read more

v15.0.0

28 May 18:41
9e3fa8b
Compare
Choose a tag to compare

Announcing a new release of Atuin! v15 is out now. This release is not particularly feature-heavy, instead we have focused on a number of bugfixes and improvements - with lots of new shiny things planned for v16.

Community

Sync changes

For the first time in a long while, we have made an adjustment to how sync functions. In the longer term, we intend on replacing our current sync algorithm with something that better handles consistency, but v15 should at least ship some performance improvements.

Older versions of Atuin used a fixed page size of 100. This meant that for each request, we could only upload or download 100 history items at a time. For larger histories, this meant a lot of HTTP requests + a fairly slow sync.

Atuin v15 ships a variable page size, defaulting to 1100. This is configurable on the server, via the page_size parameter. A smaller number of larger requests generally performs better in our testing.

For self hosted servers, please note that reverse proxies may require configuration changes to allow for larger requests.

What's Changed

New Contributors

Full Changelog: v14.0.0...v15.0.1

v14.0.1

16 Apr 11:32
7c07907
Compare
Choose a tag to compare

Releasing this now to get some fixes out - will write proper notes including this for v15 :)

Please note that this release had some issues with the binary builds, and as such they were delayed. Apologies for any issues caused!

Also - the deb build was based on a very slightly different branch, patch-deb. This included some fixes so that the package built correctly. It has no changes in the actual binary.

What's Changed

New Contributors

Full Changelog: v14.0.0...v14.0.1

v14.0.0

01 Apr 17:33
4e4fdb9
Compare
Choose a tag to compare

See the full release notes here! https://atuin.sh/blog/release-v14

v13.0.1

28 Feb 21:56
e4fde80
Compare
Choose a tag to compare

This is a patch release, and fixes user registration on Atuin Server. If you are self hosting Atuin, please update!

I'll credit the contributors to the other commits here in the blog post for v14 <3

What's Changed

New Contributors

Full Changelog: v13.0.0...v13.0.1

v13.0.0

26 Feb 21:23
fe5f728
Compare
Choose a tag to compare

Announcing a new release of Atuin! v13 is out now. Atuin allows you to easily search and sync your shell history across many machines.

You can update your installation via your system package manager, or by downloading the latest release from the release page.

We had a lot of changes in this release - I'll call out a few, but this is not exhaustive.

Crossterm

Deserving of a special callout, we now use Crossterm as our TUI backend - this has been a huge effort, and has taken almost a year. Thank you to Conrad for pushing through it, and @pdecat for your contributions!

In the future this will allow for things like (possible) Windows support, and only using a small part of the screen for the search UI. It also handles async input better.

Please let us know if you experience any issues!

New features

Pretty Stats

stats

While procrastinating writing his talk, Conrad added a new and improved stats display! Just run atuin stats to see your statistics. It'd be awesome to see what yours looks like, so please share it with us on Twitter or Discord!

Custom history list format

List history however you want! You can now specify the output format of atuin history list

Example

atuin history list --format "{time} - [{duration}] - {directory}$\t{command}"

See more on the docs page!

History filter

The history filter allows you to exclude commands from history tracking - maybe you want to keep ALL of your curl commands totally out of your shell history, or maybe just some matching a pattern.

This supports regular expressions, so you can hide pretty much whatever you want! Thanks for the PR @jbaiter

Configure it in your client-side Atuin config, for example

## Note that these regular expressions are unanchored, i.e. if they don't start
## with ^ or end with $, they'll match anywhere in the command.
history_filter = [
   "^secret-cmd",
   "^innocuous-cmd .*--secret=.+"
]

Mnemonic key (BIP39)

Previously, it was awkward to copy your Atuin key from machine to machine. Even more awkward to back it up!

We now use BIP39 to display your key in a nice + easily readable haiku-style format. Still - please don't share it!

Improvements

  • Better error messages
  • Nix install files + instructions
  • Exit when pushing the down arrow from the most recent entry
  • Refactor to support generic server-side databases
  • Make it easier to disable the ctrl-r and/or up arrow bindings
  • Update to axum6

Fixes

  • Fish now handles multi-line commands properly
  • Listing history for the current session now works
  • Fix atuin init for Fish

Contributor Shoutout!

@patricksjackson

  • Fix minor typo in config.md in #615
  • Re-enable arm docker builds in #616
  • Handle multiline commands in fish shell in #623
  • install.sh: Fallback to using cargo in #639
  • Fix session history listing in #620

@pdecat

  • Add support for some additional keys in interactive mode in #634
  • Allow overriding filter and search modes from CLI in #635

@Sciencentistguy

  • Rework atuin init in #652
  • Improve error message when $AUTIN_SESSION is not set. in #654
  • Add nix files and install instructions in #477

@BapRx

  • chore(#621): Exit atuin when pressing down arrow on most recent entry in #659
  • docs: Remove human short flag from docs, duplicate of help -h in #663
  • feat(history): Add new flag to allow custom output format in #662

@yolo2h

  • docs: Fix typo in zh-CN/README.md in #666

@s1ck

  • Fix CI build badge in #683

@conradludgate

  • display mnemonic key in #694
  • axum6 with typesafe state in #674
  • crossterm support in #331
  • stats in #707

@evanpurkhiser

  • Remove whitespace in template client config.tom in #697
  • Fix missing - in key-binding.md in #698

@eripa

  • docs(README): add static activity graph example by @eripa in #680

@trygveaa

@frukto

  • Make the install script more robust by @frukto in #692

@jbaiter

  • Add history_filter setting to exclude commands from history by @jbaiter in #716

@hunger

  • fish: Fix atuin init for the fish shell by @hunger in #699

@ekroon

  • Add support for generic database in AppState by @ekroon in #711

New Contributors

I very much appreciate the work from all contributors, but a special mention to everyone who made their first contribution in this release, no matter how large or small

Future plans

I've been talking about it for ages and ages, but now that my life has finally settled down I'm going to be focusing on getting deletions out for the next release. We will be switching to an event-based sync, which should allow for many more features and cool things in the future!

Other changes

Talk

I spoke about Atuin at FOSDEM! If you want to know more about the project + video is your thing, you can watch it here

Website

I've setup a website for docs + release notes! It's available here: https://atuin.sh

Twitter

I also opened a Twitter account for Atuin - @atuinsh

If you fancy chatting to us about anything here, or otherwise, please feel free to drop by the Discord!

Full Changelog: v12.0.0...v13.0.0

v12

06 Nov 15:40
f38ef12
Compare
Choose a tag to compare
v12

V12!

Thank you so much to everyone that contributed to this one 💖

What's Changed

New Contributors

Full Changelog: v11.0.0...v12.0.0

Release v11: We jumped a lot of versions

13 Sep 19:12
41eed3f
Compare
Choose a tag to compare

Thank you to everyone who contributed in this release!

We also decided to change our versioning scheme, to keep it as simple as possible.

What's Changed

New Contributors

Full Changelog: v0.10.0...v11.0.0

v0.10.0

06 Jun 09:25
fab8d85
Compare
Choose a tag to compare

Thank you so much to everyone who contributed to this release! Whether it was your first time or you've been contributing for a while, it's really appreciated 💖🚀

cursors

Highlights

  • Support zsh histdb import
  • Documentation is now translated to both Chinese and Russian
  • Text cursor for query input
  • Scroll wheel on TUI
  • Several cleanups + QoL improvements
  • Performance improvements
  • Bugfixes

What's Changed

New Contributors

Full Changelog: v0.9.1...v0.10.0