Files
atuin-mirror/CHANGELOG.md
Ellie Huxtable f98361cf8d chore(release): prepare for release 18.22.0 (#4095)
### Bug Fixes

- *(daemon)* Periodically flush captured command output to disk
([#4070](https://github.com/atuinsh/atuin/issues/4070))
- *(daemon)* Stream large DeleteHistory requests
([#4076](https://github.com/atuinsh/atuin/issues/4076))
- *(daemon)* Delete captured output when history entries are deleted
([#4074](https://github.com/atuinsh/atuin/issues/4074))
- *(nix)* Export OpenSSL lib for LD_LIBRARY_PATH in nix devshell
([#4018](https://github.com/atuinsh/atuin/issues/4018))
- *(pty-proxy)* Make PTY proxy aware of other PTYs
([#4079](https://github.com/atuinsh/atuin/issues/4079))
- *(server)* Wrap multi-write DB operations in transactions
([#4088](https://github.com/atuinsh/atuin/issues/4088))
- *(server)* Emit HTTP access logs at INFO and compile in debug tracing
([#4087](https://github.com/atuinsh/atuin/issues/4087))
- *(sync)* Expand a packfile whose range is a hole below the store head
([#4085](https://github.com/atuinsh/atuin/issues/4085))
- Normalize output of `atuin --version`
([#4038](https://github.com/atuinsh/atuin/issues/4038))
- Make `atuin ai init` a no-op instead of erroring
([#4040](https://github.com/atuinsh/atuin/issues/4040))
- Do not try to decrypt plaintext records
([#4057](https://github.com/atuinsh/atuin/issues/4057))
- Behavior of PTY proxy on terminal resizes
([#4061](https://github.com/atuinsh/atuin/issues/4061))
- Build error ([#4094](https://github.com/atuinsh/atuin/issues/4094))

### Features

- *(daemon)* Daemon owns History Deletion
([#4045](https://github.com/atuinsh/atuin/issues/4045))
- *(mcp)* Make agents actually use the atuin MCP server
([#4050](https://github.com/atuinsh/atuin/issues/4050))
- *(pty-proxy)* Keep the start and end of command captures that exceed
the max size ([#4092](https://github.com/atuinsh/atuin/issues/4092))
- *(pty-proxy)* Mirror the CWD of the PTY proxy child
([#4091](https://github.com/atuinsh/atuin/issues/4091))
- Implement command capture and remove semantic.rs
([#4048](https://github.com/atuinsh/atuin/issues/4048))
- Simplify semantic captures
([#4065](https://github.com/atuinsh/atuin/issues/4065))
- Store terminal size in command captures
([#4072](https://github.com/atuinsh/atuin/issues/4072))
- Version Stored Output Capture and Avoid PB on disk
([#4068](https://github.com/atuinsh/atuin/issues/4068))
- Redact secrets from captured command output
([#4071](https://github.com/atuinsh/atuin/issues/4071))
- Rework inspector and add output view
([#4090](https://github.com/atuinsh/atuin/issues/4090))
- Add [output_capture] settings
([#4069](https://github.com/atuinsh/atuin/issues/4069))

### Miscellaneous Tasks

- *(ci)* Limit concurrency of workflows on same branch
([#4073](https://github.com/atuinsh/atuin/issues/4073))
- Lift dependencies into top-level Cargo.toml
([#4042](https://github.com/atuinsh/atuin/issues/4042))
- Sort dependencies in `Cargo.toml`s
([#4046](https://github.com/atuinsh/atuin/issues/4046))
- Enable Clippy cast warnings
([#4049](https://github.com/atuinsh/atuin/issues/4049))
- Temporary workaround for flaky test
([#4083](https://github.com/atuinsh/atuin/issues/4083))
- Emit proptest regression artifacts so CI failures are reproducible
([#4084](https://github.com/atuinsh/atuin/issues/4084))
- Lockfile bumps ([#4089](https://github.com/atuinsh/atuin/issues/4089))
- Don't fail if we can't capture output
([#4086](https://github.com/atuinsh/atuin/issues/4086))
- Link to upstream rustix issue in atuin-pty-proxy
([#4093](https://github.com/atuinsh/atuin/issues/4093))

### Refactor

- *(daemon)* Manage sync inside of the daemon
([#4055](https://github.com/atuinsh/atuin/issues/4055))
- *(daemon)* Split output capture into fjall and nop backends
([#4082](https://github.com/atuinsh/atuin/issues/4082))
- *(deps)* Bump mkdocs-material from 9.7.0 to 9.7.7 in /docs in the uv
group across 1 directory
([#4059](https://github.com/atuinsh/atuin/issues/4059))
- *(deps)* Bump vale-cli/vale-action from 2.1.2 to 3.0.0
([#3887](https://github.com/atuinsh/atuin/issues/3887))
- *(deps)* Bump rpassword from 7.4.0 to 7.5.0 in the cargo group across
1 directory ([#3877](https://github.com/atuinsh/atuin/issues/3877))
- *(history)* Make HistoryId a Copy Uuid
([#4013](https://github.com/atuinsh/atuin/issues/4013))
- Clean up the history service and fix minor bugs

### Testing

- *(daemon)* Adversarial test suites with new daemon
([#4058](https://github.com/atuinsh/atuin/issues/4058))
- E2e pty test harness
([#4075](https://github.com/atuinsh/atuin/issues/4075))
- Filtered commands leave no captured output
([#4081](https://github.com/atuinsh/atuin/issues/4081))
2026-09-09 14:50:47 -07:00

114 KiB

Changelog

All notable changes to this project will be documented in this file.

18.22.0

Bug Fixes

  • (daemon) Periodically flush captured command output to disk (#4070)
  • (daemon) Stream large DeleteHistory requests (#4076)
  • (daemon) Delete captured output when history entries are deleted (#4074)
  • (nix) Export OpenSSL lib for LD_LIBRARY_PATH in nix devshell (#4018)
  • (pty-proxy) Make PTY proxy aware of other PTYs (#4079)
  • (server) Wrap multi-write DB operations in transactions (#4088)
  • (server) Emit HTTP access logs at INFO and compile in debug tracing (#4087)
  • (sync) Expand a packfile whose range is a hole below the store head (#4085)
  • Normalize output of atuin --version (#4038)
  • Make atuin ai init a no-op instead of erroring (#4040)
  • Do not try to decrypt plaintext records (#4057)
  • Behavior of PTY proxy on terminal resizes (#4061)
  • Build error (#4094)

Features

  • (daemon) Daemon owns History Deletion (#4045)
  • (mcp) Make agents actually use the atuin MCP server (#4050)
  • (pty-proxy) Keep the start and end of command captures that exceed the max size (#4092)
  • (pty-proxy) Mirror the CWD of the PTY proxy child (#4091)
  • Implement command capture and remove semantic.rs (#4048)
  • Simplify semantic captures (#4065)
  • Store terminal size in command captures (#4072)
  • Version Stored Output Capture and Avoid PB on disk (#4068)
  • Redact secrets from captured command output (#4071)
  • Rework inspector and add output view (#4090)
  • Add [output_capture] settings (#4069)

Miscellaneous Tasks

  • (ci) Limit concurrency of workflows on same branch (#4073)
  • Lift dependencies into top-level Cargo.toml (#4042)
  • Sort dependencies in Cargo.tomls (#4046)
  • Enable Clippy cast warnings (#4049)
  • Temporary workaround for flaky test (#4083)
  • Emit proptest regression artifacts so CI failures are reproducible (#4084)
  • Lockfile bumps (#4089)
  • Don't fail if we can't capture output (#4086)
  • Link to upstream rustix issue in atuin-pty-proxy (#4093)

Refactor

  • (daemon) Manage sync inside of the daemon (#4055)
  • (daemon) Split output capture into fjall and nop backends (#4082)
  • (deps) Bump mkdocs-material from 9.7.0 to 9.7.7 in /docs in the uv group across 1 directory (#4059)
  • (deps) Bump vale-cli/vale-action from 2.1.2 to 3.0.0 (#3887)
  • (deps) Bump rpassword from 7.4.0 to 7.5.0 in the cargo group across 1 directory (#3877)
  • (history) Make HistoryId a Copy Uuid (#4013)
  • Clean up the history service and fix minor bugs

Testing

  • (daemon) Adversarial test suites with new daemon (#4058)
  • E2e pty test harness (#4075)
  • Filtered commands leave no captured output (#4081)

18.21.0

Bug Fixes

  • (daemon) Check for socket in /tmp even when $TMPDIR is set (#4036)
  • (daemon) Reject invalid pidfile pids before signalling (#4031)
  • (deps) Update unsound/yanked dependencies (#4005)
  • (docs) Disambiguate sqlx intra-doc links to functions (#4007)
  • (server) Connect eagerly to MySQL so a bad db_uri fails fast (#4032)
  • (sqlite) Prevent stale prepared-statement panic across migrations (#4006)

Features

  • MySQL for Atuin server (#3541)
  • Refactor/improve output capturing mechanism (#4017)

Miscellaneous Tasks

Refactor

  • (deps) Bump shlex from v1 to v2 (#4024)
  • (server) Merge server database crates into atuin-server (#4009)
  • (server) Polymorphic database (#4014)
  • (server) Share SQLite + Postgres Database impls via a blanket impl (#4015)

18.20.1

Bug Fixes

  • (client) Bound WAL growth with journal_size_limit + a periodic compactor (#3994)
  • (docs) Correct sync_frequency default (#3984)
  • (nu) Use unique keybinding names (#3975)
  • Correct documented local_timeout default (#3983)
  • Drop nonexistent session_path and correct path defaults (#3985)
  • Auto-generate encryption key if it doesn't exist (#3998)

Features

  • Switch terminal emulation to atuin-vt100 (#3995)

Miscellaneous Tasks

  • (release) Include all crates in publish order

Refactor

  • (deps) Bump uuid from 1.23.2 to 1.25.0 (#3886)
  • Remove atuin-lab-share crate (#3993)

18.20.0

Bug Fixes

  • (ai) Execute commands from enter in the bash integration (#3892)
  • (ai) Answer unrecognized tool calls with an error result (#3893)
  • (bash) Localize "READLINE_{LINE,POINT}" in Bash <= 3.2 (#3926)
  • (common) Survive wide characters on a one-column screen (#3876)
  • (docs) Don't say enter_accept defaults to true in example config.toml (#3865)
  • (history) Don't misclassify users named after an agent as agents (#3951)
  • (install) Atuin init for bash (#3919)
  • (nix) Add an RPATH for OpenSSL so the built binary runs (#3852)
  • (search) Prepare daemon search index in shell init scripts (#3864)
  • (search) Fall back when daemon-fuzzy fails (#3895)
  • (search) Don't overflow on a session id with an out-of-range uuid timestamp (#3965)
  • (sync) Fix off-by-one bugs in sync (#3913)
  • (wrapped) Panic when every command is in stats.ignored_commands (#3925)
  • (zsh) Don't clobber RPS1 when wrapping the prompt for OSC 133 (#3861)
  • 'atuin login' prints 401 failures until authorized (#3916)
  • Silence hub 401 log spam during installer login (#3918)
  • Fix panics from vt100::Parser::new (#3933)
  • Make pty-proxy socket path shorter (#3991)

Documentation

  • Document rstest/proptest testing conventions in AGENTS.md (#3942)

Features

  • (common) Add rmp::serde iterator-to-MessagePack helper (#3897)
  • (daemon) Change default daemon socket path (#3910)
  • (domain) Add RecordTag string enum (#3899)
  • (sync) Send the auth token on the capabilities fetch when logged in (#3974)
  • Add agent hooks for opencode (#3844)
  • Add devcontainers (#3871)
  • Setup claude in devcontainers (#3878)
  • Add windows/powershell highlighting (#3883)
  • Add turn time and tips to Atuin AI (#3870)
  • Enable syntax highlighting on illumos (#3879)
  • Offer account login during install setup (#3849)
  • Client-side history packfiles (#3737)
  • Parallel packfile upload/download (#3944)
  • Eager Key Query (#3968)
  • Capabilities-driven sync page size (#3979)
  • Improve powershell highlighting (#3917)
  • Enable gzip and zstd for reqwest (#3980)

Miscellaneous Tasks

  • (ai) Remove obsolete atuin ai init command (#3936)
  • (docker) Install the toolchain pinned by rust-toolchain.toml (#3963)
  • (lints) Use workspace lints instead of overriding lints in GHA workflow (#3949)
  • (rustfmt) Update Rustfmt config (#3945)
  • (tests) Fix flaky pty-proxy test (#3874)
  • Add profiling to the app (#3853)
  • Temporarily drop tailscale and atuin (#3873)
  • Instruct agents to use rstest in AGENTS.md (#3912)
  • More xdg compliance (#3932)
  • Remove atuin-nucleo (#3950)
  • Enable more Clippy lints (#3953)
  • Update to rust 1.98 (#3964)
  • Revert changes to atuin-pty-proxy from lab share PR / feat: store pty-proxy sockets in /tmp/atuin-$UID (#3988)

Performance

  • (sql) Chunked bulk inserts + shared sqlite wrapper (#3981)
  • (sync) Batch post-sync history indexing into bulk transactions (#3947)
  • (sync) Parallel record downloads (#3955)
  • (tracing) OTel export + instrumentation coverage (#3952)

Refactor

  • (ai/bash) Use existing facility for accept-line (#3928)
  • (bash) Remove redundant check of existing preexec-backend (#3927)
  • (caps) CapClient owns its client and warms on construction (#3898)
  • (client) Own sync_addr via Arc, drop Client lifetime (#3896)
  • (client) Remove the Database trait in favor of Sqlite (#3946)
  • (deps) Bump pymdown-extensions from 11.0 to 11.0.1 in /docs in the uv group across 1 directory (#3875)
  • (domain) Make Record::with_data consume self, add with_data_clone (#3900)
  • (domain) Make Record.version a RecordVersion enum (#3903)
  • (domain) Drop the vestigial Host.name field (#3941)
  • (encryption) Introduce PasetoV4Key newtype for the encryption key (#3860)
  • (encryption) Move encryption into atuin-common. (#3863)
  • (record) Name the (host, tag) pair as RecordSeriesKey (#3961)
  • (sqlx) Use FromRow instead of manual row mapping (#3958)
  • (sync) Introduce SyncEngine to hold shared sync state (#3962)
  • Add a CmdOrigin Type (#3943)

Bug

  • Avoid rare race condition in sync (#3972)

18.19.0

Bug Fixes

  • (client) Avoid panic decoding an empty encryption key (#3803)
  • (client) Keep sqlx-postgres out of the client crate (#2884) (#3823)
  • (config) Preserve comments in atuin config set (#3766)
  • (search) Correct fuzzy result ranking (#3603) (#3624)
  • Fix atuin-search-bench/benches/search.rs (#3788)
  • Close OSC133 C when launching Atuin AI to prevent content erasure (#3794)
  • Authenticate beta release push as atuin-bot (#3809)
  • Copy vendored axoasset into docker builder stage (#3816)

Documentation

  • Clarify update check network, provide build command (#3767)
  • Remove old i18n docs (#3787)
  • Use shell-agnostic install command in quickstart pages (#3820)
  • Document named stats periods (today/week/month/year) (#3821)
  • State minimum supported Rust version in install guide (#3822)
  • Document iTerm2 tmux popup incompatibility (#3826)
  • Clarify key binding snippets belong in shell startup file (#3837)
  • Mention RustRover in IDE integration guidance (#3834)

Features

  • (client) Show intent in inspector (#3804)
  • (client) Enable pty-proxy via config (#3828)
  • (config) Validate new settings in atuin config set before writing them to disk (#3769)
  • (lab) Experimental atuin lab share
  • (search) Remove the "skim" engine (#3825)
  • Remove word with ALT-Backspace ALT-D (#2457)
  • Add scheduled beta release workflow (#3805)
  • Migrate TLS backend from rustls to native-tls (#3807)
  • Make update a real subcommand (#3813)
  • Capability negotiation protocol (client + server) (#3797)

Miscellaneous Tasks

  • (ci) Fix package step (#3770)
  • Remove Store trait (#3779)
  • Daemon search benchmark (divan + CodSpeed) (#3763)
  • Run CodSpeed benchmarks on macro runners in walltime mode (#3786)
  • Add OrFilter as a replacement for Vecs as filter lists (#3768)
  • Add atuin-domain crate for shared domain types (#3790)
  • Run CodSpeed walltime benchmarks on depot-macos-26 (#3791)
  • Fix deny.toml and get it to run in CI (#3808)
  • Remove codspeed workflow (#3812)
  • Richer logging for atuin-server (#2564)
  • Hide --active sharing (#3846)

Refactor

  • (deps) Bump thiserror from 2.0.18 to 2.0.19 (#3839)
  • (deps) Bump strum_macros from 0.27.2 to 0.28.0 (#3841)
  • (deps) Bump tonic-types from 0.14.5 to 0.14.6 (#3842)
  • (deps) Bump pulldown-cmark from 0.13.3 to 0.13.4 (#3840)
  • (deps) Bump itertools from 0.14.0 to 0.15.0 (#3838)
  • Adopt enum_dispatch for enum trait delegation (#3806)

Testing

  • Adopt rstest across the workspace test suite (#3785)

Daemon

  • Replace nucleo with frizbee, rank by match quality with frecency tiebreak (#3782)

18.18.1

Bug Fixes

  • (crates.io) Fix installation from crates.io (#3764)

Refactor

  • (daemon) Drop fs4, use std::fs file locking (#3753)

18.18.0

Bug Fixes

  • (daemon) Index synced history directly instead of malformed SQL (#3627) (#3641)
  • (deps) Update unsound/vulnerable dependencies in Cargo.lock (#3632)
  • (docs) Repair every stale link in the repo (#3727)
  • (docs) Make the incorrect-decrypt-key error actionable (#3609)
  • (hook) Drop agent commands containing NUL bytes via NonNulStr (#3589) (#3660)
  • (import) Survive corrupt entries instead of aborting the import (#3721)
  • (init) Fix include guard in Bash init script; chore(init): improve inclusion of shell init scripts in Rust (#3645)
  • (install) Make /dev/tty authoritative for interactivity detection (#3691)
  • (search) Add DbSearchMode; correctly fall back to "fuzzy" in non-interactive searches (#3744)
  • (ui) Calculate preview height based on command display width instead of byte count (#3678)
  • (win32) Cargo-binstall package metadata (#3673)
  • Search functionality to respect character offsets and non-ASCII (#3659)
  • Quote argument-hint YAML values so Copilot CLI ≥1.0.65 loads all skills (#3613) (#3614)
  • Correct grammar in 'history last' help text (#3430)
  • Work around rust nightly warning on eyre bail (#3680)
  • Improve non-interactive TTY detection in install.sh (#3315)
  • Add /model hint to status bar (#3687)
  • Set correct umask for pty-proxy (#3700)
  • Atuin AI not erasing the input box before closing (#3715)
  • Show server status next to AI progress indicator (#3723)
  • Show full command when using AtuinOutput tool (#3725)

Documentation

  • (ai) Add self hosting + slash command docs (#3623)
  • (config) Standardize TOML examples for config options (#3441)
  • Advise users to pass --locked when installing from Cargo (#3630)
  • Add docs for store_failed and default for enter_accept (#2696)
  • Serve docs.atuin.sh from this repo; remove Desktop docs (#3684)
  • Version docs.atuin.sh with mike (per-release + main) (#3688)
  • Hotfix bad path (#3690)
  • Document built-in bash-preexec (#3651)
  • Retheme docs.atuin.sh to the Atuin brand (#3701)
  • Bundle of improvements (#3716)
  • Remove ugly cards on landing page (#3724)
  • Fix broken README links (#3696)
  • Lint prose with Vale and gate it in CI (#3726)
  • Slightly nicer default config.toml order (#2485)
  • Kubernetes self-hosting documentation (#3238)
  • Add canonical Supported platforms page (#3736)
  • Add friendly hover tips for new terms (#3740)
  • Clarify how to uninstall shell integration (#3741)

Features

  • (ai) Up/down to scroll through previously sent messages (#3720)
  • (bash) Bundle bash-preexec with Atuin; automatically load if no other preexec backend is loaded (#3650)
  • (search) Add --shell option to atuin search to filter results by shell (#3658)
  • (search) Syntax highlight commands in interactive search (#3704)
  • (search) Filter by shell in interactive search (#3692)
  • (string) EllipsizeExt -- General-purpose utility for adding ellipses to strings (#3639)
  • Add 'yolo' setting to Atuin AI options (#3637)
  • Add shell field to history entries (#3636)
  • Add hickory-dns resolver for musl target to improve DNS resolution (#3647)
  • Add atuin stats --filter-mode (#1737)
  • More aggressive optimizations for dist release (#3683)
  • Capture zsh comments as history (#3699)
  • Allow injecting extra HTTP headers on sync server requests (#3718)

Miscellaneous Tasks

  • (atuin-common) Add ellipsize_or_pad for unicode pad (#3663)
  • (ci) Bump GitHub Actions to latest versions (#3689)
  • (ci) Lint tests & docs in CI (#3746)
  • (clap) Simplify clap field types and fix help message formatting (#3640)
  • (logging) Refactor logging (#3622)
  • (release-skill) Time label-gated PR merges around the release (#3654)
  • Remove fossier (#3629)
  • Trigger docs repo deploy (#3631)
  • Remove redundant test (#3635)
  • Add .editorconfig and .nvim.lua (#3648)
  • Clean up WordJumper in atuin/src/command/client/search/cursor.rs (#3662)
  • Don't panic if clipboard cannot be accessed (#2648)
  • Update some dependency versions (#3666)
  • Update sqlx to v9 (#3668)
  • Follow-up on #1737 (#3649)
  • Update Atuin AI to eye-declare v0.6.1 (#3686)
  • Remove docs-dispatch (#3694)
  • Docker healtcheck (#2451)
  • Run windows jobs on depot-windows-2025-16 (#3711)
  • Hotfix script (#3714)
  • Update flake.nix (#3509)
  • Add Timezone and restart policy for postgres backup docker (#3083)
  • Add riscv64 to release targets (#3339)
  • Build x86_64-apple-darwin on Depot M4 macs; move all macOS CI to Depot (#3742)

Performance

  • Do not block counting history (#3729)
  • Actually delete history rows, and index active history (#3730)
  • Index filtered history search, record store tags, and cache inspector stats (#3731)

Refactor

  • (hook) Typed protocol for agent hook events (#3638)
  • (render) Slightly nicer and more correct non-printable escaping (#3633)
  • (sync) Remove deprecated V1 sync protocol (#3634)
  • Use typed Url instead of hand-built string URLs (#3644)
  • Extract shared vt100 logic into atuin-common (#3664)

Styling

  • Improve Atuin AI TUI styles (#3710)

Testing

  • Parametrize tests with rstest across 8 crates (#3653)

Bug

  • Fix enter_accept default (#3717)
  • Abort install.sh on cURL fails (#2911)

18.17.1

Bug Fixes

  • (ai) Default to non-Hub mode for custom AI endpoints (#3620)
  • (import) Fix order of entries imported from zsh history (#3597)
  • (import) Fix import order of nushell history entries (#3598)
  • Various prefix mode bugs (#3616)

Documentation

  • Document output capture and mcp (#3595)

Features

  • (tui) Truncate long commands from middle to show start...end (#3602)

Miscellaneous Tasks

  • (logging) Remove the log crate in favor of tracing (#3608)
  • Update to rust 1.97 (#3617)

18.17.0

Bug Fixes

  • (ai) Dispatch skills registered in the slash command registry (#3593)
  • (ci) Fossier install in scan workflow (#3485)
  • (i18n) Fix typos in Russian localization (#3575)
  • (nu) Use char -u 1b for ESC in OSC 133 sequences (#3530)
  • (nu) Suppress error when ATUIN_HISTORY_ID is missing in pre_prompt hook (#3587)
  • (pi) Observe tool events instead of registering a bash tool (#3557)
  • (pty-proxy) Set $SHELL to the spawned shell (#3548)
  • (search) Fix terminal clearing with latest Ratatui (#3578)
  • (sync) Skip records that fail to decrypt or decode instead of failing the whole store (#3569)
  • Atuin hangs when attempting to spawn daemon from Ctrl+R invocation (#3502)
  • Capture session ID from stream headers rather than final event (#3531)
  • Doctor resiliency fo runknown platforms + openbsd warning (#3551)
  • Double input on arrow keys in AI setup prompt on Windows (#3552)
  • Exclude AI agent commands from zsh-autosuggestions (#3567)
  • Silence shellcheck SC2016 on literal $all-user author filter
  • Respect store_failed when using daemon (#3571)

Documentation

  • Highlight Ctrl-r keybinding on docs page (#3489)
  • Document store purge workflow (#3544)
  • Fix command example typo in documentation (#3536)
  • Make commented-out lines in config.toml match real defaults (#3583)
  • Add fish shell cleanup step to uninstall instructions (#3582)

Features

  • (doctor) Add whether daemon is enabled to doctor output (#3572)
  • (pty-proxy) Add --shell flag to override the spawned shell (#3327)
  • Setup fossier to stop bot slop prs (#3482)
  • Capture command output + expose to new atuin_output tool (#3510)
  • Cache user contexts on load until /reload (#3525)
  • Create database integration tests for atuin-server (#3514)
  • Add /model slash command for changing models (#3576)
  • Add mcp server for history tools and expand search filters (#3581)
  • Add status bar with model and usage information (#3591)

Miscellaneous Tasks

  • (rustdoc) Fix Rustdoc warnings (#3585)
  • (warnings) Fix compile warnings with latest dependencies (#3586)
  • Vouch for all existing contributors (#3486)
  • Update GitHub app token format
  • Update to Rust 1.96.1 (#3568)
  • Adopt derive_more to reduce boilerplate across the codebase (#3573)

Performance

  • (search) Scan history by recency until N unique (#3553)
  • Add synchronous(Normal) + optimize_on_close to record store SQLite (#3577)
  • Remove unnecessary clones in a hot path (#3580)

Refactor

  • Implement From<sqlx::Error> and clean up fix_error (#3484)
  • Pull fn into_utc into atuin-server-database crate (#3487)

18.16.1

Bug Fixes

  • (shell/xonsh) Use os.devnull instead of hard-coded /dev/null (#3464)
  • Atuin update on windows (#3453)
  • Ensure local key matches remote data before syncing (#3474)

Documentation

  • Add related projects section to README

Features

  • (ui) Prominent banner for wrong-key errors at login/sync (#3475)

Miscellaneous Tasks

  • Generate LLM-optimized docs (#3468)
  • Rename 'atuin hex' to 'atuin pty-proxy' (#3473)

18.16.0

Features

This release brings full agentic workflows to Atuin AI with file read+write tools, shell command execution, skills, and more. Check out the docs for Atuin AI for more information.

  • AI tool rendering overhaul + edit_file tool (#3423)
  • Implement write_file tool with overwrite safety (#3432)
  • Shell tool execution timeouts (#3437)
  • Send user-defined context with TERMINAL.md (#3443)
  • Add skill discovery, loading, and invocation (#3444)

Bug Fixes

  • Shell tool preview stuck as Running after completion (#3436)
  • Require all subcommands covered for shell allow rules (#3440)
  • Minor issues with fish's vim mode(s) (#3362)

Documentation

  • Document show_numeric_shortcuts (#3433)
  • Update for new server binary (#3439)

Miscellaneous Tasks

  • Update to rust 1.95 (#3426)
  • Clarified note about regular expressions matching in path. (#3427)
  • Use cat -n format for read_file tool (#3435)
  • Update to eye_declare 0.5.1 (#3449)

Performance

  • Reduce AI TUI rendering overhead for long conversations (#3447)

Refactor

  • Replace ad-hoc dispatch with FSM + driver architecture (#3434)

18.15.2

Bug Fixes

  • Tab doesn't insert suggested command (#3420)

18.15.1

Bug Fixes

  • Enter runs suggested command when selecting permissions (#3418)

18.15.0

Bug Fixes

  • Install script incorrectly tries to install opencode hooks (#3410)
  • Dependency fix (#3414)
  • Loss of loading spinners + tokio panic on exit (#3415)

Features

  • Add OCI standard labels to Dockerfile (#3412)
  • Enable atuin hex for illumos (#3413)
  • Allow resuming previous AI sessions (#3407)

Miscellaneous Tasks

  • Add release script (#3411)

18.14.1

Bug Fixes

  • Ensure we can publish to crates (#3403)
  • Thread remote and content_length through system for server tool calls (#3404)

Documentation

  • Add Tools & Permissions doc section (#3402)

18.14.0

Bug Fixes

  • (ui) Make preview line breaking algorithm aware of CJK double-width characters (#3360)
  • (ui) When inverted, invert scroll events handling (#3373)
  • Replace e>| with | in nushell integration to restore history recording (#3358)
  • Resolve git worktrees to main repo in workspace filter (#3366)
  • Ensure daemon is running (#3384)

Documentation

  • Remove docker-compose duplication (#3376)
  • Cover prefix mode properly (#3383)
  • Minor readability improvement to README (#3381)

Features

  • Opt-in to sharing last command with ai (#3367)
  • Add 'atuin config' subcommand for reading and setting config values (#3368)
  • Option to disable mouse support (#3372)
  • Add support for deleting all matching commands via keybindings (#3375)
  • Add strip_trailing_whitespace, on by default (#3390)
  • Client-tool execution + permission system (#3370)
  • Add history tail for live monitoring view (#3389)
  • Track coding agent shell usage (#3388)
  • Remove agent search from tui (#3397)
  • Add pi hook installer (#3398)
  • Autoinstall ai shell history hooks (#3399)

Miscellaneous Tasks

  • Update to eye-declare 0.3.0 (#3365)
  • Prepare 18.14.0-beta.1 release (#3393)

Refactor

  • Rename examples -> contrib (#3400)

18.13.6

Bug Fixes

  • (powershell) Handle non-FileSystem drives (#3353)
  • Remove unnecessary arboard/image-data default feature (#3345)
  • Use printf to append fish shell init block (#3346)
  • Set WorkingDirectory in PowerShell Invoke-AtuinSearch (#3351)

Features

  • Use eye-declare for more performant and flexible AI TUI (#3343)

Miscellaneous Tasks

  • (ci) Switch most workflows to depot ci (#3352)
  • Prepare 18.13.6 release (#3356)

18.13.5

Bug Fixes

  • Atuin Hex fails to init on bash and zsh (#3341)

Documentation

  • Fix duplicated word in Kubernetes guide (#3338)

Miscellaneous Tasks

  • Prepare 18.13.5 (#3342)

18.13.4

Bug Fixes

  • (ai) Restore url-quote-magic for ? in zsh (#3304)
  • Redirect tty0 when running setup
  • Redirect tty0 when running setup (#3302)
  • Call ensure_hub_session even if primary sync endpoint is self-hosted
  • Call ensure_hub_session even if primary sync endpoint is self-hosted (#3301)
  • Remove per-event mouse capture toggling that leaked ANSI to stdout (#3299)
  • Clarify what data is sent when using Atuin AI during setup (only OS and shell) (#3290)
  • Better tty check (#3313)
  • Disable features in init when that feature is explicitly disabled (#3328)
  • Don't run 'atuin init' in 'atuin hex init' — each must be initialized separately (#3334)

Documentation

  • Fix typo in FAQ alternatives section (#3292)
  • Remove 'experimental' status from Atuin Daemon
  • Remove 'experimental' status from Atuin Daemon (#3295)
  • Add inline_height_shell_up_key_binding (#3270)

Features

  • Report distro name with OS for distro-specific commands (#3289)
  • Allow setting kv values from stdin
  • Error if value not provided and no stdin
  • Add a small atuin label to the ai box (#3309)
  • Allow running atuin search -i as subcommand on Windows (#3250)
  • Hex init nu (#3330)

Miscellaneous Tasks

  • (ci) Tag docker images with semantic versions on tag creation (#3316)
  • Replace atuin-ai rendering with component-oriented system (#3288)
  • Refactor CLI auth flows and token storage (#3317)

18.13.3

Bug Fixes

  • Nushell 0.111; future Nushell 0.112 support (#3266)

Features

  • Call atuin setup from install script (#3265)
  • Allow headless account ops against Hub server (#3280)
  • Add custom filtering and scoring mechanisms

Miscellaneous Tasks

  • (ci) Migrate to depot runners (#3279)
  • (ci) Use depot to build docker images too (#3281)
  • (ci) Use github for macos
  • Update changelog
  • Update permissions in Docker workflow (#3283)
  • Change CHANGELOG format to be easier to parse
  • Symlink changelog so dist can pick it up
  • Vendor nucleo-ext + fork, so we can depend on our changes properly (#3284)
  • Update changelog

18.13.2

Miscellaneous Tasks

  • (release) Building windows aarch64 was overly optimistic
  • Update changelog

18.13.1

Miscellaneous Tasks

  • (release) Update dist, remove custom runners
  • Update changelog

18.13.0

Bug Fixes

  • (deps) Add use-dev-tty to crossterm in atuin-ai (#3185)
  • (docs) Update Postgres volume path in Docker as required by pg18 (#3174)
  • Systemd Exec for separate server binary (#3176)
  • Multiline commands with fish (#3179)
  • Silent DB failures e.g. when disk is full (#3183)
  • Forward $PATH to tmux popup in zsh (#3198)
  • Dramatically decrease daemon memory usage (#3211)
  • Regen cargo dist
  • Clear script database before rebuild to prevent unique constraint violation (#3232)
  • Support Nushell 0.111 (#3249)
  • Ctrl-c not exiting ai (#3256)

Documentation

  • Update config.md to remove NuShell support note (#3190)
  • Document search.filters (#3195)
  • Clean up doc references for sqlite-based self-hosting (#3216)
  • Document daemon-fuzzy search mode (#3254)

Features

  • (docs) Add Shell Integration and Interoperability docs (#3163)
  • switch-context (#3149)
  • Add Hub authentication for future sync + extra features (#3010)
  • Add Atuin AI inline CLI MVP (#3178)
  • Add autostart and pid management to daemon (#3180)
  • Generate commands or ask questions with atuin ai (#3199)
  • Add history author/intent metadata and v1 record version (#3205)
  • In-memory search index with atuin daemon (#3201)
  • Update script for smoother setup (#3230)
  • Initial draft of atuin-shell (#3206)
  • Allow setting multipliers for frequency, recency, and frecency scores (#3235)
  • Allow running atuin search -i as subcommand (#3208)
  • Use pty proxy for rendering tui popups without clearing the terminal (#3234)
  • Allow authenticating with Atuin Hub (#3237)
  • Initialize Atuin AI by default with atuin init (#3255)
  • Add atuin setup (#3257)

Miscellaneous Tasks

  • Update changelog
  • Update changelog
  • Update changelog
  • Use workspace versions (#3210)
  • Move atuin ai subcommand into core binary (#3212)
  • Update changelog
  • Update to Rust 1.94 (#3247)
  • Strip symbols in dist profile to reduce binary size
  • Upgrade thiserror 1.x to 2.x to deduplicate dependency
  • Upgrade axum 0.7 to 0.8 to deduplicate with tonic's axum
  • Update changelog
  • Update changelog
  • Update changelog
  • Update changelog

18.12.1

Bug Fixes

  • (shell) Fix ATUIN_SESSION errors in tmux popup (#3170)
  • (tui) Enter in vim normal mode, shift-tab keybind (#3158)
  • Server start commands for Docker. (#3160)

Features

  • Expand keybinding system with vim motions, media keys, and inspector improvements (#3161)
  • Add original-input-empty keybind condition (#3171)

Miscellaneous Tasks

  • Update changelog

18.12.0

Bug Fixes

  • (powershell) Preserve $LASTEXITCODE (#3120)
  • (powershell) Display search stderr (#3146)
  • (search) Allow hyphen-prefixed query args like --- (#3129)
  • (tui) Space and F1-F24 keys not handled properly by new keybind system (#3138)
  • (ui) Don't draw a leading space for command
  • (ui) Time column can take up to 9 cells
  • (ui) Align cursor with the expand column (usually the command)
  • (ui) Align cursor when expand column is in the middle (#3103)
  • Zsh import multiline issue (#2799)
  • Do not hit sync v1 endpoints for status
  • Do not hit sync v1 endpoints for status (#3102)
  • Do not set ATUIN_SESSION if it is already set (#3107)
  • Custom data dir test on windows (#3109)
  • New session on shlvl change (#3111)
  • Larger exit column width on Windows (#3119)
  • Halt sync loop if server returns an empty page (#3122)
  • Use directories crate for home dir resolution (#3125)
  • Tab behaving like enter, eprintln (#3135)
  • Issue with shift and modifier keys (#3143)
  • Remove invalid IF EXISTS from sqlite drop column migration (#3145)

Documentation

  • (CONTRIBUTING) Update links (#3117)
  • (README) Update links (#3116)
  • (config) Clarify scope of directory filter_mode (#3082)
  • (configuration) Describe new utility "atuin-bind" for Bash (#3064)
  • (installation) Add mise alternative installation method (#3066)
  • Various improvements to the atuin import docs (#3062)
  • Disambiguate 'setup' (noun) vs. 'set up' (verb) (#3061)
  • Fix punctuation and grammar in basic usage guide (#3063)
  • Expand and clarify usage of the history prune command (#3084)
  • Small edit to themes website file (#3069)
  • Config/ with initial uid:gid
  • Add PowerShell install instructions
  • Add PowerShell and Windows install instructions (#3096)
  • Update the [keys] docs (#3114)
  • Add history deletion guide (#3130)
  • Update how to use Docker to self-host (#3148)
  • Add IRC contact information to README

Features

  • (dotfiles) Add sort and filter options to alias/var list (#3131)
  • (theme) Note new default theme name and syntax (#3080)
  • (tui) Add clear-to-start/end actions (#3141)
  • (ui) Highlight fulltext search as fulltext search instead of fuzzy search
  • (ui) Highlight fulltext search as fulltext search instead of fuzzy search (#3098)
  • (ultracompact) Adds setting for ultracompact mode (#3079)
  • Add custom column support (#3089)
  • Left arrow/backspace on empty to start edit (#3090)
  • Add more vim movement bindings for navigation (#3041)
  • Support setting a custom data dir in config (#3105)
  • Remove user verification functionality (#3108)
  • Add option to use tmux display-popup (#3058)
  • Move atuin-server to its own binary (#3112)
  • Add a parameter to the sync to specify the download/upload page (#2408)
  • Replace several files with a sqlite db (#3128)
  • Add new custom keybinding system for search TUI (#3127)

Miscellaneous Tasks

  • Remove total_history from api index response (#3094)
    • BREAKING: remove total_history from api index response (#3094)
  • Update to rust 1.93
  • Update to rust 1.93 (#3101)
  • Update changelog
  • Update agents.md (#3126)
  • Update changelog
  • Update changelog
  • Update changelog

Theming

  • Explain how to set ANSI codes directly (#3065)

Faq

  • Add alternative projects (#3076)

18.11.0

Bug Fixes

  • (bash) Fix issues with intermediate key sequences in the vi editing mode (#2977)
  • (bash) Work around a keybinding bug of Bash 5.1 (#2975)
  • (bash/blesh) Suppress error message for auto-complete source (#2976)
  • (powershell) Run atuin history end in the background (#3034)
  • (powershell) Add error safety and cleanup (#3040)
  • Highlight the correct place when multibyte characters are involved (#2965)
  • Prevent interactive search crash when update check fails (#3016)
  • Move thorough search through search.filters w/ workspaces (#2703)

Documentation

  • Migrate docs from separate repo to docs subfolder (#3018)

Features

  • Support additional history filenames in replxx importer (#3005)
  • Add colors to --help/-h (#3000)
  • Add support for read replicas to postgres (#3029)
  • Allow disabling sync v1 (#3030)
  • Consider atuin dotfile aliases when calculating atuin wrapped (#3048)
  • Add session and uuid column support to history list (#3049)

Miscellaneous Tasks

  • (nix) Prevent deprecation warning on evaluation (#3006)
  • Update changelog
  • Adjust update wording (#2974)
  • Add Windows builds, second try (#2966)
  • Update to rust 1.91 (#2981)
  • Add Atuin Desktop information to install script
  • Remove trailing whitespace (#2985)
  • Fix typo (#2994)
  • Clarify docstring of the enter_accept config key (#3003)
  • Fix github action syntax for variables (#2998)
  • Add AGENTS.md
  • Update changelog
  • Remove x86_64 mac from build targets (#3052)

Build

  • (nix) Update rust toolchain hash (#2990)

18.10.0

Bug Fixes

  • Stats ngram window size cli parsing (#2946)

Features

  • (bash) Use Readline's accept-line for enter_accept (#2953)
  • Add commit to displayed version info (#2922)
  • Add import from PowerShell history (#2864)
  • Interactive Inspector (#2319)
  • Nu ≥ 0.106.0 support commandline accept (#2957)

Miscellaneous Tasks

  • Update rusty_paseto and rusty_paserk (#2942)
  • Update changelog

18.9.0

Bug Fixes

  • (dotfiles) Properly escape spaces/quotes in vars
  • Clippy issues on Windows (#2856)
  • Honor timezone in inspector stats (#2853)
  • Make status exit 1 if not logged in (#2843)
  • Match logic of theme directory with settings directory, so ATUIN_CONFIG_DIR is respected (#2707)
  • Expand path for daemon.socket_path (#2870)
  • Use fullscreen if inline_height is too large (#2888)
  • Clean up new rustc and clippy warnings on Rust 1.89
  • cargo update and changes needed to accomodate it
  • Run cargo fmt
  • Clippy warnings I don't have on my version of clippy
  • Add forgotten rust-toolchain.toml to match changes (oops)
  • Update version in Cargo.toml + github workflows
  • Clippy warnings
  • Dissociate command_chaining from enter_accept
  • Remove atuin_chain_command prefix
  • Docker compose link (#2914)
  • Fish up binding (#2902)

Features

  • (stats) Add dotnet to default common subcommands
  • (tui) Select entries using number in vim-normal mode. closes #2368 (#2893)
  • (tui) Add show_numeric_shortcuts config to hide 1-9 shortcuts (#2766)
  • Highlight matches in interactive search (#2653)
  • Add session-preload filter mode to include global history from before session start
  • Add various acceptance keys (#2928)
  • More accurately filter secret tokens (#2932)
  • Add shell pipelines to command chaining (#2938)

Miscellaneous Tasks

  • Update changelog
  • Remove legacy Apple SDK frameworks (#2885)
  • Update dist workflows
  • Update to Rust 1.90 (#2916)

Refactor

  • Shell environment variables

Build

  • Update flake.nix with new sha256

18.8.0

Bug Fixes

  • (build) Enable sqlite feature for sqlite server (#2848)
  • Make login exit 1 if already logged in (#2832)
  • Use transaction for idx consistency checking (#2840)
  • Ensure the idx cache is cleaned on deletion, only insert if records are inserted (#2841)

Features

  • Command chaining (#2834)
  • Add info for 'official' plugins (#2835)
  • Support multi part commands (#2836) (#2837)
  • Add inline_height_shell_up_key_binding option (#2817)
  • Add IDX_CACHE_ROLLOUT (#2850)

Miscellaneous Tasks

  • Update to rust 1.88 (#2815)

Nushell

  • Fix get -i deprecation (#2829)

18.7.1

Bug Fixes

  • Add check for postgresql prefix (#2825)

Miscellaneous Tasks

  • Update changelog

18.7.0

Bug Fixes

  • (api) Allow trailing slashes in sync_address (#2760)
  • (doctor) Mention the required ble.sh version (#2774)
  • (search) Prevent panic on malformed format strings (#2776) (#2777)
  • Clarify that HISTFILE, if used, must be exported (#2758)
  • Don't print errors in zsh_autosuggest helper (#2780)
  • atuin.nu enchancements (#2778)
  • Refuse "--dupkeep 0" (#2807)

Features

  • Add sqlite server support for self-hosting (#2770)

Miscellaneous Tasks

  • (ci) Install toolchain that matches rust-toolchain.toml (#2759)
  • Allow setting script DB path (#2750)

18.6.1

Bug Fixes

  • Selection vs render issue (#2706)

Features

  • (stats) Add jj to default common subcommands (#2708)
  • Delete duplicate history (#2697)
  • Sort atuin store status output (#2719)
  • Implement KV as a write-through cache (#2732)

Miscellaneous Tasks

  • Use native github arm64 runner (#2690)
  • Fix typos (#2668)

18.5.0

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)
  • Switch to astral cargo-dist (#2687)

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

18.4.0

Bug Fixes

  • (crate) Add missing description (#2106)
  • (crate) Add description to daemon crate (#2107)
  • (daemon) Add context to error when unable to connect (#2394)
  • (deps) Pin tiny_bip to 1.0.0 until breaking change resolved (#2412)
  • (docker) Update Dockerfile (#2369)
  • (gui) Update deps (#2116)
  • (gui) Add support for checking if the cli is installed on windows (#2162)
  • (gui) WeekInfo call on Edge (#2252)
  • (gui) Add \r for windows (shouldn't effect unix bc they should ignore it) (#2253)
  • (gui) Terminal resize overflow (#2285)
  • (gui) Kill child on block stop (#2288)
  • (gui) Do not hardcode db path (#2309)
  • (gui) Double return on mac/linux (#2311)
  • (gui) Cursor positioning on new doc creation (#2310)
  • (gui) Random ts errors (#2316)
  • (history) Logic for store_failed=false (#2284)
  • (mail) Incorrect alias and error logs (#2346)
  • (mail) Enable correct tls features for postmark client (#2347)
  • (theme) Restore original colours (#2339)
  • (themes) Restore default theme, refactor (#2294)
  • (tui) Press ctrl-a twice should jump to beginning of line (#2246)
  • (tui) Don't panic when search result is empty and up is pressed (#2395)
  • Cargo binstall config (#2112)
  • Unitless sync_frequence = 0 not parsed by humantime (#2154)
  • Some --help comments didn't show properly (#2176)
  • Ensure we cleanup all tables when deleting (#2191)
  • Add idx cache unique index (#2226)
  • Idx cache inconsistency (#2231)
  • Ambiguous column name (#2232)
  • Atuin-daemon optional dependency (#2306)
  • Windows build error (#2321)
  • Codespell config still references the ui (#2330)
  • Remove dbg! macro (#2355)
  • Disable mail by default, resolve #2404 (#2405)
  • Time offset display in atuin status (#2433)
  • Disable the actuated mirror on the x86 docker builder (#2443)

Documentation

  • (README) Fix broken link (#2206)
  • (gui) Update README (#2283)
  • Streamline readme (#2203)
  • Update quickstart install command (#2205)

Features

  • (bash/blesh) Hook into BLE_ONLOAD to resolve loading order issue (#2234)
  • (client) Add filter mode enablement and ordering configuration (#2430)
  • (daemon) Follow XDG_RUNTIME_DIR if set (#2171)
  • (gui) Automatically install and setup the cli/shell (#2139)
  • (gui) Add activity calendar to the homepage (#2160)
  • (gui) Cache zustand store in localstorage (#2168)
  • (gui) Toast with prompt for cli install, rather than auto (#2173)
  • (gui) Runbooks that run (#2233)
  • (gui) Use fancy new side nav (#2243)
  • (gui) Add runbook list, ability to create and delete, sql storage (#2282)
  • (gui) Background terminals and more (#2303)
  • (gui) Clean up home page, fix a few bugs (#2304)
  • (gui) Allow interacting with the embedded terminal (#2312)
  • (gui) Directory block, re-org of some code (#2314)
  • (gui) Folder select dialogue for directory block (#2315)
  • (history) Filter out various environment variables containing potential secrets (#2174)
  • (tui) Configurable prefix character (#2157)
  • (tui) Customizable Themes (#2236)
  • (tui) Fixed preview height option (#2286)
  • Use cargo-dist installer from our install script (#2108)
  • Add user account verification (#2190)
  • Add GitLab PAT to secret patterns (#2196)
  • Add several other GitHub access token patterns (#2200)
  • Add npm, Netlify and Pulumi tokens to secret patterns (#2210)
  • Allow advertising a fake version to clients (#2228)
  • Monitor idx cache consistency before switching (#2229)
  • Ultracompact Mode (search-only) (#2357)
  • Right Arrow to modify selected command (#2453)
  • Provide additional clarity around key management (#2467)
  • Add atuin wrapped (#2493)

Miscellaneous Tasks

  • (build) Compile protobufs with protox (#2122)
  • (ci) Do not run current ci for ui (#2189)
  • (ci) Codespell again (#2332)
  • (deps-dev) Bump @tauri-apps/cli in /ui (#2135)
  • (deps-dev) Bump vite from 5.2.13 to 5.3.1 in /ui (#2150)
  • (deps-dev) Bump @tauri-apps/cli in /ui (#2277)
  • (deps-dev) Bump tailwindcss from 3.4.4 to 3.4.6 in /ui (#2301)
  • (install) Use posix sh, not bash (#2204)
  • (nix) De-couple atuin nix build from nixpkgs rustc version (#2123)
  • Add installer e2e tests (#2110)
  • Remove unnecessary proto import (#2120)
  • Update to rust 1.78
  • Add audit config, ignore RUSTSEC-2023-0071 (#2126)
  • Setup dependabot for the ui (#2128)
  • Cargo and pnpm update (#2127)
  • Update to rust 1.79 (#2138)
  • Update to cargo-dist 0.16, enable attestations (#2156)
  • Do not use package managers in installer (#2201)
  • Enable record sync by default (#2255)
  • Remove ui directory (#2329)
  • Update to rust 1.80 (#2344)
  • Update rust to 1.80.1 (#2362)
  • Enable inline height and compact by default (#2249)
  • Update to rust 1.82 (#2432)
  • Update cargo-dist (#2471)

Performance

  • (search) Benchmark smart sort (#2202)
  • Create idx cache table (#2140)
  • Write to the idx cache (#2225)

Testing

  • Add env ATUIN_TEST_LOCAL_TIMEOUT to control test timeout of SQLite (#2337)

Flake.lock

18.3.0

Bug Fixes

  • (bash) Fix a workaround for bash-5.2 keybindings (#2060)
  • (ci) Release workflow (#1978)
  • (client) Better error reporting on login/registration (#2076)
  • (config) Add quotes for strategy value in comment (#1993)
  • (daemon) Do not try to sync if logged out (#2037)
  • (deps) Replace parse_duration with humantime (#2074)
  • (dotfiles) Alias import with init output (#1970)
  • (dotfiles) Fish alias import (#1972)
  • (dotfiles) More fish alias import (#1974)
  • (dotfiles) Unquote aliases before quoting (#1976)
  • (dotfiles) Allow clearing aliases, disable import (#1995)
  • (stats) Generation for commands starting with a pipe (#2058)
  • (ui) Handle being logged out gracefully (#2052)
  • (ui) Fix mistake in last pr (#2053)
  • Support not-mac for default shell (#1960)
  • Adapt help to enter_accept config (#2001)
  • Add protobuf compiler to docker image (#2009)
  • Add incremental rebuild to daemon loop (#2010)
  • Alias enable/enabled in settings (#2021)
  • Bogus error message wording (#1283)
  • Save sync time in daemon (#2029)
  • Redact password in database URI when logging (#2032)
  • Save sync time in daemon (#2051)
  • Replace serde_yaml::to_string with serde_json::to_string_yaml (#2087)

Documentation

  • Fix "From source" cd command (#1973)
  • Add docs for store subcommand (#2097)

Features

  • (daemon) Add support for daemon on windows (#2014)
  • (doctor) Detect active preexec framework (#1955)
  • (doctor) Report sqlite version (#2075)
  • (dotfiles) Support syncing shell/env vars (#1977)
  • (gui) Work on home page, sort state (#1956)
  • (history) Create atuin-history, add stats to it (#1990)
  • (install) Add Tuxedo OS (#2018)
  • (server) Add me endpoint (#1954)
  • (ui) Scroll history infinitely (#1999)
  • (ui) Add history explore (#2022)
  • (ui) Use correct username on welcome screen (#2050)
  • (ui) Add login/register dialog (#2056)
  • (ui) Setup single-instance (#2093)
  • (ui/dotfiles) Add vars (#1989)
  • Allow ignoring failed commands (#1957)
  • Show preview auto (#1804)
  • Add background daemon (#2006)
  • Support importing from replxx history files (#2024)
  • Support systemd socket activation for daemon (#2039)

Miscellaneous Tasks

  • (ci) Don't run "Update Nix Deps" CI on forks (#2070)
  • (codespell) Ignore CODE_OF_CONDUCT (#2044)
  • (install) Log cargo and rustc version (#2068)
  • (release) V18.3.0-prerelease.1 (#2090)
  • Move crates into crates/ dir (#1958)
  • Fix atuin crate readme (#1959)
  • Add some more logging to handlers (#1971)
  • Add some more debug logs (#1979)
  • Clarify default config file (#2026)
  • Handle rate limited responses (#2057)
  • Add Systemd config for self-hosted server (#1879)
  • Switch to cargo dist for releases (#2085)
  • Update email, gitignore, tweak ui (#2094)
  • Show scope in changelog (#2102)

Performance

  • (nushell) Use version.(major|minor|patch) if available (#1963)
  • Only open the database for commands if strictly required (#2043)

Refactor

  • Preview_auto to use enum and different option (#1991)

18.2.0

Bug Fixes

  • (bash) Do not use "return" to cancel initialization (#1928)
  • (crate) Add missing description (#1861)
  • (doctor) Detect preexec plugin using env ATUIN_PREEXEC_BACKEND (#1856)
  • (install) Install script echo (#1899)
  • (nu) Update atuin.nu to resolve 0.92 deprecation (#1913)
  • (search) Allow empty search (#1866)
  • (search) Case insensitive hostname filtering (#1883)
  • Pass search query in via env (#1865)
  • Pass search query in via env for Nushell (#1874)
  • Report non-decodable errors correctly (#1915)
  • Use spawn_blocking for file access during async context (#1936)

Documentation

  • (bash-preexec) Describe the limitation of missing commands (#1937)
  • Add security contact (#1867)
  • Add install instructions for cave/exherbo linux in README.md (#1927)
  • Add missing cli help text (#1945)

Features

  • (bash/blesh) Use _ble_exec_time_ata for duration even in bash < 5 (#1940)
  • (dotfiles) Add alias import (#1938)
  • (gui) Add base structure (#1935)
  • (install) Update install.sh to support KDE Neon (#1908)
  • (search) Process [C-h] and [C-?] as representations of backspace (#1857)
  • (search) Allow specifying search query as an env var (#1863)
  • (search) Add better search scoring (#1885)
  • (server) Check PG version before running migrations (#1868)
  • Add atuin prefix binding (#1875)
  • Sync v2 default for new installs (#1914)
  • Add 'ctrl-a a' to jump to beginning of line (#1917)
  • Prevents stderr from going to the screen (#1933)

Miscellaneous Tasks

  • (ci) Add codespell support (config, workflow) and make it fix some typos (#1916)
  • (gui) Cargo update (#1943)
  • Add issue form (#1871)
  • Require atuin doctor in issue form (#1872)
  • Add section to issue form (#1873)

Performance

  • (dotfiles) Cache aliases and read straight from file (#1918)

18.1.0

Bug Fixes

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

Documentation

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

Features

  • (client) Add config option keys.scroll_exits (#1744)
  • (dotfiles) Add enable setting to dotfiles, disable by default (#1829)
  • (nix) Add update action (#1779)
  • (nu) Return early if history is disabled (#1807)
  • (nushell) Add nushell completion generation (#1791)
  • (search) Process Ctrl+m for kitty keyboard protocol (#1720)
  • (stats) Normalize formatting of default config, suggest nix (#1764)
  • (stats) Add linux sysadmin commands to common_subcommands (#1784)
  • (ui) Add config setting for showing tabs (#1755)
  • 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)
  • Add 'ignored_commands' option to stats (#1722)
  • Support syncing aliases (#1721)
  • Change fulltext to do multi substring match (#1660)
  • 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 CTRL+[ binding as <Esc> alias (#1787)
  • 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 automatic history store init (#1831)
  • Adds info command to show env vars and config files (#1841)

Miscellaneous Tasks

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

Performance

  • Optimize history init-store (#1691)

Refactor

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

18.0.1

Bug Fixes

  • Reorder the exit of enhanced keyboard mode (#1694)

18.0.0

Bug Fixes

  • (bash) Avoid unexpected atuin history start for keybindings (#1509)
  • (bash) Prevent input to be interpreted as options for blesh auto-complete (#1511)
  • (bash) Work around custom IFS (#1514)
  • (bash) Fix and improve the keybinding to up (#1515)
  • (bash) Work around bash < 4 and introduce initialization guards (#1533)
  • (bash) Strip control chars generated by \[\] in PS1 with bash-preexec (#1620)
  • (bash/preexec) Erase the prompt last line before Bash renders it
  • (bash/preexec) Erase the previous prompt before overwriting
  • (bash/preexec) Support termcap names for tput (#1670)
  • (docs) Update repo url in CONTRIBUTING.md (#1594)
  • (fish) Integration on older fishes (#1563)
  • (perm) Set umask 077 (#1554)
  • (search) Fix invisible tab title (#1560)
  • (shell) Fix incorrect timing of child shells (#1510)
  • (sync) Save sync time when it starts, not ends (#1573)
  • (tests) Add Settings::utc() for utc settings (#1677)
  • (tui) Dedupe was removing history (#1610)
  • (windows) Disables unix specific stuff for windows (#1557)
  • Prevent input to be interpreted as options for zsh autosuggestions (#1506)
  • Disable musl deb building (#1525)
  • Shorten text, use ctrl-o for inspector (#1561)
  • 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)
  • Only escape control characters when writing to terminal (#1593)
  • 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)
  • Set durability for sqlite to recommended settings (#1667)
  • Correct download list for incremental builds (#1672)

Documentation

  • (README) Clarify prerequisites for Bash (#1686)
  • (readme) 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

  • (bash) Support high-resolution timing even without ble.sh (#1534)
  • (search) Introduce keymap-dependent vim-mode (#1570)
  • (search) Make cursor style configurable (#1595)
  • (shell) Bind the Atuin search to "/" in vi-normal mode (#1629)
    • BREAKING: bind the Atuin search to "/" in vi-normal mode (#1629)
  • (ui) Add redraw (#1519)
  • (ui) Vim mode (#1553)
  • (ui) When in vim-normal mode apply an alternative highlighting to the selected line (#1574)
  • (zsh) Update widget names (#1631)
  • Enable enhanced keyboard mode (#1505)
  • Rework record sync for improved reliability (#1478)
  • Include atuin login in secret patterns (#1518)
  • Make it clear what you are registering for (#1523)
  • Add extended help (#1540)
  • Add interactive command inspector (#1296)
  • Add better error handling for sync (#1572)
  • Add history rebuild (#1575)
  • Make deleting from the UI work with record store sync (#1580)
  • Add metrics counter for records downloaded (#1584)
  • Make store init idempotent (#1609)
  • Don't stop with invalid key (#1612)
  • Add registered and deleted metrics (#1622)
  • 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

  • (ci) Use github m1 for release builds (#1658)
  • (ci) Re-enable test cache, add separate check step (#1663)
  • (ci) Run rust build/test/check on 3 platforms (#1675)
  • 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)

Refactor

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

Styling

  • (bash) Use consistent coding style (#1528)

Testing

  • Add multi-user integration tests (#1648)

Stats

  • Misc improvements (#1613)

17.2.1

Bug Fixes

  • (server) Typo with default config (#1493)

17.2.0

Bug Fixes

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

Documentation

  • (readme) Add actuated linkback
  • (readme) Fix light/dark mode logo
  • (readme) Use picture element for logo
  • 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
  • Add docs for zsh-autosuggestion integration (#1480)
  • Remove stray character from README
  • Update logo (#1481)

Features

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

Miscellaneous Tasks

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

Refactor

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

17.1.0

Bug Fixes

  • (fish) Clean up the fish script options (#1370)
  • (fish) Use fish builtins for enter_accept (#1373)
  • (fish) Accept multiline commands (#1418)
  • (nix) Add Appkit to the package build (#1358)
  • (zsh) Bind in the most popular modes (#1360)
  • (zsh) Only trigger up-arrow on first line (#1359)
  • Initial list of history in workspace mode (#1356)
  • Make atuin account delete void session + key (#1393)
  • New clippy lints (#1395)
  • 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

  • (nix) 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

  • (readme) Add contributor image to README (#1430)
  • 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)
  • Setup git cliff (#1431)

17.0.1

Bug Fixes

  • (bash) Improve output of enter_accept (#1342)
  • (enter_accept) Clear old cmd snippet (#1350)
  • (fish) Improve output for enter_accept (#1341)

17.0.0

Bug Fixes

  • (1220) Workspace Filtermode not handled in skim engine (#1273)
  • (nu) Disable the up-arrow keybinding for Nushell (#1329)
  • (nushell) Ignore stderr messages (#1320)
  • (ubuntu/arm)* Detect non amd64 ubuntu and handle (#1131)

Documentation

  • Update workspace config key to workspaces (#1174)
  • Document the available format options of History list command (#1234)

Features

  • (installer) Try installing via paru for the AUR (#1262)
  • (keyup) Configure SearchMode for KeyUp invocation #1216 (#1224)
  • Mouse selection support (#1209)
  • Copy to clipboard (#1249)

Refactor

  • Duplications reduced in order to align implementations of reading history files (#1247)

Config.md

  • Invert mode detailed options (#1225)

16.0.0

Bug Fixes

  • (docs) List all presently documented commands (#1140)
  • (docs) Correct command overview paths (#1145)
  • (server) Teapot is a cup of coffee (#1137)
  • Adjust broken link to supported shells (#1013)
  • Fixes unix specific impl of shutdown_signal (#1061)
  • Nushell empty hooks (#1138)

Features

  • Do not allow empty passwords durring account creation (#1029)

Skim

  • Fix filtering aggregates (#1114)

15.0.0

Documentation

  • Fix broken links in README.md (#920)
  • Fix "From source" cd command (#937)

Features

  • Add delete account option (attempt 2) (#980)

Miscellaneous Tasks

  • Uuhhhhhh crypto lol (#805)
  • Fix participle "be ran" -> "be run" (#939)

Cwd_filter

  • Much like history_filter, only it applies to cwd (#904)

14.0.0

Bug Fixes

  • (client) Always read session_path from settings (#757)
  • (installer) Use case-insensitive comparison (#776)
  • Many wins were broken 📝 (#789)
  • Paste into terminal after switching modes (#793)
  • Record negative exit codes (#821)
  • Allow nix package to fetch dependencies from git (#832)

Documentation

  • (README) Fix activity graph link (#753)

Features

  • Add common default keybindings (#719)
  • Add an inline view mode (#648)
  • Add Nushell support (#788)
  • Add github action to test the nix builds (#833)

Miscellaneous Tasks

  • Remove tui vendoring (#804)
  • Use fork of skim (#803)

Nix

  • Add flake-compat (#743)

13.0.0

Documentation

  • (README) Add static activity graph example (#680)
  • Remove human short flag from docs, duplicate of help -h (#663)
  • Fix typo in zh-CN/README.md (#666)

Features

  • (history) Add new flag to allow custom output format (#662)

Fish

  • Fix atuin init for the fish shell (#699)

Install.sh

  • Fallback to using cargo (#639)

12.0.0

Documentation

  • Add more details about date parsing in the stats command (#579)

0.10.0

Miscellaneous Tasks

  • Allow specifiying the limited of returned entries (#364)

0.9.0

README

  • Add MacPorts installation instructions (#302)

0.8.1

Bug Fixes

  • Get install.sh working on UbuntuWSL (#260)

0.8.0

Bug Fixes

  • Resolve some issues with install.sh (#188)

Features

  • Login/register no longer blocking (#216)

0.7.2

Bug Fixes

  • Dockerfile with correct glibc (#198)

Features

  • Allow input of credentials from stdin (#185)

Miscellaneous Tasks

  • Some new linting (#201)
  • Supply pre-build docker image (#199)
  • Add more eyre contexts (#200)
  • Improve build times (#213)

0.7.1

Features

  • Build individual crates (#109)

0.6.3

Bug Fixes

  • Help text

Features

  • Use directories project data dir

Miscellaneous Tasks

  • Use structopt wrapper instead of building clap by hand