aboutsummaryrefslogtreecommitdiffstats
path: root/crates/atuin-daemon
diff options
context:
space:
mode:
authorEllie Huxtable <ellie@atuin.sh>2026-03-16 16:28:54 -0700
committerGitHub <noreply@github.com>2026-03-16 16:28:54 -0700
commita964c27db2a359233bad200a64696b663eca4be5 (patch)
tree9370c6f7b541b79d7183dd754a9d6a863f51c1e2 /crates/atuin-daemon
parentfeat: Allow headless account ops against Hub server (#3280) (diff)
parentvendor nucleo fork into atuin workspace (diff)
downloadatuin-a964c27db2a359233bad200a64696b663eca4be5.zip
chore: vendor nucleo-ext + fork, so we can depend on our changes properly (#3284)
We cannot publish to crates.io without specifying a version, and we cannot do that without properly forking nucleo. We're shipping atuin-nucleo, but will likely drop this if we can get our changes upstream. This is highlighted in the README + manifest, and the original author is still included. Originally forked here: https://github.com/atuinsh/nucleo-ext cc @BinaryMuse - this should just be a vendor + restructure, but would appreciate the sanity check ## Checks - [ ] I am happy for maintainers to push small adjustments to this PR, to speed up the review cycle - [ ] I have checked that there are no existing pull requests for the same thing
Diffstat (limited to 'crates/atuin-daemon')
-rw-r--r--crates/atuin-daemon/Cargo.toml11
-rw-r--r--crates/atuin-daemon/src/search/index.rs8
2 files changed, 9 insertions, 10 deletions
diff --git a/crates/atuin-daemon/Cargo.toml b/crates/atuin-daemon/Cargo.toml
index 1226a14c..dd92df8b 100644
--- a/crates/atuin-daemon/Cargo.toml
+++ b/crates/atuin-daemon/Cargo.toml
@@ -14,10 +14,10 @@ readme.workspace = true
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
-atuin-client = { path = "../atuin-client" }
-atuin-common = { path = "../atuin-common" }
-atuin-dotfiles = { path = "../atuin-dotfiles" }
-atuin-history = { path = "../atuin-history" }
+atuin-client = { path = "../atuin-client", version = "18.13.2" }
+atuin-common = { path = "../atuin-common", version = "18.13.2" }
+atuin-dotfiles = { path = "../atuin-dotfiles", version = "18.13.2" }
+atuin-history = { path = "../atuin-history", version = "18.13.2" }
time = { workspace = true }
uuid = { workspace = true }
@@ -38,7 +38,7 @@ tokio-stream = { version = "0.1.14", features = ["net"] }
hyper-util = "0.1"
rand.workspace = true
-nucleo = { git = "https://github.com/atuinsh/nucleo-ext.git", rev="74bd786" }
+atuin-nucleo = { workspace = true }
[target.'cfg(target_os = "linux")'.dependencies]
@@ -46,7 +46,6 @@ listenfd = "1.0.1"
[dev-dependencies]
tempfile = { workspace = true }
-atuin-common = { path = "../atuin-common", version = "18.13.2" }
[build-dependencies]
protox = "0.9"
diff --git a/crates/atuin-daemon/src/search/index.rs b/crates/atuin-daemon/src/search/index.rs
index 1445871e..3328c5b5 100644
--- a/crates/atuin-daemon/src/search/index.rs
+++ b/crates/atuin-daemon/src/search/index.rs
@@ -14,9 +14,9 @@ use std::{
use atuin_client::history::History;
use atuin_client::settings::Search;
+use atuin_nucleo::{Injector, Nucleo, pattern};
use dashmap::DashMap;
use lasso::{Spur, ThreadedRodeo};
-use nucleo::{Injector, Nucleo, pattern};
use time::OffsetDateTime;
use tokio::sync::RwLock;
use tracing::{Level, instrument};
@@ -269,7 +269,7 @@ pub struct SearchIndex {
impl SearchIndex {
/// Create a new empty search index.
pub fn new() -> Self {
- let nucleo_config = nucleo::Config::DEFAULT;
+ let nucleo_config = atuin_nucleo::Config::DEFAULT;
// Single column for command text
let nucleo = Nucleo::<String>::new(nucleo_config, Arc::new(|| {}), None, 1);
let injector = nucleo.injector();
@@ -417,7 +417,7 @@ impl SearchIndex {
}
/// Build filter predicate for the given mode.
- fn build_filter(&self, mode: &IndexFilterMode) -> Option<nucleo::Filter<String>> {
+ fn build_filter(&self, mode: &IndexFilterMode) -> Option<atuin_nucleo::Filter<String>> {
// For Global mode, no filter needed
if matches!(mode, IndexFilterMode::Global) {
return None;
@@ -455,7 +455,7 @@ impl SearchIndex {
/// Build scorer from precomputed frecency map.
///
/// Returns None if frecency map is not available (search still works, just without frecency ranking).
- fn build_scorer(frecency_map: Option<FrecencyMap>) -> Option<nucleo::Scorer<String>> {
+ fn build_scorer(frecency_map: Option<FrecencyMap>) -> Option<atuin_nucleo::Scorer<String>> {
let map = frecency_map?;
Some(Arc::new(move |cmd: &String, fuzzy_score: u32| {
// HashMap<Arc<str>, _>::get accepts &str via Borrow trait