From bbdf38018b47328b5faa2cef635c37095045be72 Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Fri, 12 Jun 2026 01:54:21 +0200 Subject: feat(server): Really make users stateless (with tests) This commit also remove another load of unneeded features. --- crates/turtle/src/atuin_daemon/components/history.rs | 1 - crates/turtle/src/atuin_daemon/components/search.rs | 10 ---------- crates/turtle/src/atuin_daemon/components/sync.rs | 4 ++-- crates/turtle/src/atuin_daemon/daemon.rs | 2 +- crates/turtle/src/atuin_daemon/mod.rs | 2 +- crates/turtle/src/atuin_daemon/search/index.rs | 13 ++++++------- 6 files changed, 10 insertions(+), 22 deletions(-) (limited to 'crates/turtle/src/atuin_daemon') diff --git a/crates/turtle/src/atuin_daemon/components/history.rs b/crates/turtle/src/atuin_daemon/components/history.rs index ec41977f..b71543c1 100644 --- a/crates/turtle/src/atuin_daemon/components/history.rs +++ b/crates/turtle/src/atuin_daemon/components/history.rs @@ -5,7 +5,6 @@ use std::{pin::Pin, sync::Arc}; use crate::atuin_client::{ - database::Database, history::{History, HistoryId, store::HistoryStore}, settings::Settings, }; diff --git a/crates/turtle/src/atuin_daemon/components/search.rs b/crates/turtle/src/atuin_daemon/components/search.rs index 17decdad..832d05d8 100644 --- a/crates/turtle/src/atuin_daemon/components/search.rs +++ b/crates/turtle/src/atuin_daemon/components/search.rs @@ -5,7 +5,6 @@ use std::{pin::Pin, sync::Arc}; -use crate::atuin_client::database::Database; use eyre::Result; use tokio::sync::RwLock; use tokio_stream::Stream; @@ -394,15 +393,6 @@ fn convert_filter_mode( } } -#[cfg(windows)] -pub(crate) fn with_trailing_slash(s: &str) -> String { - if s.ends_with('\\') { - s.to_string() - } else { - format!("{}\\", s) - } -} - #[cfg(not(windows))] pub(crate) fn with_trailing_slash(s: &str) -> String { if s.ends_with('/') { diff --git a/crates/turtle/src/atuin_daemon/components/sync.rs b/crates/turtle/src/atuin_daemon/components/sync.rs index fdd00b5f..fbfbbd67 100644 --- a/crates/turtle/src/atuin_daemon/components/sync.rs +++ b/crates/turtle/src/atuin_daemon/components/sync.rs @@ -141,7 +141,7 @@ async fn sync_loop(handle: DaemonHandle, mut cmd_rx: mpsc::Receiver // Skip periodic ticks if auto_sync is disabled AND we're not retrying // a previous failure. Retries must continue regardless of auto_sync. - if !settings.auto_sync && sync_state == SyncState::Idle { + if !settings.sync.auto && sync_state == SyncState::Idle { tracing::debug!("auto_sync disabled, skipping periodic sync tick"); continue; } @@ -190,7 +190,7 @@ async fn do_sync_tick( tracing::info!("sync tick"); // Check if logged in - let logged_in = match settings.have_sync_key().await { + let logged_in = match settings.sync.have_sync_user() { Ok(v) => v, Err(e) => { tracing::warn!("failed to check login status, skipping sync tick: {e}"); diff --git a/crates/turtle/src/atuin_daemon/daemon.rs b/crates/turtle/src/atuin_daemon/daemon.rs index 3268548e..7583c197 100644 --- a/crates/turtle/src/atuin_daemon/daemon.rs +++ b/crates/turtle/src/atuin_daemon/daemon.rs @@ -11,7 +11,7 @@ use std::sync::Arc; use crate::atuin_client::{ - database::Sqlite as HistoryDatabase, encryption, record::sqlite_store::SqliteStore, + database::ClientSqlite as HistoryDatabase, encryption, record::sqlite_store::SqliteStore, settings::Settings, }; use eyre::{Context, Result}; diff --git a/crates/turtle/src/atuin_daemon/mod.rs b/crates/turtle/src/atuin_daemon/mod.rs index eac28f78..6037b5a8 100644 --- a/crates/turtle/src/atuin_daemon/mod.rs +++ b/crates/turtle/src/atuin_daemon/mod.rs @@ -1,4 +1,4 @@ -use crate::atuin_client::database::Sqlite as HistoryDatabase; +use crate::atuin_client::database::ClientSqlite as HistoryDatabase; use crate::atuin_client::record::sqlite_store::SqliteStore; use crate::atuin_client::settings::{Settings, watcher::global_settings_watcher}; use eyre::Result; diff --git a/crates/turtle/src/atuin_daemon/search/index.rs b/crates/turtle/src/atuin_daemon/search/index.rs index 446d7992..a23b3133 100644 --- a/crates/turtle/src/atuin_daemon/search/index.rs +++ b/crates/turtle/src/atuin_daemon/search/index.rs @@ -14,8 +14,7 @@ use std::{ use crate::atuin_client::settings::Search; use crate::{ - atuin_client::history::{History, is_known_agent}, - atuin_daemon::components::search::with_trailing_slash, + atuin_client::history::History, atuin_daemon::components::search::with_trailing_slash, }; use atuin_nucleo::{Injector, Nucleo, pattern}; use dashmap::DashMap; @@ -195,7 +194,11 @@ impl CommandData { /// Check if any invocation matches a directory prefix (workspace/git root). /// O(n) where n = number of unique directories for this command. - pub(crate) fn has_invocation_in_workspace(&self, prefix: &str, interner: &ThreadedRodeo) -> bool { + pub(crate) fn has_invocation_in_workspace( + &self, + prefix: &str, + interner: &ThreadedRodeo, + ) -> bool { self.directories .iter() .any(|&spur| interner.resolve(&spur).starts_with(prefix)) @@ -289,10 +292,6 @@ impl SearchIndex { /// If the command already exists, updates its invocation data. /// If it's a new command, adds it to both the map and Nucleo. pub(crate) fn add_history(&self, history: &History) { - if is_known_agent(&history.author) { - return; - } - let command = history.command.as_str(); // DashMap with Arc keys can be looked up with &str via Borrow trait -- cgit v1.3.1