atagen

macltok

public
Star0
Watch0

Commit 13da982fe7bb

tarball

atagen <boss@atagen.co>2026-10-26 07:38 UTC

3 files changed+26-19
deps: stop opening encrypted rooms on a room_keys/version round trip

Fork 7a0452c1 labels undecryptable events from the cached backup answer instead of fetching it under the timeline lock. The encryption watcher warms that cache at engine start so the labels rarely fall back to the local guess.
Modified file: Cargo.lock+10 additions−10 deletions
@@ -2217,7 +2217,7 @@ dependencies = [
22172217 [[package]]
22182218 name = "matrix-sdk"
22192219 version = "0.18.0"
2220-source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=0f2f982989765b79c39efdc30e86eaafccf69e4a#0f2f982989765b79c39efdc30e86eaafccf69e4a"
2220+source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=7a0452c1960ffd97198295934cef9209b4816ba3#7a0452c1960ffd97198295934cef9209b4816ba3"
22212221 dependencies = [
22222222 "anymap2",
22232223 "aquamarine",
@@ -2280,7 +2280,7 @@ dependencies = [
22802280 [[package]]
22812281 name = "matrix-sdk-base"
22822282 version = "0.18.0"
2283-source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=0f2f982989765b79c39efdc30e86eaafccf69e4a#0f2f982989765b79c39efdc30e86eaafccf69e4a"
2283+source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=7a0452c1960ffd97198295934cef9209b4816ba3#7a0452c1960ffd97198295934cef9209b4816ba3"
22842284 dependencies = [
22852285 "as_variant",
22862286 "assert_matches",
@@ -2310,7 +2310,7 @@ dependencies = [
23102310 [[package]]
23112311 name = "matrix-sdk-common"
23122312 version = "0.18.0"
2313-source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=0f2f982989765b79c39efdc30e86eaafccf69e4a#0f2f982989765b79c39efdc30e86eaafccf69e4a"
2313+source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=7a0452c1960ffd97198295934cef9209b4816ba3#7a0452c1960ffd97198295934cef9209b4816ba3"
23142314 dependencies = [
23152315 "eyeball-im",
23162316 "futures-core",
@@ -2333,7 +2333,7 @@ dependencies = [
23332333 [[package]]
23342334 name = "matrix-sdk-crypto"
23352335 version = "0.18.0"
2336-source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=0f2f982989765b79c39efdc30e86eaafccf69e4a#0f2f982989765b79c39efdc30e86eaafccf69e4a"
2336+source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=7a0452c1960ffd97198295934cef9209b4816ba3#7a0452c1960ffd97198295934cef9209b4816ba3"
23372337 dependencies = [
23382338 "aes",
23392339 "aquamarine",
@@ -2374,7 +2374,7 @@ dependencies = [
23742374 [[package]]
23752375 name = "matrix-sdk-indexeddb"
23762376 version = "0.18.0"
2377-source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=0f2f982989765b79c39efdc30e86eaafccf69e4a#0f2f982989765b79c39efdc30e86eaafccf69e4a"
2377+source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=7a0452c1960ffd97198295934cef9209b4816ba3#7a0452c1960ffd97198295934cef9209b4816ba3"
23782378 dependencies = [
23792379 "async-trait",
23802380 "base64",
@@ -2406,7 +2406,7 @@ dependencies = [
24062406 [[package]]
24072407 name = "matrix-sdk-sqlite"
24082408 version = "0.18.0"
2409-source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=0f2f982989765b79c39efdc30e86eaafccf69e4a#0f2f982989765b79c39efdc30e86eaafccf69e4a"
2409+source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=7a0452c1960ffd97198295934cef9209b4816ba3#7a0452c1960ffd97198295934cef9209b4816ba3"
24102410 dependencies = [
24112411 "as_variant",
24122412 "async-trait",
@@ -2433,7 +2433,7 @@ dependencies = [
24332433 [[package]]
24342434 name = "matrix-sdk-store-encryption"
24352435 version = "0.18.0"
2436-source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=0f2f982989765b79c39efdc30e86eaafccf69e4a#0f2f982989765b79c39efdc30e86eaafccf69e4a"
2436+source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=7a0452c1960ffd97198295934cef9209b4816ba3#7a0452c1960ffd97198295934cef9209b4816ba3"
24372437 dependencies = [
24382438 "base64",
24392439 "blake3",
@@ -2454,7 +2454,7 @@ dependencies = [
24542454 [[package]]
24552455 name = "matrix-sdk-test"
24562456 version = "0.18.0"
2457-source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=0f2f982989765b79c39efdc30e86eaafccf69e4a#0f2f982989765b79c39efdc30e86eaafccf69e4a"
2457+source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=7a0452c1960ffd97198295934cef9209b4816ba3#7a0452c1960ffd97198295934cef9209b4816ba3"
24582458 dependencies = [
24592459 "as_variant",
24602460 "ctor",
@@ -2477,7 +2477,7 @@ dependencies = [
24772477 [[package]]
24782478 name = "matrix-sdk-test-macros"
24792479 version = "0.18.0"
2480-source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=0f2f982989765b79c39efdc30e86eaafccf69e4a#0f2f982989765b79c39efdc30e86eaafccf69e4a"
2480+source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=7a0452c1960ffd97198295934cef9209b4816ba3#7a0452c1960ffd97198295934cef9209b4816ba3"
24812481 dependencies = [
24822482 "quote",
24832483 "syn 2.0.119",
@@ -2486,7 +2486,7 @@ dependencies = [
24862486 [[package]]
24872487 name = "matrix-sdk-ui"
24882488 version = "0.18.0"
2489-source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=0f2f982989765b79c39efdc30e86eaafccf69e4a#0f2f982989765b79c39efdc30e86eaafccf69e4a"
2489+source = "git+ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk?rev=7a0452c1960ffd97198295934cef9209b4816ba3#7a0452c1960ffd97198295934cef9209b4816ba3"
24902490 dependencies = [
24912491 "as_variant",
24922492 "async-rx",
Modified file: Cargo.toml+9 additions−9 deletions
@@ -26,11 +26,11 @@ indexeddb = [
2626 futures-util = { version = "0.3.31", default-features = false, features = ["std"] }
2727 http = "1"
2828 imbl = { version = "6.1.0", default-features = false }
29-matrix-sdk = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk", rev = "0f2f982989765b79c39efdc30e86eaafccf69e4a", default-features = false, features = ["e2e-encryption"] }
30-matrix-sdk-base = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk", rev = "0f2f982989765b79c39efdc30e86eaafccf69e4a", default-features = false }
31-matrix-sdk-crypto = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk", rev = "0f2f982989765b79c39efdc30e86eaafccf69e4a", default-features = false }
32-matrix-sdk-store-encryption = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk", rev = "0f2f982989765b79c39efdc30e86eaafccf69e4a", optional = true }
33-matrix-sdk-ui = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk", rev = "0f2f982989765b79c39efdc30e86eaafccf69e4a", default-features = false }
29+matrix-sdk = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk", rev = "7a0452c1960ffd97198295934cef9209b4816ba3", default-features = false, features = ["e2e-encryption"] }
30+matrix-sdk-base = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk", rev = "7a0452c1960ffd97198295934cef9209b4816ba3", default-features = false }
31+matrix-sdk-crypto = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk", rev = "7a0452c1960ffd97198295934cef9209b4816ba3", default-features = false }
32+matrix-sdk-store-encryption = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk", rev = "7a0452c1960ffd97198295934cef9209b4816ba3", optional = true }
33+matrix-sdk-ui = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk", rev = "7a0452c1960ffd97198295934cef9209b4816ba3", default-features = false }
3434 ruma = { version = "0.16.0", default-features = false, features = ["unstable-msc2545", "unstable-msc4095"] }
3535 serde = { version = "1.0.219", features = ["derive", "rc"], optional = true }
3636 serde_json = { version = "1.0.143", features = ["raw_value"] }
@@ -54,8 +54,8 @@ js-sys = { version = "0.3.105", optional = true }
5454 # tantivy 0.26's merger reads Instant::now() whenever debug logging is on, and that panics in
5555 # wasm. both caps, since a release_max_level a host sets would otherwise win in release
5656 log = { version = "0.4.29", features = ["max_level_info", "release_max_level_info"] }
57-matrix-sdk = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk", rev = "0f2f982989765b79c39efdc30e86eaafccf69e4a", default-features = false, features = ["js"] }
58-matrix-sdk-ui = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk", rev = "0f2f982989765b79c39efdc30e86eaafccf69e4a", default-features = false, features = ["js"] }
57+matrix-sdk = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk", rev = "7a0452c1960ffd97198295934cef9209b4816ba3", default-features = false, features = ["js"] }
58+matrix-sdk-ui = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk", rev = "7a0452c1960ffd97198295934cef9209b4816ba3", default-features = false, features = ["js"] }
5959 # the sdk's own wasm reqwest leaves out stream, which the bounded media download needs
6060 reqwest = { version = "0.13.1", default-features = false, features = ["stream"] }
6161 uuid = { version = "1", features = ["js"] }
@@ -73,8 +73,8 @@ web-sys = { version = "0.3.105", optional = true, features = [
7373 tokio = { version = "1.47.1", features = ["rt"] }
7474
7575 [target.'cfg(not(target_family = "wasm"))'.dev-dependencies]
76-matrix-sdk = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk", rev = "0f2f982989765b79c39efdc30e86eaafccf69e4a", default-features = false, features = ["testing"] }
77-matrix-sdk-test = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk", rev = "0f2f982989765b79c39efdc30e86eaafccf69e4a" }
76+matrix-sdk = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk", rev = "7a0452c1960ffd97198295934cef9209b4816ba3", default-features = false, features = ["testing"] }
77+matrix-sdk-test = { git = "ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk", rev = "7a0452c1960ffd97198295934cef9209b4816ba3" }
7878 tokio = { version = "1.47.1", features = ["macros", "rt-multi-thread", "signal", "time"] }
7979 wiremock = "0.6.5"
8080
Modified file: src/engine/watchers.rs+7 additions
@@ -387,6 +387,13 @@ pub(super) async fn encryption(
387387 };
388388 let recovery = client.encryption().recovery();
389389 let backups = client.encryption().backups();
390+ // until this is cached, the timeline labels undecryptable events from a local guess
391+ matrix_sdk::executor::spawn({
392+ let backups = backups.clone();
393+ async move {
394+ let _ = backups.exists_on_server().await;
395+ }
396+ });
390397 let mut recovery_stream = recovery.state_stream();
391398 let mut backup_stream = backups.state_stream();
392399 let mut verification_stream = client.encryption().verification_state();