diff --git a/Cargo.lock b/Cargo.lock index 67478755d..0210bf7e5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "ab_glyph" -version = "0.2.29" +version = "0.2.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3672c180e71eeaaac3a541fbbc5f5ad4def8b747c595ad30d674e43049f7b0" +checksum = "1e0f4f6fbdc5ee39f2ede9f5f3ec79477271a6d6a2baff22310d51736bda6cea" dependencies = [ "ab_glyph_rasterizer", "owned_ttf_parser", @@ -14,9 +14,9 @@ dependencies = [ [[package]] name = "ab_glyph_rasterizer" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" +checksum = "b2187590a23ab1e3df8681afdf0987c48504d80291f002fcdb651f0ef5e25169" [[package]] name = "accesskit" @@ -45,7 +45,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f47983a1084940ba9a39c077a8c63e55c619388be5476ac04c804cfbd1e63459" dependencies = [ "accesskit", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "immutable-chunkmap", ] @@ -57,7 +57,7 @@ checksum = "7329821f3bd1101e03a7d2e03bd339e3ac0dc64c70b4c9f9ae1949e3ba8dece1" dependencies = [ "accesskit", "accesskit_consumer", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "objc2 0.5.2", "objc2-app-kit 0.2.2", "objc2-foundation 0.2.2", @@ -89,7 +89,7 @@ checksum = "24fcd5d23d70670992b823e735e859374d694a3d12bfd8dd32bd3bd8bedb5d81" dependencies = [ "accesskit", "accesskit_consumer", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "paste", "static_assertions", "windows 0.58.0", @@ -121,9 +121,9 @@ dependencies = [ [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aead" @@ -221,9 +221,12 @@ dependencies = [ [[package]] name = "aligned-vec" -version = "0.5.0" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1" +checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" +dependencies = [ + "equator", +] [[package]] name = "alloc-no-stdlib" @@ -319,9 +322,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" dependencies = [ "anstyle", "anstyle-parse", @@ -334,33 +337,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" dependencies = [ "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.8" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6680de5231bd6ee4c6191b8a1325daa282b415391ec9d3a37bd34f2060dc73fa" +checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" dependencies = [ "anstyle", "once_cell_polyfill", @@ -596,7 +599,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -654,7 +657,7 @@ version = "0.38.0+1.3.281" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" dependencies = [ - "libloading 0.8.7", + "libloading 0.8.8", ] [[package]] @@ -728,7 +731,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -768,9 +771,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.23" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b37fc50485c4f3f736a4fb14199f6d5f5ba008d7f28fe710306c92780f004c07" +checksum = "40f6024f3f856663b45fd0c9b6f2024034a702f453549449e0d84a305900dad4" dependencies = [ "brotli 8.0.1", "flate2", @@ -861,9 +864,9 @@ checksum = "4288f83726785267c6f2ef073a3d83dc3f9b81464e9f99898240cced85fce35a" [[package]] name = "async-process" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" +checksum = "cde3f4e40e6021d7acffc90095cbd6dc54cb593903d1de5832f435eb274b85dc" dependencies = [ "async-channel 2.3.1", "async-io", @@ -874,7 +877,7 @@ dependencies = [ "cfg-if", "event-listener 5.4.0", "futures-lite", - "rustix 0.38.44", + "rustix 1.0.7", "tracing", ] @@ -886,14 +889,14 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "async-signal" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" +checksum = "d7605a4e50d4b06df3898d5a70bf5fde51ed9059b0434b73105193bc27acce0d" dependencies = [ "async-io", "async-lock", @@ -901,7 +904,7 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 0.38.44", + "rustix 1.0.7", "signal-hook-registry", "slab", "windows-sys 0.59.0", @@ -952,7 +955,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -969,7 +972,7 @@ checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -1006,9 +1009,9 @@ dependencies = [ [[package]] name = "atomic" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994" +checksum = "a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340" dependencies = [ "bytemuck", ] @@ -1095,14 +1098,14 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "av1-grain" @@ -1120,9 +1123,9 @@ dependencies = [ [[package]] name = "avif-serialize" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98922d6a4cfbcb08820c69d8eeccc05bb1f29bfa06b4f5b1dbfe9a868bd7608e" +checksum = "19135c0c7a60bfee564dbe44ab5ce0557c6bf3884e5291a50be76a15640c4fbd" dependencies = [ "arrayvec", ] @@ -1164,7 +1167,7 @@ dependencies = [ "http 1.3.1", "http-body 1.0.1", "http-body-util", - "itoa 1.0.15", + "itoa", "matchit 0.7.3", "memchr", "mime", @@ -1194,7 +1197,7 @@ dependencies = [ "http-body-util", "hyper 1.6.0", "hyper-util", - "itoa 1.0.15", + "itoa", "matchit 0.8.4", "memchr", "mime", @@ -1209,7 +1212,7 @@ dependencies = [ "sha1", "sync_wrapper 1.0.2", "tokio", - "tokio-tungstenite", + "tokio-tungstenite 0.26.2", "tower 0.5.2", "tower-layer", "tower-service", @@ -1293,7 +1296,7 @@ dependencies = [ "hyper 1.6.0", "hyper-util", "pin-project-lite", - "rustls 0.23.27", + "rustls 0.23.28", "rustls-pemfile 2.2.0", "rustls-pki-types", "tokio", @@ -1435,9 +1438,9 @@ dependencies = [ [[package]] name = "base64ct" -version = "1.7.3" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "bcder" @@ -1451,9 +1454,9 @@ dependencies = [ [[package]] name = "better_scoped_tls" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50fd297a11c709be8348aec039c8b91de16075d2b2bdaee1bd562c0875993664" +checksum = "7cd228125315b132eed175bf47619ac79b945b26e56b848ba203ae4ea8603609" dependencies = [ "scoped-tls", ] @@ -1490,7 +1493,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.101", + "syn 2.0.104", "which 4.4.2", ] @@ -1644,7 +1647,7 @@ checksum = "c17d660462f6ebf8045f94045586a6ec9c46d4d0b4dcf8bb09390b3b4dc956e7" dependencies = [ "blitz-traits", "data-url 0.3.1", - "reqwest 0.12.15", + "reqwest 0.12.22", "tokio", ] @@ -1788,7 +1791,7 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -1842,7 +1845,7 @@ dependencies = [ "ahash 0.8.12", "chrono", "either", - "indexmap 2.9.0", + "indexmap 2.10.0", "itertools 0.13.0", "nom", "once_cell", @@ -1853,14 +1856,14 @@ dependencies = [ [[package]] name = "browserslist-rs" -version = "0.18.1" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f95aff901882c66e4b642f3f788ceee152ef44f8a5ef12cb1ddee5479c483be" +checksum = "abf24e007a83ff1f58d2441b459fa26124aa1a7367da88948e9940f14e723d06" dependencies = [ "ahash 0.8.12", "chrono", "either", - "indexmap 2.9.0", + "indexmap 2.10.0", "itertools 0.13.0", "nom", "serde", @@ -1899,9 +1902,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" dependencies = [ "allocator-api2", ] @@ -1930,9 +1933,9 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.23.0" +version = "1.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9134a6ef01ce4b366b50689c94f82c14bc72bc5d0386829828a2e2752ef7958c" +checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" dependencies = [ "bytemuck_derive", ] @@ -1945,7 +1948,7 @@ checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -2055,23 +2058,23 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab" dependencies = [ "serde", ] [[package]] name = "cargo-config2" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dc3749a36e0423c991f1e7a3e4ab0c36a1f489658313db4b187d401d79cc461" +checksum = "a82de3b1a1dd72252c6d456247864ffe52110d109da949f579eeb16349e0eb5d" dependencies = [ "serde", "serde_derive", - "toml_edit 0.22.26", - "windows-sys 0.59.0", + "toml_edit 0.22.27", + "windows-sys 0.60.2", ] [[package]] @@ -2085,7 +2088,7 @@ dependencies = [ "auth-git2", "cargo-util-schemas", "clap", - "console", + "console 0.15.11", "dialoguer", "env_logger 0.11.8", "fs-err", @@ -2094,7 +2097,7 @@ dependencies = [ "heck 0.5.0", "home", "ignore", - "indexmap 2.9.0", + "indexmap 2.10.0", "indicatif", "liquid", "liquid-core", @@ -2127,9 +2130,9 @@ dependencies = [ [[package]] name = "cargo-util-schemas" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea8b01266e95c3cf839fe626e651fa36a9171033caa917a773d7a0ba1d5ce6be" +checksum = "7dc1a6f7b5651af85774ae5a34b4e8be397d9cf4bc063b7e6dbd99a841837830" dependencies = [ "semver", "serde", @@ -2157,9 +2160,9 @@ dependencies = [ [[package]] name = "cargo_toml" -version = "0.21.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fbd1fe9db3ebf71b89060adaf7b0504c2d6a425cf061313099547e382c2e472" +checksum = "02260d489095346e5cafd04dea8e8cb54d1d74fcd759022a9b72986ebe9a1257" dependencies = [ "serde", "toml", @@ -2206,9 +2209,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.24" +version = "1.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16595d3be041c03b09d08d0858631facccee9221e579704070e6e9e4915d3bc7" +checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" dependencies = [ "jobserver", "libc", @@ -2271,9 +2274,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" [[package]] name = "cfg_aliases" @@ -2347,14 +2350,14 @@ checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", - "libloading 0.8.7", + "libloading 0.8.8", ] [[package]] name = "clap" -version = "4.5.38" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed93b9805f8ba930df42c2590f05453d5ec36cbb85d018868a5b24d31f6ac000" +checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f" dependencies = [ "clap_builder", "clap_derive", @@ -2362,9 +2365,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.38" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "379026ff283facf611b0ea629334361c4211d1b12ee01024eec1591133b04120" +checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e" dependencies = [ "anstream", "anstyle", @@ -2375,21 +2378,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.32" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" +checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" [[package]] name = "cmac" @@ -2420,7 +2423,7 @@ dependencies = [ "bitflags 2.9.1", "block", "cocoa-foundation", - "core-foundation 0.10.0", + "core-foundation 0.10.1", "core-graphics 0.24.0", "foreign-types 0.5.0", "libc", @@ -2435,7 +2438,7 @@ checksum = "81411967c50ee9a1fc11365f8c585f863a22a9697c89239c452292c40ba79b0d" dependencies = [ "bitflags 2.9.1", "block", - "core-foundation 0.10.0", + "core-foundation 0.10.1", "core-graphics-types 0.2.0", "objc", ] @@ -2481,9 +2484,9 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "com" @@ -2534,7 +2537,7 @@ checksum = "3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32" dependencies = [ "castaway", "cfg-if", - "itoa 1.0.15", + "itoa", "rustversion", "ryu", "static_assertions", @@ -2562,6 +2565,19 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "console" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e09ced7ebbccb63b4c65413d821f2e00ce54c5ca4514ddc6b3c892fdbcbc69d" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width 0.2.0", + "windows-sys 0.60.2", +] + [[package]] name = "console-api" version = "0.8.1" @@ -2653,7 +2669,7 @@ version = "0.7.0-alpha.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -2777,9 +2793,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" dependencies = [ "core-foundation-sys", "libc", @@ -2811,7 +2827,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" dependencies = [ "bitflags 2.9.1", - "core-foundation 0.10.0", + "core-foundation 0.10.1", "core-graphics-types 0.2.0", "foreign-types 0.5.0", "libc", @@ -2835,7 +2851,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ "bitflags 2.9.1", - "core-foundation 0.10.0", + "core-foundation 0.10.1", "libc", ] @@ -3068,9 +3084,9 @@ dependencies = [ [[package]] name = "crunchy" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" @@ -3114,15 +3130,15 @@ dependencies = [ [[package]] name = "cssparser" -version = "0.27.2" +version = "0.29.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" +checksum = "f93d03419cb5950ccfd3daf3ff1c7a36ace64609a1a8746d493df1ca0afde0fa" dependencies = [ "cssparser-macros", "dtoa-short", - "itoa 0.4.8", + "itoa", "matches", - "phf 0.8.0", + "phf 0.10.1", "proc-macro2", "quote", "smallvec", @@ -3137,7 +3153,7 @@ checksum = "9be934d936a0fbed5bcdc01042b770de1398bf79d0e192f49fa7faea0e99281e" dependencies = [ "cssparser-macros", "dtoa-short", - "itoa 1.0.15", + "itoa", "phf 0.11.3", "smallvec", ] @@ -3150,7 +3166,7 @@ checksum = "4e901edd733a1472f944a45116df3f846f54d37e67e68640ac8bb69689aca2aa" dependencies = [ "cssparser-macros", "dtoa-short", - "itoa 1.0.15", + "itoa", "phf 0.11.3", "serde", "smallvec", @@ -3172,7 +3188,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3182,7 +3198,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" dependencies = [ "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3235,7 +3251,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3249,9 +3265,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.158" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a71ea7f29c73f7ffa64c50b83c9fe4d3a6d4be89a86b009eb80d5a6d3429d741" +checksum = "be1149bab7a5580cb267215751389597c021bfad13c0bb00c54e19559333764c" dependencies = [ "cc", "cxxbridge-cmd", @@ -3263,47 +3279,50 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.158" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36a8232661d66dcf713394726157d3cfe0a89bfc85f52d6e9f9bbc2306797fe7" +checksum = "6aeeaf1aefae8e0f5141920a7ecbc64a22ab038d4b4ac59f2d19e0effafd5b53" dependencies = [ "cc", "codespan-reporting 0.12.0", + "indexmap 2.10.0", "proc-macro2", "quote", "scratch", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "cxxbridge-cmd" -version = "1.0.158" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f44296c8693e9ea226a48f6a122727f77aa9e9e338380cb021accaeeb7ee279" +checksum = "c36ac1f9a72064b1f41fd7b49a4c1b3bf33b9ccb1274874dda6d264f57c55964" dependencies = [ "clap", "codespan-reporting 0.12.0", + "indexmap 2.10.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "cxxbridge-flags" -version = "1.0.158" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f69c181c176981ae44ba9876e2ea41ce8e574c296b38d06925ce9214fb8e4" +checksum = "170c6ff5d009663866857a91ebee55b98ea4d4b34e7d7aba6dc4a4c95cc7b748" [[package]] name = "cxxbridge-macro" -version = "1.0.158" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8faff5d4467e0709448187df29ccbf3b0982cc426ee444a193f87b11afb565a8" +checksum = "4984a142211026786011a7e79fa22faa1eca1e9cbf0e60bffecfd57fd3db88f1" dependencies = [ + "indexmap 2.10.0", "proc-macro2", "quote", "rustversion", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3313,7 +3332,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307" dependencies = [ "bitflags 2.9.1", - "libloading 0.8.7", + "libloading 0.8.8", "winapi", ] @@ -3338,7 +3357,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3349,7 +3368,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3455,7 +3474,7 @@ checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3476,7 +3495,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3486,7 +3505,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3499,7 +3518,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3528,7 +3547,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "unicode-xid", ] @@ -3541,7 +3560,7 @@ dependencies = [ "convert_case 0.7.1", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3559,7 +3578,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" dependencies = [ - "console", + "console 0.15.11", "shell-words", "tempfile", "thiserror 1.0.69", @@ -3656,7 +3675,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3668,7 +3687,7 @@ dependencies = [ "pretty_assertions", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3691,7 +3710,7 @@ dependencies = [ "cargo_toml", "chrono", "clap", - "console", + "console 0.15.11", "console-subscriber", "const-serialize", "convert_case 0.8.0", @@ -3723,7 +3742,7 @@ dependencies = [ "headers", "html_parser", "hyper 1.6.0", - "hyper-rustls 0.27.6", + "hyper-rustls 0.27.7", "hyper-util", "ignore", "include_dir", @@ -3746,8 +3765,8 @@ dependencies = [ "ratatui", "rayon", "regex", - "reqwest 0.12.15", - "rustls 0.23.27", + "reqwest 0.12.22", + "rustls 0.23.28", "self-replace", "self_update", "serde", @@ -3755,7 +3774,7 @@ dependencies = [ "shell-words", "strum 0.27.1", "subsecond-types", - "syn 2.0.101", + "syn 2.0.104", "tar", "target-lexicon 0.13.2", "tauri-bundler", @@ -3765,10 +3784,10 @@ dependencies = [ "throbber-widgets-tui", "tokio", "tokio-stream", - "tokio-tungstenite", + "tokio-tungstenite 0.27.0", "tokio-util", "toml", - "toml_edit 0.22.26", + "toml_edit 0.22.27", "tower 0.5.2", "tower-http", "tracing", @@ -3848,7 +3867,7 @@ version = "0.0.1" dependencies = [ "dioxus", "flate2", - "reqwest 0.12.15", + "reqwest 0.12.22", "tar", ] @@ -3879,7 +3898,7 @@ dependencies = [ "longest-increasing-subsequence", "pretty_assertions", "rand 0.8.5", - "reqwest 0.12.15", + "reqwest 0.12.22", "rustc-hash 2.1.1", "rustversion", "serde", @@ -3906,7 +3925,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.101", + "syn 2.0.104", "tokio", "trybuild", ] @@ -3922,7 +3941,7 @@ dependencies = [ "async-trait", "base64 0.22.1", "cocoa", - "core-foundation 0.10.0", + "core-foundation 0.10.1", "dioxus", "dioxus-asset-resolver", "dioxus-cli-config", @@ -3946,7 +3965,7 @@ dependencies = [ "jni", "lazy-js-bundle", "libc", - "muda", + "muda 0.17.0", "ndk", "ndk-context", "ndk-sys 0.6.0+11769913", @@ -3954,8 +3973,9 @@ dependencies = [ "objc_id", "open", "percent-encoding", + "pollster", "rand 0.8.5", - "reqwest 0.12.15", + "reqwest 0.12.22", "rfd", "rustc-hash 2.1.1", "separator", @@ -3963,12 +3983,13 @@ dependencies = [ "serde_json", "signal-hook", "slab", + "subtle", "tao", "thiserror 2.0.12", "tokio", - "tokio-tungstenite", "tracing", "tray-icon", + "tungstenite 0.27.0", "wry", ] @@ -3986,7 +4007,7 @@ dependencies = [ "thiserror 2.0.12", "tokio", "tracing", - "tungstenite 0.26.2", + "tungstenite 0.27.0", "warnings", ] @@ -4042,7 +4063,7 @@ dependencies = [ "openssl", "ouroboros", "rand 0.8.5", - "reqwest 0.12.15", + "reqwest 0.12.22", "separator", "serde", "serde_json", @@ -4059,7 +4080,7 @@ dependencies = [ "dioxus-autofmt", "dioxus-rsx-rosetta", "html_parser", - "syn 2.0.101", + "syn 2.0.104", "wasm-bindgen", ] @@ -4091,10 +4112,10 @@ dependencies = [ "futures-channel", "futures-util", "generational-box", - "hyper-rustls 0.27.6", + "hyper-rustls 0.27.7", "parking_lot", "pin-project", - "rustls 0.23.27", + "rustls 0.23.28", "serde", "server_fn", "thiserror 2.0.12", @@ -4154,7 +4175,7 @@ dependencies = [ "futures-channel", "futures-util", "generational-box", - "reqwest 0.12.15", + "reqwest 0.12.22", "rustversion", "slab", "tokio", @@ -4199,7 +4220,7 @@ dependencies = [ "convert_case 0.8.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "trybuild", ] @@ -4227,7 +4248,7 @@ version = "0.7.0-alpha.1" dependencies = [ "chrono", "http 1.3.1", - "lru 0.13.0", + "lru 0.14.0", "rustc-hash 2.1.1", "thiserror 2.0.12", "tracing", @@ -4441,7 +4462,7 @@ dependencies = [ "quote", "sha2", "slab", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -4453,7 +4474,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -4467,7 +4488,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.101", + "syn 2.0.104", "tracing", ] @@ -4484,7 +4505,7 @@ dependencies = [ "pretty_assertions", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -4515,12 +4536,12 @@ dependencies = [ "generational-box", "http 1.3.1", "hyper 1.6.0", - "hyper-rustls 0.27.6", + "hyper-rustls 0.27.7", "hyper-util", "inventory", "parking_lot", "pin-project", - "rustls 0.23.27", + "rustls 0.23.28", "serde", "server_fn", "subsecond", @@ -4547,7 +4568,7 @@ dependencies = [ "generational-box", "parking_lot", "rand 0.8.5", - "reqwest 0.12.15", + "reqwest 0.12.22", "rustc-hash 2.1.1", "serde", "tokio", @@ -4623,7 +4644,7 @@ dependencies = [ "quote", "serde", "server_fn_macro", - "syn 2.0.101", + "syn 2.0.104", "tower-http", ] @@ -4677,7 +4698,7 @@ dependencies = [ "libc", "option-ext", "redox_users 0.5.0", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -4716,7 +4737,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -4731,7 +4752,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.8.7", + "libloading 0.8.8", ] [[package]] @@ -4748,13 +4769,13 @@ dependencies = [ [[package]] name = "dlopen2_derive" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" +checksum = "788160fb30de9cdd857af31c6a2675904b16ece8fc2737b2c7127ba368c9d0f4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -4827,6 +4848,12 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" +[[package]] +name = "dyn-clone" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" + [[package]] name = "eax" version = "0.5.0" @@ -4860,7 +4887,7 @@ version = "0.1.1" dependencies = [ "chrono", "dioxus", - "reqwest 0.12.15", + "reqwest 0.12.22", "serde", ] @@ -4970,14 +4997,14 @@ checksum = "ba7795da175654fe16979af73f81f26a8ea27638d8d9823d317016888a63dc4c" dependencies = [ "num-traits", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "enumflags2" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147" +checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" dependencies = [ "enumflags2_derive", "serde", @@ -4985,13 +5012,13 @@ dependencies = [ [[package]] name = "enumflags2_derive" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79" +checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -5012,7 +5039,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -5057,6 +5084,26 @@ dependencies = [ "log", ] +[[package]] +name = "equator" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" +dependencies = [ + "equator-macro", +] + +[[package]] +name = "equator-macro" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + [[package]] name = "equivalent" version = "1.0.2" @@ -5075,12 +5122,12 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -5171,7 +5218,7 @@ checksum = "ce8cd46a041ad005ab9c71263f9a0ff5b529eac0fe4cc9b4a20f4f0765d8cf4b" dependencies = [ "execute-command-tokens", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -5321,11 +5368,12 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", + "libz-rs-sys", "miniz_oxide", ] @@ -5408,7 +5456,7 @@ checksum = "39f97079e1293b8c1e9fb03a2875d328bd2ee8f3b95ce62959c0acc04049c708" dependencies = [ "bytemuck", "fontconfig-cache-parser", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "icu_locid", "memmap2", "objc2 0.6.1", @@ -5450,7 +5498,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -5492,14 +5540,14 @@ checksum = "8d7ccf961415e7aa17ef93dcb6c2441faaa8e768abe09e659b908089546f74c5" dependencies = [ "proc-macro2", "swc_macros_common", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "fs-err" -version = "3.1.0" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f89bda4c2a21204059a977ed3bfe746677dfd137b83c339e702b0ac91d482aa" +checksum = "88d7be93788013f265201256d58f04936a8079ad5dc898743aa20525f503b683" dependencies = [ "autocfg", "tokio", @@ -5571,7 +5619,7 @@ version = "0.1.0" dependencies = [ "chrono", "dioxus", - "reqwest 0.12.15", + "reqwest 0.12.22", "serde", ] @@ -5580,7 +5628,7 @@ name = "fullstack-hello-world-example" version = "0.1.0" dependencies = [ "dioxus", - "reqwest 0.12.15", + "reqwest 0.12.22", "serde", ] @@ -5710,7 +5758,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -5824,20 +5872,6 @@ dependencies = [ "system-deps", ] -[[package]] -name = "gdkx11" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe" -dependencies = [ - "gdk", - "gdkx11-sys", - "gio", - "glib", - "libc", - "x11", -] - [[package]] name = "gdkx11-sys" version = "0.18.2" @@ -5911,7 +5945,7 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "wasm-bindgen", ] @@ -5941,9 +5975,9 @@ dependencies = [ [[package]] name = "gif" -version = "0.13.1" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" +checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b" dependencies = [ "color_quant", "weezl", @@ -6022,9 +6056,9 @@ dependencies = [ "bstr", "gix-date", "gix-utils 0.2.0", - "itoa 1.0.15", + "itoa", "thiserror 2.0.12", - "winnow 0.7.10", + "winnow 0.7.11", ] [[package]] @@ -6045,7 +6079,7 @@ dependencies = [ "smallvec", "thiserror 2.0.12", "unicode-bom", - "winnow 0.7.10", + "winnow 0.7.11", ] [[package]] @@ -6068,7 +6102,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "daa30058ec7d3511fbc229e4f9e696a35abd07ec5b82e635eff864a2726217e4" dependencies = [ "bstr", - "itoa 1.0.15", + "itoa", "jiff", "thiserror 2.0.12", ] @@ -6200,10 +6234,10 @@ dependencies = [ "gix-path", "gix-utils 0.2.0", "gix-validate 0.9.4", - "itoa 1.0.15", + "itoa", "smallvec", "thiserror 2.0.12", - "winnow 0.7.10", + "winnow 0.7.11", ] [[package]] @@ -6238,7 +6272,7 @@ dependencies = [ "gix-validate 0.9.4", "memmap2", "thiserror 2.0.12", - "winnow 0.7.10", + "winnow 0.7.11", ] [[package]] @@ -6357,7 +6391,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -6589,7 +6623,7 @@ checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ "bitflags 2.9.1", "gpu-descriptor-types 0.2.0", - "hashbrown 0.15.3", + "hashbrown 0.15.4", ] [[package]] @@ -6628,7 +6662,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d9e3df7f0222ce5184154973d247c591d9aadc28ce7a73c6cd31100c9facff6" dependencies = [ "codemap", - "indexmap 2.9.0", + "indexmap 2.10.0", "lasso", "once_cell", "phf 0.11.3", @@ -6637,9 +6671,9 @@ dependencies = [ [[package]] name = "grid" -version = "0.16.2" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "969d090eea77fac1be33f853ffc4b6b60cc6f312ddf4fd28b311a730e1dd8ebe" +checksum = "71b01d27060ad58be4663b9e4ac9e2d4806918e8876af8912afbddd1a91d5eaa" [[package]] name = "group" @@ -6701,7 +6735,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -6726,7 +6760,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.9.0", + "indexmap 2.10.0", "slab", "tokio", "tokio-util", @@ -6735,9 +6769,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785" dependencies = [ "atomic-waker", "bytes", @@ -6745,7 +6779,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.3.1", - "indexmap 2.9.0", + "indexmap 2.10.0", "slab", "tokio", "tokio-util", @@ -6818,9 +6852,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.3" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" dependencies = [ "allocator-api2", "equivalent", @@ -6834,7 +6868,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" dependencies = [ - "hashbrown 0.15.3", + "hashbrown 0.15.4", ] [[package]] @@ -6846,7 +6880,7 @@ dependencies = [ "bitflags 2.9.1", "com", "libc", - "libloading 0.8.7", + "libloading 0.8.8", "thiserror 1.0.69", "widestring", "winapi", @@ -6867,11 +6901,11 @@ dependencies = [ [[package]] name = "headers" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322106e6bd0cba2d5ead589ddb8150a13d7c4217cf80d7c4f682ca994ccc6aa9" +checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "bytes", "headers-core", "http 1.3.1", @@ -6913,15 +6947,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - -[[package]] -name = "hermit-abi" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -6987,16 +7015,14 @@ dependencies = [ [[package]] name = "html5ever" -version = "0.26.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" +checksum = "3b7410cae13cbc75623c98ac4cbfd1f0bedddf3227afc24f370cf0f50a44a11c" dependencies = [ "log", "mac", - "markup5ever 0.11.0", - "proc-macro2", - "quote", - "syn 1.0.109", + "markup5ever 0.14.1", + "match_token", ] [[package]] @@ -7033,7 +7059,7 @@ checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", - "itoa 1.0.15", + "itoa", ] [[package]] @@ -7044,7 +7070,7 @@ checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", - "itoa 1.0.15", + "itoa", ] [[package]] @@ -7126,7 +7152,7 @@ dependencies = [ "http-body 0.4.6", "httparse", "httpdate", - "itoa 1.0.15", + "itoa", "pin-project-lite", "socket2", "tokio", @@ -7144,12 +7170,12 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.10", + "h2 0.4.11", "http 1.3.1", "http-body 1.0.1", "httparse", "httpdate", - "itoa 1.0.15", + "itoa", "pin-project-lite", "smallvec", "tokio", @@ -7172,21 +7198,21 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.6" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a01595e11bdcec50946522c32dde3fc6914743000a68b93000965f2f02406d" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ "http 1.3.1", "hyper 1.6.0", "hyper-util", "log", - "rustls 0.23.27", + "rustls 0.23.28", "rustls-native-certs 0.8.1", "rustls-pki-types", "tokio", "tokio-rustls 0.26.2", "tower-service", - "webpki-roots 1.0.0", + "webpki-roots 1.0.1", ] [[package]] @@ -7220,22 +7246,28 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9f1e950e0d9d1d3c47184416723cf29c0d1f93bd8cccf37e4beb6b44f31710" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" dependencies = [ + "base64 0.22.1", "bytes", "futures-channel", + "futures-core", "futures-util", "http 1.3.1", "http-body 1.0.1", "hyper 1.6.0", + "ipnet", "libc", + "percent-encoding", "pin-project-lite", "socket2", + "system-configuration 0.6.1", "tokio", "tower-service", "tracing", + "windows-registry", ] [[package]] @@ -7397,7 +7429,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -7514,9 +7546,9 @@ dependencies = [ [[package]] name = "image-webp" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b77d01e822461baa8409e156015a1d91735549f0f2c17691bd2d996bef238f7f" +checksum = "f6970fe7a5300b4b42e62c52efa0187540a5bef546c60edaf554ef595d2e6f0b" dependencies = [ "byteorder-lite", "quick-error", @@ -7588,25 +7620,25 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" dependencies = [ "equivalent", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "serde", ] [[package]] name = "indicatif" -version = "0.17.11" +version = "0.17.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" +checksum = "4adb2ee6ad319a912210a36e56e3623555817bcc877a7e6e8802d1d69c4d8056" dependencies = [ - "console", - "number_prefix", + "console 0.16.0", "portable-atomic", "unicode-width 0.2.0", + "unit-prefix", "web-time", ] @@ -7671,7 +7703,7 @@ dependencies = [ "indoc", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -7689,7 +7721,7 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "636d4b0f6a39fd684effe2a73f5310df16a3fa7954c26d36833e98f44d1977a2" dependencies = [ - "hashbrown 0.15.3", + "hashbrown 0.15.4", ] [[package]] @@ -7700,7 +7732,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -7755,7 +7787,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -7764,7 +7796,7 @@ version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ - "hermit-abi 0.5.1", + "hermit-abi", "libc", "windows-sys 0.59.0", ] @@ -7851,12 +7883,6 @@ dependencies = [ "either", ] -[[package]] -name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - [[package]] name = "itoa" version = "1.0.15" @@ -7888,9 +7914,9 @@ dependencies = [ [[package]] name = "jiff" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a194df1107f33c79f4f93d02c80798520551949d59dfad22b6157048a88cca93" +checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" dependencies = [ "jiff-static", "jiff-tzdb-platform", @@ -7903,13 +7929,13 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c6e1db7ed32c6c71b759497fae34bf7933636f75a251b9e736555da426f6442" +checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -7961,9 +7987,9 @@ dependencies = [ [[package]] name = "jpeg-decoder" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" +checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07" [[package]] name = "js-sys" @@ -8054,7 +8080,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" dependencies = [ "libc", - "libloading 0.8.7", + "libloading 0.8.8", "pkg-config", ] @@ -8130,15 +8156,14 @@ dependencies = [ [[package]] name = "kuchikiki" -version = "0.8.2" +version = "0.8.8-speedreader" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e4755b7b995046f510a7520c42b2fed58b77bd94d5a87a8eb43d2fd126da8" +checksum = "02cb977175687f33fa4afa0c95c112b987ea1443e5a51c8f8ff27dc618270cc2" dependencies = [ - "cssparser 0.27.2", + "cssparser 0.29.6", "html5ever", - "indexmap 1.9.3", - "matches", - "selectors 0.22.0", + "indexmap 2.10.0", + "selectors 0.24.0", ] [[package]] @@ -8232,9 +8257,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.172" +version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "libfuzzer-sys" @@ -8248,9 +8273,9 @@ dependencies = [ [[package]] name = "libgit2-sys" -version = "0.18.1+1.9.0" +version = "0.18.2+1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1dcb20f84ffcdd825c7a311ae347cce604a6f084a767dec4a4929829645290e" +checksum = "1c42fe03df2bd3c53a3a9c7317ad91d80c81cd1fb0caec8d7cc4cd2bfa10c222" dependencies = [ "cc", "libc", @@ -8272,12 +8297,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a793df0d7afeac54f95b471d3af7f0d4fb975699f972341a4b76988d49cdf0c" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.53.0", + "windows-targets 0.53.2", ] [[package]] @@ -8288,13 +8313,13 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638" dependencies = [ "bitflags 2.9.1", "libc", - "redox_syscall 0.5.12", + "redox_syscall 0.5.13", ] [[package]] @@ -8341,6 +8366,15 @@ dependencies = [ "x11", ] +[[package]] +name = "libz-rs-sys" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "172a788537a2221661b480fee8dc5f96c580eb34fa88764d3205dc356c7e4221" +dependencies = [ + "zlib-rs", +] + [[package]] name = "libz-sys" version = "1.1.22" @@ -8355,20 +8389,20 @@ dependencies = [ [[package]] name = "lightningcss" -version = "1.0.0-alpha.66" +version = "1.0.0-alpha.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a73ffa17de66534e4b527232f44aa0a89fad22c4f4e0735f9be35494f058e54" +checksum = "798fba4e1205eed356b8ed7754cc3f7f04914e27855ca641409f4a532e992149" dependencies = [ "ahash 0.8.12", "bitflags 2.9.1", - "browserslist-rs 0.18.1", + "browserslist-rs 0.18.2", "const-str 0.3.2", "cssparser 0.33.0", "cssparser-color", "dashmap 5.5.3", "data-encoding", "getrandom 0.2.16", - "indexmap 2.9.0", + "indexmap 2.10.0", "itertools 0.10.5", "lazy_static", "lightningcss-derive", @@ -8452,7 +8486,7 @@ checksum = "de66c928222984aea59fcaed8ba627f388aaac3c1f57dcb05cc25495ef8faefe" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -8501,9 +8535,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ "autocfg", "scopeguard", @@ -8557,16 +8591,16 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.3", + "hashbrown 0.15.4", ] [[package]] name = "lru" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "227748d55f2f0ab4735d87fd623798cb6b664512fe979705f829c9f81c934465" +checksum = "9f8cc7106155f10bdf99a6f379688f543ad6596a415375b36a59a054ceda1198" dependencies = [ - "hashbrown 0.15.3", + "hashbrown 0.15.4", ] [[package]] @@ -8610,7 +8644,7 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -8629,7 +8663,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f44db74bde26fdf427af23f1d146c211aed857c59e3be750cf2617f6b0b05c94" dependencies = [ "proc-macro2", - "syn 2.0.101", + "syn 2.0.104", "synstructure 0.13.2", ] @@ -8664,18 +8698,18 @@ dependencies = [ "manganis-core", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "markup5ever" -version = "0.11.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" +checksum = "c7a7213d12e1864c0f002f52c2923d4556935a43dec5e71355c2760e0f6e7a18" dependencies = [ "log", - "phf 0.10.1", - "phf_codegen 0.10.0", + "phf 0.11.3", + "phf_codegen 0.11.3", "string_cache", "string_cache_codegen", "tendril", @@ -8692,6 +8726,17 @@ dependencies = [ "web_atoms", ] +[[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.104", +] + [[package]] name = "matchers" version = "0.1.0" @@ -8747,9 +8792,9 @@ checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "memfd" @@ -8895,9 +8940,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", "simd-adler32", @@ -8911,7 +8956,7 @@ checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", "log", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "windows-sys 0.59.0", ] @@ -8961,6 +9006,27 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "muda" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58b89bf91c19bf036347f1ab85a81c560f08c0667c8601bece664d860a600988" +dependencies = [ + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "libxdo", + "objc2 0.6.1", + "objc2-app-kit 0.3.1", + "objc2-core-foundation", + "objc2-foundation 0.3.1", + "once_cell", + "png", + "thiserror 2.0.12", + "windows-sys 0.59.0", +] + [[package]] name = "multer" version = "3.1.0" @@ -8988,7 +9054,7 @@ dependencies = [ "bitflags 2.9.1", "codespan-reporting 0.11.1", "hexf-parse", - "indexmap 2.9.0", + "indexmap 2.10.0", "log", "num-traits", "rustc-hash 1.1.0", @@ -9010,7 +9076,7 @@ dependencies = [ "cfg_aliases 0.2.1", "codespan-reporting 0.11.1", "hexf-parse", - "indexmap 2.9.0", + "indexmap 2.10.0", "log", "rustc-hash 1.1.0", "spirv", @@ -9319,7 +9385,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -9380,41 +9446,36 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi", "libc", ] [[package]] name = "num_enum" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" dependencies = [ "num_enum_derive", + "rustversion", ] [[package]] name = "num_enum_derive" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] -[[package]] -name = "number_prefix" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" - [[package]] name = "objc" version = "0.2.7" @@ -9448,6 +9509,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88c6597e14493ab2e44ce58f2fdecf095a51f12ca57bec060a11c57332520551" dependencies = [ "objc2-encode", + "objc2-exception-helper", ] [[package]] @@ -9576,6 +9638,15 @@ version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" +[[package]] +name = "objc2-exception-helper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" +dependencies = [ + "cc", +] + [[package]] name = "objc2-foundation" version = "0.2.2" @@ -9669,6 +9740,18 @@ dependencies = [ "objc2-user-notifications", ] +[[package]] +name = "objc2-ui-kit" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25b1312ad7bc8a0e92adae17aa10f90aae1fb618832f9b993b022b591027daed" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.1", + "objc2-core-foundation", + "objc2-foundation 0.3.1", +] + [[package]] name = "objc2-uniform-type-identifiers" version = "0.2.2" @@ -9693,6 +9776,20 @@ dependencies = [ "objc2-foundation 0.2.2", ] +[[package]] +name = "objc2-web-kit" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91672909de8b1ce1c2252e95bbee8c1649c9ad9d14b9248b3d7b4c47903c47ad" +dependencies = [ + "bitflags 2.9.1", + "block2 0.6.1", + "objc2 0.6.1", + "objc2-app-kit 0.3.1", + "objc2-core-foundation", + "objc2-foundation 0.3.1", +] + [[package]] name = "objc_exception" version = "0.1.2" @@ -9720,7 +9817,7 @@ dependencies = [ "crc32fast", "flate2", "hashbrown 0.14.5", - "indexmap 2.9.0", + "indexmap 2.10.0", "memchr", "ruzstd 0.5.0", ] @@ -9733,8 +9830,8 @@ checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "crc32fast", "flate2", - "hashbrown 0.15.3", - "indexmap 2.9.0", + "hashbrown 0.15.4", + "indexmap 2.10.0", "memchr", "ruzstd 0.7.3", "wasmparser 0.222.1", @@ -9811,9 +9908,9 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.72" +version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ "bitflags 2.9.1", "cfg-if", @@ -9832,7 +9929,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -9843,18 +9940,18 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-src" -version = "300.5.0+3.5.0" +version = "300.5.1+3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8ce546f549326b0e6052b649198487d91320875da901e7bd11a06d1ee3f9c2f" +checksum = "735230c832b28c000e3bc117119e6466a663ec73506bc0a9907ea4187508e42a" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.108" +version = "0.9.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e145e1651e858e820e4860f7b9c5e169bc1d8ce1c86043be79fa7b7634821847" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" dependencies = [ "cc", "libc", @@ -9937,7 +10034,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -9969,9 +10066,9 @@ dependencies = [ [[package]] name = "owo-colors" -version = "4.2.1" +version = "4.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26995317201fa17f3656c36716aed4a7c81743a9634ac4c99c0eeda495db0cec" +checksum = "48dd4f4a2c8405440fd0462561f0e5806bd0f77e86f51c761481bdd4018b545e" dependencies = [ "supports-color 2.1.0", "supports-color 3.0.2", @@ -10096,9 +10193,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", "parking_lot_core", @@ -10106,13 +10203,13 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.12", + "redox_syscall 0.5.13", "smallvec", "windows-targets 0.52.6", ] @@ -10124,7 +10221,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13e57638545cf2ba4c3e72cc5715e53b1880b829cc3dbefda3d1700c58efe723" dependencies = [ "fontique", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "peniko", "skrifa", "swash", @@ -10208,7 +10305,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -10249,9 +10346,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "198db74531d58c70a361c42201efde7e2591e976d518caf7662a47dc5720e7b6" +checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" dependencies = [ "memchr", "thiserror 2.0.12", @@ -10260,9 +10357,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d725d9cfd79e87dccc9341a2ef39d1b6f6353d68c4b33c177febbe1a402c97c5" +checksum = "bb056d9e8ea77922845ec74a1c4e8fb17e7c218cc4fc11a15c5d25e189aa40bc" dependencies = [ "pest", "pest_generator", @@ -10270,24 +10367,23 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db7d01726be8ab66ab32f9df467ae8b1148906685bbe75c82d1e65d7f5b3f841" +checksum = "87e404e638f781eb3202dc82db6760c8ae8a1eeef7fb3fa8264b2ef280504966" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "pest_meta" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9f832470494906d1fca5329f8ab5791cc60beb230c74815dff541cbd2b5ca0" +checksum = "edd1101f170f5903fde0914f899bb503d9ff5271d7ba76bbb70bea63690cc0d5" dependencies = [ - "once_cell", "pest", "sha2", ] @@ -10299,7 +10395,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset 0.4.2", - "indexmap 2.9.0", + "indexmap 2.10.0", ] [[package]] @@ -10309,7 +10405,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset 0.5.7", - "indexmap 2.9.0", + "indexmap 2.10.0", ] [[package]] @@ -10385,9 +10481,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" dependencies = [ - "phf_macros 0.8.0", "phf_shared 0.8.0", - "proc-macro-hack", ] [[package]] @@ -10396,7 +10490,9 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" dependencies = [ + "phf_macros 0.10.0", "phf_shared 0.10.0", + "proc-macro-hack", ] [[package]] @@ -10419,16 +10515,6 @@ dependencies = [ "phf_shared 0.8.0", ] -[[package]] -name = "phf_codegen" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" -dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", -] - [[package]] name = "phf_codegen" version = "0.11.3" @@ -10471,12 +10557,12 @@ dependencies = [ [[package]] name = "phf_macros" -version = "0.8.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" +checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" dependencies = [ - "phf_generator 0.8.0", - "phf_shared 0.8.0", + "phf_generator 0.10.0", + "phf_shared 0.10.0", "proc-macro-hack", "proc-macro2", "quote", @@ -10493,7 +10579,7 @@ dependencies = [ "phf_shared 0.11.3", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -10546,7 +10632,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -10607,13 +10693,13 @@ checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "plist" -version = "1.7.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac26e981c03a6e53e0aee43c113e3202f5581d5360dae7bd2c70e800dd0451d" +checksum = "3d77244ce2d584cd84f6a15f86195b8c9b2a0dfbfd817c09e0464244091a58ed" dependencies = [ "base64 0.22.1", - "indexmap 2.9.0", - "quick-xml 0.32.0", + "indexmap 2.10.0", + "quick-xml 0.37.5", "serde", "time", ] @@ -10667,7 +10753,7 @@ checksum = "b53a684391ad002dd6a596ceb6c74fd004fdce75f4be2e3f615068abbea5fd50" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi 0.5.1", + "hermit-abi", "pin-project-lite", "rustix 1.0.7", "tracing", @@ -10694,9 +10780,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "portable-atomic-util" @@ -10750,7 +10836,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32db37eb2b0ec0af154e9c1b33425902d8cd9481e35167c4e9ffb28fec3916bb" dependencies = [ "proc-macro2", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -10765,12 +10851,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.32" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6" +checksum = "061c1221631e079b26479d25bbf2275bfe5917ae8419cd7e34f13bfc2aa7539a" dependencies = [ "proc-macro2", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -10807,7 +10893,7 @@ version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ - "toml_edit 0.22.26", + "toml_edit 0.22.27", ] [[package]] @@ -10857,7 +10943,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "version_check", "yansi", ] @@ -10874,21 +10960,21 @@ dependencies = [ [[package]] name = "profiling" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" +checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" dependencies = [ "profiling-procmacros", ] [[package]] name = "profiling-procmacros" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30" +checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" dependencies = [ "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -10911,7 +10997,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -10969,7 +11055,7 @@ checksum = "ca414edb151b4c8d125c12566ab0d74dc9cdba36fb80eb7b848c15f495fd32d1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -10997,15 +11083,6 @@ dependencies = [ "serde", ] -[[package]] -name = "quick-xml" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" -dependencies = [ - "memchr", -] - [[package]] name = "quick-xml" version = "0.37.5" @@ -11027,7 +11104,7 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash 2.1.1", - "rustls 0.23.27", + "rustls 0.23.28", "socket2", "thiserror 2.0.12", "tokio", @@ -11047,7 +11124,7 @@ dependencies = [ "rand 0.9.1", "ring", "rustc-hash 2.1.1", - "rustls 0.23.27", + "rustls 0.23.28", "rustls-pki-types", "slab", "thiserror 2.0.12", @@ -11058,9 +11135,9 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842" +checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" dependencies = [ "cfg_aliases 0.2.1", "libc", @@ -11081,9 +11158,9 @@ dependencies = [ [[package]] name = "r-efi" -version = "5.2.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "radium" @@ -11309,9 +11386,9 @@ dependencies = [ [[package]] name = "ravif" -version = "0.11.12" +version = "0.11.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6a5f31fcf7500f9401fea858ea4ab5525c99f2322cfcee732c0e6c74208c0c6" +checksum = "5825c26fddd16ab9f515930d49028a630efec172e903483c94796cfe31893e6b" dependencies = [ "avif-serialize", "imgref", @@ -11384,9 +11461,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" dependencies = [ "bitflags 2.9.1", ] @@ -11413,6 +11490,26 @@ dependencies = [ "thiserror 2.0.12", ] +[[package]] +name = "ref-cast" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + [[package]] name = "regex" version = "1.11.1" @@ -11536,9 +11633,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.15" +version = "0.12.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" +checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531" dependencies = [ "base64 0.22.1", "bytes", @@ -11546,45 +11643,41 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2 0.4.10", + "h2 0.4.11", "http 1.3.1", "http-body 1.0.1", "http-body-util", "hyper 1.6.0", - "hyper-rustls 0.27.6", + "hyper-rustls 0.27.7", "hyper-tls", "hyper-util", - "ipnet", "js-sys", "log", "mime", "mime_guess", "native-tls", - "once_cell", "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.27", - "rustls-pemfile 2.2.0", + "rustls 0.23.28", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper 1.0.2", - "system-configuration 0.6.1", "tokio", "tokio-native-tls", "tokio-rustls 0.26.2", "tokio-util", "tower 0.5.2", + "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots 0.26.11", - "windows-registry 0.4.0", + "webpki-roots 1.0.1", ] [[package]] @@ -11655,7 +11748,7 @@ checksum = "a5a11a05ee1ce44058fa3d5961d05194fdbe3ad6b40f904af764d81b86450e6b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -11768,9 +11861,9 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.37.1" +version = "1.37.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faa7de2ba56ac291bd90c6b9bece784a52ae1411f9506544b3eae36dd2356d50" +checksum = "b203a6425500a03e0919c42d3c47caca51e79f1132046626d2c8871c5092035d" dependencies = [ "arrayvec", "borsh", @@ -11784,9 +11877,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" [[package]] name = "rustc-hash" @@ -11872,9 +11965,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.27" +version = "0.23.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" +checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" dependencies = [ "aws-lc-rs", "log", @@ -12067,6 +12160,30 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1375ba8ef45a6f15d83fa8748f1079428295d403d6ea991d09ab100155fbc06d" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + [[package]] name = "scoped-tls" version = "1.0.1" @@ -12108,7 +12225,7 @@ checksum = "1783eabc414609e28a5ba76aee5ddd52199f7107a0b24c2e9746a1ecc34a683d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -12174,7 +12291,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ "bitflags 2.9.1", - "core-foundation 0.10.0", + "core-foundation 0.10.1", "core-foundation-sys", "libc", "security-framework-sys", @@ -12192,22 +12309,20 @@ dependencies = [ [[package]] name = "selectors" -version = "0.22.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" +checksum = "0c37578180969d00692904465fb7f6b3d50b9a2b952b87c23d0e2e5cb5013416" dependencies = [ "bitflags 1.3.2", - "cssparser 0.27.2", + "cssparser 0.29.6", "derive_more 0.99.20", "fxhash", "log", - "matches", "phf 0.8.0", "phf_codegen 0.8.0", "precomputed-hash", - "servo_arc 0.1.1", + "servo_arc 0.2.0", "smallvec", - "thin-slice", ] [[package]] @@ -12225,7 +12340,7 @@ dependencies = [ "phf 0.11.3", "phf_codegen 0.11.3", "precomputed-hash", - "servo_arc 0.4.0", + "servo_arc 0.4.1", "smallvec", "to_shmem", "to_shmem_derive", @@ -12255,7 +12370,7 @@ dependencies = [ "log", "quick-xml 0.37.5", "regex", - "reqwest 0.12.15", + "reqwest 0.12.22", "self-replace", "semver", "serde_json", @@ -12351,7 +12466,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -12360,7 +12475,7 @@ version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ - "itoa 1.0.15", + "itoa", "memchr", "ryu", "serde", @@ -12372,7 +12487,7 @@ version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" dependencies = [ - "itoa 1.0.15", + "itoa", "serde", ] @@ -12395,14 +12510,14 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "serde_spanned" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ "serde", ] @@ -12414,22 +12529,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.15", + "itoa", "ryu", "serde", ] [[package]] name = "serde_with" -version = "3.12.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" +checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.9.0", + "indexmap 2.10.0", + "schemars 0.9.0", + "schemars 1.0.3", "serde", "serde_derive", "serde_json", @@ -12439,14 +12556,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.12.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" +checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -12455,8 +12572,8 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.9.0", - "itoa 1.0.15", + "indexmap 2.10.0", + "itoa", "ryu", "serde", "unsafe-libyaml", @@ -12483,7 +12600,7 @@ dependencies = [ "js-sys", "once_cell", "pin-project-lite", - "reqwest 0.12.15", + "reqwest 0.12.22", "rustc_version", "rustversion", "send_wrapper", @@ -12494,7 +12611,7 @@ dependencies = [ "thiserror 2.0.12", "throw_error", "tokio", - "tokio-tungstenite", + "tokio-tungstenite 0.26.2", "tower 0.5.2", "tower-layer", "url", @@ -12516,7 +12633,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.101", + "syn 2.0.104", "xxhash-rust", ] @@ -12527,14 +12644,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5ab934f581482a66da82f2b57b15390ad67c9ab85bd9a6c54bb65060fb1380" dependencies = [ "server_fn_macro", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "servo_arc" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" +checksum = "d52aa42f8fdf0fed91e5ce7f23d8138441002fa31dca008acf47e6fd4721f741" dependencies = [ "nodrop", "stable_deref_trait", @@ -12542,9 +12659,9 @@ dependencies = [ [[package]] name = "servo_arc" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae65c4249478a2647db249fb43e23cec56a2c8974a427e7bd8cb5a1d0964921a" +checksum = "204ea332803bd95a0b60388590d59cf6468ec9becf626e2451f1d26a1d972de4" dependencies = [ "serde", "stable_deref_trait", @@ -12729,12 +12846,9 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" [[package]] name = "sledgehammer_bindgen" @@ -12753,7 +12867,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f62f06db0370222f7f498ef478fce9f8df5828848d1d3517e3331936d7074f55" dependencies = [ "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -12783,9 +12897,9 @@ checksum = "d31d263dd118560e1a492922182ab6ca6dc1d03a3bf54e7699993f31a4150e3f" [[package]] name = "smallvec" -version = "1.15.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" dependencies = [ "serde", ] @@ -12860,9 +12974,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.9" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", @@ -12907,9 +13021,9 @@ dependencies = [ [[package]] name = "sourcemap" -version = "9.2.1" +version = "9.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdee719193ae5c919a3ee43f64c2c0dd87f9b9a451d67918a2a5ec2e3c70561c" +checksum = "e22afbcb92ce02d23815b9795523c005cb9d3c214f8b7a66318541c240ea7935" dependencies = [ "base64-simd 0.8.0", "bitvec", @@ -12996,9 +13110,9 @@ dependencies = [ "futures-intrusive", "futures-io", "futures-util", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "hashlink", - "indexmap 2.9.0", + "indexmap 2.10.0", "ipnet", "ipnetwork", "log", @@ -13008,7 +13122,7 @@ dependencies = [ "once_cell", "percent-encoding", "rust_decimal", - "rustls 0.23.27", + "rustls 0.23.28", "serde", "serde_json", "sha2", @@ -13033,7 +13147,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -13056,7 +13170,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.101", + "syn 2.0.104", "tokio", "url", ] @@ -13086,7 +13200,7 @@ dependencies = [ "hex", "hkdf", "hmac", - "itoa 1.0.15", + "itoa", "log", "md-5", "memchr", @@ -13133,7 +13247,7 @@ dependencies = [ "home", "ipnet", "ipnetwork", - "itoa 1.0.15", + "itoa", "log", "mac_address", "md-5", @@ -13207,7 +13321,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6635404b73efc136af3a7956e53c53d4f34b2f16c95a15c438929add0f69412" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.10.0", "smallvec", "static-self-derive", ] @@ -13272,7 +13386,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -13339,7 +13453,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -13352,7 +13466,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -13372,9 +13486,9 @@ dependencies = [ "euclid", "fxhash", "icu_segmenter", - "indexmap 2.9.0", + "indexmap 2.10.0", "itertools 0.14.0", - "itoa 1.0.15", + "itoa", "lazy_static", "log", "malloc_size_of_derive", @@ -13391,7 +13505,7 @@ dependencies = [ "rayon-core", "selectors 0.29.0", "serde", - "servo_arc 0.4.0", + "servo_arc 0.4.1", "smallbitvec", "smallvec", "static_assertions", @@ -13438,7 +13552,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "synstructure 0.13.2", ] @@ -13462,7 +13576,7 @@ dependencies = [ "cssparser 0.35.0", "euclid", "selectors 0.29.0", - "servo_arc 0.4.0", + "servo_arc 0.4.1", "smallbitvec", "smallvec", "string_cache", @@ -13499,7 +13613,7 @@ dependencies = [ "malloc_size_of_derive", "selectors 0.29.0", "serde", - "servo_arc 0.4.0", + "servo_arc 0.4.1", "stylo_atoms", "stylo_malloc_size_of", "thin-vec", @@ -13514,7 +13628,7 @@ version = "0.7.0-alpha.1" dependencies = [ "js-sys", "libc", - "libloading 0.8.7", + "libloading 0.8.8", "memfd", "memmap2", "serde", @@ -13635,7 +13749,7 @@ checksum = "c88a91910cd8430f88f8987019cf3a96d92a5d5dded3e0ba8203e0379e4a2f6f" dependencies = [ "anyhow", "crc 2.1.0", - "indexmap 2.9.0", + "indexmap 2.10.0", "is-macro", "once_cell", "parking_lot", @@ -13705,7 +13819,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4aa30931f9b26af8edcb4cce605909d15dcfd7577220b22c50a2988f2a53c4c1" dependencies = [ "anyhow", - "indexmap 2.9.0", + "indexmap 2.10.0", "serde", "serde_json", "sourcemap", @@ -13722,7 +13836,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -13773,7 +13887,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -13804,7 +13918,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "164291b068cca947462d87ede1baf276f69da137db1a0c66059a8aed81b785b2" dependencies = [ "arrayvec", - "indexmap 2.9.0", + "indexmap 2.10.0", "num-bigint", "num_cpus", "once_cell", @@ -13863,7 +13977,7 @@ checksum = "09fdc36d220bcd51f70b1d78bdd8c1e1a172b4e594c385bdd9614b84a7c0e112" dependencies = [ "better_scoped_tls", "bitflags 2.9.1", - "indexmap 2.9.0", + "indexmap 2.10.0", "once_cell", "phf 0.11.3", "rustc-hash 1.1.0", @@ -13888,7 +14002,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -13898,7 +14012,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e4232534b28fc57b745e8c709723544e5548af29abaa62281eab427099f611d" dependencies = [ "dashmap 5.5.3", - "indexmap 2.9.0", + "indexmap 2.10.0", "once_cell", "petgraph 0.6.5", "rustc-hash 1.1.0", @@ -13921,7 +14035,7 @@ version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "15eb86aaa82d7ec4c1a6c3a8a824b1fdbbaace73c3ed81035a1fbbac49f8e0bd" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.10.0", "rustc-hash 1.1.0", "swc_atoms", "swc_common", @@ -13938,7 +14052,7 @@ version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c9d22b4883dc6d6c21a8216bbf5aacedd7f104230b1557367ae126a2ec3a2b5" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.10.0", "num_cpus", "once_cell", "rustc-hash 1.1.0", @@ -13975,7 +14089,7 @@ checksum = "e96e15288bf385ab85eb83cff7f9e2d834348da58d0a31b33bdb572e66ee413e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -13984,7 +14098,7 @@ version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c22e0a0478b1b06610453a97c8371cafa742e371a79aff860ccfbabe1ab160a7" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.10.0", "petgraph 0.6.5", "rustc-hash 1.1.0", "swc_common", @@ -14011,7 +14125,7 @@ checksum = "a509f56fca05b39ba6c15f3e58636c3924c78347d63853632ed2ffcb6f5a0ac7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -14055,9 +14169,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.101" +version = "2.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" dependencies = [ "proc-macro2", "quote", @@ -14099,7 +14213,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -14186,9 +14300,9 @@ dependencies = [ [[package]] name = "taffy" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "592835b1f82a500b55aa6242e5e2d1fb90c50e701fa9c33b5962d4aeaa4e88d6" +checksum = "7aaef0ac998e6527d6d0d5582f7e43953bb17221ac75bb8eb2fcc2db3396db1c" dependencies = [ "arrayvec", "grid", @@ -14198,12 +14312,12 @@ dependencies = [ [[package]] name = "tao" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e59c1f38e657351a2e822eadf40d6a2ad4627b9c25557bc1180ec1b3295ef82" +checksum = "49c380ca75a231b87b6c9dd86948f035012e7171d1a7c40a9c2890489a7ffd8a" dependencies = [ "bitflags 2.9.1", - "core-foundation 0.10.0", + "core-foundation 0.10.1", "core-graphics 0.24.0", "crossbeam-channel", "dispatch", @@ -14230,7 +14344,7 @@ dependencies = [ "tao-macros", "unicode-segmentation", "url", - "windows 0.61.1", + "windows 0.61.3", "windows-core 0.61.2", "windows-version", "x11-dl", @@ -14244,7 +14358,7 @@ checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -14287,9 +14401,9 @@ checksum = "1ac9aa371f599d22256307c24a9d748c041e548cbf599f35d890f9d365361790" [[package]] name = "tauri-bundler" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "688db3d6e5e7039c445964c65940ed37d1da85089797c05297c3b2e26d3c1eaa" +checksum = "3c47183072f4d7c9248d6cb28fd33d0e6af2d399db9d55fb98022c2e5316f7d6" dependencies = [ "anyhow", "ar", @@ -14326,9 +14440,9 @@ dependencies = [ "uuid", "walkdir", "which 7.0.3", - "windows-registry 0.5.2", - "windows-sys 0.59.0", - "zip 2.4.2", + "windows-registry", + "windows-sys 0.60.2", + "zip 4.2.0", ] [[package]] @@ -14365,19 +14479,17 @@ dependencies = [ [[package]] name = "tauri-utils" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2900399c239a471bcff7f15c4399eb1a8c4fe511ba2853e07c996d771a5e0a4" +checksum = "41743bbbeb96c3a100d234e5a0b60a46d5aa068f266160862c7afdbf828ca02e" dependencies = [ "anyhow", "ctor", "dunce", "glob", - "html5ever", "http 1.3.1", "infer", "json-patch", - "kuchikiki", "log", "memchr", "phf 0.11.3", @@ -14448,12 +14560,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "thin-slice" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" - [[package]] name = "thin-vec" version = "0.2.14" @@ -14486,7 +14592,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -14497,17 +14603,16 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", ] [[package]] @@ -14547,7 +14652,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ "deranged", - "itoa 1.0.15", + "itoa", "num-conv", "powerfmt", "serde", @@ -14656,7 +14761,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb61262d1e7e4cc777e40cb2f101d5fa51f3eeac50c3a7355b2027b9274baa35" dependencies = [ "cssparser 0.35.0", - "servo_arc 0.4.0", + "servo_arc 0.4.1", "smallbitvec", "smallvec", "string_cache", @@ -14672,7 +14777,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "synstructure 0.13.2", ] @@ -14703,7 +14808,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -14732,7 +14837,7 @@ version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ - "rustls 0.23.27", + "rustls 0.23.28", "tokio", ] @@ -14756,13 +14861,23 @@ checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" dependencies = [ "futures-util", "log", - "native-tls", - "rustls 0.23.27", + "rustls 0.23.28", "tokio", - "tokio-native-tls", "tungstenite 0.26.2", ] +[[package]] +name = "tokio-tungstenite" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "489a59b6730eda1b0171fcfda8b121f4bee2b35cba8645ca35c5f7ba3eb736c1" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite 0.27.0", +] + [[package]] name = "tokio-util" version = "0.7.15" @@ -14774,7 +14889,7 @@ dependencies = [ "futures-io", "futures-sink", "futures-util", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "pin-project-lite", "slab", "tokio", @@ -14782,22 +14897,22 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.22" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.10.0", "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.26", + "toml_edit 0.22.27", ] [[package]] name = "toml_datetime" -version = "0.6.9" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ "serde", ] @@ -14808,7 +14923,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.10.0", "toml_datetime", "winnow 0.5.40", ] @@ -14819,30 +14934,30 @@ version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.10.0", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.26" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.10.0", "serde", "serde_spanned", "toml_datetime", "toml_write", - "winnow 0.7.10", + "winnow 0.7.11", ] [[package]] name = "toml_write" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "tonic" @@ -14855,7 +14970,7 @@ dependencies = [ "axum 0.7.9", "base64 0.22.1", "bytes", - "h2 0.4.10", + "h2 0.4.11", "http 1.3.1", "http-body 1.0.1", "http-body-util", @@ -14912,9 +15027,9 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.4" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fdb0c213ca27a9f57ab69ddb290fd80d970922355b83ae380b395d3986b8a2e" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ "async-compression", "base64 0.22.1", @@ -14967,20 +15082,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", "valuable", @@ -15069,7 +15184,7 @@ dependencies = [ "crossbeam-channel", "dirs 6.0.0", "libappindicator", - "muda", + "muda 0.16.1", "objc2 0.6.1", "objc2-app-kit 0.3.1", "objc2-core-foundation", @@ -15149,6 +15264,23 @@ name = "tungstenite" version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" +dependencies = [ + "bytes", + "data-encoding", + "http 1.3.1", + "httparse", + "log", + "rand 0.9.1", + "sha1", + "thiserror 2.0.12", + "utf-8", +] + +[[package]] +name = "tungstenite" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadc29d668c91fcc564941132e17b28a7ceb2f3ebf0b9dae3e03fd7a6748eb0d" dependencies = [ "bytes", "data-encoding", @@ -15157,6 +15289,7 @@ dependencies = [ "log", "native-tls", "rand 0.9.1", + "rustls 0.23.28", "sha1", "thiserror 2.0.12", "utf-8", @@ -15409,6 +15542,12 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "unit-prefix" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "323402cff2dd658f39ca17c789b502021b3f18707c91cdf22e3838e1b4023817" + [[package]] name = "universal-hash" version = "0.5.1" @@ -15439,14 +15578,14 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "3.0.11" +version = "3.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7a3e9af6113ecd57b8c63d3cd76a385b2e3881365f1f489e54f49801d0c83ea" +checksum = "9f0fde9bc91026e381155f8c67cb354bcd35260b2f4a29bcc84639f762760c39" dependencies = [ "base64 0.22.1", "log", "percent-encoding", - "rustls 0.23.27", + "rustls 0.23.28", "rustls-pemfile 2.2.0", "rustls-pki-types", "socks", @@ -15457,9 +15596,9 @@ dependencies = [ [[package]] name = "ureq-proto" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fadf18427d33828c311234884b7ba2afb57143e6e7e69fda7ee883b624661e36" +checksum = "59db78ad1923f2b1be62b6da81fe80b173605ca0d57f85da2e005382adf693f7" dependencies = [ "base64 0.22.1", "http 1.3.1", @@ -15563,9 +15702,9 @@ dependencies = [ [[package]] name = "v_frame" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6f32aaa24bacd11e488aa9ba66369c7cd514885742c9fe08cfe85884db3e92b" +checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2" dependencies = [ "aligned-vec", "num-traits", @@ -15700,7 +15839,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -15731,7 +15870,7 @@ checksum = "59195a1db0e95b920366d949ba5e0d3fc0e70b67c09be15ce5abb790106b0571" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -15742,9 +15881,9 @@ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" @@ -15783,7 +15922,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "wasm-bindgen-shared", ] @@ -15829,7 +15968,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -15864,7 +16003,7 @@ checksum = "17d5042cc5fa009658f9a7333ef24291b1291a25b6382dd68862a7f3b969f69b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -15966,7 +16105,7 @@ dependencies = [ "futures", "getrandom 0.2.16", "js-sys", - "reqwest 0.12.15", + "reqwest 0.12.22", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -15981,7 +16120,7 @@ dependencies = [ "proc-macro2", "quote", "sha2", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -16023,7 +16162,7 @@ dependencies = [ "ahash 0.8.12", "bitflags 2.9.1", "hashbrown 0.14.5", - "indexmap 2.9.0", + "indexmap 2.10.0", "semver", "serde", ] @@ -16044,8 +16183,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc28600dcb2ba68d7e5f1c3ba4195c2bddc918c0243fd702d0b6dbd05689b681" dependencies = [ "bitflags 2.9.1", - "hashbrown 0.15.3", - "indexmap 2.9.0", + "hashbrown 0.15.4", + "indexmap 2.10.0", "semver", "serde", ] @@ -16057,7 +16196,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cc3b1f053f5d41aa55640a1fa9b6d1b8a9e4418d118ce308d20e24ff3575a8c" dependencies = [ "bitflags 2.9.1", - "indexmap 2.9.0", + "indexmap 2.10.0", "semver", ] @@ -16258,30 +16397,30 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "webpki-roots 1.0.0", + "webpki-roots 1.0.1", ] [[package]] name = "webpki-roots" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2853738d1cc4f2da3a225c18ec6c3721abb31961096e9dbf5ab35fa88b19cfdb" +checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502" dependencies = [ "rustls-pki-types", ] [[package]] name = "webview2-com" -version = "0.33.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f61ff3d9d0ee4efcb461b14eb3acfda2702d10dc329f339303fc3e57215ae2c" +checksum = "d4ba622a989277ef3886dd5afb3e280e3dd6d974b766118950a08f8f678ad6a4" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows 0.58.0", - "windows-core 0.58.0", - "windows-implement 0.58.0", - "windows-interface 0.58.0", + "windows 0.61.3", + "windows-core 0.61.2", + "windows-implement 0.60.0", + "windows-interface 0.59.1", ] [[package]] @@ -16292,18 +16431,18 @@ checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "webview2-com-sys" -version = "0.33.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3a3e2eeb58f82361c93f9777014668eb3d07e7d174ee4c819575a9208011886" +checksum = "36695906a1b53a3bf5c4289621efedac12b73eeb0b89e7e1a89b517302d5d75c" dependencies = [ - "thiserror 1.0.69", - "windows 0.58.0", - "windows-core 0.58.0", + "thiserror 2.0.12", + "windows 0.61.3", + "windows-core 0.61.2", ] [[package]] @@ -16374,7 +16513,7 @@ dependencies = [ "bitflags 2.9.1", "cfg_aliases 0.1.1", "codespan-reporting 0.11.1", - "indexmap 2.9.0", + "indexmap 2.10.0", "log", "naga 0.19.2", "once_cell", @@ -16400,7 +16539,7 @@ dependencies = [ "bitflags 2.9.1", "cfg_aliases 0.2.1", "document-features", - "indexmap 2.9.0", + "indexmap 2.10.0", "log", "naga 24.0.0", "once_cell", @@ -16438,7 +16577,7 @@ dependencies = [ "js-sys", "khronos-egl", "libc", - "libloading 0.8.7", + "libloading 0.8.8", "log", "metal 0.27.0", "naga 0.19.2", @@ -16482,7 +16621,7 @@ dependencies = [ "js-sys", "khronos-egl", "libc", - "libloading 0.8.7", + "libloading 0.8.8", "log", "metal 0.31.0", "naga 24.0.0", @@ -16570,7 +16709,7 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6994d13118ab492c3c80c1f81928718159254c53c472bf9ce36f8dae4add02a7" dependencies = [ - "redox_syscall 0.5.12", + "redox_syscall 0.5.13", "wasite", ] @@ -16664,9 +16803,9 @@ dependencies = [ [[package]] name = "windows" -version = "0.61.1" +version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ "windows-collections", "windows-core 0.61.2", @@ -16750,7 +16889,7 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -16761,7 +16900,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -16772,7 +16911,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -16783,7 +16922,7 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -16794,7 +16933,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -16805,14 +16944,14 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "windows-link" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" [[package]] name = "windows-numerics" @@ -16826,20 +16965,9 @@ dependencies = [ [[package]] name = "windows-registry" -version = "0.4.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" -dependencies = [ - "windows-result 0.3.4", - "windows-strings 0.3.1", - "windows-targets 0.53.0", -] - -[[package]] -name = "windows-registry" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3bab093bdd303a1240bb99b8aba8ea8a69ee19d34c9e2ef9594e708a4878820" +checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" dependencies = [ "windows-link", "windows-result 0.3.4", @@ -16883,15 +17011,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-strings" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" -dependencies = [ - "windows-link", -] - [[package]] name = "windows-strings" version = "0.4.2" @@ -16937,6 +17056,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.2", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -16985,9 +17113,9 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.0" +version = "0.53.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" dependencies = [ "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", @@ -17223,7 +17351,7 @@ dependencies = [ "objc2 0.5.2", "objc2-app-kit 0.2.2", "objc2-foundation 0.2.2", - "objc2-ui-kit", + "objc2-ui-kit 0.2.2", "orbclient", "percent-encoding", "pin-project", @@ -17260,9 +17388,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" +checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" dependencies = [ "memchr", ] @@ -17306,18 +17434,16 @@ checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "wry" -version = "0.45.0" +version = "0.52.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac0099a336829fbf54c26b5f620c68980ebbe37196772aeaf6118df4931b5cb0" +checksum = "12a714d9ba7075aae04a6e50229d6109e3d584774b99a6a8c60de1698ca111b9" dependencies = [ "base64 0.22.1", - "block", - "cocoa", - "core-graphics 0.24.0", + "block2 0.6.1", + "cookie", "crossbeam-channel", "dpi", "dunce", - "gdkx11", "gtk", "html5ever", "http 1.3.1", @@ -17326,22 +17452,26 @@ dependencies = [ "kuchikiki", "libc", "ndk", - "objc", - "objc_id", + "objc2 0.6.1", + "objc2-app-kit 0.3.1", + "objc2-core-foundation", + "objc2-foundation 0.3.1", + "objc2-ui-kit 0.3.1", + "objc2-web-kit", "once_cell", "percent-encoding", "raw-window-handle 0.6.2", "sha2", "soup3", "tao-macros", - "thiserror 1.0.69", + "thiserror 2.0.12", + "url", "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows 0.58.0", - "windows-core 0.58.0", + "windows 0.61.3", + "windows-core 0.61.2", "windows-version", - "x11-dl", ] [[package]] @@ -17383,7 +17513,7 @@ dependencies = [ "as-raw-xcb-connection", "gethostname", "libc", - "libloading 0.8.7", + "libloading 0.8.8", "once_cell", "rustix 0.38.44", "x11rb-protocol", @@ -17449,9 +17579,9 @@ dependencies = [ [[package]] name = "xattr" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d65cbf2f12c15564212d48f4e3dfb87923d25d611f2aed18f4cb23f0413d89e" +checksum = "af3a19837351dc82ba89f8a125e22a3c475f05aba604acc023d62b2739ae2909" dependencies = [ "libc", "rustix 1.0.7", @@ -17459,9 +17589,9 @@ dependencies = [ [[package]] name = "xcursor" -version = "0.3.8" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef33da6b1660b4ddbfb3aef0ade110c8b8a781a3b6382fa5f2b5b040fd55f61" +checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b" [[package]] name = "xdg-home" @@ -17569,7 +17699,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "synstructure 0.13.2", ] @@ -17581,7 +17711,7 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "synstructure 0.13.2", ] @@ -17645,7 +17775,7 @@ dependencies = [ "tracing", "uds_windows", "windows-sys 0.59.0", - "winnow 0.7.10", + "winnow 0.7.11", "zbus_macros 5.7.1", "zbus_names 4.2.0", "zvariant 5.5.3", @@ -17669,7 +17799,7 @@ checksum = "709ab20fc57cb22af85be7b360239563209258430bccf38d8b979c5a2ae3ecce" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "zbus-lockstep", "zbus_xml", "zvariant 4.2.0", @@ -17684,7 +17814,7 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "zvariant_utils 2.1.0", ] @@ -17697,7 +17827,7 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "zbus_names 4.2.0", "zvariant 5.5.3", "zvariant_utils 3.2.0", @@ -17722,7 +17852,7 @@ checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" dependencies = [ "serde", "static_assertions", - "winnow 0.7.10", + "winnow 0.7.11", "zvariant 5.5.3", ] @@ -17747,22 +17877,22 @@ checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" [[package]] name = "zerocopy" -version = "0.8.25" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.25" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -17782,7 +17912,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "synstructure 0.13.2", ] @@ -17803,7 +17933,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -17847,7 +17977,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -17858,7 +17988,7 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -17884,13 +18014,27 @@ dependencies = [ "crossbeam-utils", "displaydoc", "flate2", - "indexmap 2.9.0", + "indexmap 2.10.0", "memchr", "thiserror 2.0.12", "time", "zopfli", ] +[[package]] +name = "zip" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95ab361742de920c5535880f89bbd611ee62002bf11341d16a5f057bb8ba6899" +dependencies = [ + "arbitrary", + "crc32fast", + "flate2", + "indexmap 2.10.0", + "memchr", + "zopfli", +] + [[package]] name = "zip_structs" version = "0.2.1" @@ -17913,6 +18057,12 @@ dependencies = [ "thiserror 2.0.12", ] +[[package]] +name = "zlib-rs" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "626bd9fa9734751fc50d6060752170984d7053f5a39061f524cda68023d4db8a" + [[package]] name = "zopfli" version = "0.8.2" @@ -17970,9 +18120,9 @@ dependencies = [ [[package]] name = "zune-jpeg" -version = "0.4.14" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99a5bab8d7dedf81405c4bb1f2b83ea057643d9cb28778cea9eecddeedd2e028" +checksum = "7384255a918371b5af158218d131530f694de9ad3815ebdd0453a940485cb0fa" dependencies = [ "zune-core", ] @@ -18000,7 +18150,7 @@ dependencies = [ "enumflags2", "serde", "url", - "winnow 0.7.10", + "winnow 0.7.11", "zvariant_derive 5.5.3", "zvariant_utils 3.2.0", ] @@ -18014,7 +18164,7 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "zvariant_utils 2.1.0", ] @@ -18027,7 +18177,7 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "zvariant_utils 3.2.0", ] @@ -18039,7 +18189,7 @@ checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -18052,6 +18202,6 @@ dependencies = [ "quote", "serde", "static_assertions", - "syn 2.0.101", - "winnow 0.7.10", + "syn 2.0.104", + "winnow 0.7.11", ] diff --git a/Cargo.toml b/Cargo.toml index f9ad5ae22..0f9c38195 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -226,10 +226,10 @@ html_parser = "0.7.0" thiserror = "2.0.12" prettyplease = { version = "0.2.30", features = ["verbatim"] } const_format = "0.2.34" -cargo_toml = { version = "0.21.0" } -tauri-utils = { version = "=2.4.0" } -tauri-bundler = { version = "=2.4.0" } -lru = "0.13.0" +cargo_toml = { version = "0.22.1" } +tauri-utils = { version = "=2.5.0" } +tauri-bundler = { version = "=2.5.0" } +lru = "0.14.0" async-trait = "0.1.87" axum = { version = "0.8.1", default-features = false } axum-server = { version = "0.7.1", default-features = false } @@ -264,8 +264,8 @@ ciborium = "0.2.2" base64 = "0.22.1" uuid = "1.15.1" convert_case = "0.8.0" -tungstenite = { version = "0.26.2" } -tokio-tungstenite = { version = "0.26.2" } +tungstenite = { version = "0.27.0" } +tokio-tungstenite = { version = "0.27.0" } gloo-timers = "0.3.0" fluent-uri = { version = "0.3.2", features = ["serde"] } internment = { version = "0.8.6" } @@ -313,16 +313,16 @@ memmap2 = "0.9.5" memfd = "0.6.4" # desktop -wry = { version = "0.45.0", default-features = false } -tao = { version = "0.33.0", features = ["rwh_05"] } +wry = { version = "0.52.1", default-features = false } +tao = { version = "0.34.0", features = ["rwh_05"] } infer = "0.19.0" dunce = "1.0.5" percent-encoding = "2.3.1" global-hotkey = "0.7.0" rfd = { version = "0.15.2", default-features = false } -muda = "0.16.1" +muda = "0.17.0" cocoa = "0.26" -core-foundation = "0.10.0" +core-foundation = "0.10.1" objc = { version = "0.2.7", features = ["exception"] } objc_id = "0.1.1" tray-icon = "0.20.0" diff --git a/examples/multiwindow.rs b/examples/multiwindow.rs index c22049b3d..1adf10328 100644 --- a/examples/multiwindow.rs +++ b/examples/multiwindow.rs @@ -26,7 +26,12 @@ fn app() -> Element { } fn popup() -> Element { + let mut count = use_signal(|| 0); rsx! { - div { "This is a popup window!" } + div { + h1 { "Popup Window" } + p { "Count: {count}" } + button { onclick: move |_| count += 1, "Increment" } + } } } diff --git a/packages/cli/assets/android/gen/app/src/main/AndroidManifest.xml.hbs b/packages/cli/assets/android/gen/app/src/main/AndroidManifest.xml.hbs index bd85d856e..9fdcded4b 100644 --- a/packages/cli/assets/android/gen/app/src/main/AndroidManifest.xml.hbs +++ b/packages/cli/assets/android/gen/app/src/main/AndroidManifest.xml.hbs @@ -4,7 +4,9 @@ + android:label="@string/app_name" + android:theme="@style/AppTheme" + android:networkSecurityConfig="@xml/network_security_config"> diff --git a/packages/cli/assets/android/gen/app/src/main/res/xml/network_security_config.xml b/packages/cli/assets/android/gen/app/src/main/res/xml/network_security_config.xml new file mode 100644 index 000000000..23600d965 --- /dev/null +++ b/packages/cli/assets/android/gen/app/src/main/res/xml/network_security_config.xml @@ -0,0 +1,6 @@ + + + + 127.0.0.1 + + diff --git a/packages/cli/src/build/request.rs b/packages/cli/src/build/request.rs index bf29f013e..3d9965194 100644 --- a/packages/cli/src/build/request.rs +++ b/packages/cli/src/build/request.rs @@ -2705,6 +2705,14 @@ impl BuildRequest { include_bytes!("../../assets/android/gen/app/src/main/res/values/styles.xml"), )?; + create_dir_all(res.join("xml"))?; + write( + res.join("xml").join("network_security_config.xml"), + include_bytes!( + "../../assets/android/gen/app/src/main/res/xml/network_security_config.xml" + ), + )?; + create_dir_all(res.join("drawable"))?; write( res.join("drawable").join("ic_launcher_background.xml"), diff --git a/packages/cli/src/bundle_utils.rs b/packages/cli/src/bundle_utils.rs index 678beb03b..e58e289ec 100644 --- a/packages/cli/src/bundle_utils.rs +++ b/packages/cli/src/bundle_utils.rs @@ -114,6 +114,7 @@ impl From for tauri_bundler::MacOsSettings { files: val.files, hardened_runtime: val.hardened_runtime, bundle_version: val.bundle_version, + bundle_name: val.bundle_name, } } } diff --git a/packages/cli/src/config/bundle.rs b/packages/cli/src/config/bundle.rs index 8223f7cdf..15ba2a470 100644 --- a/packages/cli/src/config/bundle.rs +++ b/packages/cli/src/config/bundle.rs @@ -109,6 +109,7 @@ pub(crate) struct MacOsSettings { pub(crate) provider_short_name: Option, pub(crate) entitlements: Option, pub(crate) info_plist_path: Option, + pub(crate) bundle_name: Option, /// List of custom files to add to the application bundle. /// Maps the path in the Contents directory in the app to the path of the file to include (relative to the current working directory). pub files: HashMap, diff --git a/packages/desktop/Cargo.toml b/packages/desktop/Cargo.toml index f56cce228..1f4c881a3 100644 --- a/packages/desktop/Cargo.toml +++ b/packages/desktop/Cargo.toml @@ -19,7 +19,6 @@ dioxus-interpreter-js = { workspace = true, features = ["binary-protocol", "seri dioxus-cli-config = { workspace = true } dioxus-asset-resolver = { workspace = true } generational-box = { workspace = true } -# hotreload only works on desktop platforms.... mobile is still wip dioxus-devtools = { workspace = true, optional = true } serde = "1.0.218" @@ -50,6 +49,9 @@ dioxus-history = { workspace = true } base64 = { workspace = true } open = { workspace = true } libc = "0.2.170" +pollster = "0.4.0" +rand = { workspace = true, features = ["std_rng"] } +subtle = { version = "2.6", features = ["const-generics"] } [target.'cfg(unix)'.dependencies] signal-hook = "0.3.17" @@ -71,7 +73,7 @@ objc_id = "0.1.1" # use rustls on android [target.'cfg(target_os = "android")'.dependencies] -tokio-tungstenite = { workspace = true, optional = true, features = ["rustls"] } +tungstenite = { workspace = true, features = ["rustls"] } jni = "0.21.1" ndk = { version = "0.9.0" } ndk-sys = { version = "0.6.0" } @@ -79,7 +81,7 @@ ndk-context = { version = "0.1.1" } # use native tls on other platforms [target.'cfg(not(target_os = "android"))'.dependencies] -tokio-tungstenite = { workspace = true, optional = true, features = ["native-tls"] } +tungstenite = { workspace = true, features = ["native-tls"] } [target.'cfg(target_os = "macos")'.dependencies] cocoa = "0.26.0" @@ -119,7 +121,6 @@ reqwest = { workspace = true, features = ["json"] } http-range = { version = "0.1.5" } dioxus-ssr = { workspace = true, default-features = false } separator = "0.4.1" -rand = { workspace = true, features = ["small_rng"] } # These tests need to be run on the main thread, so they cannot use rust's test harness. [[test]] diff --git a/packages/desktop/src/app.rs b/packages/desktop/src/app.rs index 8037fbea8..e13ad626c 100644 --- a/packages/desktop/src/app.rs +++ b/packages/desktop/src/app.rs @@ -1,5 +1,6 @@ use crate::{ config::{Config, WindowCloseBehaviour}, + edits::EditWebsocket, event_handlers::WindowEventHandlers, file_upload::{DesktopFileUploadForm, FileDialogRequest, NativeFileEngine}, ipc::{IpcMessage, UserWindowEvent}, @@ -53,6 +54,7 @@ pub(crate) struct SharedContext { pub(crate) shortcut_manager: ShortcutRegistry, pub(crate) proxy: EventLoopProxy, pub(crate) target: EventLoopWindowTarget, + pub(crate) websocket: EditWebsocket, } impl App { @@ -77,6 +79,7 @@ impl App { shortcut_manager: ShortcutRegistry::new(), proxy: event_loop.create_proxy(), target: event_loop.clone(), + websocket: EditWebsocket::start(), }), }; diff --git a/packages/desktop/src/config.rs b/packages/desktop/src/config.rs index 9a89b4f05..4c950d8d8 100644 --- a/packages/desktop/src/config.rs +++ b/packages/desktop/src/config.rs @@ -4,7 +4,7 @@ use std::path::PathBuf; use tao::event_loop::{EventLoop, EventLoopWindowTarget}; use tao::window::{Icon, WindowBuilder}; use wry::http::{Request as HttpRequest, Response as HttpResponse}; -use wry::RequestAsyncResponder; +use wry::{RequestAsyncResponder, WebViewId}; use crate::ipc::UserWindowEvent; use crate::menubar::{default_menu_bar, DioxusMenu}; @@ -70,12 +70,12 @@ impl LaunchConfig for Config {} pub(crate) type WryProtocol = ( String, - Box>) -> HttpResponse> + 'static>, + Box>) -> HttpResponse> + 'static>, ); pub(crate) type AsyncWryProtocol = ( String, - Box>, RequestAsyncResponder) + 'static>, + Box>, RequestAsyncResponder) + 'static>, ); impl Config { @@ -188,7 +188,7 @@ impl Config { /// Set a custom protocol pub fn with_custom_protocol(mut self, name: impl ToString, handler: F) -> Self where - F: Fn(HttpRequest>) -> HttpResponse> + 'static, + F: Fn(WebViewId, HttpRequest>) -> HttpResponse> + 'static, { self.protocols.push((name.to_string(), Box::new(handler))); self @@ -204,7 +204,7 @@ impl Config { /// # /// # fn main() { /// let cfg = Config::new() - /// .with_asynchronous_custom_protocol("asset", |request, responder| { + /// .with_asynchronous_custom_protocol("asset", |_webview_id, request, responder| { /// tokio::spawn(async move { /// responder.respond( /// HTTPResponse::builder() @@ -222,7 +222,7 @@ impl Config { /// See [`wry`](wry::WebViewBuilder::with_asynchronous_custom_protocol) for more details on implementation pub fn with_asynchronous_custom_protocol(mut self, name: impl ToString, handler: F) -> Self where - F: Fn(HttpRequest>, RequestAsyncResponder) + 'static, + F: Fn(WebViewId, HttpRequest>, RequestAsyncResponder) + 'static, { self.asynchronous_protocols .push((name.to_string(), Box::new(handler))); diff --git a/packages/desktop/src/edits.rs b/packages/desktop/src/edits.rs index ca282a407..82d6501cc 100644 --- a/packages/desktop/src/edits.rs +++ b/packages/desktop/src/edits.rs @@ -1,79 +1,364 @@ -use std::{ - collections::VecDeque, - sync::{Arc, RwLock}, - task::Waker, -}; +//! The internal edit queue facilitating native <-> webview communication. +//! +//! Originally, we used long-polling on the wry custom protocol to send edits to the webview. +//! Due to bugs in wry on android, we switched to a websocket connection that the webview connects to. +//! We use the sledgehammer crate to build batches of edits and send them through the websocket to +//! the webview. +//! +//! Using a websocket lets us send binary data to the webview quite efficiently and does encounter +//! many of the issues with regular request/response protocols. Note that the websocket max frame +//! size is quite large (9.22 exabytes), so we can have very large batches without issue. +//! +//! Using websockets does mean we need to handle security and content security policies ourselves. +//! The code here generates a random key that the webview must use to connect to the websocket. +//! We use the initialization script API to setup the websocket connection without leaking the key +//! to the webview itself in case there's untrusted content in the webview. use dioxus_interpreter_js::MutationState; +use futures_channel::mpsc::UnboundedSender; +use futures_channel::oneshot; +use futures_util::{FutureExt, StreamExt}; +use pollster::FutureExt as _; +use rand::{RngCore, SeedableRng}; +use std::cell::RefCell; +use std::collections::{HashMap, VecDeque}; +use std::net::TcpListener; +use std::rc::Rc; +use std::sync::atomic::AtomicU32; +use std::{ + net::IpAddr, + sync::{Arc, RwLock}, +}; -/// This handles communication between the requests that the webview makes and the interpreter. The interpreter constantly makes long running requests to the webview to get any edits that should be made to the DOM almost like server side events. -/// It will hold onto the requests until the interpreter is ready to handle them and hold onto any pending edits until a new request is made. -#[derive(Default, Clone)] +/// This handles communication between the requests that the webview makes and the interpreter. +#[derive(Clone)] pub(crate) struct WryQueue { - inner: Arc>, -} - -#[derive(Default)] -pub(crate) struct WryQueueInner { - edit_queue: VecDeque>, - edit_responder: Option, - // Stores any futures waiting for edits to be applied to the webview - // NOTE: We don't use a Notify here because we need polling the notify to be cancel safe - waiting_for_edits_flushed: Vec, - // If this webview is currently waiting for an edit to be flushed. We don't run the virtual dom while this is true to avoid running effects before the dom has been updated - edits_in_progress: bool, - mutation_state: MutationState, + inner: Rc>, } impl WryQueue { - pub fn handle_request(&self, responder: wry::RequestAsyncResponder) { - let mut myself = self.inner.write().unwrap(); - if let Some(bytes) = myself.edit_queue.pop_back() { - responder.respond(wry::http::Response::new(bytes)); - } else { - // There are now no edits that need to be applied to the webview - for waker in myself.waiting_for_edits_flushed.drain(..) { - waker.wake(); - } - myself.edits_in_progress = false; - myself.edit_responder = Some(responder); - } - } - - pub fn with_mutation_state_mut( + pub(crate) fn with_mutation_state_mut( &self, - f: impl FnOnce(&mut MutationState) -> O, + callback: impl FnOnce(&mut MutationState) -> O, ) -> O { - let mut inner = self.inner.write().unwrap(); - f(&mut inner.mutation_state) + let mut inner = self.inner.borrow_mut(); + callback(&mut inner.mutation_state) } /// Send a list of mutations to the webview pub(crate) fn send_edits(&self) { - let mut myself = self.inner.write().unwrap(); + let mut myself = self.inner.borrow_mut(); + let webview_id = myself.location.webview_id; let serialized_edits = myself.mutation_state.export_memory(); - // There are pending edits that need to be applied to the webview before we run futures - myself.edits_in_progress = true; - if let Some(responder) = myself.edit_responder.take() { - responder.respond(wry::http::Response::new(serialized_edits)); - } else { - myself.edit_queue.push_front(serialized_edits); - } - } - - fn edits_in_progress(&self) -> bool { - self.inner.read().unwrap().edits_in_progress + let receiver = myself.websocket.send_edits(webview_id, serialized_edits); + myself.edits_in_progress = Some(receiver); } /// Wait until all pending edits have been rendered in the webview - pub fn poll_edits_flushed(&self, cx: &mut std::task::Context<'_>) -> std::task::Poll<()> { - if self.edits_in_progress() { - let mut myself = self.inner.write().unwrap(); - let waker = cx.waker(); - myself.waiting_for_edits_flushed.push(waker.clone()); - std::task::Poll::Pending + pub(crate) fn poll_edits_flushed( + &self, + cx: &mut std::task::Context<'_>, + ) -> std::task::Poll<()> { + if let Some(receiver) = self.inner.borrow_mut().edits_in_progress.as_mut() { + receiver.poll_unpin(cx).map(|_| ()) } else { std::task::Poll::Ready(()) } } + + /// Get the websocket path that the webview should connect to in order to receive edits + pub(crate) fn edits_path(&self) -> String { + let WebviewWebsocketLocation { + port, + webview_id, + key, + } = &self.inner.borrow().location; + let key_hex = encode_key_string(key); + format!("ws://127.0.0.1:{port}/{webview_id}/{key_hex}") + } +} + +pub(crate) struct WryQueueInner { + location: WebviewWebsocketLocation, + websocket: EditWebsocket, + // If this webview is currently waiting for an edit to be flushed. We don't run the virtual dom while this is true to avoid running effects before the dom has been updated + edits_in_progress: Option>, + mutation_state: MutationState, +} + +/// The location of a webview websocket connection. This is used to identify the webview and the port it is connected to. +#[derive(Clone, Copy, PartialEq, Eq, Hash)] +pub(crate) struct WebviewWebsocketLocation { + /// The port the websocket is on + port: u16, + /// The id of the webview that this websocket is connected to + webview_id: u32, + /// The key that the webview will use to connect to the websocket + key: [u8; KEY_SIZE], +} + +/// The websocket listener that the webview will connect to in order to receive edits and send requests. There +/// is only one websocket listener per application even if there are multiple windows so we don't use all the +/// open ports. +#[derive(Clone)] +pub(crate) struct EditWebsocket { + /// A key that every websocket connection that originates from this application will use to identify itself. + /// We use this to make sure no external applications can connect to our websocket and receive UI updates. + key: [u8; KEY_SIZE], + port: u16, + max_webview_id: Arc, + connections: Arc>>, +} + +impl EditWebsocket { + pub(crate) fn start() -> Self { + let expected_key = create_secure_key(); + let connections = Arc::new(RwLock::new(HashMap::new())); + let connections_ = connections.clone(); + let server = TcpListener::bind((IpAddr::from([127, 0, 0, 1]), 0)) + .expect("Failed to bind local TCP listener for edit socket"); + let port = server.local_addr().unwrap().port(); + + std::thread::spawn(move || Self::accept_loop(server, port, expected_key, connections_)); + + Self { + connections, + port, + max_webview_id: Default::default(), + key: expected_key, + } + } + + /// Accepts incoming websocket connections and handles them in a loop. + /// + /// New sockets are accepted and then put in to a new thread to handle the connection. + /// This is implemented using traditional sync code to allow us to be independent of the async runtime. + fn accept_loop( + server: TcpListener, + port: u16, + expected_key: [u8; KEY_SIZE], + connections: Arc>>, + ) { + use tungstenite::handshake::server::{Request, Response}; + + let hex_encoded_key = encode_key_string(&expected_key); + while let Ok((stream, _)) = server.accept() { + let mut location = None; + + let on_request = |req: &Request, res| { + // Try to parse the webview id and key from the path + let path = req.uri().path(); + + // The path should have two parts `/webview_id/key` + let mut segments = path.trim_matches('/').split('/'); + let webview_id = segments + .next() + .and_then(|s| s.parse::().ok()) + .ok_or_else(|| { + Response::builder() + .status(400) + .body(Some("Bad Request: Invalid webview ID".to_string())) + .unwrap() + })?; + let key = segments.next().ok_or_else(|| { + Response::builder() + .status(400) + .body(Some("Bad Request: Missing key".to_string())) + .unwrap() + })?; + + // Make sure the key matches the expected key. + // VERY IMPORTANT: We cannot use normal string comparison here because it reveals information + // about the key based on timing information. Instead we use a constant time comparison method. + let key_matches: bool = + subtle::ConstantTimeEq::ct_eq(hex_encoded_key.as_ref(), key.as_bytes()).into(); + if !key_matches { + return Err(Response::builder() + .status(403) + .body(Some("Forbidden: Invalid key".to_string())) + .unwrap()); + } + + location = Some(WebviewWebsocketLocation { + port, + webview_id, + key: expected_key, + }); + + Ok(res) + }; + + // Accept the websocket connection while reading the path and setting the location + let mut websocket = match tungstenite::accept_hdr(stream, on_request) { + Ok(ws) => ws, + Err(e) => { + tracing::error!("Error accepting websocket connection: {}", e); + continue; + } + }; + + let location = match location { + Some(loc) => loc, + None => { + tracing::error!("WebSocket connection without a valid webview ID"); + continue; + } + }; + + // Handle the websocket connection in a separate thread + let (edits_outgoing, mut edits_incoming_rx) = + futures_channel::mpsc::unbounded::(); + + // Spawn a task to handle the websocket connection + std::thread::spawn(move || { + // Wait until there are edits ready to send + while let Some(msg) = edits_incoming_rx.next().block_on() { + // Send the edits to the webview + if let Err(e) = websocket.send(tungstenite::Message::Binary(msg.edits.into())) { + tracing::error!("Error sending edits to webview: {}", e); + break; + } + + // Wait for the webview to apply the edits + while let Ok(msg) = websocket.read() { + match msg { + // We expect the webview to send a binary message when it has applied the edits + // This is a signal that we can continue processing + tungstenite::Message::Binary(_) => break, + tungstenite::Message::Close(_) => return, + _ => {} + } + } + + // Notify that the edits have been applied + if msg.response.send(()).is_err() { + tracing::error!("Error sending edits applied notification"); + } + } + }); + + let mut connections = connections.write().unwrap(); + match connections.remove(&location.webview_id) { + // If there are pending edits, send them to the new connection + Some(WebviewConnectionState::Pending { mut pending }) => { + while let Some(pair) = pending.pop_front() { + _ = edits_outgoing.unbounded_send(pair); + } + } + + // If the webview was already connected, never send edits from the old connection to + // the new connection. This should never happen + Some(WebviewConnectionState::Connected { .. }) => { + tracing::error!( + "Webview {} was already connected. Rejecting new connection.", + location.webview_id + ); + continue; + } + + None => {} + } + + connections.insert( + location.webview_id, + WebviewConnectionState::Connected { edits_outgoing }, + ); + } + } + + pub(crate) fn create_queue(&self) -> WryQueue { + WryQueue { + inner: Rc::new(RefCell::new(WryQueueInner { + location: WebviewWebsocketLocation { + webview_id: self + .max_webview_id + .fetch_add(1, std::sync::atomic::Ordering::SeqCst), + port: self.port, + key: self.key, + }, + websocket: self.clone(), + edits_in_progress: None, + mutation_state: MutationState::default(), + })), + } + } + + fn send_edits(&mut self, webview: u32, edits: Vec) -> oneshot::Receiver<()> { + let mut connections_mut = self.connections.write().unwrap(); + let connection = + connections_mut + .entry(webview) + .or_insert_with(|| WebviewConnectionState::Pending { + pending: VecDeque::new(), + }); + + match connection { + WebviewConnectionState::Pending { pending: queue } => { + let (response_sender, response_receiver) = oneshot::channel(); + queue.push_back(MsgPair { + edits, + response: response_sender, + }); + response_receiver + } + WebviewConnectionState::Connected { edits_outgoing } => { + let (response_sender, response_receiver) = oneshot::channel(); + _ = edits_outgoing.unbounded_send(MsgPair { + edits, + response: response_sender, + }); + response_receiver + } + } + } +} + +/// The state of a webview websocket connection. This may be pending while the webview is booting. +/// If it is, we queue up edits until the webview is ready to receive them. +enum WebviewConnectionState { + Pending { + pending: VecDeque, + }, + Connected { + edits_outgoing: UnboundedSender, + }, +} + +struct MsgPair { + edits: Vec, + response: oneshot::Sender<()>, +} + +const KEY_SIZE: usize = 256; +type EncodedKey = [u8; KEY_SIZE]; + +/// Base64 encode the key to a string to be used in the websocket URL. +fn encode_key_string(key: &EncodedKey) -> String { + base64::Engine::encode(&base64::engine::general_purpose::URL_SAFE, key) +} + +/// Create a secure key for the websocket connection. +/// Returns the key as a byte array and a hex-encoded string representation of the key. +fn create_secure_key() -> EncodedKey { + // Helper function to assert that the RNG is a CryptoRng - make sure we use a secure RNG + fn assert_crypto_random(val: R) -> R { + val + } + + let mut secure_rng = assert_crypto_random(rand::rngs::StdRng::from_entropy()); + let mut expected_key: EncodedKey = [0u8; KEY_SIZE]; + secure_rng.fill_bytes(&mut expected_key); + expected_key +} + +#[test] +fn test_key_encoding_length() { + let mut rand = rand::rngs::StdRng::from_entropy(); + for _ in 0..100 { + let mut key: EncodedKey = [0u8; KEY_SIZE]; + rand.fill_bytes(&mut key); + let encoded = encode_key_string(&key); + // The encoded key length should be the same regardless of the value of the key + assert_eq!(encoded.len(), 344); + } } diff --git a/packages/desktop/src/launch.rs b/packages/desktop/src/launch.rs index 54fa1e9c5..d159dac8f 100644 --- a/packages/desktop/src/launch.rs +++ b/packages/desktop/src/launch.rs @@ -1,228 +1,3 @@ -// use crate::Config; -// use crate::{ -// app::App, -// ipc::{IpcMethod, UserWindowEvent}, -// }; -// use dioxus_core::*; -// use dioxus_document::eval; -// use std::any::Any; -// use tao::event::{Event, StartCause, WindowEvent}; - -// /// Launches the WebView and runs the event loop -// pub fn launch(root: fn() -> Element) { -// launch_cfg(root, vec![], vec![]); -// } - -// /// Launches the WebView and runs the event loop, with configuration and root props. -// pub fn launch_cfg( -// root: fn() -> Element, -// contexts: Vec Box + Send + Sync>>, -// platform_config: Vec>, -// ) { -// let mut virtual_dom = VirtualDom::new(root); - -// for context in contexts { -// virtual_dom.insert_any_root_context(context()); -// } - -// let platform_config = *platform_config -// .into_iter() -// .find_map(|cfg| cfg.downcast::().ok()) -// .unwrap_or_default(); - -// launch_virtual_dom(virtual_dom, platform_config) -// } - -// /// Launches the WebView and runs the event loop, with configuration and root props. -// pub fn launch_virtual_dom(virtual_dom: VirtualDom, desktop_config: Config) -> ! { -// #[cfg(feature = "tokio_runtime")] -// { -// tokio::runtime::Builder::new_multi_thread() -// .enable_all() -// .build() -// .unwrap() -// .block_on(tokio::task::unconstrained(async move { -// launch_virtual_dom_blocking(virtual_dom, desktop_config) -// })); - -// unreachable!("The desktop launch function will never exit") -// } - -// #[cfg(not(feature = "tokio_runtime"))] -// { -// launch_virtual_dom_blocking(virtual_dom, desktop_config); -// } -// } - -// /// Launch the WebView and run the event loop, with configuration and root props. -// /// -// /// This will block the main thread, and *must* be spawned on the main thread. This function does not assume any runtime -// /// and is equivalent to calling launch_with_props with the tokio feature disabled. -// pub fn launch_virtual_dom_blocking(virtual_dom: VirtualDom, mut desktop_config: Config) -> ! { -// let mut custom_event_handler = desktop_config.custom_event_handler.take(); -// let (event_loop, mut app) = App::new(desktop_config, virtual_dom); - -// event_loop.run(move |window_event, event_loop, control_flow| { -// // Set the control flow and check if any events need to be handled in the app itself -// app.tick(&window_event); - -// if let Some(ref mut f) = custom_event_handler { -// f(&window_event, event_loop) -// } - -// match window_event { -// Event::NewEvents(StartCause::Init) => app.handle_start_cause_init(), -// Event::LoopDestroyed => app.handle_loop_destroyed(), -// Event::WindowEvent { -// event, window_id, .. -// } => match event { -// WindowEvent::CloseRequested => app.handle_close_requested(window_id), -// WindowEvent::Destroyed { .. } => app.window_destroyed(window_id), -// WindowEvent::Resized(new_size) => app.resize_window(window_id, new_size), -// _ => {} -// }, - -// Event::UserEvent(event) => match event { -// UserWindowEvent::Poll(id) => app.poll_vdom(id), -// UserWindowEvent::NewWindow => app.handle_new_window(), -// UserWindowEvent::CloseWindow(id) => app.handle_close_msg(id), -// UserWindowEvent::Shutdown => app.control_flow = tao::event_loop::ControlFlow::Exit, - -// #[cfg(any(target_os = "windows", target_os = "linux", target_os = "macos"))] -// UserWindowEvent::GlobalHotKeyEvent(evnt) => app.handle_global_hotkey(evnt), - -// #[cfg(any(target_os = "windows", target_os = "linux", target_os = "macos"))] -// UserWindowEvent::MudaMenuEvent(evnt) => app.handle_menu_event(evnt), - -// #[cfg(any(target_os = "windows", target_os = "linux", target_os = "macos"))] -// UserWindowEvent::TrayMenuEvent(evnt) => app.handle_tray_menu_event(evnt), - -// #[cfg(any(target_os = "windows", target_os = "linux", target_os = "macos"))] -// UserWindowEvent::TrayIconEvent(evnt) => app.handle_tray_icon_event(evnt), - -// #[cfg(all(feature = "devtools", debug_assertions))] -// UserWindowEvent::HotReloadEvent(msg) => app.handle_hot_reload_msg(msg), - -// // Windows-only drag-n-drop fix events. We need to call the interpreter drag-n-drop code. -// UserWindowEvent::WindowsDragDrop(id) => { -// if let Some(webview) = app.webviews.get(&id) { -// webview.dom.in_runtime(|| { -// ScopeId::ROOT.in_runtime(|| { -// eval("window.interpreter.handleWindowsDragDrop();"); -// }); -// }); -// } -// } -// UserWindowEvent::WindowsDragLeave(id) => { -// if let Some(webview) = app.webviews.get(&id) { -// webview.dom.in_runtime(|| { -// ScopeId::ROOT.in_runtime(|| { -// eval("window.interpreter.handleWindowsDragLeave();"); -// }); -// }); -// } -// } -// UserWindowEvent::WindowsDragOver(id, x_pos, y_pos) => { -// if let Some(webview) = app.webviews.get(&id) { -// webview.dom.in_runtime(|| { -// ScopeId::ROOT.in_runtime(|| { -// let e = eval( -// r#" -// const xPos = await dioxus.recv(); -// const yPos = await dioxus.recv(); -// window.interpreter.handleWindowsDragOver(xPos, yPos) -// "#, -// ); - -// _ = e.send(x_pos); -// _ = e.send(y_pos); -// }); -// }); -// } -// } - -// UserWindowEvent::Ipc { id, msg } => match msg.method() { -// IpcMethod::Initialize => app.handle_initialize_msg(id), -// IpcMethod::FileDialog => app.handle_file_dialog_msg(msg, id), -// IpcMethod::UserEvent => {} -// IpcMethod::Query => app.handle_query_msg(msg, id), -// IpcMethod::BrowserOpen => app.handle_browser_open(msg), -// IpcMethod::Other(_) => {} -// }, -// }, -// _ => {} -// } - -// *control_flow = app.control_flow; -// }) -// } - -// /// Expose the `Java_dev_dioxus_main_WryActivity_create` function to the JNI layer. -// /// We hardcode these to have a single trampoline for host Java code to call into. -// /// -// /// This saves us from having to plumb the top-level package name all the way down into -// /// this file. This is better for modularity (ie just call dioxus' main to run the app) as -// /// well as cache thrashing since this crate doesn't rely on external env vars. -// /// -// /// The CLI is expecting to find `dev.dioxus.main` in the final library. If you find a need to -// /// change this, you'll need to change the CLI as well. -// #[cfg(target_os = "android")] -// #[no_mangle] -// #[inline(never)] -// pub extern "C" fn start_app() { -// wry::android_binding!(dev_dioxus, main, wry); -// tao::android_binding!( -// dev_dioxus, -// main, -// WryActivity, -// wry::android_setup, -// dioxus_main_root_fn, -// tao -// ); -// } - -// #[cfg(target_os = "android")] -// #[doc(hidden)] -// pub fn dioxus_main_root_fn() { -// // we're going to find the `main` symbol using dlsym directly and call it -// unsafe { -// let mut main_fn_ptr = libc::dlsym(libc::RTLD_DEFAULT, b"main\0".as_ptr() as _); - -// if main_fn_ptr.is_null() { -// main_fn_ptr = libc::dlsym(libc::RTLD_DEFAULT, b"_main\0".as_ptr() as _); -// } - -// if main_fn_ptr.is_null() { -// panic!("Failed to find main symbol"); -// } - -// // Set the env vars that rust code might expect, passed off to us by the android app -// // Doing this before main emulates the behavior of a regular executable -// if cfg!(target_os = "android") && cfg!(debug_assertions) { -// load_env_file_from_session_cache(); -// } - -// let main_fn: extern "C" fn() = std::mem::transmute(main_fn_ptr); -// main_fn(); -// }; -// } - -// /// Load the env file from the session cache if we're in debug mode and on android -// /// -// /// This is a slightly hacky way of being able to use std::env::var code in android apps without -// /// going through their custom java-based system. -// #[cfg(target_os = "android")] -// fn load_env_file_from_session_cache() { -// let env_file = dioxus_cli_config::android_session_cache_dir().join(".env"); -// if let Some(env_file) = std::fs::read_to_string(&env_file).ok() { -// for line in env_file.lines() { -// if let Some((key, value)) = line.trim().split_once('=') { -// std::env::set_var(key, value); -// } -// } -// } -// } - use crate::Config; use crate::{ app::App, diff --git a/packages/desktop/src/protocol.rs b/packages/desktop/src/protocol.rs index ca14e02ae..2fa923d3d 100644 --- a/packages/desktop/src/protocol.rs +++ b/packages/desktop/src/protocol.rs @@ -7,12 +7,6 @@ use wry::{ RequestAsyncResponder, }; -#[cfg(any(target_os = "android", target_os = "windows"))] -const EDITS_PATH: &str = "http://dioxus.index.html/__edits"; - -#[cfg(not(any(target_os = "android", target_os = "windows")))] -const EDITS_PATH: &str = "dioxus://index.html/__edits"; - #[cfg(any(target_os = "android", target_os = "windows"))] const EVENTS_PATH: &str = "http://dioxus.index.html/__events"; @@ -42,17 +36,19 @@ pub(super) fn desktop_handler( headless: bool, ) { // Try to serve the index file first - if let Some(index_bytes) = - index_request(&request, custom_head, custom_index, root_name, headless) - { + if let Some(index_bytes) = index_request( + &request, + custom_head, + custom_index, + root_name, + headless, + edit_state, + ) { return responder.respond(index_bytes); } // If the request is asking for edits (ie binary protocol streaming), do that let trimmed_uri = request.uri().path().trim_matches('/'); - if trimmed_uri == "__edits" { - return edit_state.wry_queue.handle_request(responder); - } // If the request is asking for an event response, do that if trimmed_uri == "__events" { @@ -93,6 +89,7 @@ fn index_request( custom_index: Option, root_name: &str, headless: bool, + edit_state: &WebviewEdits, ) -> Option>> { // If the request is for the root, we'll serve the index.html file. if request.uri().path() != "/" { @@ -114,7 +111,7 @@ fn index_request( // Might want to document this index.insert_str( index.find("").expect("Body element to exist"), - &module_loader(root_name, headless), + &module_loader(root_name, headless, edit_state), ); Response::builder() @@ -130,7 +127,12 @@ fn index_request( /// - root_name: the root element (by Id) that we stream edits into /// - headless: is this page being loaded but invisible? Important because not all windows are visible and the /// interpreter can't connect until the window is ready. -fn module_loader(root_id: &str, headless: bool) -> String { +/// - port: the port that the websocket server is listening on for edits +/// - webview_id: the id of the webview that we're loading this into. This is used to differentiate between +/// multiple webviews in the same application, so that we can send edits to the correct one. +fn module_loader(root_id: &str, headless: bool, edit_state: &WebviewEdits) -> String { + let edits_path = edit_state.wry_queue.edits_path(); + format!( r#"