From e7141ed237fb7de75f7bb7a0c19dbc1cebfb1711 Mon Sep 17 00:00:00 2001 From: SWangHash <88996709+SWangHash@users.noreply.github.com> Date: Sun, 16 Aug 2026 16:09:39 +0800 Subject: [PATCH] feat(ohos): adapt webdriver and floating window features - adapt WebDriver script runtime and capture behavior for HarmonyOS - fix toolbar mode native controls, geometry, and restore behavior --- Cargo.lock | 1704 ++++++++++++----- src/apps/desktop/capabilities/default.json | 7 - .../desktop/src/api/browser_control_api.rs | 2 +- .../main/ets/entryability/EntryAbility.ets | 37 +- .../webdriver/src/platform/capture.rs | 26 +- .../webdriver/src/platform/evaluator/mod.rs | 5 + .../adapters/webdriver/src/runtime/mod.rs | 25 +- .../adapters/webdriver/src/runtime/script.rs | 20 + .../webdriver/src/server/handlers/session.rs | 2 +- src/crates/assembly/core/Cargo.toml | 1 - .../src/appearance_market/client.rs | 1 + .../components/toolbar-mode/ToolbarMode.scss | 4 - .../toolbar-mode/ToolbarModeProvider.tsx | 33 +- .../toolbar-mode/toolbarModeWindowOps.ts | 4 +- 14 files changed, 1380 insertions(+), 491 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5b8850e053..392e8f9359 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -85,7 +85,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b957d8391ac3933e2a940446171c508d2b8ffc386d8fa7d0b9c936a2575b463e" dependencies = [ "anyhow", - "derive_more", + "derive_more 2.1.1", "schemars 1.2.2", "serde", "serde_json", @@ -550,17 +550,6 @@ dependencies = [ "zbus 5.18.0", ] -[[package]] -name = "auto-launch" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f012b8cc0c850f34117ec8252a44418f2e34a2cf501de89e29b241ae5f79471" -dependencies = [ - "dirs 4.0.0", - "thiserror 1.0.69", - "winreg 0.10.1", -] - [[package]] name = "autocfg" version = "1.5.1" @@ -888,7 +877,7 @@ dependencies = [ "keyring-core", "libc", "log", - "reqwest", + "reqwest 0.13.4", "serde", "serde_json", "sha2", @@ -1001,11 +990,10 @@ dependencies = [ "libc", "minisign-verify", "once_cell", - "portable-pty 0.8.1", - "portable-pty 0.9.0", + "portable-pty", "pulldown-cmark", "ratatui", - "reqwest", + "reqwest 0.13.4", "serde", "serde_json", "sha2", @@ -1084,14 +1072,21 @@ dependencies = [ "fs2", "futures", "hex", + "htmd", "image 0.25.10", "include_dir", "indexmap 2.14.0", + "lazy_static", + "legible", "log", "md5", + "napi-derive-ohos", + "napi-ohos", "notify", + "once_cell", + "parking_lot", "regex", - "reqwest", + "reqwest 0.13.4", "rusqlite", "semver", "serde", @@ -1099,10 +1094,12 @@ dependencies = [ "serde_yaml", "sha2", "similar", + "tauri", "tempfile", "terminal-core", "thiserror 2.0.19", "tokio", + "tokio-stream", "tokio-tungstenite", "tokio-util", "tool-runtime", @@ -1128,6 +1125,7 @@ dependencies = [ "alloc-no-stdlib", "alloc-stdlib", "anyhow", + "arboard", "async-trait", "atspi", "axum", @@ -1163,12 +1161,14 @@ dependencies = [ "leptess", "libc", "log", + "napi-derive-ohos", + "napi-ohos", "objc2 0.6.4", "objc2-app-kit", "objc2-foundation", "objc2-vision", "regex", - "reqwest", + "reqwest 0.13.4", "resvg", "screenshots", "semver", @@ -1180,15 +1180,10 @@ dependencies = [ "tar", "tauri", "tauri-build", - "tauri-plugin-autostart", - "tauri-plugin-dialog", "tauri-plugin-fs", + "tauri-plugin-global-shortcut", "tauri-plugin-log", - "tauri-plugin-notification", "tauri-plugin-opener", - "tauri-plugin-single-instance", - "tauri-plugin-updater", - "tauri-plugin-window-state", "tempfile", "thiserror 2.0.19", "time", @@ -1279,7 +1274,7 @@ dependencies = [ "hex", "image 0.25.10", "rand 0.8.7", - "reqwest", + "reqwest 0.13.4", "semver", "serde", "serde_json", @@ -1333,6 +1328,7 @@ dependencies = [ "serde", "serde_json", "thiserror 2.0.19", + "tokio", ] [[package]] @@ -1593,7 +1589,7 @@ dependencies = [ "qrcode", "rand 0.8.7", "regex", - "reqwest", + "reqwest 0.13.4", "rmcp", "russh", "russh-keys", @@ -1610,6 +1606,7 @@ dependencies = [ "sse-stream", "ssh_config", "tar", + "tauri", "tempfile", "terminal-core", "thiserror 2.0.19", @@ -1652,7 +1649,7 @@ dependencies = [ "hex", "hmac", "image 0.25.10", - "reqwest", + "reqwest 0.13.4", "semver", "serde", "serde_json", @@ -1736,6 +1733,18 @@ dependencies = [ "windows-core 0.61.2", ] +[[package]] +name = "bitvec" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddcec3d12c579d40898fe0a9a358a803c23e9c52ca3c425707f81c9436211837" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + [[package]] name = "blake2" version = "0.10.6" @@ -1814,6 +1823,30 @@ dependencies = [ "cipher", ] +[[package]] +name = "borsh" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a88b7ea17d208c4193f2c1e6de3c35fe71f98c96982d5ced308bdcc749ff6e1f" +dependencies = [ + "borsh-derive", + "bytes", + "cfg_aliases 0.2.2", +] + +[[package]] +name = "borsh-derive" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8f347189c62a579b8cd5f80714efa178f52e461dc2e6d701d264f5ff22e566c" +dependencies = [ + "once_cell", + "proc-macro-crate 3.5.0", + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "brotli" version = "8.0.4" @@ -1861,6 +1894,40 @@ version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" +[[package]] +name = "byte-unit" +version = "5.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a813de7f2bbedb7dce265b64f1cf5908ebe4d56281ece8d847e98113788b9b0" +dependencies = [ + "rust_decimal", + "schemars 1.2.2", + "serde", + "utf8-width", +] + +[[package]] +name = "bytecheck" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "bytemuck" version = "1.25.2" @@ -2322,6 +2389,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + [[package]] name = "convert_case" version = "0.6.0" @@ -2340,6 +2413,15 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "convert_case" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "affbf0190ed2caf063e3def54ff444b449371d55c58e513a95ab98eca50adb49" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "cookie" version = "0.18.1" @@ -2593,6 +2675,23 @@ dependencies = [ "typenum", ] +[[package]] +name = "cssparser" +version = "0.29.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93d03419cb5950ccfd3daf3ff1c7a36ace64609a1a8746d493df1ca0afde0fa" +dependencies = [ + "cssparser-macros 0.6.1", + "dtoa-short", + "itoa", + "matches", + "phf 0.10.1", + "proc-macro2", + "quote", + "smallvec", + "syn 1.0.109", +] + [[package]] name = "cssparser" version = "0.36.0" @@ -2660,12 +2759,38 @@ dependencies = [ "memchr", ] +[[package]] +name = "ctor" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" +dependencies = [ + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ctor" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "352d39c2f7bef1d6ad73db6f5160efcaed66d94ef8c6c573a8410c00bf909a98" +dependencies = [ + "ctor-proc-macro", + "dtor", +] + [[package]] name = "ctor" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9bb72bb94fdc1bd619f4c18cc91ecf6302aeb333d31b3c6ec0bb841cd920209" +[[package]] +name = "ctor-proc-macro" +version = "0.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52560adf09603e58c9a7ee1fe1dcb95a16927b17c127f0ac02d6e768a0e25bc1" + [[package]] name = "ctr" version = "0.9.2" @@ -2936,6 +3061,19 @@ dependencies = [ "syn 2.0.119", ] +[[package]] +name = "derive_more" +version = "0.99.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" +dependencies = [ + "convert_case 0.4.0", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.119", +] + [[package]] name = "derive_more" version = "2.1.1" @@ -3123,6 +3261,21 @@ dependencies = [ "tendril 0.4.3", ] +[[package]] +name = "dom_query" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521e380c0c8afb8d9a1e83a1822ee03556fc3e3e7dbc1fd30be14e37f9cb3f89" +dependencies = [ + "bit-set", + "cssparser 0.36.0", + "foldhash 0.2.0", + "html5ever 0.38.0", + "precomputed-hash", + "selectors 0.36.1", + "tendril 0.5.1", +] + [[package]] name = "dom_query" version = "0.28.0" @@ -3180,6 +3333,21 @@ dependencies = [ "dtoa", ] +[[package]] +name = "dtor" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1057d6c64987086ff8ed0fd3fbf377a6b7d205cc7715868cd401705f715cbe4" +dependencies = [ + "dtor-proc-macro", +] + +[[package]] +name = "dtor-proc-macro" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f678cf4a922c215c63e0de95eb1ff08a958a81d47e485cf9da1e27bf6305cfa5" + [[package]] name = "dunce" version = "1.0.5" @@ -3750,6 +3918,12 @@ dependencies = [ "libc", ] +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + [[package]] name = "futf" version = "0.1.5" @@ -4014,6 +4188,17 @@ dependencies = [ "windows-link 0.2.1", ] +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + [[package]] name = "getrandom" version = "0.2.17" @@ -4023,7 +4208,7 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi", + "wasi 0.11.1+wasi-snapshot-preview1", "wasm-bindgen", ] @@ -4194,6 +4379,24 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b" +[[package]] +name = "global-hotkey" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9247516746aa8e53411a0db9b62b0e24efbcf6a76e0ba73e5a91b512ddabed7" +dependencies = [ + "crossbeam-channel", + "keyboard-types", + "objc2 0.6.4", + "objc2-app-kit", + "once_cell", + "serde", + "thiserror 2.0.19", + "windows-sys 0.59.0", + "x11rb", + "xkeysym", +] + [[package]] name = "globset" version = "0.4.19" @@ -4518,6 +4721,18 @@ dependencies = [ "phf 0.13.1", ] +[[package]] +name = "html5ever" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b7410cae13cbc75623c98ac4cbfd1f0bedddf3227afc24f370cf0f50a44a11c" +dependencies = [ + "log", + "mac", + "markup5ever 0.14.1", + "match_token", +] + [[package]] name = "html5ever" version = "0.36.1" @@ -4687,9 +4902,9 @@ dependencies = [ [[package]] name = "ico" -version = "0.5.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e795dff5605e0f04bff85ca41b51a96b83e80b281e96231bcaaf1ac35103371" +checksum = "cc50b891e4acf8fe0e71ef88ec43ad82ee07b3810ad09de10f1d01f072ed4b98" dependencies = [ "byteorder", "png 0.17.16", @@ -4943,15 +5158,6 @@ dependencies = [ "cfb 0.7.3", ] -[[package]] -name = "infer" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4200d433cbd5178df7797c9c2e75b348b728e39631cf14520d1e2fc424201f4" -dependencies = [ - "cfb 0.14.0", -] - [[package]] name = "inotify" version = "0.11.4" @@ -5025,15 +5231,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "ioctl-rs" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7970510895cee30b3e9128319f2cefd4bde883a39f38baa279567ba3a7eb97d" -dependencies = [ - "libc", -] - [[package]] name = "ipnet" version = "2.12.0" @@ -5281,24 +5478,12 @@ version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" dependencies = [ - "jsonptr 0.6.3", + "jsonptr", "serde", "serde_json", "thiserror 1.0.69", ] -[[package]] -name = "json-patch" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7421438de105a0827e44fadd05377727847d717c80ce29a229f85fd04c427b72" -dependencies = [ - "jsonptr 0.7.1", - "serde", - "serde_json", - "thiserror 2.0.19", -] - [[package]] name = "jsonptr" version = "0.6.3" @@ -5309,16 +5494,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "jsonptr" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5a3cc660ba5d72bce0b3bb295bf20847ccbb40fd423f3f05b61273672e561fe" -dependencies = [ - "serde", - "serde_json", -] - [[package]] name = "jsonrpcmsg" version = "0.1.2" @@ -5384,6 +5559,18 @@ dependencies = [ "libc", ] +[[package]] +name = "kuchikiki" +version = "0.8.8-speedreader" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02cb977175687f33fa4afa0c95c112b987ea1443e5a51c8f8ff27dc618270cc2" +dependencies = [ + "cssparser 0.29.6", + "html5ever 0.29.1", + "indexmap 2.14.0", + "selectors 0.24.0", +] + [[package]] name = "kurbo" version = "0.13.1" @@ -5538,6 +5725,16 @@ dependencies = [ "windows-link 0.2.1", ] +[[package]] +name = "libloading" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "754ca22de805bb5744484a5b151a9e1a8e837d5dc232c2d7d8c2e3492edc8b60" +dependencies = [ + "cfg-if", + "windows-link 0.2.1", +] + [[package]] name = "libm" version = "0.2.16" @@ -5635,6 +5832,9 @@ name = "log" version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" +dependencies = [ + "value-bag", +] [[package]] name = "lopdf" @@ -5699,20 +5899,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" -[[package]] -name = "mac-notification-sys" -version = "0.6.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd604973958ddcc11b561193c0fb96ba146506ef2f231ef2e7c35fd2cbc9beca" -dependencies = [ - "cc", - "log", - "objc2 0.6.4", - "objc2-foundation", - "time", - "uuid", -] - [[package]] name = "mac_address" version = "1.1.8" @@ -5732,6 +5918,20 @@ dependencies = [ "libc", ] +[[package]] +name = "markup5ever" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a7213d12e1864c0f002f52c2923d4556935a43dec5e71355c2760e0f6e7a18" +dependencies = [ + "log", + "phf 0.11.3", + "phf_codegen 0.11.3", + "string_cache 0.8.9", + "string_cache_codegen 0.5.4", + "tendril 0.4.3", +] + [[package]] name = "markup5ever" version = "0.36.1" @@ -5778,14 +5978,31 @@ dependencies = [ ] [[package]] -name = "matchers" -version = "0.2.0" +name = "match_token" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b" dependencies = [ - "regex-automata", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "matchers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +dependencies = [ + "regex-automata", ] +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + [[package]] name = "matchit" version = "0.8.4" @@ -5841,15 +6058,6 @@ dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.7.1" @@ -5923,7 +6131,7 @@ checksum = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427" dependencies = [ "libc", "log", - "wasi", + "wasi 0.11.1+wasi-snapshot-preview1", "windows-sys 0.61.2", ] @@ -5939,9 +6147,9 @@ dependencies = [ [[package]] name = "muda" -version = "0.19.3" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd04e60bc0b07438a6771710ee1698f98f6ebbc7f89b61264af1563b8aeb878" +checksum = "7c9fec5a4e89860383d778d10563a605838f8f0b2f9303868937e5ff32e86177" dependencies = [ "crossbeam-channel", "dpi", @@ -5952,10 +6160,67 @@ dependencies = [ "objc2-core-foundation", "objc2-foundation", "once_cell", - "png 0.18.1", + "png 0.17.16", "serde", "thiserror 2.0.19", - "windows-sys 0.61.2", + "windows-sys 0.60.2", +] + +[[package]] +name = "napi-build-ohos" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617bcd176a3dc3d96c0acad112a482f592242d6fba6773a9eb8d90e042a35260" + +[[package]] +name = "napi-derive-backend-ohos" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b06bf282ab442eed04c89f8a833bd06d4cf22f18654f50d848449db9e94438a" +dependencies = [ + "convert_case 0.11.0", + "proc-macro2", + "quote", + "semver", + "syn 2.0.119", +] + +[[package]] +name = "napi-derive-ohos" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "419b1721d9f21d76c1a5cb38e2628211cb786b5efb9e1dd2fc049ba1cb938e47" +dependencies = [ + "convert_case 0.11.0", + "ctor 1.0.11", + "napi-derive-backend-ohos", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "napi-ohos" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe1a014105134b7889e85f5ab6f8ec5240db43ed37e6c4a38bd7b4a164b345e0" +dependencies = [ + "bitflags 2.11.1", + "ctor 1.0.11", + "futures", + "napi-build-ohos", + "napi-sys-ohos", + "nohash-hasher", + "rustc-hash 2.1.3", +] + +[[package]] +name = "napi-sys-ohos" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "266964b97e57f3ca023ed13e7c78d4c8f3900aa00466bbeb8cb7746653cabc5f" +dependencies = [ + "libloading 0.9.0", ] [[package]] @@ -5973,12 +6238,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "ndk-context" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" - [[package]] name = "ndk-sys" version = "0.6.0+11769913" @@ -6023,20 +6282,6 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" -[[package]] -name = "nix" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset 0.6.5", - "pin-utils", -] - [[package]] name = "nix" version = "0.26.4" @@ -6075,6 +6320,18 @@ dependencies = [ "memoffset 0.9.1", ] +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + [[package]] name = "nom" version = "7.1.3" @@ -6118,20 +6375,6 @@ dependencies = [ "windows-sys 0.60.2", ] -[[package]] -name = "notify-rust" -version = "4.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5b4c1b4f2aa9f25f63a7a49d3dd0ed567b3670da15330a66b29434be899b891" -dependencies = [ - "futures-lite", - "log", - "mac-notification-sys", - "serde", - "tauri-winrt-notification", - "zbus 5.18.0", -] - [[package]] name = "notify-types" version = "2.1.0" @@ -6340,10 +6583,17 @@ checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ "bitflags 2.11.1", "block2 0.6.2", + "libc", "objc2 0.6.4", + "objc2-cloud-kit", + "objc2-core-data", "objc2-core-foundation", "objc2-core-graphics", + "objc2-core-image", + "objc2-core-text", + "objc2-core-video", "objc2-foundation", + "objc2-quartz-core", ] [[package]] @@ -6363,6 +6613,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" dependencies = [ + "bitflags 2.11.1", "objc2 0.6.4", "objc2-foundation", ] @@ -6425,6 +6676,19 @@ dependencies = [ "objc2-core-graphics", ] +[[package]] +name = "objc2-core-video" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" +dependencies = [ + "bitflags 2.11.1", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-io-surface", +] + [[package]] name = "objc2-encode" version = "4.1.0" @@ -6479,15 +6743,13 @@ dependencies = [ ] [[package]] -name = "objc2-osa-kit" +name = "objc2-javascript-core" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f112d1746737b0da274ef79a23aac283376f335f4095a083a267a082f21db0c0" +checksum = "2a1e6550c4caed348956ce3370c9ffeca70bb1dbed4fa96112e7c6170e074586" dependencies = [ - "bitflags 2.11.1", "objc2 0.6.4", - "objc2-app-kit", - "objc2-foundation", + "objc2-core-foundation", ] [[package]] @@ -6502,6 +6764,17 @@ dependencies = [ "objc2-foundation", ] +[[package]] +name = "objc2-security" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709fe137109bd1e8b5a99390f77a7d8b2961dafc1a1c5db8f2e60329ad6d895a" +dependencies = [ + "bitflags 2.11.1", + "objc2 0.6.4", + "objc2-core-foundation", +] + [[package]] name = "objc2-ui-kit" version = "0.3.2" @@ -6556,6 +6829,162 @@ dependencies = [ "objc2-app-kit", "objc2-core-foundation", "objc2-foundation", + "objc2-javascript-core", + "objc2-security", +] + +[[package]] +name = "ohos-arkui-binding" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9352f0db69271fc23fb565ad1f034c2118a9ea9c727ece344834b451fe2c2865" +dependencies = [ + "bitflags 2.11.1", + "napi-ohos", + "napi-sys-ohos", + "ohos-arkui-sys", + "ohos-xcomponent-binding", + "ohos-xcomponent-sys", + "ohos_enum_macro 0.0.2", +] + +[[package]] +name = "ohos-arkui-sys" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a19176486bbe46d33830aca4213b07bb46c745200118e57106639db4962e1c3" +dependencies = [ + "napi-sys-ohos", +] + +[[package]] +name = "ohos-display-binding" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "157fe09232fd0af55ed9207d30b47a5f5ff7f84a0673a3b47f65acb7bbc9b8a9" +dependencies = [ + "ohos-display-sys", + "ohos_enum_macro 0.0.1", +] + +[[package]] +name = "ohos-display-sys" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe9e1bba4d94159d0a65f1b4e748c148d4bce7930912c424522693f1837dad77" + +[[package]] +name = "ohos-ime-binding" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b69f3e94816c243aaba0e55f230f87edc19e33c0f9397bfa56c64acb54f776a" +dependencies = [ + "ohos-input-method-sys", + "ohos_enum_macro 0.1.0", +] + +[[package]] +name = "ohos-input-method-sys" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225be105b169f45a2bca86498988c1877568d82542c013b345d605eb915e48ae" + +[[package]] +name = "ohos-resource-manager-binding" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33793d5fc06cf356b3d25aa6228785e62c9f2a0e913a2c285b1eb8efb7185b5e" +dependencies = [ + "napi-ohos", + "ohos-resource-manager-sys", +] + +[[package]] +name = "ohos-resource-manager-sys" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97398d3f86b80279f062bd872e04be851fc9e0eb1dba4dcaabef872201517ff6" +dependencies = [ + "napi-sys-ohos", +] + +[[package]] +name = "ohos-web-binding" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1ed1f2ba96b92179128f6b18ea5a0dd879210e483f7dcab51200219cbfa4a58" +dependencies = [ + "bitflags 2.11.1", + "ohos-web-sys", + "ohos_enum_macro 0.0.2", +] + +[[package]] +name = "ohos-web-sys" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa646f3223c2bc90a400641c3a5cda4b350387ffda1a904b8bfb3db92b81ecbc" + +[[package]] +name = "ohos-xcomponent-binding" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5a9bb0fd157dc702863fe6b5e15b91a4ffdc08b4c47d57d080adcc73c36fa8" +dependencies = [ + "napi-derive-ohos", + "napi-ohos", + "napi-sys-ohos", + "ohos-xcomponent-sys", + "ohos_enum_macro 0.0.2", + "raw-window-handle", +] + +[[package]] +name = "ohos-xcomponent-sys" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5613209329ff61bc8695871ef985d57fc59ea4d55263e2c2395d8810d063575e" +dependencies = [ + "ohos-arkui-sys", +] + +[[package]] +name = "ohos_enum_macro" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0ee769776099c824423d1686e21b5fd13b464d374d60f7cc25c48c1c836ede1" +dependencies = [ + "convert_case 0.6.0", + "proc-macro2", + "quote", + "regex", + "syn 2.0.119", +] + +[[package]] +name = "ohos_enum_macro" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4bacd60b52be93024c446f27645d795ab71eb2243bb4c5d87b6238a35341fbd" +dependencies = [ + "convert_case 0.6.0", + "proc-macro2", + "quote", + "regex", + "syn 2.0.119", +] + +[[package]] +name = "ohos_enum_macro" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fc1544b50988de3d636f971135e66c40479ef68e30ef09b15fb911763aab077" +dependencies = [ + "convert_case 0.6.0", + "proc-macro2", + "quote", + "regex", + "syn 2.0.119", ] [[package]] @@ -6609,6 +7038,33 @@ dependencies = [ "libc", ] +[[package]] +name = "openharmony-ability" +version = "0.3.0" +source = "git+https://github.com/harmony-contrib/openharmony-ability.git?rev=295a276a699ba2352addc69b8cacb6acd3be6ab1#295a276a699ba2352addc69b8cacb6acd3be6ab1" +dependencies = [ + "futures-channel", + "http", + "napi-derive-ohos", + "napi-ohos", + "ohos-arkui-binding", + "ohos-display-binding", + "ohos-ime-binding", + "ohos-resource-manager-binding", + "ohos-web-binding", + "ohos-xcomponent-binding", +] + +[[package]] +name = "openharmony-ability-derive" +version = "0.3.0" +source = "git+https://github.com/harmony-contrib/openharmony-ability.git?rev=295a276a699ba2352addc69b8cacb6acd3be6ab1#295a276a699ba2352addc69b8cacb6acd3be6ab1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "openssl-probe" version = "0.1.6" @@ -6669,20 +7125,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "osakit" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "732c71caeaa72c065bb69d7ea08717bd3f4863a4f451402fc9513e29dbd5261b" -dependencies = [ - "objc2 0.6.4", - "objc2-foundation", - "objc2-osa-kit", - "serde", - "serde_json", - "thiserror 2.0.19", -] - [[package]] name = "outref" version = "0.5.2" @@ -7277,6 +7719,36 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +[[package]] +name = "phf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" +dependencies = [ + "phf_shared 0.8.0", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_macros 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", +] + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros 0.11.3", + "phf_shared 0.11.3", +] + [[package]] name = "phf" version = "0.12.1" @@ -7308,6 +7780,26 @@ dependencies = [ "serde", ] +[[package]] +name = "phf_codegen" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", +] + +[[package]] +name = "phf_codegen" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", +] + [[package]] name = "phf_codegen" version = "0.13.1" @@ -7318,6 +7810,36 @@ dependencies = [ "phf_shared 0.13.1", ] +[[package]] +name = "phf_generator" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" +dependencies = [ + "phf_shared 0.8.0", + "rand 0.7.3", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared 0.10.0", + "rand 0.8.7", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared 0.11.3", + "rand 0.8.7", +] + [[package]] name = "phf_generator" version = "0.13.1" @@ -7338,30 +7860,84 @@ dependencies = [ "phf_shared 0.14.0", ] +[[package]] +name = "phf_macros" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "phf_macros" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" dependencies = [ - "phf_generator 0.13.1", - "phf_shared 0.13.1", - "proc-macro2", - "quote", - "syn 2.0.119", + "phf_generator 0.13.1", + "phf_shared 0.13.1", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "phf_macros" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fa8d0ca26d424d27630da600c6624696e7dec8bf7b3b492b383c5dc49e5e085" +dependencies = [ + "phf_generator 0.14.0", + "phf_shared 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "phf_shared" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" +dependencies = [ + "siphasher 0.3.11", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher 0.3.11", ] [[package]] -name = "phf_macros" -version = "0.14.0" +name = "phf_shared" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fa8d0ca26d424d27630da600c6624696e7dec8bf7b3b492b383c5dc49e5e085" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ - "phf_generator 0.14.0", - "phf_shared 0.14.0", - "proc-macro2", - "quote", - "syn 2.0.119", + "siphasher 1.0.3", ] [[package]] @@ -7370,7 +7946,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06005508882fb681fd97892ecff4b7fd0fee13ef1aa569f8695dae7ab9099981" dependencies = [ - "siphasher", + "siphasher 1.0.3", ] [[package]] @@ -7379,7 +7955,7 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" dependencies = [ - "siphasher", + "siphasher 1.0.3", ] [[package]] @@ -7388,7 +7964,7 @@ version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6fd9027e2d9319be6349febd1db4e8d02aa544921200c9b777720ac34a3aa89" dependencies = [ - "siphasher", + "siphasher 1.0.3", ] [[package]] @@ -7584,27 +8160,6 @@ dependencies = [ "portable-atomic", ] -[[package]] -name = "portable-pty" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806ee80c2a03dbe1a9fb9534f8d19e4c0546b790cde8fd1fea9d6390644cb0be" -dependencies = [ - "anyhow", - "bitflags 1.3.2", - "downcast-rs", - "filedescriptor", - "lazy_static", - "libc", - "log", - "nix 0.25.1", - "serial", - "shared_library", - "shell-words", - "winapi", - "winreg 0.10.1", -] - [[package]] name = "portable-pty" version = "0.9.0" @@ -7730,6 +8285,12 @@ dependencies = [ "version_check", ] +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + [[package]] name = "proc-macro2" version = "1.0.107" @@ -7739,6 +8300,26 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "pulldown-cmark" version = "0.11.3" @@ -7862,7 +8443,7 @@ dependencies = [ "getrandom 0.4.3", "lru-slab", "rand 0.10.2", - "rand_pcg", + "rand_pcg 0.10.2", "ring", "rustc-hash 2.1.3", "rustls", @@ -7909,6 +8490,26 @@ version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", + "rand_pcg 0.2.1", +] + [[package]] name = "rand" version = "0.8.7" @@ -7941,6 +8542,16 @@ dependencies = [ "rand_core 0.10.1", ] +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + [[package]] name = "rand_chacha" version = "0.3.1" @@ -7961,6 +8572,15 @@ dependencies = [ "rand_core 0.9.5", ] +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + [[package]] name = "rand_core" version = "0.6.4" @@ -7985,6 +8605,24 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_pcg" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" +dependencies = [ + "rand_core 0.5.1", +] + [[package]] name = "rand_pcg" version = "0.10.2" @@ -8159,6 +8797,50 @@ version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" +[[package]] +name = "rend" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "reqwest" +version = "0.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams 0.4.2", + "web-sys", +] + [[package]] name = "reqwest" version = "0.13.4" @@ -8198,7 +8880,7 @@ dependencies = [ "url", "wasm-bindgen", "wasm-bindgen-futures", - "wasm-streams", + "wasm-streams 0.5.0", "web-sys", ] @@ -8226,30 +8908,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "rfd" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15ad77d9e70a92437d8f74c35d99b4e4691128df018833e99f90bcd36152672" -dependencies = [ - "block2 0.6.2", - "dispatch2", - "glib-sys", - "gobject-sys", - "gtk-sys", - "js-sys", - "log", - "objc2 0.6.4", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation", - "raw-window-handle", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "windows-sys 0.60.2", -] - [[package]] name = "rgb" version = "0.8.53" @@ -8273,6 +8931,35 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "rkyv" +version = "0.7.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2297bf9c81a3f0dc96bc9521370b88f054168c29826a75e89c55ff196e7ed6a1" +dependencies = [ + "bitvec", + "bytecheck", + "bytes", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84d7b42d4b8d06048d3ac8db0eb31bcb942cbeb709f0b5f2b2ebde398d3038f5" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "rmcp" version = "1.8.0" @@ -8287,7 +8974,7 @@ dependencies = [ "oauth2", "pastey", "pin-project-lite", - "reqwest", + "reqwest 0.13.4", "rmcp-macros", "schemars 1.2.2", "serde", @@ -8569,6 +9256,23 @@ dependencies = [ "ordered-multimap", ] +[[package]] +name = "rust_decimal" +version = "1.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be2a24f50780bc85f09cc6ac299bdf1424302742d77221106859c9d8b102126a" +dependencies = [ + "arrayvec", + "borsh", + "bytes", + "num-traits", + "rand 0.8.7", + "rkyv", + "serde", + "serde_json", + "wasm-bindgen", +] + [[package]] name = "rustc-hash" version = "1.1.0" @@ -8839,6 +9543,12 @@ dependencies = [ "sha2", ] +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + [[package]] name = "sec1" version = "0.7.3" @@ -8895,6 +9605,24 @@ dependencies = [ "libc", ] +[[package]] +name = "selectors" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c37578180969d00692904465fb7f6b3d50b9a2b952b87c23d0e2e5cb5013416" +dependencies = [ + "bitflags 1.3.2", + "cssparser 0.29.6", + "derive_more 0.99.20", + "fxhash", + "log", + "phf 0.8.0", + "phf_codegen 0.8.0", + "precomputed-hash", + "servo_arc 0.2.0", + "smallvec", +] + [[package]] name = "selectors" version = "0.35.0" @@ -8903,14 +9631,33 @@ checksum = "93fdfed56cd634f04fe8b9ddf947ae3dc493483e819593d2ba17df9ad05db8b2" dependencies = [ "bitflags 2.11.1", "cssparser 0.36.0", - "derive_more", + "derive_more 2.1.1", + "log", + "new_debug_unreachable", + "phf 0.13.1", + "phf_codegen 0.13.1", + "precomputed-hash", + "rustc-hash 2.1.3", + "servo_arc 0.4.3", + "smallvec", +] + +[[package]] +name = "selectors" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5d9c0c92a92d33f08817311cf3f2c29a3538a8240e94a6a3c622ce652d7e00c" +dependencies = [ + "bitflags 2.11.1", + "cssparser 0.36.0", + "derive_more 2.1.1", "log", "new_debug_unreachable", "phf 0.13.1", - "phf_codegen", + "phf_codegen 0.13.1", "precomputed-hash", "rustc-hash 2.1.3", - "servo_arc", + "servo_arc 0.4.3", "smallvec", ] @@ -8922,14 +9669,14 @@ checksum = "8adfa1c298912827b8a28b223b3b874357397ae706e6190acd9bf28cee99114d" dependencies = [ "bitflags 2.11.1", "cssparser 0.37.0", - "derive_more", + "derive_more 2.1.1", "log", "new_debug_unreachable", "phf 0.13.1", - "phf_codegen", + "phf_codegen 0.13.1", "precomputed-hash", "rustc-hash 2.1.3", - "servo_arc", + "servo_arc 0.4.3", "smallvec", ] @@ -9148,48 +9895,6 @@ dependencies = [ "unsafe-libyaml", ] -[[package]] -name = "serial" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1237a96570fc377c13baa1b88c7589ab66edced652e43ffb17088f003db3e86" -dependencies = [ - "serial-core", - "serial-unix", - "serial-windows", -] - -[[package]] -name = "serial-core" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f46209b345401737ae2125fe5b19a77acce90cd53e1658cda928e4fe9a64581" -dependencies = [ - "libc", -] - -[[package]] -name = "serial-unix" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f03fbca4c9d866e24a459cbca71283f545a37f8e3e002ad8c70593871453cab7" -dependencies = [ - "ioctl-rs", - "libc", - "serial-core", - "termios", -] - -[[package]] -name = "serial-windows" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c6d3b776267a75d31bbdfd5d36c0ca051251caafc285827052bc53bcdc8162" -dependencies = [ - "libc", - "serial-core", -] - [[package]] name = "serial2" version = "0.2.37" @@ -9223,6 +9928,16 @@ dependencies = [ "syn 2.0.119", ] +[[package]] +name = "servo_arc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52aa42f8fdf0fed91e5ce7f23d8138441002fa31dca008acf47e6fd4721f741" +dependencies = [ + "nodrop", + "stable_deref_trait", +] + [[package]] name = "servo_arc" version = "0.4.3" @@ -9400,6 +10115,12 @@ dependencies = [ "log", ] +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + [[package]] name = "siphasher" version = "1.0.3" @@ -9702,7 +10423,20 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" dependencies = [ - "float-cmp", + "float-cmp", +] + +[[package]] +name = "string_cache" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared 0.11.3", + "precomputed-hash", + "serde", ] [[package]] @@ -9718,6 +10452,18 @@ dependencies = [ "serde", ] +[[package]] +name = "string_cache_codegen" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", + "proc-macro2", + "quote", +] + [[package]] name = "string_cache_codegen" version = "0.6.1" @@ -9803,7 +10549,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "695b5790b3131dafa99b3bbfd25a216edb3d216dad9ca208d4657bfb8f2abc3d" dependencies = [ "kurbo", - "siphasher", + "siphasher 1.0.3", ] [[package]] @@ -9924,16 +10670,14 @@ dependencies = [ [[package]] name = "tao" -version = "0.36.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9fa4618f999c4249db1681cba0a19b890718f274de7fa93c445d46bd3a8a999" +version = "0.35.3" +source = "git+https://github.com/richerfu/tao?branch=feat-ohos-webview#9d51be24a7189f80407f12c322c95fccde98e215" dependencies = [ "bitflags 2.11.1", "block2 0.6.2", "core-foundation 0.10.1", "core-graphics 0.25.0", "crossbeam-channel", - "dbus", "dispatch2", "dlopen2", "dpi", @@ -9944,17 +10688,18 @@ dependencies = [ "libc", "log", "ndk", - "ndk-context", "ndk-sys", "objc2 0.6.4", "objc2-app-kit", "objc2-foundation", "objc2-ui-kit", "once_cell", + "openharmony-ability", + "openharmony-ability-derive", "parking_lot", "percent-encoding", "raw-window-handle", - "tao-macros", + "tao-macros 0.1.3", "unicode-segmentation", "url", "windows 0.61.3", @@ -9963,6 +10708,16 @@ dependencies = [ "x11-dl", ] +[[package]] +name = "tao-macros" +version = "0.1.3" +source = "git+https://github.com/richerfu/tao?branch=feat-ohos-webview#9d51be24a7189f80407f12c322c95fccde98e215" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "tao-macros" version = "0.1.4" @@ -9974,6 +10729,12 @@ dependencies = [ "syn 2.0.119", ] +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + [[package]] name = "tar" version = "0.4.46" @@ -9993,9 +10754,8 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tauri" -version = "2.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "667b20e2726d572dea2de7370da16e188eb06008faf9a92fab7cdc46791190b5" +version = "2.8.5" +source = "git+https://github.com/richerfu/tauri?branch=feat%2Fopen-harmony#c818cc1de4eae70a14273cf8a4f81283987a42b7" dependencies = [ "anyhow", "bytes", @@ -10018,10 +10778,12 @@ dependencies = [ "objc2-foundation", "objc2-ui-kit", "objc2-web-kit", + "openharmony-ability", + "openharmony-ability-derive", "percent-encoding", "plist", "raw-window-handle", - "reqwest", + "reqwest 0.12.28", "serde", "serde_json", "serde_repr", @@ -10031,11 +10793,12 @@ dependencies = [ "tauri-macros", "tauri-runtime", "tauri-runtime-wry", - "tauri-utils", + "tauri-utils 2.7.0", "thiserror 2.0.19", "tokio", "tray-icon", "url", + "urlpattern", "webkit2gtk", "webview2-com", "window-vibrancy", @@ -10044,35 +10807,35 @@ dependencies = [ [[package]] name = "tauri-build" -version = "2.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc9ce40b16101cb6ea63d3e221567affd1c3a9205f95d7bc574941a10636b632" +version = "2.4.1" +source = "git+https://github.com/richerfu/tauri?branch=feat%2Fopen-harmony#c818cc1de4eae70a14273cf8a4f81283987a42b7" dependencies = [ "anyhow", "cargo_toml", "dirs 6.0.0", "glob", "heck 0.5.0", - "json-patch 3.0.1", + "json-patch", + "napi-build-ohos", "schemars 0.8.22", "semver", "serde", "serde_json", - "tauri-utils", + "tauri-utils 2.7.0", "tauri-winres", + "toml 0.9.12+spec-1.1.0", "walkdir", ] [[package]] name = "tauri-codegen" -version = "2.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08279169ff42f8fc45a1dbc9dcae888893ba95288142e5880c59b93a26d2cfc5" +version = "2.4.0" +source = "git+https://github.com/richerfu/tauri?branch=feat%2Fopen-harmony#c818cc1de4eae70a14273cf8a4f81283987a42b7" dependencies = [ "base64 0.22.1", "brotli", "ico", - "json-patch 3.0.1", + "json-patch", "plist", "png 0.17.16", "proc-macro2", @@ -10082,7 +10845,7 @@ dependencies = [ "serde_json", "sha2", "syn 2.0.119", - "tauri-utils", + "tauri-utils 2.7.0", "thiserror 2.0.19", "time", "url", @@ -10092,16 +10855,15 @@ dependencies = [ [[package]] name = "tauri-macros" -version = "2.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8b394794f399a421811d06966343e7933fcae92d59f5180b9388d1174497a45" +version = "2.4.0" +source = "git+https://github.com/richerfu/tauri?branch=feat%2Fopen-harmony#c818cc1de4eae70a14273cf8a4f81283987a42b7" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.119", "tauri-codegen", - "tauri-utils", + "tauri-utils 2.7.0", ] [[package]] @@ -10116,53 +10878,19 @@ dependencies = [ "schemars 0.8.22", "serde", "serde_json", - "tauri-utils", + "tauri-utils 2.9.3", "walkdir", ] -[[package]] -name = "tauri-plugin-autostart" -version = "2.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "459383cebc193cdd03d1ba4acc40f2c408a7abce419d64bdcd2d745bc2886f70" -dependencies = [ - "auto-launch", - "serde", - "serde_json", - "tauri", - "tauri-plugin", - "thiserror 2.0.19", -] - -[[package]] -name = "tauri-plugin-dialog" -version = "2.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2d3c1dbe38037e7f590cdf2492594d5ceebe031e7bc7e827509b22a999d2940" -dependencies = [ - "log", - "raw-window-handle", - "rfd", - "serde", - "serde_json", - "tauri", - "tauri-plugin", - "tauri-plugin-fs", - "thiserror 2.0.19", - "url", -] - [[package]] name = "tauri-plugin-fs" -version = "2.5.1" +version = "2.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7ecc274121aca0c036a2b42d1cbe83d368d348f54e0bb8a735c2b1548e8f371" +checksum = "47df422695255ecbe7bac7012440eddaeefd026656171eac9559f5243d3230d9" dependencies = [ "anyhow", "dunce", "glob", - "log", - "objc2-foundation", "percent-encoding", "schemars 0.8.22", "serde", @@ -10170,57 +10898,54 @@ dependencies = [ "serde_repr", "tauri", "tauri-plugin", - "tauri-utils", + "tauri-utils 2.9.3", "thiserror 2.0.19", - "toml 1.1.4+spec-1.1.0", + "toml 0.9.12+spec-1.1.0", "url", ] [[package]] -name = "tauri-plugin-log" -version = "2.9.0" +name = "tauri-plugin-global-shortcut" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6792296e6f389268016c77db21ebae1fc0568f2fccf88b1ec7e2ea71330afb4c" +checksum = "424af23c7e88d05e4a1a6fc2c7be077912f8c76bd7900fd50aa2b7cbf5a2c405" dependencies = [ - "android_logger", - "fern", + "global-hotkey", "log", - "objc2 0.6.4", - "objc2-foundation", "serde", "serde_json", - "serde_repr", - "swift-rs", "tauri", "tauri-plugin", "thiserror 2.0.19", - "time", ] [[package]] -name = "tauri-plugin-notification" -version = "2.3.3" +name = "tauri-plugin-log" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01fc2c5ff41105bd1f7242d8201fdf3efd70749b82fa013a17f2126357d194cc" +checksum = "d5709c792b8630290b5d9811a1f8fe983dd925fc87c7fc7f4923616458cd00b6" dependencies = [ + "android_logger", + "byte-unit", + "fern", "log", - "notify-rust", - "rand 0.9.5", + "objc2 0.6.4", + "objc2-foundation", "serde", "serde_json", "serde_repr", + "swift-rs", "tauri", "tauri-plugin", "thiserror 2.0.19", "time", - "url", ] [[package]] name = "tauri-plugin-opener" -version = "2.5.4" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17e1bea14edce6b793a04e2417e3fd924b9bc4faae83cdee7d714156cceeed29" +checksum = "c26b72571d25dee25667940027114e60f569fc3974f8cefbe50c2cbc5fd65e3b" dependencies = [ "dunce", "glob", @@ -10238,74 +10963,10 @@ dependencies = [ "zbus 5.18.0", ] -[[package]] -name = "tauri-plugin-single-instance" -version = "2.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3214becf9ef5783c0ae99a3bb25adf5353a7a16ebf53e74b909e29205735c6c" -dependencies = [ - "serde", - "serde_json", - "tauri", - "thiserror 2.0.19", - "tokio", - "tracing", - "windows-sys 0.60.2", - "zbus 5.18.0", -] - -[[package]] -name = "tauri-plugin-updater" -version = "2.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806d9dac662c2e4594ff03c647a552f2c9bd544e7d0f683ec58f872f952ce4af" -dependencies = [ - "base64 0.22.1", - "dirs 6.0.0", - "flate2", - "futures-util", - "http", - "infer 0.19.0", - "log", - "minisign-verify", - "osakit", - "percent-encoding", - "reqwest", - "rustls", - "semver", - "serde", - "serde_json", - "tar", - "tauri", - "tauri-plugin", - "tempfile", - "thiserror 2.0.19", - "time", - "tokio", - "url", - "windows-sys 0.60.2", - "zip 4.6.1", -] - -[[package]] -name = "tauri-plugin-window-state" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73736611e14142408d15353e21e3cca2f12a3cfb523ad0ce85999b6d2ef1a704" -dependencies = [ - "bitflags 2.11.1", - "log", - "serde", - "serde_json", - "tauri", - "tauri-plugin", - "thiserror 2.0.19", -] - [[package]] name = "tauri-runtime" -version = "2.11.3" -source = "git+https://github.com/tauri-apps/tauri.git?rev=7cc68e74ff6981f5c50a52a67d56c5eb2d227188#7cc68e74ff6981f5c50a52a67d56c5eb2d227188" +version = "2.8.0" +source = "git+https://github.com/richerfu/tauri?branch=feat%2Fopen-harmony#c818cc1de4eae70a14273cf8a4f81283987a42b7" dependencies = [ "cookie", "dpi", @@ -10315,10 +10976,11 @@ dependencies = [ "objc2 0.6.4", "objc2-ui-kit", "objc2-web-kit", + "openharmony-ability", "raw-window-handle", "serde", "serde_json", - "tauri-utils", + "tauri-utils 2.7.0", "thiserror 2.0.19", "url", "webkit2gtk", @@ -10328,8 +10990,8 @@ dependencies = [ [[package]] name = "tauri-runtime-wry" -version = "2.11.4" -source = "git+https://github.com/tauri-apps/tauri.git?rev=7cc68e74ff6981f5c50a52a67d56c5eb2d227188#7cc68e74ff6981f5c50a52a67d56c5eb2d227188" +version = "2.8.1" +source = "git+https://github.com/richerfu/tauri?branch=feat%2Fopen-harmony#c818cc1de4eae70a14273cf8a4f81283987a42b7" dependencies = [ "gtk", "http", @@ -10337,13 +10999,14 @@ dependencies = [ "log", "objc2 0.6.4", "objc2-app-kit", + "objc2-foundation", "once_cell", "percent-encoding", "raw-window-handle", "softbuffer", "tao", "tauri-runtime", - "tauri-utils", + "tauri-utils 2.7.0", "url", "webkit2gtk", "webview2-com", @@ -10353,19 +11016,58 @@ dependencies = [ [[package]] name = "tauri-utils" -version = "2.9.3" -source = "git+https://github.com/tauri-apps/tauri.git?rev=7cc68e74ff6981f5c50a52a67d56c5eb2d227188#7cc68e74ff6981f5c50a52a67d56c5eb2d227188" +version = "2.7.0" +source = "git+https://github.com/richerfu/tauri?branch=feat%2Fopen-harmony#c818cc1de4eae70a14273cf8a4f81283987a42b7" dependencies = [ "anyhow", "brotli", "cargo_metadata", - "ctor", - "dom_query 0.28.0", + "ctor 0.2.9", + "dunce", + "glob", + "html5ever 0.29.1", + "http", + "infer", + "json-patch", + "kuchikiki", + "log", + "memchr", + "phf 0.11.3", + "proc-macro2", + "quote", + "regex", + "schemars 0.8.22", + "semver", + "serde", + "serde-untagged", + "serde_json", + "serde_with", + "swift-rs", + "thiserror 2.0.19", + "toml 0.9.12+spec-1.1.0", + "url", + "urlpattern", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-utils" +version = "2.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e176a18e67764923c4f1ce66f25ae4abe5f688384d5eb1a0fa6c77f3d90f887" +dependencies = [ + "anyhow", + "cargo_metadata", + "ctor 0.8.0", + "dom_query 0.27.0", "dunce", "glob", + "html5ever 0.29.1", "http", - "infer 0.22.0", - "json-patch 4.2.0", + "infer", + "json-patch", + "kuchikiki", "log", "memchr", "phf 0.13.1", @@ -10385,7 +11087,6 @@ dependencies = [ "url", "urlpattern", "uuid", - "walkdir", ] [[package]] @@ -10399,17 +11100,6 @@ dependencies = [ "toml 1.1.4+spec-1.1.0", ] -[[package]] -name = "tauri-winrt-notification" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed071c670382e85fc2f48ae706492d8c338f4f89bf72520d32f8abfe880aade" -dependencies = [ - "thiserror 2.0.19", - "windows 0.61.3", - "windows-version", -] - [[package]] name = "tempfile" version = "3.27.0" @@ -10467,8 +11157,7 @@ dependencies = [ "futures", "libc", "log", - "portable-pty 0.8.1", - "portable-pty 0.9.0", + "portable-pty", "rand 0.8.7", "serde", "serde_json", @@ -10480,15 +11169,6 @@ dependencies = [ "win32job", ] -[[package]] -name = "termios" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5d9cf598a6d7ce700a4e6a9199da127e6819a61e64b68609683cc9a01b5683a" -dependencies = [ - "libc", -] - [[package]] name = "tesseract-plumbing" version = "0.8.0" @@ -11044,9 +11724,9 @@ dependencies = [ [[package]] name = "tray-icon" -version = "0.24.2" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "045979e3f037cd18ad1cb2a419dfda133c5c29c9f3453370079f2255d46c257e" +checksum = "a5e85aa143ceb072062fc4d6356c1b520a51d636e7bc8e77ec94be3608e5e80c" dependencies = [ "crossbeam-channel", "dirs 6.0.0", @@ -11058,10 +11738,10 @@ dependencies = [ "objc2-core-graphics", "objc2-foundation", "once_cell", - "png 0.18.1", + "png 0.17.16", "serde", "thiserror 2.0.19", - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -11155,6 +11835,27 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + [[package]] name = "unic-langid" version = "0.9.6" @@ -11173,6 +11874,26 @@ dependencies = [ "tinystr", ] +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + [[package]] name = "unicase" version = "2.9.0" @@ -11312,13 +12033,13 @@ checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "urlpattern" -version = "0.6.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df16f50ef4cc145211879a3867ba757076b25dfee812040dcb0658bd9ae7904b" +checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" dependencies = [ - "icu_properties", "regex", "serde", + "unic-ucd-ident", "url", ] @@ -11337,7 +12058,7 @@ dependencies = [ "pico-args", "roxmltree", "simplecss", - "siphasher", + "siphasher 1.0.3", "strict-num", "svgtypes", "tiny-skia-path", @@ -11350,6 +12071,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf8-width" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "159a7cadce548703edd50d24069bc294c5415ecab0a480e0cd1ca06d112dc94a" + [[package]] name = "utf8_iter" version = "1.0.4" @@ -11380,6 +12107,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" +[[package]] +name = "value-bag" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "068e763e8279de7ab94b6afebded2cb701678af094feb1c12ccb061b4783c1be" + [[package]] name = "vcpkg" version = "0.2.15" @@ -11456,6 +12189,12 @@ dependencies = [ "try-lock", ] +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" @@ -11526,6 +12265,19 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-streams" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "wasm-streams" version = "0.5.0" @@ -11640,9 +12392,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "075474b12bcb3d2e3d4546580e9de478eeeead668a1761e2a8860c836b7ef297" dependencies = [ "phf 0.13.1", - "phf_codegen", - "string_cache", - "string_cache_codegen", + "phf_codegen 0.13.1", + "string_cache 0.9.0", + "string_cache_codegen 0.6.1", ] [[package]] @@ -12533,9 +13285,8 @@ checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" [[package]] name = "wry" -version = "0.56.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1730ab21a962e7ff44df17d20804572beee66d998afc7fcbc3f846a3a12dbda7" +version = "0.55.1" +source = "git+https://github.com/richerfu/wry#ae8b21b592ff65074381cb8a71f0fd1bb787fac0" dependencies = [ "base64 0.22.1", "block2 0.6.2", @@ -12559,11 +13310,13 @@ dependencies = [ "objc2-ui-kit", "objc2-web-kit", "once_cell", + "openharmony-ability", + "openharmony-ability-derive", "percent-encoding", "raw-window-handle", "sha2", "soup3", - "tao-macros", + "tao-macros 0.1.4", "thiserror 2.0.19", "url", "webkit2gtk", @@ -12575,6 +13328,15 @@ dependencies = [ "x11-dl", ] +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + [[package]] name = "x11" version = "2.21.0" @@ -13166,3 +13928,13 @@ dependencies = [ "syn 2.0.119", "winnow 1.0.4", ] + +[[patch.unused]] +name = "openharmony-ability" +version = "1.0.0-beta.1" +source = "git+https://github.com/harmony-contrib/openharmony-ability.git#9f781453beb3bf57e787d30470927ccb21a12de0" + +[[patch.unused]] +name = "openharmony-ability-derive" +version = "1.0.0-beta.1" +source = "git+https://github.com/harmony-contrib/openharmony-ability.git#9f781453beb3bf57e787d30470927ccb21a12de0" diff --git a/src/apps/desktop/capabilities/default.json b/src/apps/desktop/capabilities/default.json index d18bf9024b..17d77e1b55 100644 --- a/src/apps/desktop/capabilities/default.json +++ b/src/apps/desktop/capabilities/default.json @@ -5,7 +5,6 @@ "windows": ["main", "agent-companion-pet", "spotlight"], "permissions": [ "log:default", - "autostart:default", "core:default", "core:path:default", "core:event:default", @@ -45,12 +44,6 @@ "core:window:allow-unmaximize", "core:window:allow-unminimize", "core:window:allow-set-min-size", - "dialog:default", - "dialog:allow-open", - "dialog:allow-save", - "dialog:allow-ask", - "dialog:allow-confirm", - "dialog:allow-message", "opener:default", "opener:allow-open-url", { diff --git a/src/apps/desktop/src/api/browser_control_api.rs b/src/apps/desktop/src/api/browser_control_api.rs index 797be73d6b..f3a414baef 100644 --- a/src/apps/desktop/src/api/browser_control_api.rs +++ b/src/apps/desktop/src/api/browser_control_api.rs @@ -35,7 +35,7 @@ fn default_cdp_port() -> u16 { /// no live endpoint to reattach to, it does nothing and leaves the on-demand /// path to handle it. pub fn init_on_startup() { - tokio::spawn(async { + tauri::async_runtime::spawn(async { if !auto_connect_on_startup_enabled().await { return; } diff --git a/src/apps/ohos/entry/src/main/ets/entryability/EntryAbility.ets b/src/apps/ohos/entry/src/main/ets/entryability/EntryAbility.ets index 5b8d4064a6..7678251184 100644 --- a/src/apps/ohos/entry/src/main/ets/entryability/EntryAbility.ets +++ b/src/apps/ohos/entry/src/main/ets/entryability/EntryAbility.ets @@ -275,11 +275,24 @@ export default class EntryAbility extends RustAbility { }); RustModule.registerArktsFunction('set_decorations_ohos', async (err: Error, arg: string): Promise => { const req: SetDecorationsArg = JSON.parse(arg); + const mainWin = windowStage.getMainWindowSync(); try { - await windowStage.getMainWindowSync().setWindowDecorVisible(req.visible); + // Showing native title buttons makes HarmonyOS fall back to hover-only + // window decorations. Re-apply the same custom title-bar configuration + // used at startup after restoring the buttons. + await mainWin.setWindowTitleButtonVisible( + req.visible, + req.visible, + req.visible, + ); + if (req.visible) { + mainWin.setWindowDecorHeight(44); + mainWin.setWindowTitleMoveEnabled(false); + mainWin.setWindowDecorVisible(false); + } } catch (e) { const be = e as BusinessError; - hilog.warn(DOMAIN, TAG, `setWindowDecorVisible failed: ${be.message}`); + hilog.warn(DOMAIN, TAG, `setWindowTitleButtonVisible failed: ${be.message}`); } return ''; }); @@ -334,6 +347,16 @@ export default class EntryAbility extends RustAbility { dispWidth = disp.width; dispHeight = disp.height; scale = disp.densityPixels > 0 ? disp.densityPixels : 1; + // A floating window may not intersect the system bar when this query + // runs, in which case getWindowAvoidArea() reports zero. The display's + // available bounds still exclude the desktop bar, so keep that + // right/bottom reservation as a monitor-level fallback. + if (disp.availableWidth > 0 && disp.availableWidth <= disp.width) { + avoidRight = Math.max(avoidRight, disp.width - disp.availableWidth); + } + if (disp.availableHeight > 0 && disp.availableHeight <= disp.height) { + avoidBottom = Math.max(avoidBottom, disp.height - disp.availableHeight); + } } catch (e) { const be = e as BusinessError; hilog.warn(DOMAIN, TAG, `getDefaultDisplaySync failed: ${be.message}`); @@ -341,10 +364,10 @@ export default class EntryAbility extends RustAbility { try { const avoidArea = windowStage.getMainWindowSync() .getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM); - avoidTop = avoidArea.topRect.height; - avoidBottom = avoidArea.bottomRect.height; - avoidLeft = avoidArea.leftRect.width; - avoidRight = avoidArea.rightRect.width; + avoidTop = Math.max(avoidTop, avoidArea.topRect.height); + avoidBottom = Math.max(avoidBottom, avoidArea.bottomRect.height); + avoidLeft = Math.max(avoidLeft, avoidArea.leftRect.width); + avoidRight = Math.max(avoidRight, avoidArea.rightRect.width); } catch (e) { const be = e as BusinessError; hilog.warn(DOMAIN, TAG, `getWindowAvoidArea failed: ${be.message}`); @@ -389,7 +412,7 @@ export default class EntryAbility extends RustAbility { }); RustModule.registerArktsFunction('maximize_ohos', async (err: Error, arg: string): Promise => { try { - await windowStage.getMainWindowSync().maximize(); + await windowStage.getMainWindowSync().maximize(window.MaximizePresentation.EXIT_IMMERSIVE); } catch (e) { const be = e as BusinessError; hilog.warn(DOMAIN, TAG, `maximize failed: ${be.message}`); diff --git a/src/crates/adapters/webdriver/src/platform/capture.rs b/src/crates/adapters/webdriver/src/platform/capture.rs index 1715cae220..0860e8373c 100644 --- a/src/crates/adapters/webdriver/src/platform/capture.rs +++ b/src/crates/adapters/webdriver/src/platform/capture.rs @@ -570,7 +570,7 @@ mod imp { } } -#[cfg(target_os = "linux")] +#[cfg(all(target_os = "linux", not(target_env = "ohos")))] mod imp { use super::*; @@ -594,6 +594,30 @@ mod imp { } } +#[cfg(target_env = "ohos")] +mod imp { + use super::*; + + pub(super) async fn take_screenshot( + _webview: Webview, + _timeout_ms: u64, + ) -> Result { + Err(WebDriverErrorResponse::unsupported_operation( + "HarmonyOS ArkWeb screenshots require a native capture provider", + )) + } + + pub(super) async fn print_page( + _webview: Webview, + _timeout_ms: u64, + _options: &PrintOptions, + ) -> Result { + Err(WebDriverErrorResponse::unsupported_operation( + "HarmonyOS ArkWeb printing requires a native print provider", + )) + } +} + #[cfg(not(any(target_os = "macos", target_os = "windows", target_os = "linux")))] mod imp { use super::*; diff --git a/src/crates/adapters/webdriver/src/platform/evaluator/mod.rs b/src/crates/adapters/webdriver/src/platform/evaluator/mod.rs index 30132a5180..1dfb1922f1 100644 --- a/src/crates/adapters/webdriver/src/platform/evaluator/mod.rs +++ b/src/crates/adapters/webdriver/src/platform/evaluator/mod.rs @@ -27,6 +27,11 @@ pub(crate) async fn evaluate_script( async_mode: bool, frame_context: &Value, ) -> Result { + // OpenHarmony's ArkWeb host currently reaches this generic evaluator via + // the Tauri fork's Webview::eval implementation. The injected bridge is + // pure page JavaScript, so pointer/wheel/key actions remain shared. A + // future ArkWeb-native provider can replace only this branch when it needs + // a direct runJavaScript/result callback instead of Tauri IPC. #[cfg(target_os = "macos")] { let _ = state; diff --git a/src/crates/adapters/webdriver/src/runtime/mod.rs b/src/crates/adapters/webdriver/src/runtime/mod.rs index 38c08e4753..9309bc2a36 100644 --- a/src/crates/adapters/webdriver/src/runtime/mod.rs +++ b/src/crates/adapters/webdriver/src/runtime/mod.rs @@ -85,5 +85,28 @@ pub(crate) async fn run_script( let timeout_ms = session.timeouts.script.max(5_000); let frame_context = script::serialize_frame_context(&session.frame_context); - Err(WebDriverErrorResponse::no_such_window("No such windows")) + let window = state + .app + .get_webview_window(&session.current_window) + .ok_or_else(|| { + WebDriverErrorResponse::no_such_window(format!( + "Window not found: {}", + session.current_window + )) + })?; + + // The JavaScript bridge is platform-neutral. Each host only supplies the + // WebView evaluator and result transport in `platform::evaluator` (the + // OHOS target uses the generic Tauri bridge until an ArkWeb-native host + // adapter is wired in). + platform::evaluator::evaluate_script( + state, + window.as_ref().clone(), + timeout_ms, + script_source, + &args, + async_mode, + &frame_context, + ) + .await } diff --git a/src/crates/adapters/webdriver/src/runtime/script.rs b/src/crates/adapters/webdriver/src/runtime/script.rs index 2eb0c6cd01..1eff8fef98 100644 --- a/src/crates/adapters/webdriver/src/runtime/script.rs +++ b/src/crates/adapters/webdriver/src/runtime/script.rs @@ -109,3 +109,23 @@ if (!window.__bitfunWd) {{ core_tail = core::tail() ) } + +#[cfg(test)] +mod tests { + use super::bridge_helper_script; + + #[test] + fn bridge_includes_harmony_safe_pointer_actions() { + let bridge = bridge_helper_script(); + + for symbol in [ + "performPointerSourceActions", + "performWheelSourceActions", + "performKeySourceActions", + "dispatchPointerClick", + "releaseActions", + ] { + assert!(bridge.contains(symbol), "missing injected symbol: {symbol}"); + } + } +} diff --git a/src/crates/adapters/webdriver/src/server/handlers/session.rs b/src/crates/adapters/webdriver/src/server/handlers/session.rs index 86a9dd7a35..a251c13e38 100644 --- a/src/crates/adapters/webdriver/src/server/handlers/session.rs +++ b/src/crates/adapters/webdriver/src/server/handlers/session.rs @@ -111,7 +111,7 @@ pub async fn create( let set_window_rect = cfg!(any( target_os = "macos", target_os = "windows", - target_os = "linux" + all(target_os = "linux", not(target_env = "ohos")) )); Ok(WebDriverResponse::success(json!({ diff --git a/src/crates/assembly/core/Cargo.toml b/src/crates/assembly/core/Cargo.toml index 3bee81aab4..48cc63b9ec 100644 --- a/src/crates/assembly/core/Cargo.toml +++ b/src/crates/assembly/core/Cargo.toml @@ -16,7 +16,6 @@ tokio-util = { workspace = true, optional = true } napi-ohos = { workspace = true } napi-derive-ohos = { workspace = true } tokio-stream = { workspace = true } -tokio-util = { workspace = true } async-trait = { workspace = true } futures = { workspace = true, optional = true } diff --git a/src/crates/services/services-integrations/src/appearance_market/client.rs b/src/crates/services/services-integrations/src/appearance_market/client.rs index 385bdedb15..2b13f5585f 100644 --- a/src/crates/services/services-integrations/src/appearance_market/client.rs +++ b/src/crates/services/services-integrations/src/appearance_market/client.rs @@ -1,3 +1,4 @@ +use std::sync::Arc; use bitfun_product_domains::appearance_market::{ AppearanceAdminSubmissionDetail, AppearanceCursorPage, AppearanceMarketListingDetail, AppearanceMarketListingSummary, AppearanceMarketSort, AppearanceMarketSubmission, diff --git a/src/web-ui/src/flow_chat/components/toolbar-mode/ToolbarMode.scss b/src/web-ui/src/flow_chat/components/toolbar-mode/ToolbarMode.scss index 5918e67cdf..f519e0bc40 100644 --- a/src/web-ui/src/flow_chat/components/toolbar-mode/ToolbarMode.scss +++ b/src/web-ui/src/flow_chat/components/toolbar-mode/ToolbarMode.scss @@ -119,10 +119,6 @@ $transition-timing: cubic-bezier(0.4, 0, 0.2, 1); pointer-events: auto; } -.bitfun-toolbar-mode--ohos .bitfun-toolbar-mode__header-overflow { - display: none; -} - .bitfun-toolbar-mode__header-collapsed-actions { display: flex; align-items: center; diff --git a/src/web-ui/src/flow_chat/components/toolbar-mode/ToolbarModeProvider.tsx b/src/web-ui/src/flow_chat/components/toolbar-mode/ToolbarModeProvider.tsx index 4ee53b7acd..e99e5278a8 100644 --- a/src/web-ui/src/flow_chat/components/toolbar-mode/ToolbarModeProvider.tsx +++ b/src/web-ui/src/flow_chat/components/toolbar-mode/ToolbarModeProvider.tsx @@ -1,4 +1,5 @@ import React, { ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import { isOpenHarmonyRuntime } from '@/infrastructure/runtime'; import { createLogger } from '@/shared/utils/logger'; import { MAIN_WINDOW_DEFAULT_SIZE, @@ -36,6 +37,9 @@ const setMainWindowTransientGeometry = async (transient: boolean): Promise await systemAPI.setMainWindowTransientGeometry(transient); }; +const waitForAnimationFrame = (): Promise => + new Promise((resolve) => window.requestAnimationFrame(() => resolve())); + const restoreMainWindowFromToolbarMode = async ( ops: WindowOps, saved: SavedWindowState | null, @@ -79,6 +83,16 @@ const restoreMainWindowFromToolbarMode = async ( await ops.center(); } + if (isOpenHarmonyRuntime()) { + try { + // Geometry changes, especially maximize(), can reset HarmonyOS to its + // hover-only immersive chrome. Restore the normal title bar last. + await ops.setDecorations(saved?.isDecorated ?? true); + } catch (error) { + log.debug('Failed to re-apply HarmonyOS window decorations (ignored)', error); + } + } + await ops.setMinSizeLogical({ width: MAIN_WINDOW_MIN_SIZE.width, height: MAIN_WINDOW_MIN_SIZE.height, @@ -198,14 +212,31 @@ export const ToolbarModeProvider: React.FC = ({ childr const disableToolbarMode = useCallback(async () => { const ops = createWindowOps(); const isMacOS = isMacOSPlatform(); + const documentElement = isOpenHarmonyRuntime() ? document.documentElement : null; + const previousVisibility = documentElement?.style.visibility ?? ''; try { + if (documentElement) { + documentElement.style.visibility = 'hidden'; + await waitForAnimationFrame(); + } + + await restoreMainWindowFromToolbarMode(ops, savedWindowStateRef.current, isMacOS); setIsToolbarMode(false); setIsExpanded(false); - await restoreMainWindowFromToolbarMode(ops, savedWindowStateRef.current, isMacOS); savedWindowStateRef.current = null; + + if (documentElement) { + // Let React commit the normal layout before revealing the restored window. + await waitForAnimationFrame(); + await waitForAnimationFrame(); + } } catch (error) { log.error('Failed to disable toolbar mode', error); + } finally { + if (documentElement) { + documentElement.style.visibility = previousVisibility; + } } }, []); diff --git a/src/web-ui/src/flow_chat/components/toolbar-mode/toolbarModeWindowOps.ts b/src/web-ui/src/flow_chat/components/toolbar-mode/toolbarModeWindowOps.ts index d13229f1f4..cb4245eabd 100644 --- a/src/web-ui/src/flow_chat/components/toolbar-mode/toolbarModeWindowOps.ts +++ b/src/web-ui/src/flow_chat/components/toolbar-mode/toolbarModeWindowOps.ts @@ -147,7 +147,9 @@ const ohosOps = (): WindowOps => ({ return await workspaceAPI.window_is_maximized(); }, async isDecorated(): Promise { - return false; + // OHOS main window ships with native window decorations (min/max/close) + // visible by default; report true so exiting toolbar mode restores them. + return true; }, async unmaximize(): Promise { await workspaceAPI.unmaximizeOhos();