From 2211be53248bc6b161a7737422387118ab78b0cc Mon Sep 17 00:00:00 2001 From: Sam Sartor Date: Mon, 11 Nov 2024 13:43:58 -0700 Subject: [PATCH] bump dioxus version & icons in desktop & logging --- .cargo/config.toml | 14 + .helix/languages.toml | 2 + Cargo.lock | 1803 ++++++++--------- Cargo.toml | 16 +- common/Cargo.toml | 7 + common/src/lib.rs | 9 + gui/Cargo.toml | 50 +- .../mic-off-svgrepo-com.svg | 0 gui/{public => assets}/mic-svgrepo-com.svg | 0 gui/{public => assets}/rust_mic_worklet.js | 0 .../speaker-medium-svgrepo-com.svg | 0 .../speaker-muted-svgrepo-com.svg | 0 gui/src/app.rs | 45 +- gui/src/imp/desktop.rs | 73 +- gui/src/imp/mod.rs | 11 + gui/src/imp/web.rs | 236 ++- gui/src/lib.rs | 49 +- 17 files changed, 1073 insertions(+), 1242 deletions(-) create mode 100644 .helix/languages.toml create mode 100644 common/Cargo.toml create mode 100644 common/src/lib.rs rename gui/{public => assets}/mic-off-svgrepo-com.svg (100%) rename gui/{public => assets}/mic-svgrepo-com.svg (100%) rename gui/{public => assets}/rust_mic_worklet.js (100%) rename gui/{public => assets}/speaker-medium-svgrepo-com.svg (100%) rename gui/{public => assets}/speaker-muted-svgrepo-com.svg (100%) create mode 100644 gui/src/imp/mod.rs diff --git a/.cargo/config.toml b/.cargo/config.toml index 8467175..08c76ba 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,2 +1,16 @@ [build] rustflags = ["--cfg=web_sys_unstable_apis"] + +[profile] + +[profile.dioxus-wasm] +inherits = "dev" +opt-level = 2 + +[profile.dioxus-server] +inherits = "dev" +opt-level = 2 + +[profile.dioxus-android] +inherits = "dev" +opt-level = 2 diff --git a/.helix/languages.toml b/.helix/languages.toml new file mode 100644 index 0000000..6451cbf --- /dev/null +++ b/.helix/languages.toml @@ -0,0 +1,2 @@ +[language-server.rust-analyzer] +config = { cargo = { features = "all" } } diff --git a/Cargo.lock b/Cargo.lock index 3635e11..054235a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,16 +1,22 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" -version = "0.24.2" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + [[package]] name = "adler2" version = "2.0.0" @@ -38,24 +44,12 @@ dependencies = [ "memchr", ] -[[package]] -name = "allocator-api2" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45862d1c77f2228b9e10bc609d5bc203d86ebc9b87ad8d5d5167a6c9abf739d9" - [[package]] name = "anyhow" version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" -[[package]] -name = "anymap2" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c" - [[package]] name = "arc-swap" version = "1.7.1" @@ -68,14 +62,13 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd884d7c72877a94102c3715f3b1cd09ff4fac28221add3e57cfbe25c236d093" dependencies = [ - "async-fs", - "async-net", "enumflags2", "futures-channel", "futures-util", "rand 0.8.5", "serde", "serde_repr", + "tokio", "url", "zbus", ] @@ -104,30 +97,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "async-executor" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "slab", -] - -[[package]] -name = "async-fs" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" -dependencies = [ - "async-lock", - "blocking", - "futures-lite", -] - [[package]] name = "async-io" version = "2.4.0" @@ -158,17 +127,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "async-net" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" -dependencies = [ - "async-io", - "blocking", - "futures-lite", -] - [[package]] name = "async-process" version = "2.3.0" @@ -311,40 +269,25 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" dependencies = [ "addr2line", + "cc", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.7.4", "object", "rustc-demangle", - "windows-targets 0.52.6", ] -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - [[package]] name = "bindgen" version = "0.69.5" @@ -398,6 +341,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2", +] + [[package]] name = "blocking" version = "1.6.1" @@ -454,38 +406,6 @@ dependencies = [ "system-deps", ] -[[package]] -name = "camino" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-platform" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" -dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", - "thiserror", -] - [[package]] name = "cc" version = "1.1.37" @@ -539,12 +459,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" - [[package]] name = "ciborium" version = "0.2.2" @@ -580,7 +494,7 @@ checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", - "libloading", + "libloading 0.8.5", ] [[package]] @@ -600,10 +514,26 @@ checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" dependencies = [ "bitflags 1.3.2", "block", - "cocoa-foundation", - "core-foundation", - "core-graphics", - "foreign-types 0.5.0", + "cocoa-foundation 0.1.2", + "core-foundation 0.9.4", + "core-graphics 0.23.2", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2" +dependencies = [ + "bitflags 2.6.0", + "block", + "cocoa-foundation 0.2.0", + "core-foundation 0.10.0", + "core-graphics 0.24.0", + "foreign-types", "libc", "objc", ] @@ -616,12 +546,53 @@ checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" dependencies = [ "bitflags 1.3.2", "block", - "core-foundation", - "core-graphics-types", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", "libc", "objc", ] +[[package]] +name = "cocoa-foundation" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d" +dependencies = [ + "bitflags 2.6.0", + "block", + "core-foundation 0.10.0", + "core-graphics-types 0.2.0", + "libc", + "objc", +] + +[[package]] +name = "color-eyre" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55146f5e46f237f7423d74111267d4597b59b0dad0ffaf7303bce9945d843ad5" +dependencies = [ + "backtrace", + "color-spantrace", + "eyre", + "indenter", + "once_cell", + "owo-colors", + "tracing-error", +] + +[[package]] +name = "color-spantrace" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2" +dependencies = [ + "once_cell", + "owo-colors", + "tracing-core", + "tracing-error", +] + [[package]] name = "combine" version = "4.6.7" @@ -671,12 +642,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "constcat" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7e35aee659887cbfb97aaf227ac12cad1a9d7c71e55ff3376839ed4e282d08" - [[package]] name = "convert_case" version = "0.4.0" @@ -702,6 +667,16 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -715,9 +690,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ "bitflags 1.3.2", - "core-foundation", - "core-graphics-types", - "foreign-types 0.5.0", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" +dependencies = [ + "bitflags 2.6.0", + "core-foundation 0.10.0", + "core-graphics-types 0.2.0", + "foreign-types", "libc", ] @@ -728,7 +716,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ "bitflags 1.3.2", - "core-foundation", + "core-foundation 0.9.4", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.6.0", + "core-foundation 0.10.0", "libc", ] @@ -855,6 +854,12 @@ dependencies = [ "parking_lot_core", ] +[[package]] +name = "data-encoding" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" + [[package]] name = "derivative" version = "2.2.0" @@ -891,40 +896,37 @@ dependencies = [ [[package]] name = "dioxus" -version = "0.5.6" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e7fe217b50d43b27528b0f24c89b411f742a3e7564d1cfbf85253f967954db" +checksum = "f345989a3d92adf2814167135a9ebd99f706a43549a173add035f34c8a378d8a" dependencies = [ "dioxus-config-macro", "dioxus-core", "dioxus-core-macro", "dioxus-desktop", + "dioxus-devtools", + "dioxus-document", "dioxus-fullstack", + "dioxus-history", "dioxus-hooks", - "dioxus-hot-reload", "dioxus-html", - "dioxus-router", "dioxus-signals", + "dioxus-static-site-generation", "dioxus-web", + "manganis", ] [[package]] name = "dioxus-cli-config" -version = "0.5.6" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7dffc452ed91af6ef772b0d9a5899573f6785314e97c533733ec55413c01df3" -dependencies = [ - "once_cell", - "serde", - "serde_json", - "tracing", -] +checksum = "5b56b3e9e48017e7e3a32752ff5211fdad7081d0ce19576f1dc2ef5e42effbe1" [[package]] name = "dioxus-config-macro" -version = "0.5.6" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb1a1aa34cc04c1f7fcbb7a10791ba773cc02d834fe3ec1fe05647699f3b101f" +checksum = "8db6e384709505b8de6e3ec5e79fc55f62421b86f1c6f98bedbd0c30bfe58404" dependencies = [ "proc-macro2", "quote", @@ -932,67 +934,76 @@ dependencies = [ [[package]] name = "dioxus-core" -version = "0.5.6" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3730d2459ab66951cedf10b09eb84141a6eda7f403c28057cbe010495be156b7" +checksum = "25c550435f124c2fbf9c476146bab63ed4d99f1e53a16caa86f98954399fa824" dependencies = [ + "const_format", + "dioxus-core-types", "futures-channel", "futures-util", "generational-box", "longest-increasing-subsequence", "rustc-hash", + "rustversion", "serde", "slab", "slotmap", "tracing", - "tracing-subscriber", + "warnings", ] [[package]] name = "dioxus-core-macro" -version = "0.5.6" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d9c0dfe0e6a46626fa716c4aa1d2ccb273441337909cfeacad5bb6fcfb947d2" +checksum = "b90de0d77080f8505bdb29c804415d6ad44ccf8ee5621f04be1d7f879ff3dea5" dependencies = [ - "constcat", "convert_case 0.6.0", "dioxus-rsx", - "prettyplease", "proc-macro2", "quote", "syn 2.0.87", ] [[package]] -name = "dioxus-debug-cell" -version = "0.1.1" +name = "dioxus-core-types" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ea539174bb236e0e7dc9c12b19b88eae3cb574dedbd0252a2d43ea7e6de13e2" +checksum = "abfa74cda93aa6456d8570d538797bf8ee4d0b85cb6de7cddd87c1db52379c50" +dependencies = [ + "once_cell", +] [[package]] name = "dioxus-desktop" -version = "0.5.6" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2e0380cfcf44ed9310c6fd28454a7351293134d47b7e0b7baeaad5c5beded68" +checksum = "da4322b2ce1fbb3e82d728e1bf1801acb55cf57fe933c78aef0b7e33fa766b01" dependencies = [ "async-trait", - "cocoa", - "core-foundation", + "cocoa 0.25.0", + "core-foundation 0.9.4", "dioxus-cli-config", "dioxus-core", + "dioxus-devtools", + "dioxus-document", + "dioxus-history", "dioxus-hooks", - "dioxus-hot-reload", "dioxus-html", "dioxus-interpreter-js", + "dioxus-signals", "dunce", "futures-channel", "futures-util", "generational-box", "global-hotkey", "infer", - "muda", + "lazy-js-bundle", + "muda 0.11.5", "objc", "objc_id", + "once_cell", "rfd", "rustc-hash", "serde", @@ -1003,95 +1014,139 @@ dependencies = [ "thiserror", "tokio", "tracing", + "tray-icon", "urlencoding", "webbrowser", "wry", ] [[package]] -name = "dioxus-fullstack" -version = "0.5.6" +name = "dioxus-devtools" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b80f0ac18166302341164e681322e0385131c08a11c3cc1c51ee8df799ab0d3d" +checksum = "45a05516cf8b2ee1e477d64763208c4d55928671accefd1c3249f433f058b965" dependencies = [ - "async-trait", - "base64 0.21.7", + "dioxus-core", + "dioxus-devtools-types", + "dioxus-signals", + "serde", + "serde_json", + "tracing", + "tungstenite", + "warnings", +] + +[[package]] +name = "dioxus-devtools-types" +version = "0.6.0-alpha.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd8b9610d9961bdfa4c45e958111f03aa981bcdf0d580289a50ff39b7d1eb1ba" +dependencies = [ + "dioxus-core", + "serde", +] + +[[package]] +name = "dioxus-document" +version = "0.6.0-alpha.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b6aad01ed9161b0e9ce084eaa0a15d1e5de6a182d3b8ea2e6bd1cc4906eec98" +dependencies = [ + "dioxus-core", + "dioxus-core-macro", + "dioxus-core-types", + "dioxus-html", + "futures-channel", + "futures-util", + "generational-box", + "lazy-js-bundle", + "serde", + "serde_json", + "tracing", +] + +[[package]] +name = "dioxus-fullstack" +version = "0.6.0-alpha.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69ba85a5afb4a2bacf9b752ff7015b31c711eb830d0e52e0a828c26e76c09ed5" +dependencies = [ + "base64", "bytes", "ciborium", "dioxus-desktop", - "dioxus-hot-reload", + "dioxus-devtools", + "dioxus-history", "dioxus-lib", "dioxus-web", "dioxus_server_macro", + "futures-channel", "futures-util", + "generational-box", "once_cell", "serde", - "serde_json", "server_fn", "tracing", "web-sys", ] [[package]] -name = "dioxus-hooks" -version = "0.5.6" +name = "dioxus-history" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa8f9c661eea82295219d25555d5c0b597e74186b029038ceb5e3700ccbd4380" +checksum = "0d02ed207147911d6039a0b9245899338176c552b2e90aabe2155b26237da5df" dependencies = [ "dioxus-core", - "dioxus-debug-cell", - "dioxus-signals", - "futures-channel", - "futures-util", - "generational-box", - "slab", - "thiserror", "tracing", ] [[package]] -name = "dioxus-hot-reload" -version = "0.5.6" +name = "dioxus-hooks" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77d01246cb1b93437fb0bbd0dd11cfc66342d86b4311819e76654f2017ce1473" +checksum = "c3fef470483f137a6b16015c39a97a34ea69de27b8a5fdba6c840e228ff23f80" dependencies = [ "dioxus-core", - "dioxus-html", - "dioxus-rsx", - "interprocess-docfix", - "serde", - "serde_json", + "dioxus-signals", + "futures-channel", + "futures-util", + "generational-box", + "rustversion", + "slab", + "tracing", + "warnings", ] [[package]] name = "dioxus-html" -version = "0.5.6" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f01a0826f179adad6ea8d6586746e8edde0c602cc86f4eb8e5df7a3b204c4018" +checksum = "4e67318ff8a6ff2e649552994bd138f1ac088f7cd886b407d6b3fc110922ca06" dependencies = [ "async-trait", "dioxus-core", + "dioxus-core-macro", + "dioxus-core-types", + "dioxus-hooks", "dioxus-html-internal-macro", "enumset", "euclid", "futures-channel", "generational-box", "keyboard-types", + "lazy-js-bundle", + "rustversion", "serde", - "serde-value", "serde_json", "serde_repr", - "tokio", "tracing", - "wasm-bindgen", - "web-sys", ] [[package]] name = "dioxus-html-internal-macro" -version = "0.5.6" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b96f35a608d0ab8f4ca6f66ce1828354e4ebd41580b12454f490221a11da93c" +checksum = "0d663e2e8554fd3d671a4815b3ead5be6691ecd81e8417411488ce70f3e8562e" dependencies = [ "convert_case 0.6.0", "proc-macro2", @@ -1101,14 +1156,17 @@ dependencies = [ [[package]] name = "dioxus-interpreter-js" -version = "0.5.6" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "351fad098c657d14f3ac2900362d2b86e83c22c4c620a404839e1ab628f3395b" +checksum = "e5ace04aa7fa6cadc7cc6aed4ae54b951d5fc0e802fd421e725cf3ebfbd21cf4" dependencies = [ "dioxus-core", + "dioxus-core-types", "dioxus-html", "js-sys", - "md5", + "lazy-js-bundle", + "rustc-hash", + "serde", "sledgehammer_bindgen", "sledgehammer_utils", "wasm-bindgen", @@ -1118,12 +1176,15 @@ dependencies = [ [[package]] name = "dioxus-lib" -version = "0.5.6" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bd39b2c41dd1915dcb91d914ea72d8b646f1f8995aaeff82816b862ec586ecd" +checksum = "18c5b85ed63fb1b66c990ff53a517902329603a3a0c1ece640c2c499171ce53f" dependencies = [ + "dioxus-config-macro", "dioxus-core", "dioxus-core-macro", + "dioxus-document", + "dioxus-history", "dioxus-hooks", "dioxus-html", "dioxus-rsx", @@ -1132,28 +1193,25 @@ dependencies = [ [[package]] name = "dioxus-router" -version = "0.5.6" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c235c5dbeb528c0c2b0424763da812e7500df69b82eddac54db6f4975e065c5f" +checksum = "735ac3e384c9b1ce514889633e0317112af13930e20dbaad45b76337a386ad80" dependencies = [ "dioxus-cli-config", + "dioxus-history", "dioxus-lib", "dioxus-router-macro", - "gloo", - "gloo-utils 0.1.7", - "js-sys", + "rustversion", "tracing", "url", "urlencoding", - "wasm-bindgen", - "web-sys", ] [[package]] name = "dioxus-router-macro" -version = "0.5.6" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e7cd1c5137ba361f2150cdea6b3bc9ddda7b1af84b22c9ee6b5499bf43e1381" +checksum = "e36c1954bee1ee5b0d1042e3da4f966a8e92beb39f19309383a8419e4010a66f" dependencies = [ "proc-macro2", "quote", @@ -1163,24 +1221,21 @@ dependencies = [ [[package]] name = "dioxus-rsx" -version = "0.5.6" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c400bc8a779107d8f3a67b14375db07dbd2bc31163bf085a8e9097f36f7179" +checksum = "cd3a186b32891d7b0c9a30c4d6b1c85caef86da1df54eb527e902d44e3f07fd7" dependencies = [ - "dioxus-core", - "internment", - "krates", "proc-macro2", + "proc-macro2-diagnostics", "quote", "syn 2.0.87", - "tracing", ] [[package]] name = "dioxus-signals" -version = "0.5.7" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3e224cd3d3713f159f0199fc088c292a0f4adb94996b48120157f6a8f8342d" +checksum = "3c506eaff5a5f10f09fbd898abf789661ce210aaff700d8ab555887469b5d678" dependencies = [ "dioxus-core", "futures-channel", @@ -1190,23 +1245,45 @@ dependencies = [ "parking_lot", "rustc-hash", "tracing", + "warnings", +] + +[[package]] +name = "dioxus-static-site-generation" +version = "0.6.0-alpha.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8434bbaf91620d4b5f18d90b3318e6447f26c49c8afca91fd7a100aa24fb0300" +dependencies = [ + "dioxus-fullstack", + "dioxus-lib", + "dioxus-router", + "dioxus-web", + "tracing", ] [[package]] name = "dioxus-web" -version = "0.5.6" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0855ac81fcc9252a0863930a7a7cbb2504fc1b6efe893489c8d0e23aaeb2cb9" +checksum = "3414f41b8cf7330629d865c66de1751c9e9166e08c363475a7d0412531a33bc0" dependencies = [ "async-trait", + "ciborium", "console_error_panic_hook", + "dioxus-cli-config", "dioxus-core", + "dioxus-core-types", + "dioxus-devtools", + "dioxus-document", + "dioxus-history", "dioxus-html", "dioxus-interpreter-js", + "dioxus-signals", "futures-channel", "futures-util", "generational-box", "js-sys", + "lazy-js-bundle", "rustc-hash", "serde", "serde-wasm-bindgen 0.5.0", @@ -1219,17 +1296,37 @@ dependencies = [ [[package]] name = "dioxus_server_macro" -version = "0.5.6" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5ef2cad17001c1155f019cb69adbacd620644566d78a77d0778807bb106a337" +checksum = "f079a870b773f3da703a8073b8a0099675db36cdf9f82b29ce58d69d1f9c8e63" dependencies = [ - "convert_case 0.6.0", "proc-macro2", "quote", "server_fn_macro", "syn 2.0.87", ] +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + [[package]] name = "dispatch" version = "0.2.0" @@ -1270,6 +1367,12 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "dpi" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" + [[package]] name = "dtoa" version = "1.0.9" @@ -1401,6 +1504,16 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "eyre" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +dependencies = [ + "indenter", + "once_cell", +] + [[package]] name = "fastrand" version = "2.2.0" @@ -1426,12 +1539,6 @@ dependencies = [ "rustc_version", ] -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - [[package]] name = "flate2" version = "1.0.34" @@ -1439,7 +1546,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.8.0", ] [[package]] @@ -1448,21 +1555,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "foldhash" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared 0.1.1", -] - [[package]] name = "foreign-types" version = "0.5.0" @@ -1470,7 +1562,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" dependencies = [ "foreign-types-macros", - "foreign-types-shared 0.3.1", + "foreign-types-shared", ] [[package]] @@ -1484,12 +1576,6 @@ dependencies = [ "syn 2.0.87", ] -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - [[package]] name = "foreign-types-shared" version = "0.3.1" @@ -1733,11 +1819,12 @@ dependencies = [ [[package]] name = "generational-box" -version = "0.5.6" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "557cf2cbacd0504c6bf8c29f52f8071e0de1d9783346713dc6121d7fa1e5d0e0" +checksum = "0497cf28d76aac4d7f340cebd53f97bd5e72aad1f5489d0dee554788e601ce39" dependencies = [ "parking_lot", + "tracing", ] [[package]] @@ -1774,9 +1861,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.31.1" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "gio" @@ -1870,7 +1957,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b436093d1598b05e3b7fddc097b2bad32763f53a1beb25ab6f9718c6a60acd09" dependencies = [ "bitflags 2.6.0", - "cocoa", + "cocoa 0.25.0", "crossbeam-channel", "keyboard-types", "objc", @@ -1880,107 +1967,6 @@ dependencies = [ "x11-dl", ] -[[package]] -name = "gloo" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28999cda5ef6916ffd33fb4a7b87e1de633c47c0dc6d97905fee1cdaa142b94d" -dependencies = [ - "gloo-console", - "gloo-dialogs", - "gloo-events", - "gloo-file", - "gloo-history", - "gloo-net 0.3.1", - "gloo-render", - "gloo-storage", - "gloo-timers 0.2.6", - "gloo-utils 0.1.7", - "gloo-worker", -] - -[[package]] -name = "gloo-console" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b7ce3c05debe147233596904981848862b068862e9ec3e34be446077190d3f" -dependencies = [ - "gloo-utils 0.1.7", - "js-sys", - "serde", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "gloo-dialogs" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67062364ac72d27f08445a46cab428188e2e224ec9e37efdba48ae8c289002e6" -dependencies = [ - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "gloo-events" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b107f8abed8105e4182de63845afcc7b69c098b7852a813ea7462a320992fc" -dependencies = [ - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "gloo-file" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d5564e570a38b43d78bdc063374a0c3098c4f0d64005b12f9bbe87e869b6d7" -dependencies = [ - "gloo-events", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "gloo-history" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85725d90bf0ed47063b3930ef28e863658a7905989e9929a8708aab74a1d5e7f" -dependencies = [ - "gloo-events", - "gloo-utils 0.1.7", - "serde", - "serde-wasm-bindgen 0.5.0", - "serde_urlencoded", - "thiserror", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "gloo-net" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66b4e3c7d9ed8d315fd6b97c8b1f74a7c6ecbbc2320e65ae7ed38b7068cc620" -dependencies = [ - "futures-channel", - "futures-core", - "futures-sink", - "gloo-utils 0.1.7", - "http 0.2.12", - "js-sys", - "pin-project", - "serde", - "serde_json", - "thiserror", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - [[package]] name = "gloo-net" version = "0.6.0" @@ -1990,8 +1976,8 @@ dependencies = [ "futures-channel", "futures-core", "futures-sink", - "gloo-utils 0.2.0", - "http 1.1.0", + "gloo-utils", + "http", "js-sys", "pin-project", "serde", @@ -2002,41 +1988,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "gloo-render" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd9306aef67cfd4449823aadcd14e3958e0800aa2183955a309112a84ec7764" -dependencies = [ - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "gloo-storage" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6ab60bf5dbfd6f0ed1f7843da31b41010515c745735c970e821945ca91e480" -dependencies = [ - "gloo-utils 0.1.7", - "js-sys", - "serde", - "serde_json", - "thiserror", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "gloo-timers" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - [[package]] name = "gloo-timers" version = "0.3.0" @@ -2049,19 +2000,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "gloo-utils" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037fcb07216cb3a30f7292bd0176b050b7b9a052ba830ef7d5d65f6dc64ba58e" -dependencies = [ - "js-sys", - "serde", - "serde_json", - "wasm-bindgen", - "web-sys", -] - [[package]] name = "gloo-utils" version = "0.2.0" @@ -2075,23 +2013,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "gloo-worker" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13471584da78061a28306d1359dd0178d8d6fc1c7c80e5e35d27260346e0516a" -dependencies = [ - "anymap2", - "bincode", - "gloo-console", - "gloo-utils 0.1.7", - "js-sys", - "serde", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - [[package]] name = "gobject-sys" version = "0.18.0" @@ -2155,25 +2076,6 @@ dependencies = [ "syn 2.0.87", ] -[[package]] -name = "h2" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap 2.6.0", - "slab", - "tokio", - "tokio-util", - "tracing", -] - [[package]] name = "half" version = "2.4.1" @@ -2204,21 +2106,12 @@ name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", - "allocator-api2", -] [[package]] name = "hashbrown" version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", -] [[package]] name = "heck" @@ -2282,17 +2175,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa 1.0.11", -] - [[package]] name = "http" version = "1.1.0" @@ -2304,17 +2186,6 @@ dependencies = [ "itoa 1.0.11", ] -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.12", - "pin-project-lite", -] - [[package]] name = "http-body" version = "1.0.1" @@ -2322,7 +2193,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http", ] [[package]] @@ -2333,8 +2204,8 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http 1.1.0", - "http-body 1.0.1", + "http", + "http-body", "pin-project-lite", ] @@ -2344,36 +2215,6 @@ version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "hyper" -version = "0.14.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa 1.0.11", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - [[package]] name = "hyper" version = "1.5.0" @@ -2383,8 +2224,8 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.1.0", - "http-body 1.0.1", + "http", + "http-body", "httparse", "itoa 1.0.11", "pin-project-lite", @@ -2393,19 +2234,6 @@ dependencies = [ "want", ] -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper 0.14.31", - "native-tls", - "tokio", - "tokio-native-tls", -] - [[package]] name = "hyper-util" version = "0.1.10" @@ -2415,9 +2243,9 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.1.0", - "http-body 1.0.1", - "hyper 1.5.0", + "http", + "http-body", + "hyper", "pin-project-lite", "socket2", "tokio", @@ -2570,6 +2398,12 @@ dependencies = [ "icu_properties", ] +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + [[package]] name = "indexmap" version = "1.9.3" @@ -2608,42 +2442,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "internment" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04e8e537b529b8674e97e9fb82c10ff168a290ac3867a0295f112061ffbca1ef" -dependencies = [ - "hashbrown 0.14.5", - "parking_lot", -] - -[[package]] -name = "interprocess-docfix" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b84ee245c606aeb0841649a9288e3eae8c61b853a8cd5c0e14450e96d53d28f" -dependencies = [ - "blocking", - "cfg-if", - "futures-core", - "futures-io", - "intmap", - "libc", - "once_cell", - "rustc_version", - "spinning", - "thiserror", - "to_method", - "winapi", -] - -[[package]] -name = "intmap" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae52f28f45ac2bc96edb7714de995cffc174a395fb0abf5bff453587c980d7b9" - [[package]] name = "ipnet" version = "2.10.1" @@ -2745,19 +2543,6 @@ dependencies = [ "unicode-segmentation", ] -[[package]] -name = "krates" -version = "0.16.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcb3baf2360eb25ad31f0ada3add63927ada6db457791979b82ac199f835cb9" -dependencies = [ - "cargo-platform", - "cargo_metadata", - "cfg-expr", - "petgraph", - "semver", -] - [[package]] name = "kuchikiki" version = "0.8.2" @@ -2771,6 +2556,12 @@ dependencies = [ "selectors", ] +[[package]] +name = "lazy-js-bundle" +version = "0.6.0-alpha.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9073c4d86b2876ae49f73251a325c835c28acb4170b9a89c67179af514c0863b" + [[package]] name = "lazy_static" version = "1.5.0" @@ -2783,12 +2574,46 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" +[[package]] +name = "libappindicator" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" +dependencies = [ + "glib", + "gtk", + "gtk-sys", + "libappindicator-sys", + "log", +] + +[[package]] +name = "libappindicator-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" +dependencies = [ + "gtk-sys", + "libloading 0.7.4", + "once_cell", +] + [[package]] name = "libc" version = "0.2.162" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398" +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + [[package]] name = "libloading" version = "0.8.5" @@ -2799,6 +2624,16 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "libc", +] + [[package]] name = "libxdo" version = "0.6.0" @@ -2880,15 +2715,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3bd0dd2cd90571056fdb71f6275fada10131182f84899f4b2a916e565d81d86" -[[package]] -name = "lru" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" -dependencies = [ - "hashbrown 0.15.1", -] - [[package]] name = "mac" version = "0.1.1" @@ -2906,42 +2732,41 @@ dependencies = [ [[package]] name = "manganis" -version = "0.2.2" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c211cfb4529c79b32307b606e83a1bb15d491b3b4a1ab97159b161d7af9d1b72" +checksum = "12549773fb7d8e0c93ca92be0b709e0240761bbb19a6baff14bca9b4d2a3f9bf" dependencies = [ - "dioxus-core", + "anyhow", + "base64", + "dioxus-core-types", + "dunce", "manganis-macro", + "once_cell", + "serde", ] [[package]] -name = "manganis-common" -version = "0.2.4" +name = "manganis-core" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "542300f1e7d9313de5b7e5b92d273ba42ab547c068d773559d616aa14987de43" +checksum = "bfb113fb77317e501b49a2f45525fa4031747bfb463e4b51470482ede860d184" dependencies = [ - "anyhow", - "base64 0.21.7", - "home", - "infer", - "reqwest 0.11.27", "serde", - "toml 0.7.8", - "tracing", - "url", + "serde_json", ] [[package]] name = "manganis-macro" -version = "0.2.2" +version = "0.6.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "704a0123ac90fa630b21a04fde56c29dfd5a7665c5e8f3639567989daa2d29d1" +checksum = "f80170642e929a9cfb6c67009f87d9493765defd649c0bb0ef8e5d38214a033a" dependencies = [ - "manganis-common", + "manganis-core", "proc-macro2", "quote", + "serde", + "serde_json", "syn 2.0.87", - "tracing-subscriber", ] [[package]] @@ -2969,18 +2794,21 @@ dependencies = [ "tendril", ] +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + [[package]] name = "matches" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" -[[package]] -name = "md5" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" - [[package]] name = "memchr" version = "2.7.4" @@ -3027,6 +2855,15 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +[[package]] +name = "miniz_oxide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +dependencies = [ + "adler", +] + [[package]] name = "miniz_oxide" version = "0.8.0" @@ -3061,7 +2898,7 @@ version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c47e7625990fc1af2226ea4f34fb2412b03c12639fcb91868581eb3a6893453" dependencies = [ - "cocoa", + "cocoa 0.25.0", "crossbeam-channel", "gtk", "keyboard-types", @@ -3073,6 +2910,26 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "muda" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdae9c00e61cc0579bcac625e8ad22104c60548a025bfc972dc83868a28e1484" +dependencies = [ + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "libxdo", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "once_cell", + "png", + "thiserror", + "windows-sys 0.59.0", +] + [[package]] name = "mumble-protocol-2x" version = "0.5.0" @@ -3087,24 +2944,32 @@ dependencies = [ "protobuf-codegen-pure", ] +[[package]] +name = "mumble-web2-common" +version = "0.1.0" +dependencies = [ + "serde", +] + [[package]] name = "mumble-web2-gui" version = "0.1.0" dependencies = [ - "anyhow", "asynchronous-codec", "byteorder", + "color-eyre", "dioxus", + "dioxus-desktop", "dioxus-web", "futures", "futures-channel", - "gloo-timers 0.3.0", + "gloo-timers", "html-purifier", "js-sys", - "manganis", "markdown", "merge-io", "mumble-protocol-2x", + "mumble-web2-common", "ogg", "once_cell", "ordermap", @@ -3115,40 +2980,27 @@ dependencies = [ "tokio", "tokio-rustls", "tokio-util", + "tracing", + "tracing-subscriber", + "tracing-web", "wasm-bindgen", "wasm-bindgen-futures", "wasm-streams", "web-sys", ] -[[package]] -name = "native-tls" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - [[package]] name = "ndk" -version = "0.7.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "jni-sys", + "log", "ndk-sys", "num_enum", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.2", "thiserror", ] @@ -3160,9 +3012,9 @@ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] name = "ndk-sys" -version = "0.4.1+23.1.7779620" +version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" dependencies = [ "jni-sys", ] @@ -3252,23 +3104,23 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.11" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.5.11" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate 1.3.1", + "proc-macro-crate 2.0.2", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.87", ] [[package]] @@ -3292,6 +3144,105 @@ dependencies = [ "objc_id", ] +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.6.0", + "block2", + "libc", + "objc2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-encode" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.6.0", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + [[package]] name = "objc_exception" version = "0.1.2" @@ -3312,9 +3263,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.5" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "memchr", ] @@ -3335,57 +3286,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] -name = "openssl" -version = "0.10.68" +name = "option-ext" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" -dependencies = [ - "bitflags 2.6.0", - "cfg-if", - "foreign-types 0.3.2", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", -] - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.104" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "ordered-float" -version = "2.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" -dependencies = [ - "num-traits", -] +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "ordered-stream" @@ -3412,6 +3316,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "owo-colors" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" + [[package]] name = "pango" version = "0.18.3" @@ -3478,16 +3388,6 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" -[[package]] -name = "petgraph" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" -dependencies = [ - "fixedbitset", - "indexmap 2.6.0", -] - [[package]] name = "phf" version = "0.8.0" @@ -3645,7 +3545,7 @@ dependencies = [ "crc32fast", "fdeflate", "flate2", - "miniz_oxide", + "miniz_oxide 0.8.0", ] [[package]] @@ -3753,6 +3653,18 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "proc-macro2-diagnostics" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "version_check", +] + [[package]] name = "protobuf" version = "2.28.0" @@ -3889,6 +3801,17 @@ dependencies = [ "bitflags 2.6.0", ] +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.15", + "libredox", + "thiserror", +] + [[package]] name = "regex" version = "1.11.1" @@ -3897,8 +3820,17 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata", - "regex-syntax", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", ] [[package]] @@ -3909,69 +3841,35 @@ checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.8.5", ] +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + [[package]] name = "regex-syntax" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" -[[package]] -name = "reqwest" -version = "0.11.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" -dependencies = [ - "base64 0.21.7", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.31", - "hyper-tls", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 0.1.2", - "system-configuration", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", -] - [[package]] name = "reqwest" version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" dependencies = [ - "base64 0.22.1", + "base64", "bytes", "futures-core", "futures-util", - "http 1.1.0", - "http-body 1.0.1", + "http", + "http-body", "http-body-util", - "hyper 1.5.0", + "hyper", "hyper-util", "ipnet", "js-sys", @@ -3984,7 +3882,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper", "tokio", "tokio-util", "tower-service", @@ -4100,15 +3998,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64 0.21.7", -] - [[package]] name = "rustls-pki-types" version = "1.10.0" @@ -4127,6 +4016,12 @@ dependencies = [ "untrusted", ] +[[package]] +name = "rustversion" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" + [[package]] name = "ryu" version = "1.0.18" @@ -4142,44 +4037,12 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "schannel" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" -dependencies = [ - "windows-sys 0.59.0", -] - [[package]] name = "scopeguard" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags 2.6.0", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "selectors" version = "0.22.0" @@ -4205,9 +4068,6 @@ name = "semver" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" -dependencies = [ - "serde", -] [[package]] name = "send_wrapper" @@ -4227,16 +4087,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-value" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" -dependencies = [ - "ordered-float", - "serde", -] - [[package]] name = "serde-wasm-bindgen" version = "0.5.0" @@ -4335,11 +4185,11 @@ dependencies = [ "const_format", "dashmap", "futures", - "gloo-net 0.6.0", - "http 1.1.0", + "gloo-net", + "http", "js-sys", "once_cell", - "reqwest 0.12.9", + "reqwest", "send_wrapper", "serde", "serde_json", @@ -4458,9 +4308,8 @@ checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "sir" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a6aabaa54dc0d627a5f9af5d932fb71ba940cb8401cfe0e7b7bf340f9c45c3" +version = "0.6.0-alpha.4" +source = "git+https://gitlab.com/samsartor/sir#99ac4db5c0a02debf15c145c998fe90d854269b2" dependencies = [ "dioxus", "once_cell", @@ -4470,8 +4319,7 @@ dependencies = [ [[package]] name = "sir-macro" version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bff4c4b9aafdb2abc85cbe4e252474c319ed7f4ce57e5ffcb768473f6aaf393" +source = "git+https://gitlab.com/samsartor/sir#99ac4db5c0a02debf15c145c998fe90d854269b2" dependencies = [ "litrs", "proc-macro2", @@ -4491,9 +4339,9 @@ dependencies = [ [[package]] name = "sledgehammer_bindgen" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcfaf791ff02f48f3518ce825d32cf419c13a43c1d8b1232f74ac89f339c46d2" +checksum = "49e83e178d176459c92bc129cfd0958afac3ced925471b889b3a75546cfc4133" dependencies = [ "sledgehammer_bindgen_macro", "wasm-bindgen", @@ -4501,9 +4349,9 @@ dependencies = [ [[package]] name = "sledgehammer_bindgen_macro" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edc90d3e8623d29a664cd8dba5078b600dd203444f00b9739f744e4c6e7aeaf2" +checksum = "33a1b4f13e2bbf2f5b29d09dfebc9de69229ffee245aed80e3b70f9b5fd28c06" dependencies = [ "quote", "syn 2.0.87", @@ -4511,12 +4359,10 @@ dependencies = [ [[package]] name = "sledgehammer_utils" -version = "0.2.1" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f20798defa0e9d4eff9ca451c7f84774c7378a9c3b5a40112cfa2b3eadb97ae2" +checksum = "debdd4b83524961983cea3c55383b3910fd2f24fd13a188f5b091d2d504a61ae" dependencies = [ - "lru", - "once_cell", "rustc-hash", ] @@ -4578,15 +4424,6 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" -[[package]] -name = "spinning" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d4f0e86297cad2658d92a707320d87bf4e6ae1050287f51d19b67ef3f153a7b" -dependencies = [ - "lock_api", -] - [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -4653,12 +4490,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - [[package]] name = "sync_wrapper" version = "1.0.1" @@ -4679,27 +4510,6 @@ dependencies = [ "syn 2.0.87", ] -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "system-deps" version = "6.2.2" @@ -4709,23 +4519,24 @@ dependencies = [ "cfg-expr", "heck 0.5.0", "pkg-config", - "toml 0.8.2", + "toml", "version-compare", ] [[package]] name = "tao" -version = "0.26.2" +version = "0.30.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69ebbccb78deb5a36744c079eea2981b4a48ecbbe6b1b2ffbaa528bea3f5e5db" +checksum = "6682a07cf5bab0b8a2bd20d0a542917ab928b5edb75ebd4eda6b05cbaab872da" dependencies = [ - "bitflags 1.3.2", - "cocoa", - "core-foundation", - "core-graphics", + "bitflags 2.6.0", + "cocoa 0.26.0", + "core-foundation 0.10.0", + "core-graphics 0.24.0", "crossbeam-channel", "dispatch", "dlopen2", + "dpi", "gdkwayland-sys", "gdkx11-sys", "gtk", @@ -4746,7 +4557,8 @@ dependencies = [ "tao-macros", "unicode-segmentation", "url", - "windows 0.54.0", + "windows", + "windows-core", "windows-version", "x11-dl", ] @@ -4838,12 +4650,6 @@ dependencies = [ "zerovec", ] -[[package]] -name = "to_method" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c4ceeeca15c8384bbc3e011dbd8fccb7f068a440b752b7d9b32ceb0ca0e2e8" - [[package]] name = "tokio" version = "1.41.1" @@ -4855,8 +4661,10 @@ dependencies = [ "libc", "mio", "pin-project-lite", + "signal-hook-registry", "socket2", "tokio-macros", + "tracing", "windows-sys 0.52.0", ] @@ -4871,16 +4679,6 @@ dependencies = [ "syn 2.0.87", ] -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - [[package]] name = "tokio-rustls" version = "0.26.0" @@ -4906,18 +4704,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit 0.19.15", -] - [[package]] name = "toml" version = "0.8.2" @@ -4946,8 +4732,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ "indexmap 2.6.0", - "serde", - "serde_spanned", "toml_datetime", "winnow", ] @@ -5004,14 +4788,13 @@ dependencies = [ ] [[package]] -name = "tracing-log" +name = "tracing-error" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e" dependencies = [ - "log", - "once_cell", - "tracing-core", + "tracing", + "tracing-subscriber", ] [[package]] @@ -5020,12 +4803,47 @@ version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ + "matchers", "nu-ansi-term", + "once_cell", + "regex", "sharded-slab", - "smallvec", "thread_local", + "tracing", "tracing-core", - "tracing-log", +] + +[[package]] +name = "tracing-web" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e6a141feebd51f8d91ebfd785af50fca223c570b86852166caa3b141defe7c" +dependencies = [ + "js-sys", + "tracing-core", + "tracing-subscriber", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "tray-icon" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c92af36a182b46206723bdf8a7942e20838cde1cf062e5b97854d57eb01763b" +dependencies = [ + "core-graphics 0.24.0", + "crossbeam-channel", + "dirs", + "libappindicator", + "muda 0.15.3", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "once_cell", + "png", + "thiserror", + "windows-sys 0.59.0", ] [[package]] @@ -5034,6 +4852,24 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "tungstenite" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand 0.8.5", + "sha1", + "thiserror", + "utf-8", +] + [[package]] name = "typenum" version = "1.17.0" @@ -5129,12 +4965,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - [[package]] name = "version-compare" version = "0.2.0" @@ -5166,6 +4996,28 @@ dependencies = [ "try-lock", ] +[[package]] +name = "warnings" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64f68998838dab65727c9b30465595c6f7c953313559371ca8bf31759b3680ad" +dependencies = [ + "pin-project", + "tracing", + "warnings-macro", +] + +[[package]] +name = "warnings-macro" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59195a1db0e95b920366d949ba5e0d3fc0e70b67c09be15ce5abb790106b0571" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" @@ -5274,7 +5126,7 @@ version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db67ae75a9405634f5882791678772c94ff5f16a66535aae186e26aa0841fc8b" dependencies = [ - "core-foundation", + "core-foundation 0.9.4", "home", "jni", "log", @@ -5331,23 +5183,23 @@ dependencies = [ [[package]] name = "webview2-com" -version = "0.28.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ae9c7e420783826cf769d2c06ac9ba462f450eca5893bb8c6c6529a4e5dd33" +checksum = "6f61ff3d9d0ee4efcb461b14eb3acfda2702d10dc329f339303fc3e57215ae2c" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows 0.52.0", - "windows-core 0.52.0", - "windows-implement 0.52.0", - "windows-interface 0.52.0", + "windows", + "windows-core", + "windows-implement", + "windows-interface", ] [[package]] name = "webview2-com-macros" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1345798ecd8122468840bcdf1b95e5dc6d2206c5e4b0eafa078d061f59c9bc" +checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" dependencies = [ "proc-macro2", "quote", @@ -5356,13 +5208,13 @@ dependencies = [ [[package]] name = "webview2-com-sys" -version = "0.28.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ad85fceee6c42fa3d61239eba5a11401bf38407a849ed5ea1b407df08cca72" +checksum = "a3a3e2eeb58f82361c93f9777014668eb3d07e7d174ee4c819575a9208011886" dependencies = [ "thiserror", - "windows 0.52.0", - "windows-core 0.52.0", + "windows", + "windows-core", ] [[package]] @@ -5410,63 +5262,32 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.52.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" dependencies = [ - "windows-core 0.52.0", - "windows-implement 0.52.0", - "windows-interface 0.52.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows" -version = "0.54.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" -dependencies = [ - "windows-core 0.54.0", - "windows-implement 0.53.0", - "windows-interface 0.53.0", + "windows-core", "windows-targets 0.52.6", ] [[package]] name = "windows-core" -version = "0.52.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-core" -version = "0.54.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" -dependencies = [ - "windows-result 0.1.2", + "windows-implement", + "windows-interface", + "windows-result", + "windows-strings", "windows-targets 0.52.6", ] [[package]] name = "windows-implement" -version = "0.52.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12168c33176773b86799be25e2a2ba07c7aab9968b37541f1094dbd7a60c8946" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", -] - -[[package]] -name = "windows-implement" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942ac266be9249c84ca862f0a164a39533dc2f6f33dc98ec89c8da99b82ea0bd" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", @@ -5475,20 +5296,9 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.52.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d8dc32e0095a7eeccebd0e3f09e9509365ecb3fc6ac4d6f5f14a3f6392942d1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", -] - -[[package]] -name = "windows-interface" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da33557140a288fae4e1d5f8873aaf9eb6613a9cf82c3e070223ff177f598b60" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", @@ -5501,20 +5311,11 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" dependencies = [ - "windows-result 0.2.0", + "windows-result", "windows-strings", "windows-targets 0.52.6", ] -[[package]] -name = "windows-result" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" -dependencies = [ - "windows-targets 0.52.6", -] - [[package]] name = "windows-result" version = "0.2.0" @@ -5530,7 +5331,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [ - "windows-result 0.2.0", + "windows-result", "windows-targets 0.52.6", ] @@ -5766,16 +5567,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - [[package]] name = "write16" version = "1.0.0" @@ -5790,36 +5581,31 @@ checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" [[package]] name = "wry" -version = "0.37.0" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b717040ba9771fd88eb428c6ea6b555f8e734ff8534f02c13e8f10d97f5935e" +checksum = "ac0099a336829fbf54c26b5f620c68980ebbe37196772aeaf6118df4931b5cb0" dependencies = [ - "base64 0.21.7", + "base64", "block", - "cfg_aliases", - "cocoa", - "core-graphics", + "cocoa 0.26.0", + "core-graphics 0.24.0", "crossbeam-channel", + "dpi", "dunce", "gdkx11", "gtk", "html5ever", - "http 0.2.12", + "http", "javascriptcore-rs", "jni", "kuchikiki", "libc", - "log", "ndk", - "ndk-context", - "ndk-sys", "objc", "objc_id", "once_cell", "percent-encoding", "raw-window-handle 0.6.2", - "serde", - "serde_json", "sha2", "soup3", "tao-macros", @@ -5827,8 +5613,8 @@ dependencies = [ "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows 0.52.0", - "windows-implement 0.52.0", + "windows", + "windows-core", "windows-version", "x11-dl", ] @@ -5901,15 +5687,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b8e3d6ae3342792a6cc2340e4394334c7402f3d793b390d2c5494a4032b3030" dependencies = [ "async-broadcast", - "async-executor", - "async-fs", - "async-io", - "async-lock", "async-process", "async-recursion", - "async-task", "async-trait", - "blocking", "derivative", "enumflags2", "event-listener", @@ -5924,6 +5704,7 @@ dependencies = [ "serde_repr", "sha1", "static_assertions", + "tokio", "tracing", "uds_windows", "windows-sys 0.52.0", diff --git a/Cargo.toml b/Cargo.toml index ee91f58..0bfe034 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,2 +1,16 @@ [workspace] -members = ["gui"] +resolver = "2" +members = [ "common","gui"] + +[workspace.dependencies] +serde = { version = "1.0.214", features = ["derive"] } +asynchronous-codec = "0.6.2" +mumble-web2-common = { path = "common" } + +[workspace.dependencies.mumble-protocol] +version = "0.5.0" +package = "mumble-protocol-2x" +default-features = false +features = [ + "asynchronous-codec", +] diff --git a/common/Cargo.toml b/common/Cargo.toml new file mode 100644 index 0000000..e1c5658 --- /dev/null +++ b/common/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "mumble-web2-common" +version = "0.1.0" +edition = "2021" + +[dependencies] +serde = { workspace = true } diff --git a/common/src/lib.rs b/common/src/lib.rs new file mode 100644 index 0000000..a37f817 --- /dev/null +++ b/common/src/lib.rs @@ -0,0 +1,9 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Deserialize, Default)] +pub struct GuiConfig { + #[serde(default)] + pub force_proxy: bool, + pub proxy_url: Option, + pub cert_hash: Option>, +} diff --git a/gui/Cargo.toml b/gui/Cargo.toml index dadbdb3..333a923 100644 --- a/gui/Cargo.toml +++ b/gui/Cargo.toml @@ -4,18 +4,9 @@ version = "0.1.0" edition = "2021" [dependencies] -dioxus = { version = "0.5.6" } -dioxus-web = { version = "0.5.6", optional = true } -manganis = "0.2.2" -once_cell = "1.19.0" -asynchronous-codec = "0.6.2" -futures = "0.3.30" -merge-io = "0.3.0" -mumble-protocol = { version = "0.5.0", package = "mumble-protocol-2x", default-features = false, features = [ - "asynchronous-codec", -] } -serde_json = "1.0.117" -tokio-util = { version = "0.7.11", features = ["codec", "compat"] } +# Web Dependencies +# ================ +dioxus-web = { version = "0.6.0-alpha.4", optional = true } wasm-bindgen = { version = "0.2.92", optional = true } wasm-bindgen-futures = { version = "0.4.42", optional = true } wasm-streams = { version = "0.4.0", optional = true } @@ -63,18 +54,38 @@ web-sys = { version = "0.3.72", features = [ "AudioSampleFormat", "Storage", ], optional = true} -anyhow = "1.0.86" +gloo-timers = { version = "0.3.0", features = ["futures"], optional = true } +tracing-web = { version = "0.1.3", optional = true } + +# Desktop Dependecies +# =================== +dioxus-desktop = { version = "0.6.0-alpha.4", optional = true} +tokio = { version = "1.41.1", features = ["net", "rt"], optional = true } +tokio-rustls = { version = "0.26.0", optional = true } + + +# Base Dependencies +# ================ +dioxus = { version = "0.6.0-alpha.4" } +once_cell = "1.19.0" +asynchronous-codec = { workspace = true } +futures = "0.3.30" +merge-io = "0.3.0" +mumble-protocol = { workspace = true } +serde_json = "1.0.117" +tokio-util = { version = "0.7.11", features = ["codec", "compat"] } byteorder = "1.5.0" ogg = "0.9.1" ordermap = "0.5.3" html-purifier = "0.3.0" markdown = "0.3.0" -gloo-timers = { version = "0.3.0", features = ["futures"], optional = true } futures-channel = "0.3.30" -sir = { version = "0.5.0", features = ["dioxus"] } -tokio = { version = "1.41.1", features = ["net", "rt"], optional = true } -tokio-rustls = { version = "0.26.0", optional = true } -serde = { version = "1.0.214", features = ["derive"] } +sir = { git = "https://gitlab.com/samsartor/sir", features = ["dioxus"] } # dioxus 0.6 +mumble-web2-common = { workspace = true } +serde = { workspace = true } +tracing-subscriber = { version = "0.3.18", default-features = false, features = ["ansi"] } +tracing = "0.1.40" +color-eyre = "0.6.3" [features] web = [ @@ -87,5 +98,6 @@ web = [ "js-sys", "web-sys", "gloo-timers", + "tracing-web", ] -desktop = ["dioxus/desktop", "tokio", "tokio-rustls"] +desktop = ["dioxus/desktop", "tokio", "tokio-rustls", "tracing-subscriber/env-filter"] diff --git a/gui/public/mic-off-svgrepo-com.svg b/gui/assets/mic-off-svgrepo-com.svg similarity index 100% rename from gui/public/mic-off-svgrepo-com.svg rename to gui/assets/mic-off-svgrepo-com.svg diff --git a/gui/public/mic-svgrepo-com.svg b/gui/assets/mic-svgrepo-com.svg similarity index 100% rename from gui/public/mic-svgrepo-com.svg rename to gui/assets/mic-svgrepo-com.svg diff --git a/gui/public/rust_mic_worklet.js b/gui/assets/rust_mic_worklet.js similarity index 100% rename from gui/public/rust_mic_worklet.js rename to gui/assets/rust_mic_worklet.js diff --git a/gui/public/speaker-medium-svgrepo-com.svg b/gui/assets/speaker-medium-svgrepo-com.svg similarity index 100% rename from gui/public/speaker-medium-svgrepo-com.svg rename to gui/assets/speaker-medium-svgrepo-com.svg diff --git a/gui/public/speaker-muted-svgrepo-com.svg b/gui/assets/speaker-muted-svgrepo-com.svg similarity index 100% rename from gui/public/speaker-muted-svgrepo-com.svg rename to gui/assets/speaker-muted-svgrepo-com.svg diff --git a/gui/src/app.rs b/gui/src/app.rs index b4b0aa5..f4fa355 100644 --- a/gui/src/app.rs +++ b/gui/src/app.rs @@ -1,7 +1,6 @@ #![allow(non_snake_case)] use dioxus::prelude::*; -use manganis::mg; use ordermap::OrderSet; use sir::{css, global_css}; use std::collections::HashMap; @@ -111,15 +110,15 @@ pub enum UserIcon { } impl UserIcon { - pub fn url(self) -> Option<&'static str> { + pub fn url(self) -> Option { // speaker from https://www.svgrepo.com/collection/ikono-bold-line-icons/ // mic from https://www.svgrepo.com/collection/hashicorp-line-interface-icons/ use UserIcon::*; Some(match self { - Normal => "/mic-svgrepo-com.svg", - Muted => "/mic-off-svgrepo-com.svg", - Deafened => "/speaker-muted-svgrepo-com.svg", + Normal => asset!("assets/mic-svgrepo-com.svg"), + Muted => asset!("assets/mic-off-svgrepo-com.svg"), + Deafened => asset!("assets/speaker-muted-svgrepo-com.svg"), None => return Option::None, }) } @@ -160,19 +159,26 @@ pub fn UserPill(name: String, icon: UserIcon) -> Element { #[component] pub fn User(id: UserId) -> Element { let server = STATE.server.read(); - let state = server.users.get(&id)?; - rsx!(UserPill { - name: state.name.clone(), - icon: state.icon(), - }) + match server.users.get(&id) { + Some(state) => rsx!(UserPill { + name: state.name.clone(), + icon: state.icon(), + }), + None => rsx!(UserPill { + name: format!("unknown user ({id})"), + icon: UserIcon::None, + }), + } } #[component] pub fn Channel(id: ChannelId) -> Element { let net: Coroutine = use_coroutine_handle(); let server = STATE.server.read(); - let user = server.session?; - let state = server.channels.get(&id)?; + let user = server.session.unwrap(); + let Some(state) = server.channels.get(&id) else { + return rsx!("missing channel {id}"); + }; let channel_details = css!( " @@ -318,13 +324,16 @@ pub fn ChatView() -> Element { pub fn ServerView() -> Element { let net: Coroutine = use_coroutine_handle(); let server = STATE.server.read(); - let &UserState { + let Some(&UserState { deaf, self_deaf, mute, self_mute, .. - } = server.this_user()?; + }) = server.this_user() + else { + return rsx!(); + }; let grid = css!( r#" @@ -408,8 +417,8 @@ pub fn ServerView() -> Element { disabled: mute, onclick: move |_| net.send(SetMute { mute: !self_mute }), match mute || self_mute { - true => rsx!(img { src: "/mic-off-svgrepo-com.svg" }), - false => rsx!(img { src: "/mic-svgrepo-com.svg" }), + true => rsx!(img { src: asset!("assets/mic-off-svgrepo-com.svg") }), + false => rsx!(img { src: asset!("assets/mic-svgrepo-com.svg") }), } "\u{00A0}Mute" } @@ -419,8 +428,8 @@ pub fn ServerView() -> Element { disabled: deaf, onclick: move |_| net.send(SetDeaf { deaf: !self_deaf }), match deaf || self_deaf { - true => rsx!(img { src: "/speaker-muted-svgrepo-com.svg" }), - false => rsx!(img { src: "/speaker-medium-svgrepo-com.svg" }), + true => rsx!(img { src: asset!("assets/speaker-muted-svgrepo-com.svg") }), + false => rsx!(img { src: asset!("assets/speaker-medium-svgrepo-com.svg") }), } "\u{00A0}Deafen" } diff --git a/gui/src/imp/desktop.rs b/gui/src/imp/desktop.rs index 49d1997..8d7a1c2 100644 --- a/gui/src/imp/desktop.rs +++ b/gui/src/imp/desktop.rs @@ -1,13 +1,13 @@ use crate::app::Command; -use anyhow::Result; +use color_eyre::eyre::Error; use dioxus::hooks::{UnboundedReceiver, UnboundedSender}; use futures::io::{AsyncRead, AsyncWrite}; use mumble_protocol::control::{ClientControlCodec, ControlPacket}; use mumble_protocol::Serverbound; +use mumble_web2_common::GuiConfig; use std::net::ToSocketAddrs; use std::{fmt, io, sync::Arc}; use tokio::net::TcpStream; -use tokio::task::LocalSet; use tokio_rustls::rustls; use tokio_rustls::rustls::client::danger::{HandshakeSignatureValid, ServerCertVerifier}; use tokio_rustls::rustls::pki_types::{CertificateDer, ServerName, UnixTime}; @@ -19,60 +19,22 @@ use tokio_util::compat::{TokioAsyncReadCompatExt as _, TokioAsyncWriteCompatExt pub use tokio::task::spawn; pub use tokio::time::sleep; -pub struct Error(anyhow::Error); - pub trait ImpRead: AsyncRead + Unpin + Send + 'static {} impl ImpRead for T {} pub trait ImpWrite: AsyncWrite + Unpin + Send + 'static {} impl ImpWrite for T {} -impl From for Error { - fn from(value: anyhow::Error) -> Self { - Error(value) - } -} - -impl From for Error { - fn from(value: io::Error) -> Self { - Error(value.into()) - } -} - -impl Error { - pub fn new(text: String) -> Self { - Self(anyhow::Error::msg(text)) - } - - pub fn log(&self) { - eprintln!("{}", self.0); - } -} - -impl std::error::Error for Error {} - -impl fmt::Display for Error { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - fmt::Display::fmt(&self.0, f) - } -} - -impl fmt::Debug for Error { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - fmt::Debug::fmt(&self.0, f) - } -} - pub struct AudioSystem(); impl AudioSystem { pub fn new(sender: UnboundedSender>) -> Result { - // dbg!("todo"); + // TODO Ok(AudioSystem()) } pub fn create_player(&mut self) -> Result { - // dbg!("todo"); + // TODO Ok(AudioPlayer()) } } @@ -81,7 +43,7 @@ pub struct AudioPlayer(); impl AudioPlayer { pub fn play_opus(&mut self, payload: &[u8]) { - // dbg!("todo"); + // TODO } } @@ -157,17 +119,17 @@ pub async fn network_connect( let server_tcp = TcpStream::connect(addr).await?; let server_stream = connector //.connect("127.0.0.1".try_into()?, server_tcp) - .connect(address.try_into().map_err(anyhow::Error::from)?, server_tcp) + .connect(address.try_into()?, server_tcp) .await?; let (read_server, write_server) = tokio::io::split(server_stream); let read_codec = ClientControlCodec::new(); let write_codec = ClientControlCodec::new(); - let mut reader = asynchronous_codec::FramedRead::new(read_server.compat(), read_codec); - let mut writer = asynchronous_codec::FramedWrite::new(write_server.compat_write(), write_codec); + let reader = asynchronous_codec::FramedRead::new(read_server.compat(), read_codec); + let writer = asynchronous_codec::FramedWrite::new(write_server.compat_write(), write_codec); - super::network_loop(username, event_rx, reader, writer).await + crate::network_loop(username, event_rx, reader, writer).await } pub fn set_default_username(username: &str) -> Option<()> { @@ -178,6 +140,21 @@ pub fn load_username() -> Option { return None; } -pub fn load_config() -> Option { +pub fn load_config() -> Option { None } + +pub fn init_logging() { + use tracing::level_filters::LevelFilter; + use tracing_subscriber::filter::EnvFilter; + + let env_filter = EnvFilter::builder() + .with_default_directive(LevelFilter::INFO.into()) + .from_env_lossy(); + + tracing_subscriber::fmt() + .with_target(true) + .with_level(true) + .with_env_filter(env_filter) + .init(); +} diff --git a/gui/src/imp/mod.rs b/gui/src/imp/mod.rs new file mode 100644 index 0000000..ae5f314 --- /dev/null +++ b/gui/src/imp/mod.rs @@ -0,0 +1,11 @@ +#[cfg(feature = "web")] +mod web; + +#[cfg(feature = "desktop")] +mod desktop; + +#[cfg(all(feature = "web", not(feature = "desktop")))] +pub use web::*; + +#[cfg(feature = "desktop")] +pub use desktop::*; diff --git a/gui/src/imp/web.rs b/gui/src/imp/web.rs index 011efa8..f4d3266 100644 --- a/gui/src/imp/web.rs +++ b/gui/src/imp/web.rs @@ -1,27 +1,19 @@ use crate::app::Command; -use crate::bail; use crate::CONFIG; +use color_eyre::eyre::{bail, eyre, Error}; use dioxus::prelude::*; -use futures::AsyncRead; -use futures::AsyncWrite; +use futures::{AsyncRead, AsyncWrite}; use futures_channel::mpsc::UnboundedSender; use gloo_timers::future::TimeoutFuture; -use manganis::mg; -use mumble_protocol::control::ClientControlCodec; -use mumble_protocol::control::ControlPacket; -use mumble_protocol::voice::VoicePacket; -use mumble_protocol::voice::VoicePacketPayload; +use mumble_protocol::control::{ClientControlCodec, ControlPacket}; +use mumble_protocol::voice::{VoicePacket, VoicePacketPayload}; use mumble_protocol::Serverbound; -use std::fmt; -use std::io; +use mumble_web2_common::GuiConfig; use std::time::Duration; +use tracing::{debug, error, info}; use wasm_bindgen::prelude::*; use wasm_bindgen_futures::JsFuture; -use web_sys::console; -use web_sys::js_sys::Promise; -use web_sys::js_sys::Reflect; -use web_sys::js_sys::Uint8Array; -use web_sys::window; +use web_sys::js_sys::{Promise, Reflect, Uint8Array}; use web_sys::AudioContext; use web_sys::AudioContextOptions; use web_sys::AudioData; @@ -44,6 +36,7 @@ use web_sys::WebTransport; use web_sys::WebTransportBidirectionalStream; use web_sys::WebTransportOptions; use web_sys::WorkletOptions; +use web_sys::{console, window}; pub use wasm_bindgen_futures::spawn_local as spawn; @@ -57,58 +50,27 @@ pub async fn sleep(d: Duration) { TimeoutFuture::new(d.as_millis() as u32).await } -pub struct Error(JsValue); +trait ResultExt { + fn ey(self) -> Result; +} -impl From for Error { - fn from(value: anyhow::Error) -> Self { - Error(JsError::new(&value.to_string()).into()) +impl ResultExt for Result { + fn ey(self) -> Result { + match self { + Ok(x) => Ok(x), + Err(e) => match e.dyn_into::() { + Ok(e) => Err(eyre!("{}: {}", e.name(), e.message())), + Err(e) => Err(eyre!("{:?}", e)), + }, + } } } -impl From for Error { - fn from(value: io::Error) -> Self { - Error(JsError::new(&value.to_string()).into()) +impl ResultExt for Result { + fn ey(self) -> Result { + self.map_err(|e| JsValue::from(e)).ey() } } - -impl From for Error { - fn from(value: JsValue) -> Self { - Error(value) - } -} - -impl From for Error { - fn from(value: JsError) -> Self { - Error(JsError::from(value).into()) - } -} - -impl Error { - pub fn new(text: String) -> Self { - wasm_bindgen::JsError::new(&text).into() - } - - pub fn log(&self) { - console::error_1(&self.0); - } -} - -impl std::error::Error for Error {} - -impl fmt::Display for Error { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - let text: String = js_sys::Object::from(self.0.clone()).to_string().into(); - f.write_str(&text) - } -} - -impl fmt::Debug for Error { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - let text: String = js_sys::Object::from(self.0.clone()).to_string().into(); - f.write_str(&text) - } -} - pub struct AudioSystem(AudioContext); impl AudioSystem { @@ -120,8 +82,8 @@ impl AudioSystem { let audio_context_worklet = audio_context.clone(); spawn(async move { match create_encoder_worklet(&audio_context_worklet, sender).await { - Ok(node) => console::log_2(&"Created audio worklet:".into(), &node), - Err(err) => err.log(), + Ok(node) => info!("created encoder worklet: {:?}", &node), + Err(err) => error!("could not create encoder worklet: {err}"), } }); @@ -132,21 +94,25 @@ impl AudioSystem { let audio_context = &self.0; let audio_stream_generator = - MediaStreamTrackGenerator::new(&MediaStreamTrackGeneratorInit::new("audio"))?; + MediaStreamTrackGenerator::new(&MediaStreamTrackGeneratorInit::new("audio")).ey()?; // Create MediaStream from MediaStreamTrackGenerator let js_tracks = web_sys::js_sys::Array::new(); js_tracks.push(&audio_stream_generator); - let media_stream = MediaStream::new_with_tracks(&js_tracks)?; + let media_stream = MediaStream::new_with_tracks(&js_tracks).ey()?; // Create MediaStreamAudioSourceNode - let audio_source = audio_context.create_media_stream_source(&media_stream)?; + let audio_source = audio_context + .create_media_stream_source(&media_stream) + .ey()?; // Connect output of audio_source to audio_context (browser audio) - audio_source.connect_with_audio_node(&audio_context.destination())?; + audio_source + .connect_with_audio_node(&audio_context.destination()) + .ey()?; // Create callback functions for AudioDecoder - let error = Closure::wrap(Box::new(move |e: JsValue| { - console::error_1(&e); + let decoder_error = Closure::wrap(Box::new(move |e: JsValue| { + error!("error decoding audio {:?}", e); }) as Box); // This knows what MediaStreamTrackGenerator to use as it closes around it @@ -157,29 +123,33 @@ impl AudioSystem { } if let Err(e) = writable.get_writer().map(|writer| { spawn(async move { - if let Err(e) = JsFuture::from(writer.ready()).await { - console::error_1(&format!("write chunk ready error {:?}", e).into()); + if let Err(e) = JsFuture::from(writer.ready()).await.ey() { + error!("write chunk ready error {:?}", e); } - if let Err(e) = JsFuture::from(writer.write_with_chunk(&audio_data)).await { - console::error_1(&format!("write chunk error {:?}", e).into()); + if let Err(e) = JsFuture::from(writer.write_with_chunk(&audio_data)) + .await + .ey() + { + error!("write chunk error {:?}", e); }; writer.release_lock(); }); }) { - console::error_1(&e); + error!("error writing audio data {:?}", e); } }) as Box); let audio_decoder = AudioDecoder::new(&AudioDecoderInit::new( - error.as_ref().unchecked_ref(), + decoder_error.as_ref().unchecked_ref(), output.as_ref().unchecked_ref(), - ))?; + )) + .ey()?; audio_decoder.configure(&AudioDecoderConfig::new("opus", 1, 48000)); - console::log_1(&"Created Audio Decoder".into()); + info!("created audio decoder"); // This is required to prevent these from being deallocated - error.forget(); + decoder_error.forget(); output.forget(); Ok(AudioPlayer(audio_decoder)) @@ -228,32 +198,41 @@ async fn create_encoder_worklet( let stream = window() .unwrap() .navigator() - .media_devices()? - .get_user_media_with_constraints(MediaStreamConstraints::new().audio(&JsValue::TRUE))? + .media_devices() + .ey()? + .get_user_media_with_constraints(MediaStreamConstraints::new().audio(&JsValue::TRUE)) + .ey()? .into_future() - .await? + .await + .ey()? .dyn_into() - .map_err(|e| JsError::new(&format!("not a stream: {e:?}")))?; + .map_err(|e| JsError::new(&format!("not a stream: {e:?}"))) + .ey()?; let options = WorkletOptions::new(); Reflect::set( &options, &"processorOptions".into(), &wasm_bindgen::module(), - )?; + ) + .ey()?; - let module = "/rust_mic_worklet.js"; - console::log_1(&format!("Loading mic worklet from {module:?}").into()); + let module = asset!("assets/rust_mic_worklet.js").to_string(); + info!("loading mic worklet from {module:?}"); audio_context - .audio_worklet()? - .add_module_with_options(module, &options)? + .audio_worklet() + .ey()? + .add_module_with_options(&module, &options) + .ey()? .into_future() - .await?; + .await + .ey()?; - let source = audio_context.create_media_stream_source(&stream)?; - let worklet_node = AudioWorkletNode::new(audio_context, "rust_mic_worklet")?; + let source = audio_context.create_media_stream_source(&stream).ey()?; + let worklet_node = AudioWorkletNode::new(audio_context, "rust_mic_worklet").ey()?; - let error: Closure = Closure::new(|e| console::error_1(&e)); + let encoder_error: Closure = + Closure::new(|e| error!("error encoding audio {:?}", e)); let download_buffer = std::cell::RefCell::new(Vec::new()); @@ -287,13 +266,13 @@ async fn create_encoder_worklet( }); let audio_encoder = AudioEncoder::new(&AudioEncoderInit::new( - error.as_ref().unchecked_ref(), + encoder_error.as_ref().unchecked_ref(), output.as_ref().unchecked_ref(), )) .unwrap(); // This is required to prevent these from being deallocated - error.forget(); + encoder_error.forget(); output.forget(); let encoder_config = AudioEncoderConfig::new("opus"); encoder_config.set_number_of_channels(1); @@ -301,7 +280,7 @@ async fn create_encoder_worklet( encoder_config.set_bitrate(72_000.0); audio_encoder.configure(&encoder_config); - console::log_1(&"Created Audio Encoder".into()); + info!("created audio encoder"); let download_buffer = std::cell::RefCell::new(Vec::new()); @@ -322,20 +301,25 @@ async fn create_encoder_worklet( audio_encoder.encode(&data); } Err(err) => { - console::error_1(&err); - console::debug_1(&event); + error!( + "error creating AudioData object {:?} during event {:?}", + err, event, + ); } } }); Reflect::set( - &Reflect::get(&worklet_node, &"port".into())?, + &Reflect::get(&worklet_node, &"port".into()).ey()?, &"onmessage".into(), onmessage.as_ref(), - )?; + ) + .ey()?; onmessage.forget(); - source.connect_with_audio_node(&worklet_node)?; - worklet_node.connect_with_audio_node(&audio_context.destination())?; + source.connect_with_audio_node(&worklet_node).ey()?; + worklet_node + .connect_with_audio_node(&audio_context.destination()) + .ey()?; Ok(worklet_node) } @@ -345,7 +329,7 @@ pub async fn network_connect( username: String, event_rx: &mut UnboundedReceiver, ) -> Result<(), Error> { - console::log_1(&"Rust via WASM!".into()); + info!("Rust via WASM!"); let object = web_sys::js_sys::Object::new(); @@ -353,37 +337,38 @@ pub async fn network_connect( &object, &JsValue::from_str("algorithm"), &JsValue::from_str("sha-256"), - )?; + ) + .ey()?; if let Some(server_hash) = &CONFIG.cert_hash { let hash = web_sys::js_sys::Uint8Array::from(server_hash.as_slice()); - web_sys::js_sys::Reflect::set(&object, &"value".into(), &hash)?; + web_sys::js_sys::Reflect::set(&object, &"value".into(), &hash).ey()?; } let array = web_sys::js_sys::Array::new(); array.push(&object); - console::log_1(&object.clone().into()); - console::log_1(&"Created option object!".into()); + debug!("created option object: {:?}", &object); let mut options = WebTransportOptions::new(); options.server_certificate_hashes(&array); - console::log_1(&"Created WebTransportOptions!".into()); + debug!("created WebTransportOptions"); - let transport = WebTransport::new_with_options(&address, &options)?; - console::log_1(&"Created WebTransport connection object.".into()); + let transport = WebTransport::new_with_options(&address, &options).ey()?; + debug!("created WebTransport connection object"); console::log_1(&transport.clone().into()); if let Err(e) = wasm_bindgen_futures::JsFuture::from(transport.ready()).await { bail!("could not connect to transport: {e:?}"); } - console::log_1(&"Transport is ready.".into()); + info!("transport is ready"); let stream: WebTransportBidirectionalStream = wasm_bindgen_futures::JsFuture::from(transport.create_bidirectional_stream()) - .await? + .await + .ey()? .into(); let wasm_stream_readable = wasm_streams::ReadableStream::from_raw(stream.readable().into()); @@ -397,7 +382,7 @@ pub async fn network_connect( let writer = asynchronous_codec::FramedWrite::new(wasm_stream_writable.into_async_write(), write_codec); - super::network_loop(username, event_rx, reader, writer).await + crate::network_loop(username, event_rx, reader, writer).await } pub fn set_default_username(username: &str) -> Option<()> { @@ -417,6 +402,33 @@ pub fn load_username() -> Option { .ok()? } -pub fn load_config() -> Option { +fn load_config_from_window() -> Option { serde_wasm_bindgen::from_value(Reflect::get(window()?.as_ref(), &"config".into()).ok()?).ok() } + +fn load_config_from_env() -> Option { + serde_json::from_str(option_env!("MUMBLE_WEB2_GUI_CONFIG")?).ok()? +} + +pub fn load_config() -> Option { + load_config_from_window().or_else(load_config_from_env) +} + +pub fn init_logging() { + // copied from tracing_web example usage + + use tracing_subscriber::fmt::format::Pretty; + use tracing_subscriber::prelude::*; + use tracing_web::{performance_layer, MakeWebConsoleWriter}; + + let fmt_layer = tracing_subscriber::fmt::layer() + .with_ansi(false) // Only partially supported across browsers + .without_time() // std::time is not available in browsers + .with_writer(MakeWebConsoleWriter::new()); // write events to the console + let perf_layer = performance_layer().with_details_from_fields(Pretty::default()); + + tracing_subscriber::registry() + .with(fmt_layer) + .with(perf_layer) + .init(); +} diff --git a/gui/src/lib.rs b/gui/src/lib.rs index fe70ffe..8ac3777 100644 --- a/gui/src/lib.rs +++ b/gui/src/lib.rs @@ -4,6 +4,7 @@ use app::ConnectionState; use app::STATE; use asynchronous_codec::FramedRead; use asynchronous_codec::FramedWrite; +use color_eyre::eyre::{bail, Error}; use dioxus::prelude::*; use futures::select; use futures::FutureExt as _; @@ -11,54 +12,35 @@ use futures::SinkExt as _; use futures::StreamExt as _; use futures_channel::mpsc::UnboundedSender; pub use imp::spawn; -pub use imp::Error; use mumble_protocol::control::msgs; use mumble_protocol::control::ControlCodec; use mumble_protocol::control::ControlPacket; use mumble_protocol::voice::VoicePacketPayload; use mumble_protocol::Clientbound; use mumble_protocol::Serverbound; +use mumble_web2_common::GuiConfig; use once_cell::sync::Lazy; -use serde::Deserialize; use std::collections::hash_map::Entry; use std::collections::HashMap; use std::time::Duration; +use tracing::debug; +use tracing::error; pub mod app; - -#[cfg(feature = "web")] -#[path = "imp/web.rs"] pub mod imp; -#[cfg(feature = "desktop")] -#[path = "imp/desktop.rs"] -pub mod imp; - -#[derive(Clone, Deserialize, Default)] -pub struct GuiConfig { - pub proxy_url: Option, - pub cert_hash: Option>, -} - pub static CONFIG: Lazy = Lazy::new(|| imp::load_config().unwrap_or_default()); -#[macro_export] -macro_rules! bail { - ($($x:tt)*) => { - return Err(Error::new(format!($($x)*))) - }; -} - pub async fn network_entrypoint(mut event_rx: UnboundedReceiver) { loop { let Some(Command::Connect { address, username }) = event_rx.next().await else { - panic!("Did not receive connect command") + panic!("did not receive connect command") }; *STATE.server.write() = Default::default(); *STATE.status.write() = ConnectionState::Connecting; if let Err(error) = imp::network_connect(address, username, &mut event_rx).await { - error.log(); + error!("could not connect {:?}", error); *STATE.status.write() = ConnectionState::Failed(error.to_string()); } else { *STATE.status.write() = ConnectionState::Disconnected; @@ -76,10 +58,10 @@ pub async fn network_loop( spawn(async move { while let Some(msg) = writer_recv_chan.next().await { if !matches!(msg, ControlPacket::Ping(_) | ControlPacket::UDPTunnel(_)) { - eprintln!("sending {:#?}", msg); + debug!("sending {:#?}", msg); } if let Err(e) = writer.send(msg).await { - eprintln!("ERROR: {}", e); + error!("error sending message {:?}", e); break; } } @@ -91,8 +73,7 @@ pub async fn network_loop( Some(Err(err)) => bail!("bad version packet: {err:?}"), None => bail!("no version was recieved"), }; - println!("Got version packet"); - println!("{:#?}", version); + debug!("got version packet {:#?}", version); // Send version packet let mut msg = msgs::Version::new(); @@ -136,28 +117,30 @@ pub async fn network_loop( match packet { Some(Ok(msg)) => { if !matches!(msg, ControlPacket::UDPTunnel(_) | ControlPacket::Ping(_)) { - println!("receiving {:#?}", msg); + debug!("receiving {:#?}", msg); } let res = accept_packet(msg, &mut audio, &mut decoder_map); if let Err(err) = res { - err.log(); + error!("error accepting packet {:?}", err) } }, - Some(Err(err)) => Error::from(err).log(), + Some(Err(err)) => { + error!("error receiving packet {:?}", err) + }, None => break, } } command = command_future => { command_future = event_rx.next(); if let Some(command) = &command { - println!("commanding {:#?}", command); + debug!("commanding {:#?}", command); } match command { Some(Command::Disconnect) => break, Some(command) => { let res = accept_command(command, &mut send_chan); if let Err(err) = res { - err.log(); + error!("error accepting command {:?}", err) } } None => continue,