Skip to content

Releases: atuinsh/atuin

v18.1.0

11 Mar 15:14
c00e54c

Choose a tag to compare

Bug Fixes

  • Don't preserve for empty space (#1712)
  • Fish init (#1725)
  • Add xonsh to auto import, respect $HISTFILE in xonsh import, and fix issue with up-arrow keybinding in xonsh (#1711)
  • Rework #1509 to recover from the preexec failure (#1729)
  • Typo (#1741)
  • Missing or wrong fields (#1740)
  • Check session file exists for status command (#1756)
  • Ensure sync time is saved for sync v2 (#1758)
  • No panic on empty inspector (#1768)
  • Enable multiple command stats to be shown using unicode_segmentation (#1739)
  • Readd up-arrow keybinding, now with menu handling (#1770)
  • Missing characters in preview (#1803)
  • Check store length after sync, not before (#1805)
  • Disable regex error logs (#1806)
  • Attempt to fix timezone reading (#1810)
  • Use a different method to detect env vars (#1819)
  • Record size limiter (#1827)
  • Make atuin compile on non-win/mac/linux platforms (#1825)
  • Set meta.mainProgram in the package (#1823)
  • Re-sync after running auto store init (#1834)

Documentation

  • Minor formatting updates to the default config.toml (#1689)
  • Update docker compose (#1818)
  • Use db name env variable also in uri (#1840)

Features

  • Use ATUIN_TEST_SQLITE_STORE_TIMEOUT to specify test timeout of SQLite store (#1703)
  • Add 'a', 'A', 'h', and 'l' bindings to vim-normal mode (#1697)
  • Add xonsh history import (#1678)
  • Process Ctrl+m for kitty keyboard protocol (#1720)
  • Add 'ignored_commands' option to stats (#1722)
  • Support syncing aliases (#1721)
  • Change fulltext to do multi substring match (#1660)
  • Add config option keys.scroll_exits (#1744)
  • Add history prune subcommand (#1743)
  • Add alias feedback and list command (#1747)
  • Add PHP package manager "composer" to list of default common subcommands (#1757)
  • Add '/', '?', and 'I' bindings to vim-normal mode (#1760)
  • Add update action (#1779)
  • Normalize formatting of default config, suggest nix (#1764)
  • Add linux sysadmin commands to common_subcommands (#1784)
  • Add CTRL+[ binding as <Esc> alias (#1787)
  • Add nushell completion generation (#1791)
  • Add atuin doctor (#1796)
  • Add checks for common setup issues (#1799)
  • Support regex with r/.../ syntax (#1745)
  • Guard against ancient versions of bash where this does not work. (#1794)
  • Add config setting for showing tabs (#1755)
  • Return early if history is disabled (#1807)
  • Add enable setting to dotfiles, disable by default (#1829)
  • Add automatic history store init (#1831)
  • Adds info command to show env vars and config files (#1841)

Miscellaneous Tasks

  • Add cross-compile job for illumos (#1830)
  • Do not show history table stats when using records (#1835)
  • Setup nextest (#1848)

Performance

  • Optimize history init-store (#1691)

Refactor

  • Update commandline syntax, closes #1733 (#1735)
  • Clarify operation result for working with aliases (#1748)
  • Rename atuin-config to atuin-dotfiles (#1817)

New Contributors

Full Changelog: v18.0.2...v18.1.0

v18.0.2

26 Feb 11:20

Choose a tag to compare

[18.0.2] - 2024-02-26

The included fix should make bash support a bit better. For further improvement, please update bash-preexec with

curl https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh -o ~/.bash-preexec.sh

If you are using ble.sh, this is not required + this release will change nothing for you.

There are also no changes for any shell other than bash, and no serverside changes either

Bug Fixes

  • Rework #1509 to recover from the preexec failure (#1729)

Full Changelog: v18.0.1...v18.0.2

v18.0.1

12 Feb 08:39
1464cb6

Choose a tag to compare

Patch release - fixing an issue with enhanced keyboard mode. Thanks @candrewlee14!

What's Changed

New Contributors

Full Changelog: v18.0.0...v18.0.1

v18.0.0

09 Feb 12:53
5738d06

Choose a tag to compare

Please see the full release notes here: https://blog.atuin.sh/release-v18/

Bug Fixes

  • Prevent input to be interpreted as options for zsh autosuggestions (#1506)
  • Avoid unexpected atuin history start for keybindings (#1509)
  • Prevent input to be interpreted as options for blesh auto-complete (#1511)
  • Work around custom IFS (#1514)
  • Fix and improve the keybinding to up (#1515)
  • Fix incorrect timing of child shells (#1510)
  • Disable musl deb building (#1525)
  • Work around bash < 4 and introduce initialization guards (#1533)
  • Set umask 077 (#1554)
  • Disables unix specific stuff for windows (#1557)
  • Fix invisible tab title (#1560)
  • Shorten text, use ctrl-o for inspector (#1561)
  • Integration on older fishes (#1563)
  • Save sync time when it starts, not ends (#1573)
  • Print literal control characters to non terminals (#1586)
  • Escape control characters in command preview (#1588)
  • Use existing db querying for history list (#1589)
  • Add acquire timeout to sqlite database connection (#1590)
  • Update repo url in CONTRIBUTING.md (#1594)
  • Dedupe was removing history (#1610)
  • Only escape control characters when writing to terminal (#1593)
  • Strip control chars generated by \[\] in PS1 with bash-preexec (#1620)
  • Check for format errors when printing history (#1623)
  • Skip padding time if it will overflow the allowed prefix length (#1630)
  • Never overwrite the key (#1657)
  • Erase the prompt last line before Bash renders it
  • Erase the previous prompt before overwriting
  • Support termcap names for tput (#1670)
  • Set durability for sqlite to recommended settings (#1667)
  • Correct download list for incremental builds (#1672)
  • Add Settings::utc() for utc settings (#1677)

Documentation

  • Add repology badge (#1494)
  • Add forum link to contributing (#1498)
  • Refer to image with multi-arch support (#1513)
  • Remove activity graph
  • Fix Destination file already exists in Nushell (#1530)
  • Clarify enter/tab usage (#1538)
  • Improve style (#1537)
  • Remove old docusaurus (#1581)
  • Mention environment variables for custom paths (#1614)
  • Create pull_request_template.md (#1632)
  • Update CONTRIBUTING.md (#1633)

Features

  • Enable enhanced keyboard mode (#1505)
  • Rework record sync for improved reliability (#1478)
  • Include atuin login in secret patterns (#1518)
  • Add redraw (#1519)
  • Make it clear what you are registering for (#1523)
  • Support high-resolution timing even without ble.sh (#1534)
  • Add extended help (#1540)
  • Add interactive command inspector (#1296)
  • Vim mode (#1553)
  • Add better error handling for sync (#1572)
  • Add history rebuild (#1575)
  • Introduce keymap-dependent vim-mode (#1570)
  • Make deleting from the UI work with record store sync (#1580)
  • Add metrics counter for records downloaded (#1584)
  • Make cursor style configurable (#1595)
  • Make store init idempotent (#1609)
  • Don't stop with invalid key (#1612)
  • Add registered and deleted metrics (#1622)
  • When in vim-normal mode apply an alternative highlighting to the selected line (#1574)
  • [breaking] Bind the Atuin search to "/" in vi-normal mode (#1629)
  • Update widget names (#1631)
  • Make history list format configurable (#1638)
  • Add change-password command & support on server (#1615)
  • Automatically init history store when record sync is enabled (#1634)
  • Add store push (#1649)
  • Reencrypt/rekey local store (#1662)
  • Add prefers_reduced_motion flag (#1645)
  • Add verify command to local store
  • Add store purge command
  • Failure to decrypt history = failure to sync
  • Add store push --force
  • Add store pull
  • Disable auto record store init (#1671)
  • Add progress bars to sync and store init (#1684)

Miscellaneous Tasks

  • Remove the teapot response (#1496)
  • Schema cleanup (#1522)
  • Update funding (#1543)
  • Make clipboard dep optional as a feature (#1558)
  • Add feature to allow always disable check update (#1628)
  • Use resolver 2, update editions + cargo (#1635)
  • Disable nix tests (#1646)
  • Set ATUIN_ variables for development in devshell (#1653)
  • Use github m1 for release builds (#1658)
  • Re-enable test cache, add separate check step (#1663)
  • Run rust build/test/check on 3 platforms (#1675)

Refactor

  • Use enum instead of magic numbers (#1499)
  • String -> HistoryId (#1512)
  • Refactor and localize HISTORY => __atuin_output (#1535)
  • Refactor vim mode (#1559)
  • Refactor handling of key inputs (#1606)

Styling

  • Use consistent coding style (#1528)

Testing

  • Add multi-user integration tests (#1648)

Stats

  • Misc improvements (#1613)

New Contributors

Full Changelog: https://github.com/atuinsh/atuin/compa...

Read more

v17.2.1

03 Jan 15:52
9f79a34

Choose a tag to compare

Bug Fixes

  • Typo with default config (#1493)

Full Changelog: v17.2.0...v17.2.1

v17.2.0

03 Jan 12:48
999a98c

Choose a tag to compare

Release v17.2.0 is out now! Thank you to all contributors, new and old ❤️

We have always recommended that self-hosters keep their servers up to date. From this point forwards, this is now enforced. If clients are running a newer major version of Atuin than the server, they will not sync.

See more: https://forum.atuin.sh/t/release-v17-2-0/36

Community

Self hosting

There's a small issue with this release, currently fixed in v17.2.1

#1493

The TLS config defaults are not quite setup properly, so self hosted users will need to add

[tls]
enable = false
cert_path = ""
pkey_path = ""

to their config.

Bug Fixes

  • Fix typo (#1439)
  • Don't require all fields under [stats] (#1437)
  • Disallow deletion if the '--limit' flag is present (#1436)
  • Respect ZSH's $ZDOTDIR environment variable (#1441)
  • Fix loss of the last output line with enter_accept (#1463)
  • Ignore struct_field_names (#1466)
  • Improve the support for enter_accept with ble.sh (#1465)
  • Discord link expired
  • Discord broken link
  • Fix small issues of enter_accept for the plain Bash (#1467)
  • Time now_local not working
  • Fix quirks on search cancel (#1483)
  • Zsh_autosuggest_strategy for no-unset environment (#1486)
  • Fix error by the use of ${PS1@P} in bash < 4.4 (#1488)
  • Zsh use a special format to escape some characters (#1490)

Documentation

  • Add actuated linkback
  • Add link to forum
  • Align setup links in docs and readme (#1446)
  • Add Void Linux install instruction (#1445)
  • Add fish install script (#1447)
  • Correct link
  • Fix light/dark mode logo
  • Use picture element for logo
  • Add docs for zsh-autosuggestion integration (#1480)
  • Remove stray character from README
  • Update logo (#1481)

Features

  • Add semver checking to client requests (#1456)
  • Add TLS to atuin-server (#1457)
  • Integrate with zsh-autosuggestions (#1479)
  • Support high-resolution duration if available (#1484)
  • Provide auto-complete source for ble.sh (#1487)

Miscellaneous Tasks

  • Remove issue config (#1433)
  • Remove issue template (#1444)

Refactor

  • Factorize __atuin_accept_line (#1476)
  • Refactor and optimize __atuin_accept_line (#1482)

New Contributors

Full Changelog: v17.1.0...v17.2.0

v17.1.0

10 Dec 13:12
da2e58f

Choose a tag to compare

Bug Fixes

  • Initial list of history in workspace mode (#1356)
  • Add Appkit to the package build (#1358)
  • Bind in the most popular modes (#1360)
  • Only trigger up-arrow on first line (#1359)
  • Clean up the fish script options (#1370)
  • Use fish builtins for enter_accept (#1373)
  • Make atuin account delete void session + key (#1393)
  • New clippy lints (#1395)
  • Accept multiline commands (#1418)
  • Reenable enter_accept for bash (#1408)
  • Respect ZSH's $ZDOTDIR environment variable (#942)

Documentation

  • Update sync.md (#1409)
  • Update Arch Linux package URL in advanced-install.md (#1407)
  • New stats config (#1412)

Features

  • Add a nixpkgs overlay (#1357)
  • Add metrics server and http metrics (#1394)
  • Add some metrics related to Atuin as an app (#1399)
  • Allow configuring stats prefix (#1411)
  • Allow spaces in stats prefixes (#1414)

Miscellaneous Tasks

  • Update to sqlx 0.7.3 (#1416)
  • cargo update (#1419)
  • Update rusty_paseto and rusty_paserk (#1420)
  • Run dependabot weekly, not daily (#1423)
  • Don't group deps (#1424)
  • Add contributor image to README (#1430)
  • Setup git cliff (#1431)

Other

New Contributors

Full Changelog: v17.0.1...v17.1.0

v17.0.1

28 Oct 19:30
2959891

Choose a tag to compare

A few small issues were found with enter_accept after releasing - patch release to sort them out

Thanks @arcuru for fixing a bunch of things!

What's Changed

New Contributors

Full Changelog: v17.0.0...v17.0.1

v17.0.0

26 Oct 07:16
1a20afe

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

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