diff --git a/Cargo.lock b/Cargo.lock index 0c4fc92..895ee65 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -50,18 +50,6 @@ dependencies = [ "cpufeatures", ] -[[package]] -name = "ahash" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" -dependencies = [ - "cfg-if", - "once_cell", - "version_check", - "zerocopy", -] - [[package]] name = "aho-corasick" version = "1.1.3" @@ -200,6 +188,12 @@ dependencies = [ "x11rb", ] +[[package]] +name = "archery" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae2ed21cd55021f05707a807a5fc85695dafb98832921f6cfa06db67ca5b869" + [[package]] name = "arg_enum_proc_macro" version = "0.3.4" @@ -533,16 +527,13 @@ dependencies = [ ] [[package]] -name = "backoff" -version = "0.4.0" +name = "backon" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" +checksum = "302eaff5357a264a2c42f127ecb8bac761cf99749fc3dc95677e2743991f99e7" dependencies = [ - "futures-core", - "getrandom 0.2.16", - "instant", - "pin-project-lite", - "rand 0.8.5", + "fastrand 2.3.0", + "gloo-timers", "tokio", ] @@ -732,9 +723,9 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "bytesize" -version = "1.3.3" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e93abca9e28e0a1b9877922aacb20576e05d4679ffa78c3d6dc22a26a216659" +checksum = "a3c8f83209414aacf0eeae3cf730b18d6981697fba62f200fcfb92b9f082acba" [[package]] name = "cassowary" @@ -827,6 +818,7 @@ dependencies = [ "iana-time-zone", "js-sys", "num-traits", + "serde", "wasm-bindgen", "windows-link", ] @@ -1222,9 +1214,9 @@ dependencies = [ [[package]] name = "deadpool-sqlite" -version = "0.9.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "656f14fc1ab819c65f332045ea7cb38841bbe551f3b2bc7e3abefb559af4155c" +checksum = "9e531d0beb6d12daa84df0482bf89e06c7ed059551ae1d7313dc7531d37778fb" dependencies = [ "deadpool", "deadpool-sync", @@ -1616,9 +1608,9 @@ dependencies = [ [[package]] name = "eyeball-im" -version = "0.6.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bce23da1ef2af356501c395426370ef09d778989557a749a874645ec74aba23" +checksum = "43e8e9d31591be508826b875d8fe6056aebcaec3281ac0e45434ff303686c566" dependencies = [ "futures-core", "imbl", @@ -2020,15 +2012,6 @@ dependencies = [ "crunchy", ] -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", -] - [[package]] name = "hashbrown" version = "0.15.3" @@ -2042,11 +2025,11 @@ dependencies = [ [[package]] name = "hashlink" -version = "0.9.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" dependencies = [ - "hashbrown 0.14.5", + "hashbrown", ] [[package]] @@ -2114,12 +2097,24 @@ checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" dependencies = [ "log", "mac", - "markup5ever", + "markup5ever 0.11.0", "proc-macro2", "quote", "syn 1.0.109", ] +[[package]] +name = "html5ever" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b7410cae13cbc75623c98ac4cbfd1f0bedddf3227afc24f370cf0f50a44a11c" +dependencies = [ + "log", + "mac", + "markup5ever 0.14.1", + "match_token", +] + [[package]] name = "http" version = "1.3.1" @@ -2269,7 +2264,7 @@ dependencies = [ "feruca", "futures", "gethostname", - "html5ever", + "html5ever 0.26.0", "humansize", "image", "lazy_static 1.5.0", @@ -2484,13 +2479,14 @@ dependencies = [ [[package]] name = "imbl" -version = "4.0.1" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ae128b3bc67ed43ec0a7bb1c337a9f026717628b3c4033f07ded1da3e854951" +checksum = "e4308a675e4cfc1920f36a8f4d8fb62d5533b7da106844bd1ec51c6f1fa94a0c" dependencies = [ + "archery", "bitmaps", "imbl-sized-chunks", - "rand_core 0.6.4", + "rand_core 0.9.3", "rand_xoshiro", "serde", "version_check", @@ -2554,7 +2550,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", - "hashbrown 0.15.3", + "hashbrown", "serde", ] @@ -2771,6 +2767,12 @@ dependencies = [ "typewit", ] +[[package]] +name = "language-tags" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" + [[package]] name = "lazy_static" version = "0.1.16" @@ -2823,9 +2825,9 @@ dependencies = [ [[package]] name = "libsqlite3-sys" -version = "0.30.1" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" +checksum = "947e6816f7825b2b45027c2c32e7085da9934defa535de4a6a46b10a4d5257fa" dependencies = [ "cc", "pkg-config", @@ -2896,7 +2898,7 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.3", + "hashbrown", ] [[package]] @@ -2984,7 +2986,21 @@ checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" dependencies = [ "log", "phf 0.10.1", - "phf_codegen", + "phf_codegen 0.10.0", + "string_cache", + "string_cache_codegen", + "tendril", +] + +[[package]] +name = "markup5ever" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a7213d12e1864c0f002f52c2923d4556935a43dec5e71355c2760e0f6e7a18" +dependencies = [ + "log", + "phf 0.11.3", + "phf_codegen 0.11.3", "string_cache", "string_cache_codegen", "tendril", @@ -2996,12 +3012,23 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9521dd6750f8e80ee6c53d65e2e4656d7de37064f3a7a5d2d11d05df93839c2" dependencies = [ - "html5ever", - "markup5ever", + "html5ever 0.26.0", + "markup5ever 0.11.0", "tendril", "xml5ever", ] +[[package]] +name = "match_token" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "matchit" version = "0.8.4" @@ -3033,9 +3060,9 @@ dependencies = [ [[package]] name = "matrix-sdk" -version = "0.10.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e27119e566a60f5681eb8d05f51ef10862dd9af611ac6c6e0dc9aa9bf3bcc493" +checksum = "1de309d33d0c5d77829f952110e8b9e3e6c730880152db6e1778bcaa2cbfaef9" dependencies = [ "anymap2", "aquamarine", @@ -3044,26 +3071,28 @@ dependencies = [ "async-stream", "async-trait", "axum", - "backoff", + "backon", "bytes", "bytesize", + "cfg-if", "event-listener 5.4.0", "eyeball", "eyeball-im", "futures-core", "futures-util", "gloo-timers", - "growable-bloom-filter", "http", "imbl", "indexmap", "js_int", + "language-tags", "matrix-sdk-base", "matrix-sdk-common", "matrix-sdk-indexeddb", "matrix-sdk-sqlite", "mime", "mime2ext", + "oauth2", "once_cell", "percent-encoding", "pin-project-lite", @@ -3073,6 +3102,7 @@ dependencies = [ "serde", "serde_html_form", "serde_json", + "sha2", "tempfile", "thiserror 2.0.12", "tokio", @@ -3088,9 +3118,9 @@ dependencies = [ [[package]] name = "matrix-sdk-base" -version = "0.10.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58884b338e0c2eb4aa09d63ba2a5937fb5bd691525884f09935900137fc6b908" +checksum = "ad7f18305090c059293ebafefbfd8cac494f43386c3f255861995ee7b48f9e89" dependencies = [ "as_variant", "async-trait", @@ -3116,13 +3146,13 @@ dependencies = [ [[package]] name = "matrix-sdk-common" -version = "0.10.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "072d77e461933834e12810d63906409f37a039acad31a16dda62b63e1f4c31cf" +checksum = "065ac8905f199649e165d6233faa5b4eb9c7c117f61c9a5572250ae1feb9cd79" dependencies = [ - "async-trait", "eyeball-im", "futures-core", + "futures-executor", "futures-util", "gloo-timers", "imbl", @@ -3140,9 +3170,9 @@ dependencies = [ [[package]] name = "matrix-sdk-crypto" -version = "0.10.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed1ec9d645eb86630b2ed71e5890565ca023f569d9d0ebdcb25bfca8a088c2f3" +checksum = "e38551f3da5909ed8bd62a9b2bc3315df25386c410fd7116dc1824d42406fbfd" dependencies = [ "aes", "aquamarine", @@ -3181,9 +3211,9 @@ dependencies = [ [[package]] name = "matrix-sdk-indexeddb" -version = "0.10.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da30f51dbfcd03297a04f49f92c365a41cb2b012ad3338c0fc5d4efafcbff88b" +checksum = "233b82cc549375e18ff1a0ccd5baf5db8ac4d44643b5b9b6bedffd74f72ed5f0" dependencies = [ "anyhow", "async-trait", @@ -3210,21 +3240,24 @@ dependencies = [ [[package]] name = "matrix-sdk-sqlite" -version = "0.10.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d07fb4e87c6ace1d05a87a91404acc3fd0b480ba9de75c08685ed18f1ea79f" +checksum = "aa2ff57473e92bad1b7320b3d70d640661b95064e091b925c5ef88acfa281853" dependencies = [ + "as_variant", "async-trait", "deadpool-sqlite", "itertools 0.14.0", "matrix-sdk-base", "matrix-sdk-crypto", "matrix-sdk-store-encryption", + "num_cpus", "rmp-serde", "ruma", "rusqlite", "serde", "serde_json", + "serde_path_to_error", "thiserror 2.0.12", "tokio", "tracing", @@ -3233,9 +3266,9 @@ dependencies = [ [[package]] name = "matrix-sdk-store-encryption" -version = "0.10.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcc8b6650757f953664e5f906988690cef05c09d83081946adce446c45810a2d" +checksum = "0c2f3c5dfb6f61036290ee053f5cdc90ee672200e9254747b8eae922f00765f9" dependencies = [ "base64 0.22.1", "blake3", @@ -3532,6 +3565,26 @@ dependencies = [ "libc", ] +[[package]] +name = "oauth2" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51e219e79014df21a225b1860a479e2dcd7cbd9130f4defd4bd0e191ea31d67d" +dependencies = [ + "base64 0.22.1", + "chrono", + "getrandom 0.2.16", + "http", + "rand 0.8.5", + "reqwest", + "serde", + "serde_json", + "serde_path_to_error", + "sha2", + "thiserror 1.0.69", + "url", +] + [[package]] name = "objc2" version = "0.6.1" @@ -3815,6 +3868,7 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ + "phf_macros", "phf_shared 0.11.3", ] @@ -3828,6 +3882,16 @@ dependencies = [ "phf_shared 0.10.0", ] +[[package]] +name = "phf_codegen" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", +] + [[package]] name = "phf_generator" version = "0.10.0" @@ -3848,6 +3912,19 @@ dependencies = [ "rand 0.8.5", ] +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "phf_shared" version = "0.10.0" @@ -4265,11 +4342,11 @@ dependencies = [ [[package]] name = "rand_xoshiro" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" +checksum = "f703f4665700daf5512dcca5f43afa6af89f09db47fb56be587f80636bda2d41" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.9.3", ] [[package]] @@ -4577,9 +4654,9 @@ dependencies = [ [[package]] name = "ruma" -version = "0.12.2" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c64fdaae631940eda62844a8a3026aba2ba84c22588c888ebec44861ba4d0c18" +checksum = "c1d47e42b7dea75a468dea63a230f51331c58d690ca018ea1c6ac782ea98880c" dependencies = [ "assign", "js_int", @@ -4588,14 +4665,15 @@ dependencies = [ "ruma-common", "ruma-events", "ruma-federation-api", + "ruma-html", "web-time", ] [[package]] name = "ruma-client-api" -version = "0.20.2" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9a89ac03a0f4451f946ed9aed6fdd16ef5a78a3a2849e87af4b2474a176b2fb" +checksum = "3a9e9c613cfda4923b851c5d8bc442305905bee4f0c2b924564b00e71636c8d4" dependencies = [ "as_variant", "assign", @@ -4617,9 +4695,9 @@ dependencies = [ [[package]] name = "ruma-common" -version = "0.15.2" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b75da013b362664c3e161662902e5da3f77e990525681b59c6035bac27e87b4" +checksum = "387e1898e868d32ff7b205e7db327361d5dcf635c00a8ae5865068607595a9cf" dependencies = [ "as_variant", "base64 0.22.1", @@ -4650,9 +4728,9 @@ dependencies = [ [[package]] name = "ruma-events" -version = "0.30.2" +version = "0.30.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c100eb6c7691ef010f18d9af315f486fc4da621b7203c431e88352148e84551" +checksum = "3cdc7abec9bc2a9ca0b4831cc26ce97a6a8c39a0bde44a19281a719e861b4293" dependencies = [ "as_variant", "indexmap", @@ -4674,9 +4752,9 @@ dependencies = [ [[package]] name = "ruma-federation-api" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373bc5a30b84574dfce3e75c33d79d6ba9843bf0eee1bf351f904eef9bea001a" +checksum = "bb2a705c3911870782e036a3a8b676d0166c6c93800b84f6b8b23c981f78ef08" dependencies = [ "http", "js_int", @@ -4687,6 +4765,19 @@ dependencies = [ "serde_json", ] +[[package]] +name = "ruma-html" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "865afa2321e34fa836ea4c1d77ce0c2bb40f7d13fe18ee3e795091fd8d173a1d" +dependencies = [ + "as_variant", + "html5ever 0.29.1", + "phf 0.11.3", + "tracing", + "wildmatch", +] + [[package]] name = "ruma-identifiers-validation" version = "0.10.1" @@ -4699,9 +4790,9 @@ dependencies = [ [[package]] name = "ruma-macros" -version = "0.15.1" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1182e83ee5cd10121974f163337b16af68a93eedfc7cdbdbd52307ac7e1d743" +checksum = "5ff13fbd6045a7278533390826de316d6116d8582ed828352661337b0c422e1c" dependencies = [ "cfg-if", "proc-macro-crate 3.3.0", @@ -4715,9 +4806,9 @@ dependencies = [ [[package]] name = "rusqlite" -version = "0.32.1" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e" +checksum = "a22715a5d6deef63c637207afbe68d0c72c3f8d0022d7cf9714c442d6157606b" dependencies = [ "bitflags 2.9.1", "fallible-iterator", @@ -6700,7 +6791,7 @@ checksum = "4034e1d05af98b51ad7214527730626f019682d797ba38b51689212118d8e650" dependencies = [ "log", "mac", - "markup5ever", + "markup5ever 0.11.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index d1843ce..ff5ec85 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ license = "Apache-2.0" exclude = [".github", "CONTRIBUTING.md"] keywords = ["matrix", "chat", "tui", "vim"] categories = ["command-line-utilities"] -rust-version = "1.83" +rust-version = "1.85" build = "build.rs" [features] @@ -89,7 +89,7 @@ version = "0.0.24" #rev = "e40dbb0bfeabe4cfd08facd2acb446080a330d75" [dependencies.matrix-sdk] -version = "0.10.0" +version = "0.13.0" default-features = false features = ["e2e-encryption", "sqlite", "sso-login"] diff --git a/rust-toolchain.toml b/rust-toolchain.toml index d2c98e1..5457526 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.83" +channel = "1.85" components = [ "clippy" ] diff --git a/src/config.rs b/src/config.rs index d998e20..877f8e8 100644 --- a/src/config.rs +++ b/src/config.rs @@ -323,7 +323,7 @@ pub struct Session { impl From for MatrixSession { fn from(session: Session) -> Self { MatrixSession { - tokens: matrix_sdk::authentication::matrix::MatrixSessionTokens { + tokens: matrix_sdk::authentication::SessionTokens { access_token: session.access_token, refresh_token: session.refresh_token, }, diff --git a/src/notifications.rs b/src/notifications.rs index 0462101..482b984 100644 --- a/src/notifications.rs +++ b/src/notifications.rs @@ -12,6 +12,7 @@ use matrix_sdk::{ RoomId, }, Client, + EncryptionState, }; use unicode_segmentation::UnicodeSegmentation; @@ -182,8 +183,8 @@ async fn global_or_room_mode( Ok(true) => IsOneToOne::Yes, _ => IsOneToOne::No, }; - let is_encrypted = match room.is_encrypted().await { - Ok(true) => IsEncrypted::Yes, + let is_encrypted = match room.latest_encryption_state().await { + Ok(EncryptionState::Encrypted) => IsEncrypted::Yes, _ => IsEncrypted::No, }; settings diff --git a/src/windows/room/space.rs b/src/windows/room/space.rs index 912d313..28ba203 100644 --- a/src/windows/room/space.rs +++ b/src/windows/room/space.rs @@ -91,12 +91,14 @@ impl SpaceState { SpaceAction::SetChild(child_id, order, suggested) => { if !self .room - .can_user_send_state( + .power_levels() + .await + .map_err(matrix_sdk::Error::from) + .map_err(IambError::from)? + .user_can_send_state( &store.application.settings.profile.user_id, StateEventType::SpaceChild, ) - .await - .map_err(IambError::from)? { return Err(IambError::InsufficientPermission.into()); } @@ -117,12 +119,14 @@ impl SpaceState { let space = self.list.get().ok_or(IambError::NoSelectedRoomOrSpaceItem)?; if !self .room - .can_user_send_state( + .power_levels() + .await + .map_err(matrix_sdk::Error::from) + .map_err(IambError::from)? + .user_can_send_state( &store.application.settings.profile.user_id, StateEventType::SpaceChild, ) - .await - .map_err(IambError::from)? { return Err(IambError::InsufficientPermission.into()); } diff --git a/src/worker.rs b/src/worker.rs index d0392d1..22a6fdb 100644 --- a/src/worker.rs +++ b/src/worker.rs @@ -708,7 +708,7 @@ async fn create_client_inner( .build() .unwrap(); - let req_config = RequestConfig::new().timeout(req_timeout).retry_timeout(req_timeout); + let req_config = RequestConfig::new().timeout(req_timeout).max_retry_time(req_timeout); // Set up the Matrix client for the selected profile. let builder = Client::builder() @@ -1106,7 +1106,7 @@ impl ClientWorker { ev.content.displayname.as_deref().unwrap_or_else(|| user_id.as_str()), ); let ambiguous = client - .store() + .state_store() .get_users_with_display_name(room_id, &ambiguous_name) .await .map(|users| users.len() > 1) @@ -1244,7 +1244,7 @@ impl ClientWorker { let settings = self.settings.clone(); async move { - while !client.logged_in() { + while !client.is_active() { tokio::time::sleep(Duration::from_millis(100)).await; }