From 9fe7d10fcf73570767ba7b4eabaa95f65958821b Mon Sep 17 00:00:00 2001 From: Ellie Huxtable Date: Wed, 25 Feb 2026 19:10:58 -0800 Subject: feat: Add history author/intent metadata and v1 record version (#3205) ## Checks - [x] I am happy for maintainers to push small adjustments to this PR, to speed up the review cycle - [x] I have checked that there are no existing pull requests for the same thing Adds `author` and `intent` to client history records and DB persistence, including migration/backfill and CLI/daemon propagation. Introduces V2 record-store history version `v1` while retaining read compatibility for legacy `v0` records. Adds `--author` and `--intent` flags to `atuin history start`, plus `{author}` and `{intent}` format keys for listing/history output. Updates shell-integration docs for `ATUIN_HISTORY_AUTHOR` and `ATUIN_HISTORY_INTENT`, and updates related tests/fixtures. Validated with `cargo test -p atuin-client --lib`, `cargo test -p atuin-daemon --tests`, `cargo test -p atuin search::inspector`, and `cargo fmt --check`. --- crates/atuin-client/src/history/builder.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'crates/atuin-client/src/history/builder.rs') diff --git a/crates/atuin-client/src/history/builder.rs b/crates/atuin-client/src/history/builder.rs index 2b28339f..72a505fd 100644 --- a/crates/atuin-client/src/history/builder.rs +++ b/crates/atuin-client/src/history/builder.rs @@ -20,6 +20,10 @@ pub struct HistoryImported { session: Option, #[builder(default, setter(strip_option, into))] hostname: Option, + #[builder(default, setter(strip_option, into))] + author: Option, + #[builder(default, setter(strip_option, into))] + intent: Option, } impl From for History { @@ -32,6 +36,8 @@ impl From for History { imported.duration, imported.session, imported.hostname, + imported.author, + imported.intent, None, ) } @@ -49,6 +55,10 @@ pub struct HistoryCaptured { command: String, #[builder(setter(into))] cwd: String, + #[builder(default, setter(strip_option, into))] + author: Option, + #[builder(default, setter(strip_option, into))] + intent: Option, } impl From for History { @@ -61,6 +71,8 @@ impl From for History { -1, None, None, + captured.author, + captured.intent, None, ) } @@ -79,6 +91,8 @@ pub struct HistoryFromDb { duration: i64, session: String, hostname: String, + author: String, + intent: Option, deleted_at: Option, } @@ -93,6 +107,8 @@ impl From for History { duration: from_db.duration, session: from_db.session, hostname: from_db.hostname, + author: from_db.author, + intent: from_db.intent, deleted_at: from_db.deleted_at, } } @@ -114,6 +130,10 @@ pub struct HistoryDaemonCapture { session: String, #[builder(setter(into))] hostname: String, + #[builder(default, setter(strip_option, into))] + author: Option, + #[builder(default, setter(strip_option, into))] + intent: Option, } impl From for History { @@ -126,6 +146,8 @@ impl From for History { -1, Some(captured.session), Some(captured.hostname), + captured.author, + captured.intent, None, ) } -- cgit v1.3.1