diff --git a/Cargo.lock b/Cargo.lock index 1b3f4d7ad2..835ca5f393 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,15 +17,6 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" -[[package]] -name = "adobe-cmap-parser" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8abfa9a4688de8fc9f42b3f013b6fffec18ed8a554f5f113577e0b9b3212a3" -dependencies = [ - "pom", -] - [[package]] name = "aead" version = "0.5.2" @@ -224,7 +215,7 @@ dependencies = [ "base64ct", "blake2", "cpufeatures 0.2.17", - "password-hash 0.5.0", + "password-hash", ] [[package]] @@ -233,12 +224,6 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" -[[package]] -name = "arrayvec" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" - [[package]] name = "assert-json-diff" version = "2.0.2" @@ -344,17 +329,6 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" -[[package]] -name = "auto_impl" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "autocfg" version = "1.5.0" @@ -471,16 +445,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" -[[package]] -name = "base58ck" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c8d66485a3a2ea485c1913c4572ce0256067a5377ac8c75c4960e1cda98605f" -dependencies = [ - "bitcoin-internals", - "bitcoin_hashes", -] - [[package]] name = "base64" version = "0.21.7" @@ -511,15 +475,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - [[package]] name = "bindgen" version = "0.72.1" @@ -568,54 +523,6 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" -[[package]] -name = "bitcoin" -version = "0.32.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf93e61f2dbc3e3c41234ca26a65e2c0b0975c52e0f069ab9893ebbede584d3" -dependencies = [ - "base58ck", - "bech32 0.11.1", - "bitcoin-internals", - "bitcoin-io", - "bitcoin-units", - "bitcoin_hashes", - "hex-conservative", - "hex_lit", - "secp256k1", -] - -[[package]] -name = "bitcoin-internals" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30bdbe14aa07b06e6cfeffc529a1f099e5fbe249524f8125358604df99a4bed2" - -[[package]] -name = "bitcoin-io" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dee39a0ee5b4095224a0cfc6bf4cc1baf0f9624b96b367e53b66d974e51d953" - -[[package]] -name = "bitcoin-units" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346568ebaab2918487cea76dd55dae13c27bb618cdb737c952e69eb2017c4118" -dependencies = [ - "bitcoin-internals", -] - -[[package]] -name = "bitcoin_hashes" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26ec84b80c482df901772e931a9a681e26a1b9ee2302edeff23cb30328745c8b" -dependencies = [ - "bitcoin-io", - "hex-conservative", -] - [[package]] name = "bitflags" version = "1.3.2" @@ -733,18 +640,6 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" -[[package]] -name = "byte-slice-cast" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" - -[[package]] -name = "bytecount" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" - [[package]] name = "bytemuck" version = "1.25.0" @@ -772,26 +667,6 @@ dependencies = [ "serde", ] -[[package]] -name = "bzip2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" -dependencies = [ - "bzip2-sys", - "libc", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.13+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" -dependencies = [ - "cc", - "pkg-config", -] - [[package]] name = "castaway" version = "0.2.4" @@ -837,12 +712,6 @@ dependencies = [ "nom 7.1.3", ] -[[package]] -name = "cff-parser" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f5b6e9141c036f3ff4ce7b2f7e432b0f00dee416ddcd4f17741d189ddc2e9d" - [[package]] name = "cfg-if" version = "1.0.4" @@ -1041,7 +910,7 @@ dependencies = [ "coins-bip32", "hmac", "once_cell", - "pbkdf2 0.12.2", + "pbkdf2", "rand 0.8.6", "sha2 0.10.9", "thiserror 1.0.69", @@ -1067,12 +936,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "color_quant" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" - [[package]] name = "colorchoice" version = "1.0.5" @@ -1128,18 +991,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "const-hex" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20d9a563d167a9cce0f94153382b33cb6eded6dfabff03c69ad65a28ea1514e0" -dependencies = [ - "cfg-if", - "cpufeatures 0.2.17", - "proptest", - "serde_core", -] - [[package]] name = "const-oid" version = "0.9.6" @@ -1172,33 +1023,6 @@ dependencies = [ "tiny-keccak", ] -[[package]] -name = "const_format" -version = "0.2.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4481a617ad9a412be3b97c5d403fef8ed023103368908b9c50af598ff467cc1e" -dependencies = [ - "const_format_proc_macros", - "konst", -] - -[[package]] -name = "const_format_proc_macros" -version = "0.2.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "constant_time_eq" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" - [[package]] name = "convert_case" version = "0.10.0" @@ -1462,7 +1286,7 @@ checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" dependencies = [ "bitflags 2.13.1", "crossterm_winapi", - "derive_more 2.1.1", + "derive_more", "document-features", "mio", "parking_lot", @@ -1645,7 +1469,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" dependencies = [ "serde", - "uuid 1.23.1", + "uuid", ] [[package]] @@ -1684,33 +1508,13 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "derive_more" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" -dependencies = [ - "derive_more-impl 1.0.0", -] - [[package]] name = "derive_more" version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" dependencies = [ - "derive_more-impl 2.1.1", -] - -[[package]] -name = "derive_more-impl" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", + "derive_more-impl", ] [[package]] @@ -1846,21 +1650,6 @@ dependencies = [ "litrs", ] -[[package]] -name = "docx-rs" -version = "0.4.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed73cbf5e1c37baa23f4132569ac1187829f03922c206bd68fe109e3001a343d" -dependencies = [ - "base64 0.22.1", - "image", - "quick-xml 0.36.2", - "serde", - "serde_json", - "thiserror 2.0.18", - "zip 0.6.6", -] - [[package]] name = "dotenvy" version = "0.15.7" @@ -1879,15 +1668,6 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" -[[package]] -name = "ecb" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a8bfa975b1aec2145850fcaa1c6fe269a16578c44705a532ae3edc92b8881c7" -dependencies = [ - "cipher", -] - [[package]] name = "ecdsa" version = "0.16.9" @@ -1968,15 +1748,6 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e079f19b08ca6239f47f8ba8509c11cf3ea30095831f7fed61441475edd8c449" -[[package]] -name = "encoding_rs" -version = "0.8.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" -dependencies = [ - "cfg-if", -] - [[package]] name = "engineioxide" version = "0.15.2" @@ -2088,131 +1859,6 @@ version = "3.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" -[[package]] -name = "eth-keystore" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" -dependencies = [ - "aes", - "ctr", - "digest 0.10.7", - "hex", - "hmac", - "pbkdf2 0.11.0", - "rand 0.8.6", - "scrypt", - "serde", - "serde_json", - "sha2 0.10.9", - "sha3", - "thiserror 1.0.69", - "uuid 0.8.2", -] - -[[package]] -name = "ethabi" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" -dependencies = [ - "ethereum-types", - "hex", - "once_cell", - "regex", - "serde", - "serde_json", - "sha3", - "thiserror 1.0.69", - "uint", -] - -[[package]] -name = "ethbloom" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" -dependencies = [ - "crunchy", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "scale-info", - "tiny-keccak", -] - -[[package]] -name = "ethereum-types" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" -dependencies = [ - "ethbloom", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "primitive-types", - "scale-info", - "uint", -] - -[[package]] -name = "ethers-core" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" -dependencies = [ - "arrayvec", - "bytes", - "chrono", - "const-hex", - "elliptic-curve", - "ethabi", - "generic-array", - "k256", - "num_enum", - "open-fastrlp", - "rand 0.8.6", - "rlp", - "serde", - "serde_json", - "strum 0.26.3", - "tempfile", - "thiserror 1.0.69", - "tiny-keccak", - "unicode-xid", -] - -[[package]] -name = "ethers-signers" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "228875491c782ad851773b652dd8ecac62cda8571d3bc32a5853644dd26766c2" -dependencies = [ - "async-trait", - "coins-bip32", - "coins-bip39", - "const-hex", - "elliptic-curve", - "eth-keystore", - "ethers-core", - "rand 0.8.6", - "sha2 0.10.9", - "thiserror 1.0.69", - "tracing", -] - -[[package]] -name = "euclid" -version = "0.20.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bb7ef65b3777a325d1eeefefab5b6d4959da54747e33bd6258e789640f307ad" -dependencies = [ - "num-traits", -] - [[package]] name = "euclid" version = "0.22.14" @@ -2271,17 +1917,6 @@ dependencies = [ "regex", ] -[[package]] -name = "fancy-regex" -version = "0.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "998b056554fbe42e03ae0e152895cd1a7e1002aec800fdc6635d20270260c46f" -dependencies = [ - "bit-set 0.8.0", - "regex-automata", - "regex-syntax", -] - [[package]] name = "fantoccini" version = "0.22.1" @@ -2392,18 +2027,6 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9844ddc3a6e533d62bba727eb6c28b5d360921d5175e9ff0f1e621a5c590a4d5" -[[package]] -name = "fixed-hash" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" -dependencies = [ - "byteorder", - "rand 0.8.6", - "rustc-hex", - "static_assertions", -] - [[package]] name = "fixedbitset" version = "0.4.2" @@ -2633,15 +2256,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "getopts" -version = "0.2.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe4fbac503b8d1f88e6676011885f34b7174f46e59956bba534ba83abded4df" -dependencies = [ - "unicode-width", -] - [[package]] name = "getrandom" version = "0.2.17" @@ -2702,16 +2316,6 @@ dependencies = [ "polyval 0.7.1", ] -[[package]] -name = "gif" -version = "0.14.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee8cfcc411d9adbbaba82fb72661cc1bcca13e8bba98b364e62b2dba8f960159" -dependencies = [ - "color_quant", - "weezl", -] - [[package]] name = "gimli" version = "0.32.3" @@ -2847,21 +2451,6 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "hex-conservative" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda06d18ac606267c40c04e41b9947729bf8b9efe74bd4e82b61a5f26a510b9f" -dependencies = [ - "arrayvec", -] - -[[package]] -name = "hex_lit" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3011d1213f159867b13cfd6ac92d2cd5f1345762c63be3554e84092d85a50bbd" - [[package]] name = "hifijson" version = "0.5.0" @@ -3268,14 +2857,10 @@ checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" dependencies = [ "bytemuck", "byteorder-lite", - "color_quant", - "gif", "moxcms", "num-traits", "png", "tiff", - "zune-core", - "zune-jpeg", ] [[package]] @@ -3287,44 +2872,6 @@ dependencies = [ "nom 7.1.3", ] -[[package]] -name = "impl-codec" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" -dependencies = [ - "parity-scale-codec", -] - -[[package]] -name = "impl-rlp" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" -dependencies = [ - "rlp", -] - -[[package]] -name = "impl-serde" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" -dependencies = [ - "serde", -] - -[[package]] -name = "impl-trait-for-tuples" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "indexmap" version = "2.14.0" @@ -3609,21 +3156,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "konst" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128133ed7824fcd73d6e7b17957c5eb7bacb885649bd8c69708b2331a10bcefb" -dependencies = [ - "konst_macro_rules", -] - -[[package]] -name = "konst_macro_rules" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4933f3f57a8e9d9da04db23fb153356ecaf00cbd14aee46279c33dc80925c37" - [[package]] name = "lab" version = "0.11.0" @@ -3806,34 +3338,6 @@ version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" -[[package]] -name = "lopdf" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7184fdea2bc3cd272a1acec4030c321a8f9875e877b3f92a53f2f6033fdc289" -dependencies = [ - "aes", - "bitflags 2.13.1", - "cbc", - "ecb", - "encoding_rs", - "flate2", - "getrandom 0.3.4", - "indexmap", - "itoa", - "log", - "md-5", - "nom 8.0.0", - "nom_locate", - "rand 0.9.4", - "rangemap", - "sha2 0.10.9", - "stringprep", - "thiserror 2.0.18", - "ttf-parser", - "weezl", -] - [[package]] name = "lru" version = "0.18.1" @@ -3921,16 +3425,6 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" -[[package]] -name = "md-5" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" -dependencies = [ - "cfg-if", - "digest 0.10.7", -] - [[package]] name = "md5" version = "0.8.0" @@ -4146,17 +3640,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "nom_locate" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b577e2d69827c4740cba2b52efaad1c4cc7c73042860b199710b3575c68438d" -dependencies = [ - "bytecount", - "memchr", - "nom 8.0.0", -] - [[package]] name = "ntapi" version = "0.4.3" @@ -4608,31 +4091,6 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" -[[package]] -name = "open-fastrlp" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", - "ethereum-types", - "open-fastrlp-derive", -] - -[[package]] -name = "open-fastrlp-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" -dependencies = [ - "bytes", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "openhuman" version = "0.63.7" @@ -4645,7 +4103,6 @@ dependencies = [ "async-trait", "axum", "base64 0.22.1", - "bitcoin", "block2 0.6.2", "bs58", "bytes", @@ -4665,8 +4122,6 @@ dependencies = [ "ed25519-dalek", "enigo", "env_logger", - "ethers-core", - "ethers-signers", "fantoccini", "filetime", "flate2", @@ -4681,6 +4136,7 @@ dependencies = [ "hostname", "hound", "iana-time-zone", + "k256", "keyring", "landlock", "lettre", @@ -4693,8 +4149,6 @@ dependencies = [ "objc2-foundation 0.3.2", "once_cell", "parking_lot", - "pdf-extract", - "ppt-rs", "proptest", "rand 0.10.1", "ratatui", @@ -4746,7 +4200,7 @@ dependencies = [ "unicode-width", "url", "urlencoding", - "uuid 1.23.1", + "uuid", "wait-timeout", "walkdir", "windows-sys 0.61.2", @@ -4754,7 +4208,7 @@ dependencies = [ "x25519-dalek", "xz2", "zeroize", - "zip 2.4.2", + "zip", ] [[package]] @@ -4861,34 +4315,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "parity-scale-codec" -version = "3.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" -dependencies = [ - "arrayvec", - "bitvec", - "byte-slice-cast", - "const_format", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "rustversion", - "serde", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "3.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "parking" version = "2.2.1" @@ -4915,18 +4341,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-link", -] - -[[package]] -name = "password-hash" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" -dependencies = [ - "base64ct", - "rand_core 0.6.4", - "subtle", + "windows-link", ] [[package]] @@ -4940,18 +4355,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "pbkdf2" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" -dependencies = [ - "digest 0.10.7", - "hmac", - "password-hash 0.4.2", - "sha2 0.10.9", -] - [[package]] name = "pbkdf2" version = "0.12.2" @@ -4962,23 +4365,6 @@ dependencies = [ "hmac", ] -[[package]] -name = "pdf-extract" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28ba1758a3d3f361459645780e09570b573fc3c82637449e9963174c813a98" -dependencies = [ - "adobe-cmap-parser", - "cff-parser", - "encoding_rs", - "euclid 0.20.14", - "log", - "lopdf", - "postscript", - "type1-encoding-parser", - "unicode-normalization", -] - [[package]] name = "percent-encoding" version = "2.3.2" @@ -5202,7 +4588,7 @@ checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07" dependencies = [ "base64 0.22.1", "indexmap", - "quick-xml 0.38.4", + "quick-xml", "serde", "time", ] @@ -5254,12 +4640,6 @@ dependencies = [ "universal-hash 0.6.1", ] -[[package]] -name = "pom" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60f6ce597ecdcc9a098e7fddacb1065093a3d66446fa16c675e7e71d1b5c28e6" - [[package]] name = "portable-atomic" version = "1.13.1" @@ -5275,12 +4655,6 @@ dependencies = [ "portable-atomic", ] -[[package]] -name = "postscript" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78451badbdaebaf17f053fd9152b3ffb33b516104eacb45e7864aaa9c712f306" - [[package]] name = "potential_utf" version = "0.1.5" @@ -5296,23 +4670,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" -[[package]] -name = "ppt-rs" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb145020aba8cd682d92b8d00174f4b81fc53feec7919abc15357b9f011c2df5" -dependencies = [ - "chrono", - "clap", - "pulldown-cmark", - "regex", - "syntect", - "thiserror 1.0.69", - "uuid 1.23.1", - "xml-rs", - "zip 0.6.6", -] - [[package]] name = "ppv-lite86" version = "0.2.21" @@ -5332,20 +4689,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "primitive-types" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" -dependencies = [ - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "scale-info", - "uint", -] - [[package]] name = "proc-macro-crate" version = "3.5.0" @@ -5432,25 +4775,6 @@ dependencies = [ "prost", ] -[[package]] -name = "pulldown-cmark" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76979bea66e7875e7509c4ec5300112b316af87fa7a252ca91c448b32dfe3993" -dependencies = [ - "bitflags 2.13.1", - "getopts", - "memchr", - "pulldown-cmark-escape", - "unicase", -] - -[[package]] -name = "pulldown-cmark-escape" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd348ff538bc9caeda7ee8cad2d1d48236a1f443c1fa3913c6a02fe0043b1dd3" - [[package]] name = "pxfm" version = "0.1.29" @@ -5469,16 +4793,6 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" -[[package]] -name = "quick-xml" -version = "0.36.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" -dependencies = [ - "encoding_rs", - "memchr", -] - [[package]] name = "quick-xml" version = "0.38.4" @@ -5661,12 +4975,6 @@ dependencies = [ "rand_core 0.9.5", ] -[[package]] -name = "rangemap" -version = "1.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "973443cf09a9c8656b574a866ab68dfa19f0867d0340648c7d2f6a71b8a8ea68" - [[package]] name = "ratatui" version = "0.30.2" @@ -5698,7 +5006,7 @@ dependencies = [ "lru", "palette", "serde", - "strum 0.28.0", + "strum", "thiserror 2.0.18", "unicode-segmentation", "unicode-truncate", @@ -5762,7 +5070,7 @@ dependencies = [ "line-clipping", "ratatui-core", "serde", - "strum 0.28.0", + "strum", "time", "unicode-segmentation", "unicode-width", @@ -5979,28 +5287,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "rlp" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" -dependencies = [ - "bytes", - "rlp-derive", - "rustc-hex", -] - -[[package]] -name = "rlp-derive" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "rppal" version = "0.22.1" @@ -6053,12 +5339,6 @@ version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" -[[package]] -name = "rustc-hex" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" - [[package]] name = "rustc_version" version = "0.4.1" @@ -6155,15 +5435,6 @@ version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" -[[package]] -name = "salsa20" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" -dependencies = [ - "cipher", -] - [[package]] name = "same-file" version = "1.0.6" @@ -6173,30 +5444,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "scale-info" -version = "2.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" -dependencies = [ - "cfg-if", - "derive_more 1.0.0", - "parity-scale-codec", - "scale-info-derive", -] - -[[package]] -name = "scale-info-derive" -version = "2.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "schannel" version = "0.1.29" @@ -6237,18 +5484,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "scrypt" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" -dependencies = [ - "hmac", - "pbkdf2 0.11.0", - "salsa20", - "sha2 0.10.9", -] - [[package]] name = "sec1" version = "0.7.3" @@ -6263,26 +5498,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "secp256k1" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9465315bc9d4566e1724f0fffcbcc446268cb522e60f9a27bcded6b19c108113" -dependencies = [ - "bitcoin_hashes", - "rand 0.8.6", - "secp256k1-sys", -] - -[[package]] -name = "secp256k1-sys" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" -dependencies = [ - "cc", -] - [[package]] name = "security-framework" version = "2.11.1" @@ -6432,7 +5647,7 @@ dependencies = [ "thiserror 2.0.18", "time", "url", - "uuid 1.23.1", + "uuid", ] [[package]] @@ -6833,52 +6048,19 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "stringprep" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" -dependencies = [ - "unicode-bidi", - "unicode-normalization", - "unicode-properties", -] - [[package]] name = "strsim" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" -[[package]] -name = "strum" -version = "0.26.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" -dependencies = [ - "strum_macros 0.26.4", -] - [[package]] name = "strum" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd" dependencies = [ - "strum_macros 0.28.0", -] - -[[package]] -name = "strum_macros" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.117", + "strum_macros", ] [[package]] @@ -6947,24 +6129,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "syntect" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "656b45c05d95a5704399aeef6bd0ddec7b2b3531b7c9e900abbf7c4d2190c925" -dependencies = [ - "bincode", - "fancy-regex 0.16.2", - "flate2", - "fnv", - "once_cell", - "regex-syntax", - "serde", - "serde_derive", - "thiserror 2.0.18", - "walkdir", -] - [[package]] name = "sysinfo" version = "0.33.1" @@ -7051,7 +6215,7 @@ dependencies = [ "anyhow", "base64 0.22.1", "bitflags 2.13.1", - "fancy-regex 0.11.0", + "fancy-regex", "filedescriptor", "finl_unicode", "fixedbitset 0.4.2", @@ -7225,12 +6389,18 @@ name = "tinybus" version = "0.1.0" dependencies = [ "async-trait", + "flate2", "serde", "serde_json", + "tar", + "tempfile", "thiserror 2.0.18", "tinybus-macros", "tokio", + "toml 0.8.23", "tracing", + "ureq", + "zip", ] [[package]] @@ -7279,7 +6449,7 @@ dependencies = [ "tracing", "url", "urlencoding", - "uuid 1.23.1", + "uuid", "wacore", "webpki-roots 1.0.7", "whatsapp-rust", @@ -7314,7 +6484,7 @@ dependencies = [ "tokio", "toml 0.8.23", "tracing", - "uuid 1.23.1", + "uuid", "walkdir", ] @@ -7329,14 +6499,13 @@ dependencies = [ "serde_json", "sha2 0.10.9", "thiserror 2.0.18", - "uuid 1.23.1", + "uuid", ] [[package]] name = "tinydocs" -version = "0.1.0" +version = "0.1.12" dependencies = [ - "docx-rs", "serde", "thiserror 2.0.18", ] @@ -7421,7 +6590,7 @@ dependencies = [ "serde_json", "sha2 0.11.0", "thiserror 2.0.18", - "uuid 1.23.1", + "uuid", ] [[package]] @@ -7453,7 +6622,7 @@ dependencies = [ "tokio", "tracing", "url", - "uuid 1.23.1", + "uuid", "walkdir", ] @@ -7531,15 +6700,17 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tinywallet" -version = "0.1.0" +version = "0.2.0" dependencies = [ "async-trait", - "bitcoin", + "bech32 0.11.1", "bs58", + "coins-bip32", "coins-bip39", "ed25519-dalek", "hex", "hmac", + "ripemd", "serde", "serde_json", "sha2 0.10.9", @@ -7890,12 +7061,6 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" -[[package]] -name = "ttf-parser" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" - [[package]] name = "tungstenite" version = "0.24.0" @@ -7933,15 +7098,6 @@ dependencies = [ "thiserror 2.0.18", ] -[[package]] -name = "type1-encoding-parser" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa10c302f5a53b7ad27fd42a3996e23d096ba39b5b8dd6d9e683a05b01bee749" -dependencies = [ - "pom", -] - [[package]] name = "typed-arena" version = "2.0.2" @@ -7980,18 +7136,6 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" -[[package]] -name = "uint" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" -dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", -] - [[package]] name = "uname" version = "0.1.1" @@ -8013,33 +7157,12 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" -[[package]] -name = "unicode-bidi" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" - [[package]] name = "unicode-ident" version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" -[[package]] -name = "unicode-normalization" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-properties" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" - [[package]] name = "unicode-segmentation" version = "1.13.2" @@ -8119,6 +7242,7 @@ checksum = "dea7109cdcd5864d4eeb1b58a1648dc9bf520360d7af16ec26d0a9354bafcfc0" dependencies = [ "base64 0.22.1", "cookie_store", + "flate2", "log", "percent-encoding", "rustls", @@ -8185,16 +7309,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" -[[package]] -name = "uuid" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -dependencies = [ - "getrandom 0.2.17", - "serde", -] - [[package]] name = "uuid" version = "1.23.1" @@ -8260,7 +7374,7 @@ dependencies = [ "log", "md5", "once_cell", - "pbkdf2 0.12.2", + "pbkdf2", "prost", "rand 0.10.1", "serde", @@ -8338,7 +7452,7 @@ dependencies = [ "chrono", "ctr", "curve25519-dalek", - "derive_more 2.1.1", + "derive_more", "displaydoc", "ghash 0.6.0", "hex", @@ -8352,7 +7466,7 @@ dependencies = [ "sha2 0.10.9", "subtle", "thiserror 2.0.18", - "uuid 1.23.1", + "uuid", "waproto", "x25519-dalek", ] @@ -8626,7 +7740,7 @@ dependencies = [ "mac_address", "sha2 0.10.9", "thiserror 1.0.69", - "uuid 1.23.1", + "uuid", ] [[package]] @@ -8672,7 +7786,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7012add459f951456ec9d6c7e6fc340b1ce15d6fc9629f8c42853412c029e57e" dependencies = [ "bitflags 1.3.2", - "euclid 0.22.14", + "euclid", "lazy_static", "serde", "wezterm-dynamic", @@ -9426,12 +8540,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" -[[package]] -name = "xml-rs" -version = "0.8.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" - [[package]] name = "xz2" version = "0.1.7" @@ -9604,26 +8712,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "zip" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" -dependencies = [ - "aes", - "byteorder", - "bzip2", - "constant_time_eq", - "crc32fast", - "crossbeam-utils", - "flate2", - "hmac", - "pbkdf2 0.11.0", - "sha1", - "time", - "zstd", -] - [[package]] name = "zip" version = "2.4.2" @@ -9665,35 +8753,6 @@ dependencies = [ "simd-adler32", ] -[[package]] -name = "zstd" -version = "0.11.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "5.0.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" -dependencies = [ - "libc", - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.16+zstd.1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" -dependencies = [ - "cc", - "pkg-config", -] - [[package]] name = "zune-core" version = "0.5.1" diff --git a/app/src/pages/__tests__/FlowCanvasPage.test.tsx b/app/src/pages/__tests__/FlowCanvasPage.test.tsx index 6a34ad5501..13590d3adf 100644 --- a/app/src/pages/__tests__/FlowCanvasPage.test.tsx +++ b/app/src/pages/__tests__/FlowCanvasPage.test.tsx @@ -547,6 +547,21 @@ describe('FlowCanvasPage', () => { // wheel event) so the test isn't flaky under slow CI runners. const pane = document.querySelector('.react-flow__pane'); expect(pane).not.toBeNull(); + // jsdom has no layout engine and returns a zero-sized rectangle by + // default. React Flow deliberately ignores a wheel pan without a + // measurable viewport, which made this otherwise behavioral test flaky + // in the Linux coverage container. + vi.spyOn(pane as Element, 'getBoundingClientRect').mockReturnValue({ + x: 0, + y: 0, + width: 800, + height: 600, + top: 0, + right: 800, + bottom: 600, + left: 0, + toJSON: () => ({}), + }); const viewportEl = document.querySelector('.react-flow__viewport') as HTMLElement | null; expect(viewportEl).not.toBeNull(); const transformBeforePan = viewportEl?.style.transform; diff --git a/app/test/playwright/specs/accounts-provider-modal.spec.ts b/app/test/playwright/specs/accounts-provider-modal.spec.ts deleted file mode 100644 index bebee2b2ec..0000000000 --- a/app/test/playwright/specs/accounts-provider-modal.spec.ts +++ /dev/null @@ -1,143 +0,0 @@ -import { expect, test } from '@playwright/test'; - -import { - bootRuntimeReadyGuestPage, - dismissWalkthroughIfPresent, - signInViaBypassUser, - waitForAppReady, -} from '../helpers/core-rpc'; - -const BASE_PICKER_PROVIDERS = [ - { id: 'whatsapp', label: 'WhatsApp Web' }, - { id: 'wechat', label: 'WeChat Web' }, - { id: 'telegram', label: 'Telegram Web' }, - { id: 'linkedin', label: 'LinkedIn' }, - { id: 'slack', label: 'Slack' }, - { id: 'discord', label: 'Discord' }, -] as const; - -const HIDDEN_PROVIDER_IDS = ['google-meet', 'zoom'] as const; -const DEV_PICKER_PROVIDER = { id: 'browserscan', label: 'BrowserScan (dev)' } as const; - -async function openAddAccountModal(page: import('@playwright/test').Page) { - const modal = page.getByTestId('add-account-modal'); - await page.getByTestId('accounts-add-button').click({ force: true }); - try { - await expect(modal).toBeVisible({ timeout: 3_000 }); - return; - } catch { - await dismissWalkthroughIfPresent(page); - await page.evaluate(() => { - const button = document.querySelector('[data-testid="accounts-add-button"]'); - if (button instanceof HTMLElement) button.click(); - }); - } - await expect(modal).toBeVisible(); -} - -async function visibleProviderIds(page: import('@playwright/test').Page): Promise { - return page.evaluate(() => - Array.from(document.querySelectorAll('[data-testid^="add-account-provider-"]')) - .map(node => node.getAttribute('data-testid')?.replace('add-account-provider-', '')) - .filter((value): value is string => Boolean(value)) - .sort() - ); -} - -async function registeredProviders(page: import('@playwright/test').Page): Promise { - return page.evaluate(() => { - const store = ( - window as unknown as { - __OPENHUMAN_STORE__?: { - getState: () => { accounts?: { accounts?: Record } }; - }; - } - ).__OPENHUMAN_STORE__; - const accounts = store?.getState()?.accounts?.accounts ?? {}; - return Object.values(accounts) - .map(account => account.provider) - .filter((provider): provider is string => Boolean(provider)) - .sort(); - }); -} - -async function bootAccountsPage(page: import('@playwright/test').Page, userId: string) { - await bootRuntimeReadyGuestPage(page); - try { - await signInViaBypassUser(page, userId); - } catch { - await bootRuntimeReadyGuestPage(page); - await signInViaBypassUser(page, userId); - } - await page.goto('/#/chat'); - await waitForAppReady(page); - await dismissWalkthroughIfPresent(page); - await expect(page.getByTestId('accounts-page')).toBeVisible(); -} - -test.describe('Accounts Provider Modal', () => { - test.beforeEach(async ({ page }, testInfo) => { - const slug = testInfo.title.toLowerCase().replace(/[^a-z0-9]+/g, '-'); - await bootAccountsPage(page, `pw-accounts-provider-modal-${slug}`); - }); - - test('shows exposed providers and keeps hidden providers out of the picker', async ({ page }) => { - await openAddAccountModal(page); - - for (const provider of BASE_PICKER_PROVIDERS) { - await expect(page.getByTestId(`add-account-provider-${provider.id}`)).toContainText( - provider.label - ); - } - - for (const providerId of HIDDEN_PROVIDER_IDS) { - await expect(page.getByTestId(`add-account-provider-${providerId}`)).toHaveCount(0); - } - - const ids = await visibleProviderIds(page); - for (const provider of BASE_PICKER_PROVIDERS) { - expect(ids).toContain(provider.id); - } - expect(ids).not.toContain('google-meet'); - expect(ids).not.toContain('zoom'); - - await page.keyboard.press('Escape'); - await expect(page.getByTestId('add-account-modal')).toHaveCount(0); - }); - - test('registers each visible provider through the picker interaction', async ({ page }) => { - await openAddAccountModal(page); - const initiallyVisibleIds = await visibleProviderIds(page); - const providersToRegister = BASE_PICKER_PROVIDERS.filter(provider => - initiallyVisibleIds.includes(provider.id) - ); - if (initiallyVisibleIds.includes(DEV_PICKER_PROVIDER.id)) { - providersToRegister.push(DEV_PICKER_PROVIDER); - } - await page.keyboard.press('Escape'); - await expect(page.getByTestId('add-account-modal')).toHaveCount(0); - - for (const provider of providersToRegister) { - await page.goto('/#/chat'); - await waitForAppReady(page); - await dismissWalkthroughIfPresent(page); - - await openAddAccountModal(page); - await page.getByTestId(`add-account-provider-${provider.id}`).click(); - await expect(page.getByTestId('add-account-modal')).toHaveCount(0); - - await expect - .poll(async () => registeredProviders(page), { - message: `Redux accounts slice never recorded provider ${provider.id}`, - }) - .toContain(provider.id); - } - - const providers = await registeredProviders(page); - for (const provider of providersToRegister) { - expect(providers).toContain(provider.id); - } - expect(providers).not.toContain('google-meet'); - expect(providers).not.toContain('zoom'); - }); -}); diff --git a/app/test/playwright/specs/settings-feature-preferences.spec.ts b/app/test/playwright/specs/settings-feature-preferences.spec.ts index 8f29ce977b..64f2b3bf06 100644 --- a/app/test/playwright/specs/settings-feature-preferences.spec.ts +++ b/app/test/playwright/specs/settings-feature-preferences.spec.ts @@ -276,7 +276,6 @@ test.describe('Settings - Feature Preferences', () => { test('persists notification category preferences', async ({ page }) => { await openAuthenticatedRoute(page, 'pw-settings-notification-prefs', '/settings/notifications'); - await expect(page.getByText('Do Not Disturb', { exact: true })).toBeVisible(); await expect(page.getByText('Messages', { exact: true })).toBeVisible(); const messagesLabel = 'Toggle Messages notifications'; @@ -295,7 +294,7 @@ test.describe('Settings - Feature Preferences', () => { .toBe(toggled === 'true'); await reloadAndWait(page); - await expect(page.getByText('Do Not Disturb')).toBeVisible(); + await expect(page.getByText('Messages', { exact: true })).toBeVisible(); await expect.poll(() => getAriaChecked(page, messagesLabel)).toBe(toggled); }); diff --git a/app/test/playwright/specs/settings-leaf-workflows.spec.ts b/app/test/playwright/specs/settings-leaf-workflows.spec.ts index 0fc8c5c8aa..2880ac4a80 100644 --- a/app/test/playwright/specs/settings-leaf-workflows.spec.ts +++ b/app/test/playwright/specs/settings-leaf-workflows.spec.ts @@ -91,50 +91,6 @@ test.describe('Settings leaf workflows', () => { .toMatchObject({ mode: 'dark', tabBarLabels: 'always', agentMessageViewMode: 'text' }); }); - test('embeddings custom endpoint setup writes provider, model, and dimensions', async ({ - page, - }) => { - await openSettings(page, 'pw-settings-embeddings', '/settings/embeddings'); - - // Panel title dropped in the PanelPage migration; the provider radios confirm - // the Embeddings panel mounted. - await expect(page.getByRole('radio', { name: /Custom/i })).toBeVisible(); - await page.getByRole('radio', { name: /Custom/i }).click(); - - await expect(page.getByRole('heading', { name: /Set up/i })).toBeVisible(); - await page - .getByPlaceholder('https://your-endpoint.com/v1') - .fill('http://127.0.0.1:18473/openai/v1'); - // Use a `text-embedding-3-*` model so the save-time verification probe sends - // `dimensions: 64` — the mock backend (scripts/mock-api) echoes that length, - // so the live test embed verifies and the config can be persisted. - await page.getByPlaceholder('text-embedding-3-small').fill('text-embedding-3-small'); - await page.getByPlaceholder('1024').fill('64'); - await page.getByRole('button', { name: 'Save & switch' }).click(); - - const wipe = page.getByRole('button', { name: 'Wipe & apply' }); - await expect(wipe).toBeVisible({ timeout: 15_000 }); - await wipe.click(); - - await expect(page.getByText('Saved.')).toBeVisible({ timeout: 15_000 }); - await expect - .poll(async () => { - const raw = await callCoreRpc('openhuman.embeddings_get_settings', {}); - const settings = - unwrap<{ provider?: string; model?: string; dimensions?: number }>(raw) ?? {}; - return { - provider: settings.provider, - model: settings.model, - dimensions: settings.dimensions, - }; - }) - .toEqual({ - provider: 'custom:http://127.0.0.1:18473/openai/v1', - model: 'text-embedding-3-small', - dimensions: 64, - }); - }); - test('agents/new creates a custom agent that appears in the registry', async ({ page }) => { const agentId = `pw-researcher-${Date.now()}`; await openSettings(page, 'pw-settings-agent-new', '/settings/agents/new'); diff --git a/app/test/playwright/specs/slack-flow.spec.ts b/app/test/playwright/specs/slack-flow.spec.ts deleted file mode 100644 index fd25bdc833..0000000000 --- a/app/test/playwright/specs/slack-flow.spec.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { expect, type Page, test } from '@playwright/test'; - -import { - bootRuntimeReadyGuestPage, - dismissWalkthroughIfPresent, - signInViaBypassUser, - waitForAppReady, -} from '../helpers/core-rpc'; - -async function openAddAccountModal(page: Page) { - const modal = page.getByTestId('add-account-modal'); - await page.getByTestId('accounts-add-button').click({ force: true }); - try { - await expect(modal).toBeVisible({ timeout: 3_000 }); - return; - } catch { - await dismissWalkthroughIfPresent(page); - await page.evaluate(() => { - const button = document.querySelector('[data-testid="accounts-add-button"]'); - if (button instanceof HTMLElement) button.click(); - }); - } - await expect(modal).toBeVisible(); -} - -async function registeredProviders(page: Page): Promise { - return page.evaluate(() => { - const store = ( - window as unknown as { - __OPENHUMAN_STORE__?: { - getState: () => { accounts?: { accounts?: Record } }; - }; - } - ).__OPENHUMAN_STORE__; - const accounts = store?.getState()?.accounts?.accounts ?? {}; - return Object.values(accounts) - .map(account => account.provider) - .filter((provider): provider is string => Boolean(provider)) - .sort(); - }); -} - -async function bootAccountsPage(page: Page, userId: string) { - await bootRuntimeReadyGuestPage(page); - try { - await signInViaBypassUser(page, userId); - } catch { - await bootRuntimeReadyGuestPage(page); - await signInViaBypassUser(page, userId); - } - await page.goto('/#/chat'); - await waitForAppReady(page); - await dismissWalkthroughIfPresent(page); - await expect(page.getByTestId('accounts-page')).toBeVisible(); -} - -test.describe('Slack account integration smoke', () => { - test.beforeEach(async ({ page }, testInfo) => { - const slug = testInfo.title.toLowerCase().replace(/[^a-z0-9]+/g, '-'); - await bootAccountsPage(page, `pw-slack-flow-${slug}`); - }); - - test('shows Slack as an addable provider in the Add Account modal', async ({ page }) => { - await openAddAccountModal(page); - await expect(page.getByTestId('add-account-provider-slack')).toContainText('Slack'); - }); - - test('selecting Slack closes the modal and registers an account on the rail', async ({ - page, - }) => { - await openAddAccountModal(page); - await page.getByTestId('add-account-provider-slack').click(); - await expect(page.getByTestId('add-account-modal')).toHaveCount(0); - - await expect - .poll(async () => registeredProviders(page), { - message: - 'Redux accounts slice never recorded a slack provider after picking the Slack tile', - }) - .toContain('slack'); - }); -}); diff --git a/app/test/playwright/specs/whatsapp-flow.spec.ts b/app/test/playwright/specs/whatsapp-flow.spec.ts deleted file mode 100644 index a92a2ad5e0..0000000000 --- a/app/test/playwright/specs/whatsapp-flow.spec.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { expect, type Page, test } from '@playwright/test'; - -import { - bootRuntimeReadyGuestPage, - dismissWalkthroughIfPresent, - signInViaBypassUser, - waitForAppReady, -} from '../helpers/core-rpc'; - -async function openAddAccountModal(page: Page) { - const modal = page.getByTestId('add-account-modal'); - await page.getByTestId('accounts-add-button').click({ force: true }); - try { - await expect(modal).toBeVisible({ timeout: 3_000 }); - return; - } catch { - await dismissWalkthroughIfPresent(page); - await page.evaluate(() => { - const button = document.querySelector('[data-testid="accounts-add-button"]'); - if (button instanceof HTMLElement) button.click(); - }); - } - await expect(modal).toBeVisible(); -} - -async function registeredProviders(page: Page): Promise { - return page.evaluate(() => { - const store = ( - window as unknown as { - __OPENHUMAN_STORE__?: { - getState: () => { accounts?: { accounts?: Record } }; - }; - } - ).__OPENHUMAN_STORE__; - const accounts = store?.getState()?.accounts?.accounts ?? {}; - return Object.values(accounts) - .map(account => account.provider) - .filter((provider): provider is string => Boolean(provider)) - .sort(); - }); -} - -async function bootAccountsPage(page: Page, userId: string) { - await bootRuntimeReadyGuestPage(page); - try { - await signInViaBypassUser(page, userId); - } catch { - await bootRuntimeReadyGuestPage(page); - await signInViaBypassUser(page, userId); - } - await page.goto('/#/chat'); - await waitForAppReady(page); - await dismissWalkthroughIfPresent(page); - await expect(page.getByTestId('accounts-page')).toBeVisible(); -} - -test.describe('WhatsApp account integration smoke', () => { - test.beforeEach(async ({ page }, testInfo) => { - const slug = testInfo.title.toLowerCase().replace(/[^a-z0-9]+/g, '-'); - await bootAccountsPage(page, `pw-whatsapp-flow-${slug}`); - }); - - test('shows WhatsApp Web as an addable provider in the Add Account modal', async ({ page }) => { - await openAddAccountModal(page); - await expect(page.getByTestId('add-account-provider-whatsapp')).toContainText('WhatsApp Web'); - }); - - test('selecting WhatsApp Web closes the modal and registers an account on the rail', async ({ - page, - }) => { - await openAddAccountModal(page); - await page.getByTestId('add-account-provider-whatsapp').click(); - await expect(page.getByTestId('add-account-modal')).toHaveCount(0); - - await expect - .poll(async () => registeredProviders(page), { - message: - 'Redux accounts slice never recorded a whatsapp provider after picking the WhatsApp Web tile', - }) - .toContain('whatsapp'); - }); -}); diff --git a/scripts/ci/rust-coverage-changed.sh b/scripts/ci/rust-coverage-changed.sh index 5d930dc723..c6e5867bdc 100755 --- a/scripts/ci/rust-coverage-changed.sh +++ b/scripts/ci/rust-coverage-changed.sh @@ -51,7 +51,16 @@ llvm_cov() { return ;; esac - bash scripts/ci-cancel-aware.sh cargo llvm-cov --features "${PRODUCT_FEATURES}" "$@" + # `show-env` above configures ordinary Cargo test commands for coverage. + # Invoking cargo-llvm-cov again under those exported variables is unsupported + # (and fails before tests run), so remove its report-only flag and run Cargo. + local -a cargo_args=() + local arg + for arg in "$@"; do + [ "${arg}" = "--no-report" ] && continue + cargo_args+=("${arg}") + done + bash scripts/ci-cancel-aware.sh cargo test --features "${PRODUCT_FEATURES}" "${cargo_args[@]}" } integration_test_targets() { @@ -127,6 +136,18 @@ run_full() { exit 0 } +# Containerised GitHub runners mount the workspace from the host. LLVM can run +# the test binary successfully there while silently failing to create its raw +# profile on that mount. `show-env` is cargo-llvm-cov's supported mode for +# instrumenting ordinary Cargo test commands; override only its profile output +# after it has configured the compiler wrapper. +eval "$(cargo llvm-cov show-env --sh)" +# Keep profiles where cargo-llvm-cov itself reports from. This avoids relying +# on bind-mounted temporary paths that the report subprocess cannot observe. +profile_dir="${LLVM_PROFILE_DIR:-${CARGO_LLVM_COV_TARGET_DIR}}" +mkdir -p "${profile_dir}" +export LLVM_PROFILE_FILE="${profile_dir}/core-%p-%m.profraw" + if [ "${FULL}" = "true" ]; then run_full "build-config/workflow-level change detected by paths-filter" fi @@ -281,5 +302,9 @@ if [ "${#test_targets[@]}" -gt 0 ]; then done fi +shopt -s nullglob +profiles=("${profile_dir}"/*.profraw) +test "${#profiles[@]}" -gt 0 + log "merging coverage into ${OUT}" llvm_cov report --lcov --output-path "${OUT}" diff --git a/src/openhuman/modules/ops.rs b/src/openhuman/modules/ops.rs index 418807457e..be37d63d58 100644 --- a/src/openhuman/modules/ops.rs +++ b/src/openhuman/modules/ops.rs @@ -310,26 +310,31 @@ pub fn list(config: &Config) -> Vec { /// Status of one module. fn status_of(config: &Config, record: &ModuleRecord) -> ModuleStatus { - let (state, detail) = match cached_resolution(record.id) { + // Configuration is authoritative for the current core instance. A module + // may remain loaded in this process after a prior request, but callers + // whose configuration disables modules must still be told it is unusable. + let (state, detail) = match () { _ if !config.modules.enabled => ( ModuleState::Unsupported, Some("modules are disabled in configuration".to_string()), ), - Some(Resolution::Ready) => (ModuleState::Ready, None), - Some(Resolution::Failed(reason)) => (ModuleState::Failed, Some(reason)), - None => { - let supported = platform::host_candidates() - .iter() - .any(|key| record.asset_for(key).is_some()); - if supported { - (ModuleState::Available, None) - } else { - ( - ModuleState::Unsupported, - Some("no artifact is published for this platform".to_string()), - ) + _ => match cached_resolution(record.id) { + Some(Resolution::Ready) => (ModuleState::Ready, None), + Some(Resolution::Failed(reason)) => (ModuleState::Failed, Some(reason)), + None => { + let supported = platform::host_candidates() + .iter() + .any(|key| record.asset_for(key).is_some()); + if supported { + (ModuleState::Available, None) + } else { + ( + ModuleState::Unsupported, + Some("no artifact is published for this platform".to_string()), + ) + } } - } + }, }; ModuleStatus { id: record.id.to_string(), diff --git a/src/openhuman/modules/ops_tests.rs b/src/openhuman/modules/ops_tests.rs index d963a8cf79..e6c907e24c 100644 --- a/src/openhuman/modules/ops_tests.rs +++ b/src/openhuman/modules/ops_tests.rs @@ -39,24 +39,24 @@ fn list_reports_every_registry_entry() { } #[test] -fn a_module_reports_a_coherent_state() { - // The full suite runs in one process and another test may have loaded a - // module already. The process-global resolution cache intentionally cannot - // be reset because tinybus cannot unload a library, so Ready is valid here. +fn module_statuses_remain_well_formed_after_other_tests_load_modules() { + // Resolution is intentionally process-global. The full suite runs tests in + // parallel, so another test may have loaded a module before this assertion + // observes it. Verify the status contract without assuming test order. for status in list(&offline_config()) { - assert!( - matches!( - status.state, - ModuleState::Available | ModuleState::Unsupported | ModuleState::Ready - ), - "{} reported unexpected state {:?}", - status.id, - status.state - ); - if matches!(status.state, ModuleState::Unsupported) { + if matches!(status.state, ModuleState::Unsupported | ModuleState::Failed) { assert!( status.detail.is_some(), - "an unsupported module must say why" + "{} must explain its {:?} state", + status.id, + status.state + ); + } else { + assert!( + status.detail.is_none(), + "{} unexpectedly has detail for {:?}", + status.id, + status.state ); } } diff --git a/vendor/tinywallet b/vendor/tinywallet index 21674b799d..f82edabb47 160000 --- a/vendor/tinywallet +++ b/vendor/tinywallet @@ -1 +1 @@ -Subproject commit 21674b799d47293203389729e377ac3325f7063c +Subproject commit f82edabb47ff3ea08a155db2c7c66d7cce7f8594