Compare commits

..

8 Commits

Author SHA1 Message Date
8b1d111837 chore: Release
All checks were successful
Continuous integration / Check (push) Successful in 38s
Continuous integration / Trunk (push) Successful in 37s
Continuous integration / Rustfmt (push) Successful in 31s
Continuous integration / Test Suite (push) Successful in 1m36s
Continuous integration / build (push) Successful in 51s
Continuous integration / Disallow unused dependencies (push) Successful in 1m59s
2025-04-23 11:02:46 -07:00
08abf31fa9 server: always remove unprocessed label when processing rules 2025-04-23 11:02:29 -07:00
fa99959508 chore: Release
All checks were successful
Continuous integration / Check (push) Successful in 38s
Continuous integration / Test Suite (push) Successful in 46s
Continuous integration / Trunk (push) Successful in 38s
Continuous integration / Rustfmt (push) Successful in 38s
Continuous integration / build (push) Successful in 53s
Continuous integration / Disallow unused dependencies (push) Successful in 1m55s
2025-04-23 09:31:43 -07:00
0f6af0f475 server: more debug prints 2025-04-23 09:31:25 -07:00
4c486e9168 chore: Release
All checks were successful
Continuous integration / Check (push) Successful in 38s
Continuous integration / Test Suite (push) Successful in 45s
Continuous integration / Rustfmt (push) Successful in 32s
Continuous integration / Trunk (push) Successful in 53s
Continuous integration / build (push) Successful in 51s
Continuous integration / Disallow unused dependencies (push) Successful in 2m4s
2025-04-22 22:43:37 -07:00
109d380ea7 server: remove inbox on no-match 2025-04-22 22:43:22 -07:00
4244fa0d82 chore: Release
All checks were successful
Continuous integration / Check (push) Successful in 38s
Continuous integration / Test Suite (push) Successful in 45s
Continuous integration / Rustfmt (push) Successful in 33s
Continuous integration / Trunk (push) Successful in 51s
Continuous integration / build (push) Successful in 53s
Continuous integration / Disallow unused dependencies (push) Successful in 2m1s
2025-04-22 22:41:26 -07:00
4b15e71893 server: remove unprocessed appropriately 2025-04-22 22:41:09 -07:00
5 changed files with 28 additions and 21 deletions

16
Cargo.lock generated
View File

@@ -3034,7 +3034,7 @@ dependencies = [
[[package]]
name = "letterbox-notmuch"
version = "0.17.10"
version = "0.17.14"
dependencies = [
"itertools",
"log",
@@ -3049,7 +3049,7 @@ dependencies = [
[[package]]
name = "letterbox-procmail2notmuch"
version = "0.17.10"
version = "0.17.14"
dependencies = [
"anyhow",
"clap",
@@ -3062,7 +3062,7 @@ dependencies = [
[[package]]
name = "letterbox-server"
version = "0.17.10"
version = "0.17.14"
dependencies = [
"ammonia",
"anyhow",
@@ -3080,8 +3080,8 @@ dependencies = [
"futures 0.3.31",
"headers",
"html-escape",
"letterbox-notmuch 0.17.10",
"letterbox-shared 0.17.10",
"letterbox-notmuch 0.17.14",
"letterbox-shared 0.17.14",
"linkify",
"log",
"lol_html",
@@ -3121,10 +3121,10 @@ dependencies = [
[[package]]
name = "letterbox-shared"
version = "0.17.10"
version = "0.17.14"
dependencies = [
"build-info",
"letterbox-notmuch 0.17.10",
"letterbox-notmuch 0.17.14",
"regex",
"serde",
"sqlx",
@@ -3134,7 +3134,7 @@ dependencies = [
[[package]]
name = "letterbox-web"
version = "0.17.10"
version = "0.17.14"
dependencies = [
"build-info",
"build-info-build",

View File

@@ -8,7 +8,7 @@ authors = ["Bill Thiede <git@xinu.tv>"]
edition = "2021"
license = "UNLICENSED"
publish = ["xinu"]
version = "0.17.10"
version = "0.17.14"
repository = "https://git.z.xinu.tv/wathiede/letterbox"
[profile.dev]

View File

@@ -27,8 +27,8 @@ css-inline = "0.14.4"
futures = "0.3.31"
headers = "0.4.0"
html-escape = "0.2.13"
letterbox-notmuch = { path = "../notmuch", version = "0.17.10", registry = "xinu" }
letterbox-shared = { path = "../shared", version = "0.17.10", registry = "xinu" }
letterbox-notmuch = { path = "../notmuch", version = "0.17.14", registry = "xinu" }
letterbox-shared = { path = "../shared", version = "0.17.14", registry = "xinu" }
linkify = "0.10.0"
log = "0.4.27"
lol_html = "2.3.0"

View File

@@ -990,6 +990,7 @@ pub async fn label_unprocessed(
// Only process the first file path is multiple files have the same id
let path = files.iter().next().unwrap();
let file = File::open(&path)?;
info!("mmaping {path}");
let mmap = unsafe { MmapOptions::new().map(&file)? };
let m = parse_mail(&mmap)?;
let (matched_rule, add_tags) = find_tags(&rules, &m.headers);
@@ -1028,11 +1029,6 @@ pub async fn label_unprocessed(
.push(id.clone());
}
//nm.tag_remove("unprocessed", &id)?;
let t = "unprocessed".to_string();
rm_mutations
.entry(t)
.or_insert_with(|| Vec::new())
.push(id.clone());
} else {
if add_tags.is_empty() {
let t = "Grey".to_string();
@@ -1041,19 +1037,30 @@ pub async fn label_unprocessed(
.or_insert_with(|| Vec::new())
.push(id.clone());
}
//nm.tag_remove("inbox", &id)?;
let t = "inbox".to_string();
rm_mutations
.entry(t)
.or_insert_with(|| Vec::new())
.push(id.clone());
}
let t = "unprocessed".to_string();
rm_mutations
.entry(t)
.or_insert_with(|| Vec::new())
.push(id.clone());
}
println!("Adding {} distinct labels", add_mutations.len());
info!("Adding {} distinct labels", add_mutations.len());
for (tag, ids) in add_mutations.iter() {
println!(" {tag}: {}", ids.len());
info!(" {tag}: {}", ids.len());
if !dryrun {
let ids: Vec<_> = ids.iter().map(|s| s.as_str()).collect();
nm.tags_add(tag, &ids)?;
}
}
println!("Removing {} distinct labels", rm_mutations.len());
info!("Removing {} distinct labels", rm_mutations.len());
for (tag, ids) in rm_mutations.iter() {
println!(" {tag}: {}", ids.len());
info!(" {tag}: {}", ids.len());
if !dryrun {
let ids: Vec<_> = ids.iter().map(|s| s.as_str()).collect();
nm.tags_remove(tag, &ids)?;

View File

@@ -12,7 +12,7 @@ version.workspace = true
[dependencies]
build-info = "0.0.40"
letterbox-notmuch = { path = "../notmuch", version = "0.17.10", registry = "xinu" }
letterbox-notmuch = { path = "../notmuch", version = "0.17.14", registry = "xinu" }
regex = "1.11.1"
serde = { version = "1.0.219", features = ["derive"] }
sqlx = "0.8.5"