Files
atuin/crates/atuin/Cargo.toml
T
Ellie Huxtable 78366dca8c chore(release): prepare for release 18.23.0 (#4216)
Release 18.23.0


### Bug Fixes

- *(common)* Sleep before each backoff attempt
([#4129](https://github.com/atuinsh/atuin/issues/4129))
- *(common)* Include the cause in the sqlite pool creation error
([#4185](https://github.com/atuinsh/atuin/issues/4185))
- *(docs)* Resolve atuin.sh self-hosting link 404 + tidy 404 page
([#4194](https://github.com/atuinsh/atuin/issues/4194))
- *(hook)* Accept a string tool_response from codex
([#4171](https://github.com/atuinsh/atuin/issues/4171))
- *(pty-proxy)* Resolve zsh --shell to an absolute path with :c
([#4097](https://github.com/atuinsh/atuin/issues/4097))
- *(wrapped)* Command Evolution ignoring common_prefix
([#4148](https://github.com/atuinsh/atuin/issues/4148))
- Clarify migration errors caused by conflicting Atuin versions
([#4173](https://github.com/atuinsh/atuin/issues/4173))
- Restart the daemon when enabling output capture
([#4215](https://github.com/atuinsh/atuin/issues/4215))


### Documentation

- Remove msrv chip
([#4112](https://github.com/atuinsh/atuin/issues/4112))
- Slightly more pleasant help UX
([#4111](https://github.com/atuinsh/atuin/issues/4111))
- Clarify atuin-client vs atuin-common crate placement
([#4192](https://github.com/atuinsh/atuin/issues/4192))


### Features

- *(atuin-common)* Cross-platform free-space probing for disk limits
([#4122](https://github.com/atuinsh/atuin/issues/4122))
- *(atuin-common)* Add HighlightedText type with proto conversion
([#4123](https://github.com/atuinsh/atuin/issues/4123))
- *(atuin-common)* Add generic SQLite FTS5 helper
([#4124](https://github.com/atuinsh/atuin/issues/4124))
- *(atuin-daemon)* Full-text search index over captured output
([#4145](https://github.com/atuinsh/atuin/issues/4145))
- *(common)* Add fs::tree_watcher directory watcher utility
([#4188](https://github.com/atuinsh/atuin/issues/4188))
- *(common)* Generic file-tail and jsonl-tail utilities
([#4186](https://github.com/atuinsh/atuin/issues/4186))
- *(common)* SqliteObserver for cross-process SQLite change observation
([#4195](https://github.com/atuinsh/atuin/issues/4195))
- *(config)* Accept unit-aware durations in config
([#4128](https://github.com/atuinsh/atuin/issues/4128))
- *(harnesstools)* Generic AI session-capture interface
([#4191](https://github.com/atuinsh/atuin/issues/4191))
- *(mcp)* Add atuin_output_search tool
([#4157](https://github.com/atuinsh/atuin/issues/4157))
- *(search)* Allow repeated exit-code filters
([#4132](https://github.com/atuinsh/atuin/issues/4132))
- Improve `atuin_common::ansi::to_plain_text`
([#4101](https://github.com/atuinsh/atuin/issues/4101))
- Full-text search over captured command output
([#4126](https://github.com/atuinsh/atuin/issues/4126))
- Json and ndjson output styles for `output search`
([#4158](https://github.com/atuinsh/atuin/issues/4158))
- AI Session Capture Daemon Interface
([#4184](https://github.com/atuinsh/atuin/issues/4184))
- Add easy config shortcuts
([#4213](https://github.com/atuinsh/atuin/issues/4213))


### Miscellaneous Tasks

- *(atuin-common)* Remove eyre in favor of thiserror
([#4103](https://github.com/atuinsh/atuin/issues/4103))
- *(output-capture)* Reconcile can no longer crash
([#4153](https://github.com/atuinsh/atuin/issues/4153))
- Replace daemonize with daemonix
([#4099](https://github.com/atuinsh/atuin/issues/4099))
- Bump sysinfo to 0.39.6
([#4102](https://github.com/atuinsh/atuin/issues/4102))
- Lower MSRV to 1.95
([#4100](https://github.com/atuinsh/atuin/issues/4100))
- Remove eyre from atuin-domain
([#4107](https://github.com/atuinsh/atuin/issues/4107))
- Ban eyre from atuin-history
([#4108](https://github.com/atuinsh/atuin/issues/4108))
- Remove eyre from atuin-pty-proxy
([#4110](https://github.com/atuinsh/atuin/issues/4110))
- Less strict versions
([#4143](https://github.com/atuinsh/atuin/issues/4143))
- Cut build-job time
([#4182](https://github.com/atuinsh/atuin/issues/4182))
- Give integration-test root-disk headroom + disk telemetry
([#4208](https://github.com/atuinsh/atuin/issues/4208))
- Sccache + Depot cache for integration-test
([#4211](https://github.com/atuinsh/atuin/issues/4211))


### Performance

- *(atuin)* Avoid clone on keystroke
([#4160](https://github.com/atuinsh/atuin/issues/4160))
- *(atuin)* Avoid per-char String allocation when drawing command cells
([#4164](https://github.com/atuinsh/atuin/issues/4164))
- *(atuin-daemon)* Key the output FTS index by rowid
([#4151](https://github.com/atuinsh/atuin/issues/4151))
- *(atuin-daemon)* Make the output FTS index contentless
([#4154](https://github.com/atuinsh/atuin/issues/4154))
- *(atuin-daemon)* Skip History clone in start_cmd when no tail
subscriber ([#4165](https://github.com/atuinsh/atuin/issues/4165))
- *(pty-proxy)* Forward stdout via raw fd write instead of buffered
LineWriter ([#4159](https://github.com/atuinsh/atuin/issues/4159))
- *(pty-proxy,common)* Use memchr for hot byte scans
([#4144](https://github.com/atuinsh/atuin/issues/4144))
- Make the daemon's large deletes and CI's integration tests fast
([#4189](https://github.com/atuinsh/atuin/issues/4189))


### Refactor

- *(atuin-common)* Modularize futures::stream with chunked/merge
combinators ([#4120](https://github.com/atuinsh/atuin/issues/4120))
- *(atuin-daemon)* Move HistoryId proto message into common.proto
([#4121](https://github.com/atuinsh/atuin/issues/4121))
- *(atuin-daemon)* Restructure output_capture into persistence + engine
([#4125](https://github.com/atuinsh/atuin/issues/4125))
- *(client)* Rename SyncEngine to SyncSession
([#4130](https://github.com/atuinsh/atuin/issues/4130))
- *(daemon)* Replace sync event-bus with a standalone engine
([#4131](https://github.com/atuinsh/atuin/issues/4131))
- *(deps)* Bump DeterminateSystems/update-flake-lock from 28 to 29
([#4138](https://github.com/atuinsh/atuin/issues/4138))
- *(deps)* Bump DeterminateSystems/nix-installer-action from 22 to 23
([#4137](https://github.com/atuinsh/atuin/issues/4137))
- *(deps)* Bump eyre from 0.6.12 to 0.6.14
([#4133](https://github.com/atuinsh/atuin/issues/4133))
- *(deps)* Bump serde_regex from 1.1.0 to 1.2.0
([#4134](https://github.com/atuinsh/atuin/issues/4134))
- *(deps)* Bump uuid from 1.25.0 to 1.26.1
([#4135](https://github.com/atuinsh/atuin/issues/4135))
- *(deps)* Bump soupsieve from 2.8.4 to 2.9 in /docs in the uv group
across 1 directory
([#4172](https://github.com/atuinsh/atuin/issues/4172))
- *(deps)* Bump atuin-vt100 from 0.19.0 to 0.19.1
([#4205](https://github.com/atuinsh/atuin/issues/4205))
- *(hooks)* Move agent hook install into atuin-common harnesstools
([#4183](https://github.com/atuinsh/atuin/issues/4183))


### Testing

- *(atuin-common)* Use #[rstest] in place of #[test]
([#4146](https://github.com/atuinsh/atuin/issues/4146))
- Fix flaky empty_history_search_can_be_cancelled e2e test
([#4197](https://github.com/atuinsh/atuin/issues/4197))


### Bug

- Fix transaction lock
([#4152](https://github.com/atuinsh/atuin/issues/4152))
- Deletion state race
([#4180](https://github.com/atuinsh/atuin/issues/4180))
2026-09-21 16:48:32 -07:00

183 lines
5.9 KiB
TOML

[package]
name = "atuin"
edition = "2024"
description = "atuin - magical shell history"
readme = "./README.md"
authors.workspace = true
homepage.workspace = true
license.workspace = true
repository.workspace = true
rust-version.workspace = true
version.workspace = true
exclude = ["vendor/bash-preexec/.github", "vendor/bash-preexec/test"]
[package.metadata.binstall]
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-{ target }.tar.gz"
bin-dir = "{ name }-{ target }/{ bin }{ binary-ext }"
pkg-fmt = "tgz"
[package.metadata.binstall.overrides.'cfg(target_os = "windows")']
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-{ target }.zip"
bin-dir = "{ bin }{ binary-ext }"
pkg-fmt = "zip"
[package.metadata.deb]
maintainer = "Ellie Huxtable <[email protected]>"
copyright = "2021, Ellie Huxtable <[email protected]>"
license-file = ["LICENSE"]
depends = "$auto"
section = "utility"
[package.metadata.rpm]
package = "atuin"
[package.metadata.rpm.cargo]
buildflags = ["--release"]
[package.metadata.rpm.targets]
atuin = { path = "/usr/bin/atuin" }
[features]
default = [
"client",
"sync",
"clipboard",
"check-update",
"daemon",
"ai",
"pty-proxy",
]
client = ["atuin-client"]
sync = ["atuin-client/sync"]
daemon = ["dep:async-stream", "atuin-client/daemon", "atuin-daemon", "atuin-ai?/daemon"]
ai = ["atuin-ai"]
pty-proxy = ["dep:atuin-pty-proxy"]
hex = ["pty-proxy"]
clipboard = ["arboard"]
check-update = ["atuin-client/check-update"]
vendored-tls = ["atuin-client?/vendored-tls"]
# `atuin update`: self-update via the cargo-dist install receipt. Not a
# default feature: only the official installer artifacts can self-update
# (dist enables it in dist-workspace.toml), so package-manager and
# `cargo install` builds skip axoupdater and its dependency tree — notably
# axoasset's rustls/aws-lc-rs reqwest backend, which is only avoided by the
# [patch.crates-io] axoasset fork when building from this repo.
self-update = ["dep:axoupdater"]
profiling-traced = [
"dep:tracing-opentelemetry",
"dep:opentelemetry",
"dep:opentelemetry_sdk",
"dep:opentelemetry-otlp",
]
[dependencies]
atuin-ai = { workspace = true, optional = true }
# TODO(taylordotfish): in Rust 1.99 we can change this to `workspace = true`
atuin-client = {
path = "../atuin-client",
version = "18.23.0",
optional = true,
default-features = false,
}
atuin-common = { workspace = true, features = ["unicode", "os", "ai"] }
atuin-daemon = { workspace = true, optional = true }
atuin-domain = { workspace = true }
atuin-dotfiles = { workspace = true }
atuin-history = { workspace = true }
atuin-vt100 = { workspace = true }
atuin-kv = { workspace = true }
atuin-pty-proxy = { workspace = true, optional = true }
atuin-scripts = { workspace = true }
ansi-to-tui = { workspace = true }
async-stream = { workspace = true, optional = true }
async-trait = { workspace = true }
axoupdater = { workspace = true, optional = true }
clap = { workspace = true }
clap_complete = { workspace = true }
clap_complete_nushell = { workspace = true }
colored = { workspace = true }
crossterm = { workspace = true, features = ["use-dev-tty"] }
derive_more = { workspace = true }
easy-cast = { workspace = true }
enum_dispatch = { workspace = true }
eyre = { workspace = true }
frizbee = { workspace = true }
futures-util = { workspace = true }
indicatif = { workspace = true }
interim = { workspace = true }
itertools = { workspace = true }
locked-tripwire = { workspace = true }
norm = { workspace = true }
opentelemetry = { workspace = true, optional = true }
opentelemetry-otlp = { workspace = true, optional = true }
opentelemetry_sdk = { workspace = true, optional = true }
ratatui = { workspace = true }
regex = { workspace = true }
rpassword = { workspace = true }
runtime-format = { workspace = true }
rustix = { workspace = true }
semver = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
shlex = { workspace = true }
sysinfo = { workspace = true }
tempfile = { workspace = true }
thiserror = { workspace = true }
time = { workspace = true }
tiny-bip39 = { workspace = true }
tokio = { workspace = true }
# settings editor with comment and relative ordering preservation
toml_edit = { workspace = true }
tracing = { workspace = true }
tracing-appender = { workspace = true }
tracing-opentelemetry = { workspace = true, optional = true }
tracing-subscriber = { workspace = true }
unicode-width = { workspace = true }
url = { workspace = true }
uuid = { workspace = true }
[target.'cfg(any(target_os = "windows", target_os = "macos"))'.dependencies]
arboard = { workspace = true, optional = true }
[target.'cfg(target_os = "linux")'.dependencies]
arboard = { workspace = true, optional = true, features = ["wayland-data-control"] }
[target.'cfg(unix)'.dependencies]
daemonix = { workspace = true }
# Enable tree-sitter shell parsing on platforms where tree-sitter's bundled C
# compiles cleanly. tree-sitter 0.26's portable/endian.h fails on illumos,
# Windows cross-compiles, and potentially other exotic targets.
[target.'cfg(any(target_os = "linux", target_os = "macos", target_os = "windows", target_os = "illumos"))'.dependencies]
atuin-ai = { workspace = true, optional = true, features = ["tree-sitter"] }
tree-sitter = { workspace = true }
tree-sitter-bash = { workspace = true }
tree-sitter-fish = { workspace = true }
tree-sitter-powershell = { workspace = true }
[target.'cfg(windows)'.dependencies]
windows-sys = { workspace = true }
[dev-dependencies]
divan = { workspace = true }
parking_lot = { workspace = true }
proptest = { workspace = true }
rstest = { workspace = true }
tempfile = { workspace = true }
toml_edit = { workspace = true, features = ["serde"] }
[[bench]]
name = "render_char"
harness = false
# for the PTY e2e tests (tests/e2e_pty.rs)
[target.'cfg(unix)'.dev-dependencies]
nix-pty = { package = "nix", version = "0.28", features = ["term"] }
portable-pty = "0.9"
[lints]
workspace = true