-);
-
-export const decorators = [withThemeProvider];
diff --git a/nym-wallet/.storybook/storiesStyles.ts b/nym-wallet/.storybook/storiesStyles.ts
deleted file mode 100644
index 172dbbfe2a..0000000000
--- a/nym-wallet/.storybook/storiesStyles.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { Theme } from '@mui/material/styles';
-
-export const backDropStyles = (theme: Theme) => {
- const { mode } = theme.palette;
- return {
- style: {
- left: mode === 'light' ? '0' : '50%',
- width: '50%',
- },
- };
-};
-
-export const modalStyles = (theme: Theme) => {
- const { mode } = theme.palette;
- return { left: mode === 'light' ? '25%' : '75%' };
-};
-
-export const dialogStyles = (theme: Theme) => {
- const { mode } = theme.palette;
- return { left: mode === 'light' ? '-50%' : '50%' };
-};
diff --git a/nym-wallet/Cargo.lock b/nym-wallet/Cargo.lock
index 773e6ec599..8d18426b8f 100644
--- a/nym-wallet/Cargo.lock
+++ b/nym-wallet/Cargo.lock
@@ -32,7 +32,6 @@ dependencies = [
"nym-vesting-contract-common",
"nym-wallet-types",
"once_cell",
- "open",
"plist",
"pretty_env_logger",
"rand_chacha 0.3.1",
@@ -47,7 +46,6 @@ dependencies = [
"tauri-plugin-clipboard-manager",
"tauri-plugin-opener",
"tauri-plugin-process",
- "tauri-plugin-shell",
"tauri-plugin-updater",
"tempfile",
"thiserror 1.0.69",
@@ -427,7 +425,7 @@ version = "0.4.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "59a194f9d963d8099596278594b3107448656ba73831c9d8c783e613ce86da64"
dependencies = [
- "brotli",
+ "brotli 7.0.0",
"flate2",
"futures-core",
"memchr",
@@ -450,17 +448,6 @@ dependencies = [
"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"
@@ -835,7 +822,18 @@ checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd"
dependencies = [
"alloc-no-stdlib",
"alloc-stdlib",
- "brotli-decompressor",
+ "brotli-decompressor 4.0.2",
+]
+
+[[package]]
+name = "brotli"
+version = "8.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+ "brotli-decompressor 5.0.0",
]
[[package]]
@@ -848,6 +846,16 @@ dependencies = [
"alloc-stdlib",
]
+[[package]]
+name = "brotli-decompressor"
+version = "5.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+]
+
[[package]]
name = "bs58"
version = "0.5.1"
@@ -1043,7 +1051,7 @@ dependencies = [
"iana-time-zone",
"num-traits",
"serde",
- "windows-link",
+ "windows-link 0.1.3",
]
[[package]]
@@ -1469,15 +1477,15 @@ dependencies = [
[[package]]
name = "cssparser"
-version = "0.27.2"
+version = "0.29.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a"
+checksum = "f93d03419cb5950ccfd3daf3ff1c7a36ace64609a1a8746d493df1ca0afde0fa"
dependencies = [
"cssparser-macros",
"dtoa-short",
- "itoa 0.4.8",
+ "itoa",
"matches",
- "phf 0.8.0",
+ "phf 0.10.1",
"proc-macro2",
"quote",
"smallvec",
@@ -1854,9 +1862,9 @@ dependencies = [
[[package]]
name = "dlopen2"
-version = "0.7.0"
+version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6"
+checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4"
dependencies = [
"dlopen2_derive",
"libc",
@@ -3082,16 +3090,14 @@ dependencies = [
[[package]]
name = "html5ever"
-version = "0.26.0"
+version = "0.29.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7"
+checksum = "3b7410cae13cbc75623c98ac4cbfd1f0bedddf3227afc24f370cf0f50a44a11c"
dependencies = [
"log",
"mac",
"markup5ever",
- "proc-macro2",
- "quote",
- "syn 1.0.109",
+ "match_token",
]
[[package]]
@@ -3102,7 +3108,7 @@ checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
dependencies = [
"bytes",
"fnv",
- "itoa 1.0.15",
+ "itoa",
]
[[package]]
@@ -3113,7 +3119,7 @@ checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565"
dependencies = [
"bytes",
"fnv",
- "itoa 1.0.15",
+ "itoa",
]
[[package]]
@@ -3202,7 +3208,7 @@ dependencies = [
"http-body 0.4.6",
"httparse",
"httpdate",
- "itoa 1.0.15",
+ "itoa",
"pin-project-lite",
"socket2 0.5.9",
"tokio",
@@ -3225,7 +3231,7 @@ dependencies = [
"http 1.3.1",
"http-body 1.0.1",
"httparse",
- "itoa 1.0.15",
+ "itoa",
"pin-project-lite",
"pin-utils",
"smallvec",
@@ -3262,7 +3268,6 @@ dependencies = [
"tokio",
"tokio-rustls 0.26.2",
"tower-service",
- "webpki-roots",
]
[[package]]
@@ -3316,7 +3321,7 @@ dependencies = [
"js-sys",
"log",
"wasm-bindgen",
- "windows-core 0.61.0",
+ "windows-core 0.60.1",
]
[[package]]
@@ -3330,9 +3335,9 @@ dependencies = [
[[package]]
name = "ico"
-version = "0.4.0"
+version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc50b891e4acf8fe0e71ef88ec43ad82ee07b3810ad09de10f1d01f072ed4b98"
+checksum = "3e795dff5605e0f04bff85ca41b51a96b83e80b281e96231bcaaf1ac35103371"
dependencies = [
"byteorder",
"png",
@@ -3644,12 +3649,6 @@ dependencies = [
"either",
]
-[[package]]
-name = "itoa"
-version = "0.4.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
-
[[package]]
name = "itoa"
version = "1.0.15"
@@ -3719,10 +3718,12 @@ checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0"
[[package]]
name = "js-sys"
-version = "0.3.77"
+version = "0.3.95"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
+checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca"
dependencies = [
+ "cfg-if",
+ "futures-util",
"once_cell",
"wasm-bindgen",
]
@@ -3802,14 +3803,13 @@ dependencies = [
[[package]]
name = "kuchikiki"
-version = "0.8.2"
+version = "0.8.8-speedreader"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f29e4755b7b995046f510a7520c42b2fed58b77bd94d5a87a8eb43d2fd126da8"
+checksum = "02cb977175687f33fa4afa0c95c112b987ea1443e5a51c8f8ff27dc618270cc2"
dependencies = [
"cssparser",
"html5ever",
- "indexmap 1.9.3",
- "matches",
+ "indexmap 2.8.0",
"selectors",
]
@@ -3848,9 +3848,9 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.175"
+version = "0.2.185"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543"
+checksum = "52ff2c0fe9bc6cb6b14a0592c2ff4fa9ceb83eea9db979b0487cd054946a2b8f"
[[package]]
name = "libcrux-aesgcm"
@@ -4142,9 +4142,9 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
[[package]]
name = "linux-raw-sys"
-version = "0.9.3"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413"
+checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
[[package]]
name = "litemap"
@@ -4192,18 +4192,29 @@ checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
[[package]]
name = "markup5ever"
-version = "0.11.0"
+version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016"
+checksum = "c7a7213d12e1864c0f002f52c2923d4556935a43dec5e71355c2760e0f6e7a18"
dependencies = [
"log",
- "phf 0.10.1",
- "phf_codegen 0.10.0",
+ "phf 0.11.3",
+ "phf_codegen 0.11.3",
"string_cache",
"string_cache_codegen",
"tendril",
]
+[[package]]
+name = "match_token"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.100",
+]
+
[[package]]
name = "matchers"
version = "0.2.0"
@@ -4294,9 +4305,9 @@ dependencies = [
[[package]]
name = "muda"
-version = "0.16.1"
+version = "0.17.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4de14a9b5d569ca68d7c891d613b390cf5ab4f851c77aaa2f9e435555d3d9492"
+checksum = "01c1738382f66ed56b3b9c8119e794a2e23148ac8ea214eda86622d4cb9d415a"
dependencies = [
"crossbeam-channel",
"dpi",
@@ -4310,7 +4321,7 @@ dependencies = [
"png",
"serde",
"thiserror 2.0.12",
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
]
[[package]]
@@ -4366,19 +4377,6 @@ version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"
-[[package]]
-name = "nix"
-version = "0.29.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
-dependencies = [
- "bitflags 2.9.0",
- "cfg-if",
- "cfg_aliases",
- "libc",
- "memoffset",
-]
-
[[package]]
name = "nodrop"
version = "0.1.14"
@@ -5129,36 +5127,9 @@ checksum = "5906f93257178e2f7ae069efb89fbd6ee94f0592740b5f8a1512ca498814d0fb"
dependencies = [
"bitflags 2.9.0",
"block2 0.6.0",
- "libc",
"objc2 0.6.0",
- "objc2-cloud-kit",
- "objc2-core-data",
"objc2-core-foundation",
"objc2-core-graphics",
- "objc2-core-image",
- "objc2-foundation 0.3.0",
- "objc2-quartz-core 0.3.0",
-]
-
-[[package]]
-name = "objc2-cloud-kit"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c1948a9be5f469deadbd6bcb86ad7ff9e47b4f632380139722f7d9840c0d42c"
-dependencies = [
- "bitflags 2.9.0",
- "objc2 0.6.0",
- "objc2-foundation 0.3.0",
-]
-
-[[package]]
-name = "objc2-core-data"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f860f8e841f6d32f754836f51e6bc7777cd7e7053cf18528233f6811d3eceb4"
-dependencies = [
- "bitflags 2.9.0",
- "objc2 0.6.0",
"objc2-foundation 0.3.0",
]
@@ -5184,16 +5155,6 @@ dependencies = [
"objc2-io-surface",
]
-[[package]]
-name = "objc2-core-image"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ffa6bea72bf42c78b0b34e89c0bafac877d5f80bf91e159a5d96ea7f693ca56"
-dependencies = [
- "objc2 0.6.0",
- "objc2-foundation 0.3.0",
-]
-
[[package]]
name = "objc2-encode"
version = "4.1.0"
@@ -5282,17 +5243,6 @@ dependencies = [
"objc2-metal",
]
-[[package]]
-name = "objc2-quartz-core"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6fb3794501bb1bee12f08dcad8c61f2a5875791ad1c6f47faa71a0f033f20071"
-dependencies = [
- "bitflags 2.9.0",
- "objc2 0.6.0",
- "objc2-foundation 0.3.0",
-]
-
[[package]]
name = "objc2-ui-kit"
version = "0.3.0"
@@ -5676,9 +5626,7 @@ version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12"
dependencies = [
- "phf_macros 0.8.0",
"phf_shared 0.8.0",
- "proc-macro-hack",
]
[[package]]
@@ -5687,7 +5635,9 @@ version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259"
dependencies = [
+ "phf_macros 0.10.0",
"phf_shared 0.10.0",
+ "proc-macro-hack",
]
[[package]]
@@ -5712,12 +5662,12 @@ dependencies = [
[[package]]
name = "phf_codegen"
-version = "0.10.0"
+version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd"
+checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a"
dependencies = [
- "phf_generator 0.10.0",
- "phf_shared 0.10.0",
+ "phf_generator 0.11.3",
+ "phf_shared 0.11.3",
]
[[package]]
@@ -5752,12 +5702,12 @@ dependencies = [
[[package]]
name = "phf_macros"
-version = "0.8.0"
+version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c"
+checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0"
dependencies = [
- "phf_generator 0.8.0",
- "phf_shared 0.8.0",
+ "phf_generator 0.10.0",
+ "phf_shared 0.10.0",
"proc-macro-hack",
"proc-macro2",
"quote",
@@ -6449,10 +6399,7 @@ dependencies = [
"once_cell",
"percent-encoding",
"pin-project-lite",
- "quinn",
- "rustls 0.23.37",
"rustls-pemfile 2.2.0",
- "rustls-pki-types",
"serde",
"serde_json",
"serde_urlencoded",
@@ -6460,16 +6407,12 @@ dependencies = [
"system-configuration 0.6.1",
"tokio",
"tokio-native-tls",
- "tokio-rustls 0.26.2",
- "tokio-util",
"tower",
"tower-service",
"url",
"wasm-bindgen",
"wasm-bindgen-futures",
- "wasm-streams",
"web-sys",
- "webpki-roots",
"windows-registry",
]
@@ -6482,6 +6425,7 @@ dependencies = [
"base64 0.22.1",
"bytes",
"futures-core",
+ "futures-util",
"http 1.3.1",
"http-body 1.0.1",
"http-body-util",
@@ -6501,12 +6445,14 @@ dependencies = [
"sync_wrapper 1.0.2",
"tokio",
"tokio-rustls 0.26.2",
+ "tokio-util",
"tower",
"tower-http",
"tower-service",
"url",
"wasm-bindgen",
"wasm-bindgen-futures",
+ "wasm-streams",
"web-sys",
]
@@ -6640,14 +6586,14 @@ dependencies = [
[[package]]
name = "rustix"
-version = "1.0.5"
+version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf"
+checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
dependencies = [
"bitflags 2.9.0",
"errno",
"libc",
- "linux-raw-sys 0.9.3",
+ "linux-raw-sys 0.12.1",
"windows-sys 0.59.0",
]
@@ -6930,22 +6876,20 @@ dependencies = [
[[package]]
name = "selectors"
-version = "0.22.0"
+version = "0.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe"
+checksum = "0c37578180969d00692904465fb7f6b3d50b9a2b952b87c23d0e2e5cb5013416"
dependencies = [
"bitflags 1.3.2",
"cssparser",
"derive_more 0.99.19",
"fxhash",
"log",
- "matches",
"phf 0.8.0",
"phf_codegen 0.8.0",
"precomputed-hash",
"servo_arc",
"smallvec",
- "thin-slice",
]
[[package]]
@@ -7023,7 +6967,7 @@ version = "1.0.140"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
dependencies = [
- "itoa 1.0.15",
+ "itoa",
"memchr",
"ryu",
"serde",
@@ -7058,6 +7002,15 @@ dependencies = [
"serde",
]
+[[package]]
+name = "serde_spanned"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "40734c41988f7306bb04f0ecf60ec0f3f1caa34290e4e8ea471dcd3346483b83"
+dependencies = [
+ "serde",
+]
+
[[package]]
name = "serde_urlencoded"
version = "0.7.1"
@@ -7065,7 +7018,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
dependencies = [
"form_urlencoded",
- "itoa 1.0.15",
+ "itoa",
"ryu",
"serde",
]
@@ -7107,7 +7060,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
dependencies = [
"indexmap 2.8.0",
- "itoa 1.0.15",
+ "itoa",
"ryu",
"serde",
"unsafe-libyaml",
@@ -7135,9 +7088,9 @@ dependencies = [
[[package]]
name = "serialize-to-javascript"
-version = "0.1.1"
+version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb"
+checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5"
dependencies = [
"serde",
"serde_json",
@@ -7146,20 +7099,20 @@ dependencies = [
[[package]]
name = "serialize-to-javascript-impl"
-version = "0.1.1"
+version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763"
+checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d"
dependencies = [
"proc-macro2",
"quote",
- "syn 1.0.109",
+ "syn 2.0.100",
]
[[package]]
name = "servo_arc"
-version = "0.1.1"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432"
+checksum = "d52aa42f8fdf0fed91e5ce7f23d8138441002fa31dca008acf47e6fd4721f741"
dependencies = [
"nodrop",
"stable_deref_trait",
@@ -7198,16 +7151,6 @@ dependencies = [
"lazy_static",
]
-[[package]]
-name = "shared_child"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09fa9338aed9a1df411814a5b2252f7cd206c55ae9bf2fa763f8de84603aa60c"
-dependencies = [
- "libc",
- "windows-sys 0.59.0",
-]
-
[[package]]
name = "shlex"
version = "1.3.0"
@@ -7300,7 +7243,7 @@ dependencies = [
"log",
"objc2 0.5.2",
"objc2-foundation 0.2.2",
- "objc2-quartz-core 0.2.2",
+ "objc2-quartz-core",
"raw-window-handle",
"redox_syscall",
"wasm-bindgen",
@@ -7591,11 +7534,12 @@ checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417"
[[package]]
name = "tao"
-version = "0.32.8"
+version = "0.34.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "63c8b1020610b9138dd7b1e06cf259ae91aa05c30f3bd0d6b42a03997b92dec1"
+checksum = "f3a753bdc39c07b192151523a3f77cd0394aa75413802c883a0f6f6a0e5ee2e7"
dependencies = [
"bitflags 2.9.0",
+ "block2 0.6.0",
"core-foundation 0.10.0",
"core-graphics",
"crossbeam-channel",
@@ -7622,8 +7566,8 @@ dependencies = [
"tao-macros",
"unicode-segmentation",
"url",
- "windows 0.60.0",
- "windows-core 0.60.1",
+ "windows 0.61.3",
+ "windows-core 0.61.2",
"windows-version",
"x11-dl",
]
@@ -7664,17 +7608,17 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
[[package]]
name = "tauri"
-version = "2.4.1"
+version = "2.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d08db1ff9e011e04014e737ec022610d756c0eae0b3b3a9037bccaf3003173a"
+checksum = "da77cc00fb9028caf5b5d4650f75e31f1ef3693459dfca7f7e506d1ecef0ba2d"
dependencies = [
"anyhow",
"bytes",
+ "cookie",
"dirs 6.0.0",
"dunce",
"embed_plist",
- "futures-util",
- "getrandom 0.2.15",
+ "getrandom 0.3.3",
"glob",
"gtk",
"heck 0.5.0",
@@ -7687,10 +7631,12 @@ dependencies = [
"objc2 0.6.0",
"objc2-app-kit",
"objc2-foundation 0.3.0",
+ "objc2-ui-kit",
+ "objc2-web-kit",
"percent-encoding",
"plist",
"raw-window-handle",
- "reqwest 0.12.15",
+ "reqwest 0.13.2",
"serde",
"serde_json",
"serde_repr",
@@ -7705,18 +7651,17 @@ dependencies = [
"tokio",
"tray-icon",
"url",
- "urlpattern",
"webkit2gtk",
"webview2-com",
"window-vibrancy",
- "windows 0.60.0",
+ "windows 0.61.3",
]
[[package]]
name = "tauri-build"
-version = "2.1.1"
+version = "2.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fd20e4661c2cce65343319e6e8da256958f5af958cafc47c0d0af66a55dcd17"
+checksum = "4bbc990d1dbf57a8e1c7fa2327f2a614d8b757805603c1b9ba5c81bade09fd4d"
dependencies = [
"anyhow",
"cargo_toml",
@@ -7730,18 +7675,18 @@ dependencies = [
"serde_json",
"tauri-utils",
"tauri-winres",
- "toml 0.8.22",
+ "toml 0.9.5",
"walkdir",
]
[[package]]
name = "tauri-codegen"
-version = "2.1.1"
+version = "2.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "458258b19032450ccf975840116ecf013e539eadbb74420bd890e8c56ab2b1a4"
+checksum = "d4a24476afd977c5d5d169f72425868613d82747916dd29e0a357c84c4bd6d29"
dependencies = [
"base64 0.22.1",
- "brotli",
+ "brotli 8.0.2",
"ico",
"json-patch",
"plist",
@@ -7763,9 +7708,9 @@ dependencies = [
[[package]]
name = "tauri-macros"
-version = "2.1.1"
+version = "2.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d402813d3b9c773a0fa58697c457c771f10e735498fdcb7b343264d18e5a601f"
+checksum = "d39b349a98dadaffebb73f0a40dcd1f23c999211e5a2e744403db384d0c33de7"
dependencies = [
"heck 0.5.0",
"proc-macro2",
@@ -7777,9 +7722,9 @@ dependencies = [
[[package]]
name = "tauri-plugin"
-version = "2.1.1"
+version = "2.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4190775d6ff73fe66d9af44c012739a2659720efd9c0e1e56a918678038699d"
+checksum = "ddde7d51c907b940fb573006cdda9a642d6a7c8153657e88f8a5c3c9290cd4aa"
dependencies = [
"anyhow",
"glob",
@@ -7788,15 +7733,15 @@ dependencies = [
"serde",
"serde_json",
"tauri-utils",
- "toml 0.8.22",
+ "toml 0.9.5",
"walkdir",
]
[[package]]
name = "tauri-plugin-clipboard-manager"
-version = "2.2.2"
+version = "2.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3ab4cb42fdf745229b768802e9180920a4be63122cf87ed1c879103f7609d98e"
+checksum = "206dc20af4ed210748ba945c2774e60fd0acd52b9a73a028402caf809e9b6ecf"
dependencies = [
"arboard",
"log",
@@ -7809,9 +7754,9 @@ dependencies = [
[[package]]
name = "tauri-plugin-opener"
-version = "2.2.6"
+version = "2.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2fdc6cb608e04b7d2b6d1f21e9444ad49245f6d03465ba53323d692d1ceb1a30"
+checksum = "fc624469b06f59f5a29f874bbc61a2ed737c0f9c23ef09855a292c389c42e83f"
dependencies = [
"dunce",
"glob",
@@ -7825,46 +7770,25 @@ dependencies = [
"tauri-plugin",
"thiserror 2.0.12",
"url",
- "windows 0.60.0",
+ "windows 0.61.3",
"zbus",
]
[[package]]
name = "tauri-plugin-process"
-version = "2.2.1"
+version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57da5888533e802b6206b9685091f8714aa1f5266dc80051a82388449558b773"
+checksum = "d55511a7bf6cd70c8767b02c97bf8134fa434daf3926cfc1be0a0f94132d165a"
dependencies = [
"tauri",
"tauri-plugin",
]
-[[package]]
-name = "tauri-plugin-shell"
-version = "2.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69d5eb3368b959937ad2aeaf6ef9a8f5d11e01ffe03629d3530707bbcb27ff5d"
-dependencies = [
- "encoding_rs",
- "log",
- "open",
- "os_pipe",
- "regex",
- "schemars",
- "serde",
- "serde_json",
- "shared_child",
- "tauri",
- "tauri-plugin",
- "thiserror 2.0.12",
- "tokio",
-]
-
[[package]]
name = "tauri-plugin-updater"
-version = "2.7.0"
+version = "2.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d82da763248e635d60ee4aed56c862290e523acc838d83097171f9a544708387"
+checksum = "806d9dac662c2e4594ff03c647a552f2c9bd544e7d0f683ec58f872f952ce4af"
dependencies = [
"base64 0.22.1",
"dirs 6.0.0",
@@ -7876,7 +7800,8 @@ dependencies = [
"minisign-verify",
"osakit",
"percent-encoding",
- "reqwest 0.12.15",
+ "reqwest 0.13.2",
+ "rustls 0.23.37",
"semver",
"serde",
"serde_json",
@@ -7888,35 +7813,40 @@ dependencies = [
"time",
"tokio",
"url",
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
"zip",
]
[[package]]
name = "tauri-runtime"
-version = "2.5.1"
+version = "2.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00ada7ac2f9276f09b8c3afffd3215fd5d9bff23c22df8a7c70e7ef67cacd532"
+checksum = "2826d79a3297ed08cd6ea7f412644ef58e32969504bc4fbd8d7dbeabc4445ea2"
dependencies = [
"cookie",
"dpi",
"gtk",
"http 1.3.1",
"jni",
+ "objc2 0.6.0",
+ "objc2-ui-kit",
+ "objc2-web-kit",
"raw-window-handle",
"serde",
"serde_json",
"tauri-utils",
"thiserror 2.0.12",
"url",
- "windows 0.60.0",
+ "webkit2gtk",
+ "webview2-com",
+ "windows 0.61.3",
]
[[package]]
name = "tauri-runtime-wry"
-version = "2.5.1"
+version = "2.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf2e5842c57e154af43a20a49c7efee0ce2578c20b4c2bdf266852b422d2e421"
+checksum = "e11ea2e6f801d275fdd890d6c9603736012742a1c33b96d0db788c9cdebf7f9e"
dependencies = [
"gtk",
"http 1.3.1",
@@ -7924,7 +7854,6 @@ dependencies = [
"log",
"objc2 0.6.0",
"objc2-app-kit",
- "objc2-foundation 0.3.0",
"once_cell",
"percent-encoding",
"raw-window-handle",
@@ -7935,18 +7864,18 @@ dependencies = [
"url",
"webkit2gtk",
"webview2-com",
- "windows 0.60.0",
+ "windows 0.61.3",
"wry",
]
[[package]]
name = "tauri-utils"
-version = "2.3.1"
+version = "2.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f037e66c7638cc0a2213f61566932b9a06882b8346486579c90e4b019bac447"
+checksum = "219a1f983a2af3653f75b5747f76733b0da7ff03069c7a41901a5eb3ace4557d"
dependencies = [
"anyhow",
- "brotli",
+ "brotli 8.0.2",
"cargo_metadata 0.19.2",
"ctor",
"dunce",
@@ -7970,7 +7899,7 @@ dependencies = [
"serde_with",
"swift-rs",
"thiserror 2.0.12",
- "toml 0.8.22",
+ "toml 0.9.5",
"url",
"urlpattern",
"uuid",
@@ -7989,14 +7918,14 @@ dependencies = [
[[package]]
name = "tempfile"
-version = "3.19.1"
+version = "3.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf"
+checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
dependencies = [
"fastrand",
"getrandom 0.3.3",
"once_cell",
- "rustix 1.0.5",
+ "rustix 1.1.4",
"windows-sys 0.59.0",
]
@@ -8112,12 +8041,6 @@ dependencies = [
"winapi-util",
]
-[[package]]
-name = "thin-slice"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c"
-
[[package]]
name = "thiserror"
version = "1.0.69"
@@ -8186,7 +8109,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40"
dependencies = [
"deranged",
- "itoa 1.0.15",
+ "itoa",
"libc",
"num-conv",
"num_threads",
@@ -8348,11 +8271,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae"
dependencies = [
"serde",
- "serde_spanned",
- "toml_datetime",
+ "serde_spanned 0.6.8",
+ "toml_datetime 0.6.9",
"toml_edit 0.22.26",
]
+[[package]]
+name = "toml"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75129e1dc5000bfbaa9fee9d1b21f974f9fbad9daec557a521ee6e080825f6e8"
+dependencies = [
+ "indexmap 2.8.0",
+ "serde",
+ "serde_spanned 1.0.0",
+ "toml_datetime 0.7.0",
+ "toml_parser",
+ "toml_writer",
+ "winnow 0.7.10",
+]
+
[[package]]
name = "toml_datetime"
version = "0.6.9"
@@ -8362,6 +8300,15 @@ dependencies = [
"serde",
]
+[[package]]
+name = "toml_datetime"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bade1c3e902f58d73d3f294cd7f20391c1cb2fbcb643b73566bc773971df91e3"
+dependencies = [
+ "serde",
+]
+
[[package]]
name = "toml_edit"
version = "0.19.15"
@@ -8369,7 +8316,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
dependencies = [
"indexmap 2.8.0",
- "toml_datetime",
+ "toml_datetime 0.6.9",
"winnow 0.5.40",
]
@@ -8380,7 +8327,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81"
dependencies = [
"indexmap 2.8.0",
- "toml_datetime",
+ "toml_datetime 0.6.9",
"winnow 0.5.40",
]
@@ -8392,18 +8339,33 @@ checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e"
dependencies = [
"indexmap 2.8.0",
"serde",
- "serde_spanned",
- "toml_datetime",
+ "serde_spanned 0.6.8",
+ "toml_datetime 0.6.9",
"toml_write",
"winnow 0.7.10",
]
+[[package]]
+name = "toml_parser"
+version = "1.1.2+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526"
+dependencies = [
+ "winnow 1.0.1",
+]
+
[[package]]
name = "toml_write"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076"
+[[package]]
+name = "toml_writer"
+version = "1.1.1+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db"
+
[[package]]
name = "tower"
version = "0.5.2"
@@ -8517,9 +8479,9 @@ dependencies = [
[[package]]
name = "tray-icon"
-version = "0.20.0"
+version = "0.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d433764348e7084bad2c5ea22c96c71b61b17afe3a11645710f533bd72b6a2b5"
+checksum = "a5e85aa143ceb072062fc4d6356c1b520a51d636e7bc8e77ec94be3608e5e80c"
dependencies = [
"crossbeam-channel",
"dirs 6.0.0",
@@ -8534,7 +8496,7 @@ dependencies = [
"png",
"serde",
"thiserror 2.0.12",
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
]
[[package]]
@@ -8897,48 +8859,32 @@ dependencies = [
[[package]]
name = "wasm-bindgen"
-version = "0.2.100"
+version = "0.2.118"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
+checksum = "0bf938a0bacb0469e83c1e148908bd7d5a6010354cf4fb73279b7447422e3a89"
dependencies = [
"cfg-if",
"once_cell",
"rustversion",
"wasm-bindgen-macro",
-]
-
-[[package]]
-name = "wasm-bindgen-backend"
-version = "0.2.100"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
-dependencies = [
- "bumpalo",
- "log",
- "proc-macro2",
- "quote",
- "syn 2.0.100",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-futures"
-version = "0.4.50"
+version = "0.4.68"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61"
+checksum = "f371d383f2fb139252e0bfac3b81b265689bf45b6874af544ffa4c975ac1ebf8"
dependencies = [
- "cfg-if",
"js-sys",
- "once_cell",
"wasm-bindgen",
- "web-sys",
]
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.100"
+version = "0.2.118"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
+checksum = "eeff24f84126c0ec2db7a449f0c2ec963c6a49efe0698c4242929da037ca28ed"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -8946,31 +8892,31 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.100"
+version = "0.2.118"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
+checksum = "9d08065faf983b2b80a79fd87d8254c409281cf7de75fc4b773019824196c904"
dependencies = [
+ "bumpalo",
"proc-macro2",
"quote",
"syn 2.0.100",
- "wasm-bindgen-backend",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.100"
+version = "0.2.118"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
+checksum = "5fd04d9e306f1907bd13c6361b5c6bfc7b3b3c095ed3f8a9246390f8dbdee129"
dependencies = [
"unicode-ident",
]
[[package]]
name = "wasm-streams"
-version = "0.4.2"
+version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65"
+checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb"
dependencies = [
"futures-util",
"js-sys",
@@ -9065,9 +9011,9 @@ dependencies = [
[[package]]
name = "web-sys"
-version = "0.3.77"
+version = "0.3.95"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
+checksum = "4f2dfbb17949fa2088e5d39408c48368947b86f7834484e87b73de55bc14d97d"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -9085,9 +9031,9 @@ dependencies = [
[[package]]
name = "webkit2gtk"
-version = "2.0.1"
+version = "2.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76b1bc1e54c581da1e9f179d0b38512ba358fb1af2d634a1affe42e37172361a"
+checksum = "a1027150013530fb2eaf806408df88461ae4815a45c541c8975e61d6f2fc4793"
dependencies = [
"bitflags 1.3.2",
"cairo-rs",
@@ -9109,9 +9055,9 @@ dependencies = [
[[package]]
name = "webkit2gtk-sys"
-version = "2.0.1"
+version = "2.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62daa38afc514d1f8f12b8693d30d5993ff77ced33ce30cd04deebc267a6d57c"
+checksum = "916a5f65c2ef0dfe12fff695960a2ec3d4565359fdbb2e9943c974e06c734ea5"
dependencies = [
"bitflags 1.3.2",
"cairo-sys-rs",
@@ -9147,23 +9093,23 @@ dependencies = [
[[package]]
name = "webview2-com"
-version = "0.36.0"
+version = "0.38.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0d606f600e5272b514dbb66539dd068211cc20155be8d3958201b4b5bd79ed3"
+checksum = "7130243a7a5b33c54a444e54842e6a9e133de08b5ad7b5861cd8ed9a6a5bc96a"
dependencies = [
"webview2-com-macros",
"webview2-com-sys",
- "windows 0.60.0",
- "windows-core 0.60.1",
- "windows-implement 0.59.0",
+ "windows 0.61.3",
+ "windows-core 0.61.2",
+ "windows-implement 0.60.0",
"windows-interface 0.59.1",
]
[[package]]
name = "webview2-com-macros"
-version = "0.8.0"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431"
+checksum = "67a921c1b6914c367b2b823cd4cde6f96beec77d30a939c8199bb377cf9b9b54"
dependencies = [
"proc-macro2",
"quote",
@@ -9172,13 +9118,13 @@ dependencies = [
[[package]]
name = "webview2-com-sys"
-version = "0.36.0"
+version = "0.38.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfb27fccd3c27f68e9a6af1bcf48c2d82534b8675b83608a4d81446d095a17ac"
+checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c"
dependencies = [
"thiserror 2.0.12",
- "windows 0.60.0",
- "windows-core 0.60.1",
+ "windows 0.61.3",
+ "windows-core 0.61.2",
]
[[package]]
@@ -9261,24 +9207,24 @@ dependencies = [
[[package]]
name = "windows"
-version = "0.60.0"
+version = "0.61.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ddf874e74c7a99773e62b1c671427abf01a425e77c3d3fb9fb1e4883ea934529"
+checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893"
dependencies = [
"windows-collections",
- "windows-core 0.60.1",
+ "windows-core 0.61.2",
"windows-future",
- "windows-link",
+ "windows-link 0.1.3",
"windows-numerics",
]
[[package]]
name = "windows-collections"
-version = "0.1.1"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5467f79cc1ba3f52ebb2ed41dbb459b8e7db636cc3429458d9a852e15bc24dec"
+checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8"
dependencies = [
- "windows-core 0.60.1",
+ "windows-core 0.61.2",
]
[[package]]
@@ -9311,32 +9257,33 @@ checksum = "ca21a92a9cae9bf4ccae5cf8368dce0837100ddf6e6d57936749e85f152f6247"
dependencies = [
"windows-implement 0.59.0",
"windows-interface 0.59.1",
- "windows-link",
- "windows-result 0.3.2",
+ "windows-link 0.1.3",
+ "windows-result 0.3.4",
"windows-strings 0.3.1",
]
[[package]]
name = "windows-core"
-version = "0.61.0"
+version = "0.61.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980"
+checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
dependencies = [
"windows-implement 0.60.0",
"windows-interface 0.59.1",
- "windows-link",
- "windows-result 0.3.2",
- "windows-strings 0.4.0",
+ "windows-link 0.1.3",
+ "windows-result 0.3.4",
+ "windows-strings 0.4.2",
]
[[package]]
name = "windows-future"
-version = "0.1.1"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a787db4595e7eb80239b74ce8babfb1363d8e343ab072f2ffe901400c03349f0"
+checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
dependencies = [
- "windows-core 0.60.1",
- "windows-link",
+ "windows-core 0.61.2",
+ "windows-link 0.1.3",
+ "windows-threading",
]
[[package]]
@@ -9396,18 +9343,24 @@ dependencies = [
[[package]]
name = "windows-link"
-version = "0.1.1"
+version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"
+checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
+
+[[package]]
+name = "windows-link"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
[[package]]
name = "windows-numerics"
-version = "0.1.1"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "005dea54e2f6499f2cee279b8f703b3cf3b5734a2d8d21867c8f44003182eeed"
+checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
dependencies = [
- "windows-core 0.60.1",
- "windows-link",
+ "windows-core 0.61.2",
+ "windows-link 0.1.3",
]
[[package]]
@@ -9416,9 +9369,9 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3"
dependencies = [
- "windows-result 0.3.2",
+ "windows-result 0.3.4",
"windows-strings 0.3.1",
- "windows-targets 0.53.0",
+ "windows-targets 0.53.5",
]
[[package]]
@@ -9432,11 +9385,11 @@ dependencies = [
[[package]]
name = "windows-result"
-version = "0.3.2"
+version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252"
+checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
dependencies = [
- "windows-link",
+ "windows-link 0.1.3",
]
[[package]]
@@ -9455,16 +9408,16 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319"
dependencies = [
- "windows-link",
+ "windows-link 0.1.3",
]
[[package]]
name = "windows-strings"
-version = "0.4.0"
+version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97"
+checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
dependencies = [
- "windows-link",
+ "windows-link 0.1.3",
]
[[package]]
@@ -9503,6 +9456,24 @@ dependencies = [
"windows-targets 0.52.6",
]
+[[package]]
+name = "windows-sys"
+version = "0.60.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
+dependencies = [
+ "windows-targets 0.53.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.61.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
+dependencies = [
+ "windows-link 0.2.1",
+]
+
[[package]]
name = "windows-targets"
version = "0.42.2"
@@ -9551,10 +9522,11 @@ dependencies = [
[[package]]
name = "windows-targets"
-version = "0.53.0"
+version = "0.53.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b"
+checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
dependencies = [
+ "windows-link 0.2.1",
"windows_aarch64_gnullvm 0.53.0",
"windows_aarch64_msvc 0.53.0",
"windows_i686_gnu 0.53.0",
@@ -9565,13 +9537,22 @@ dependencies = [
"windows_x86_64_msvc 0.53.0",
]
+[[package]]
+name = "windows-threading"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
+dependencies = [
+ "windows-link 0.1.3",
+]
+
[[package]]
name = "windows-version"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e04a5c6627e310a23ad2358483286c7df260c964eb2d003d8efd6d0f4e79265c"
dependencies = [
- "windows-link",
+ "windows-link 0.1.3",
]
[[package]]
@@ -9772,6 +9753,12 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "winnow"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09dac053f1cd375980747450bfc7250c264eaae0583872e845c0c7cd578872b5"
+
[[package]]
name = "winreg"
version = "0.50.0"
@@ -9831,14 +9818,15 @@ checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
[[package]]
name = "wry"
-version = "0.50.5"
+version = "0.54.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b19b78efae8b853c6c817e8752fc1dbf9cab8a8ffe9c30f399bd750ccf0f0730"
+checksum = "bb26159b420aa77684589a744ae9a9461a95395b848764ad12290a14d960a11a"
dependencies = [
"base64 0.22.1",
"block2 0.6.0",
"cookie",
"crossbeam-channel",
+ "dirs 6.0.0",
"dpi",
"dunce",
"gdkx11",
@@ -9867,8 +9855,8 @@ dependencies = [
"webkit2gtk",
"webkit2gtk-sys",
"webview2-com",
- "windows 0.60.0",
- "windows-core 0.60.1",
+ "windows 0.61.3",
+ "windows-core 0.61.2",
"windows-version",
"x11-dl",
]
@@ -9930,17 +9918,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d65cbf2f12c15564212d48f4e3dfb87923d25d611f2aed18f4cb23f0413d89e"
dependencies = [
"libc",
- "rustix 1.0.5",
-]
-
-[[package]]
-name = "xdg-home"
-version = "1.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6"
-dependencies = [
- "libc",
- "windows-sys 0.59.0",
+ "rustix 1.1.4",
]
[[package]]
@@ -9969,13 +9947,12 @@ dependencies = [
[[package]]
name = "zbus"
-version = "5.5.0"
+version = "5.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59c333f648ea1b647bc95dc1d34807c8e25ed7a6feff3394034dc4776054b236"
+checksum = "ca82f95dbd3943a40a53cfded6c2d0a2ca26192011846a1810c4256ef92c60bc"
dependencies = [
"async-broadcast",
"async-executor",
- "async-fs",
"async-io",
"async-lock",
"async-process",
@@ -9988,16 +9965,16 @@ dependencies = [
"futures-core",
"futures-lite",
"hex",
- "nix",
+ "libc",
"ordered-stream",
+ "rustix 1.1.4",
"serde",
"serde_repr",
- "static_assertions",
"tracing",
"uds_windows",
- "windows-sys 0.59.0",
+ "uuid",
+ "windows-sys 0.61.2",
"winnow 0.7.10",
- "xdg-home",
"zbus_macros",
"zbus_names",
"zvariant",
@@ -10005,9 +9982,9 @@ dependencies = [
[[package]]
name = "zbus_macros"
-version = "5.5.0"
+version = "5.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f325ad10eb0d0a3eb060203494c3b7ec3162a01a59db75d2deee100339709fc0"
+checksum = "897e79616e84aac4b2c46e9132a4f63b93105d54fe8c0e8f6bffc21fa8d49222"
dependencies = [
"proc-macro-crate 3.3.0",
"proc-macro2",
@@ -10020,12 +9997,11 @@ dependencies = [
[[package]]
name = "zbus_names"
-version = "4.2.0"
+version = "4.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97"
+checksum = "ffd8af6d5b78619bab301ff3c560a5bd22426150253db278f164d6cf3b72c50f"
dependencies = [
"serde",
- "static_assertions",
"winnow 0.7.10",
"zvariant",
]
@@ -10136,13 +10112,12 @@ dependencies = [
[[package]]
name = "zip"
-version = "2.6.0"
+version = "4.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "febbe83a485467affa75a75d28dc7494acd2f819e549536c47d46b3089b56164"
+checksum = "caa8cd6af31c3b31c6631b8f483848b91589021b28fffe50adada48d4f4d2ed1"
dependencies = [
"arbitrary",
"crc32fast",
- "crossbeam-utils",
"indexmap 2.8.0",
"memchr",
]
@@ -10177,14 +10152,13 @@ dependencies = [
[[package]]
name = "zvariant"
-version = "5.4.0"
+version = "5.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2df9ee044893fcffbdc25de30546edef3e32341466811ca18421e3cd6c5a3ac"
+checksum = "5708299b21903bbe348e94729f22c49c55d04720a004aa350f1f9c122fd2540b"
dependencies = [
"endi",
"enumflags2",
"serde",
- "static_assertions",
"winnow 0.7.10",
"zvariant_derive",
"zvariant_utils",
@@ -10192,9 +10166,9 @@ dependencies = [
[[package]]
name = "zvariant_derive"
-version = "5.4.0"
+version = "5.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74170caa85b8b84cc4935f2d56a57c7a15ea6185ccdd7eadb57e6edd90f94b2f"
+checksum = "5b59b012ebe9c46656f9cc08d8da8b4c726510aef12559da3e5f1bf72780752c"
dependencies = [
"proc-macro-crate 3.3.0",
"proc-macro2",
@@ -10205,14 +10179,13 @@ dependencies = [
[[package]]
name = "zvariant_utils"
-version = "3.2.0"
+version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e16edfee43e5d7b553b77872d99bc36afdda75c223ca7ad5e3fbecd82ca5fc34"
+checksum = "f75c23a64ef8f40f13a6989991e643554d9bef1d682a281160cf0c1bc389c5e9"
dependencies = [
"proc-macro2",
"quote",
"serde",
- "static_assertions",
"syn 2.0.100",
"winnow 0.7.10",
]
diff --git a/nym-wallet/README.md b/nym-wallet/README.md
index b935f85118..55bca32258 100644
--- a/nym-wallet/README.md
+++ b/nym-wallet/README.md
@@ -15,6 +15,22 @@ The Nym desktop wallet enables you to use the Nym network and take advantage of
- `NodeJS >= v16.8.0`
- `Rust & cargo >= v1.56`
+## Linux: WebKit and EGL troubleshooting
+
+Some rolling distributions (for example Arch-based) or Wayland compositors can hit WebKitGTK / EGL errors at startup (for example `EGL_BAD_PARAMETER`, `EGL_BAD_ALLOC`, or `Could not create default EGL display`).
+
+**Wayland (all Linux bundles, including AppImage):** On startup, when `WAYLAND_DISPLAY` is set, the wallet sets `GDK_BACKEND`, `GDK_SCALE`, `GDK_DPI_SCALE`, and defaults `WEBKIT_DISABLE_DMABUF_RENDERER=1` before the webview initializes. Override if needed: `WEBKIT_DISABLE_DMABUF_RENDERER=0`, or set your own `GDK_*` / `LD_PRELOAD` before launching. (Tauri’s AppImage bundler only copies paths under `/usr/` into the image, so an `apprun-hooks/` file in config would not be included; defaults live in `main()` instead.)
+
+**`.deb`, installed binary, or `target/release` binary:** You can also set the same variables in a wrapper script or `.desktop` file, for example:
+
+`Exec=env WEBKIT_DISABLE_DMABUF_RENDERER=1 GDK_BACKEND=wayland GDK_SCALE=1 GDK_DPI_SCALE=0.8 /path/to/NymWallet`
+
+If problems persist on Wayland, try preloading the system client library (path may vary by distro):
+
+`LD_PRELOAD=/usr/lib/libwayland-client.so` (or `/usr/lib64/...`).
+
+**Diagnostic (slow):** `LIBGL_ALWAYS_SOFTWARE=1` forces software GL to confirm a GPU / EGL stack mismatch.
+
## Installation prerequisites - Windows
- When running on Windows you will need to install c++ build tools
diff --git a/nym-wallet/dist/.gitkeep b/nym-wallet/dist/.gitkeep
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/nym-wallet/jest.config.cjs b/nym-wallet/jest.config.cjs
new file mode 100644
index 0000000000..fd07e80128
--- /dev/null
+++ b/nym-wallet/jest.config.cjs
@@ -0,0 +1,20 @@
+/** @type {import('jest').Config} */
+module.exports = {
+ testEnvironment: 'node',
+ roots: ['/src'],
+ testMatch: ['**/*.test.ts'],
+ transform: {
+ '^.+\\.tsx?$': [
+ 'ts-jest',
+ {
+ tsconfig: {
+ esModuleInterop: true,
+ module: 'commonjs',
+ },
+ },
+ ],
+ },
+ moduleNameMapper: {
+ '^src/(.*)$': '/src/$1',
+ },
+};
diff --git a/nym-wallet/package.json b/nym-wallet/package.json
index 134eab22f4..b3964e4947 100644
--- a/nym-wallet/package.json
+++ b/nym-wallet/package.json
@@ -5,18 +5,21 @@
"main": "index.js",
"scripts": {
"build": "run-s webpack:prod tauri:build",
+ "build:no-sign": "run-s webpack:prod tauri:build:no-sign",
"build-macx86": "run-s webpack:prod tauri:buildx86",
"dev": "run-p tauri:dev webpack:dev",
"lint": "eslint src",
"lint:fix": "eslint src --fix",
"prebuild": "yarn --cwd .. build",
- "prestorybook": "yarn --cwd .. build",
"prewebpack:dev": "yarn --cwd .. build",
- "storybook": "start-storybook -p 6006",
- "storybook:build": "build-storybook",
+ "prewebpack:prod": "yarn check:singletons",
+ "check:singletons": "node scripts/check-mui-singletons.js",
"tauri:build": "yarn tauri build",
+ "tauri:build:no-sign": "yarn tauri build --no-sign -b app",
+ "tauri:build:adhoc": "APPLE_SIGNING_IDENTITY=- yarn tauri build -b app",
"tauri:dev": "yarn tauri dev",
"tauri:buildx86": "yarn tauri build --target x86_64-apple-darwin",
+ "test": "jest --config jest.config.cjs",
"tsc": "tsc --noEmit true",
"tsc:watch": "tsc --noEmit true --watch",
"webpack:dev": "yarn webpack serve --config webpack.dev.js",
@@ -26,24 +29,24 @@
"@babel/helper-simple-access": "^7.25.9",
"@emotion/react": "^11.7.0",
"@emotion/styled": "^11.6.0",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0",
"@hookform/resolvers": "^2.8.0",
"@mui/icons-material": "^5.2.0",
"@mui/material": "^5.2.2",
- "@mui/styles": "^5.2.2",
+ "@mui/styles": "^5.18.0",
"@mui/utils": "^5.7.0",
- "@nymproject/mui-theme": "^1.0.0",
"@nymproject/node-tester": "^1.3.1",
"@nymproject/react": "^1.0.0",
"@nymproject/types": "^1.0.0",
- "@storybook/react": "^6.5.15",
- "@tauri-apps/api": "^2.4.0",
- "@tauri-apps/plugin-clipboard-manager": "^2.2.2",
- "@tauri-apps/plugin-opener": "^2.2.6",
- "@tauri-apps/plugin-shell": "^2.2.1",
- "@tauri-apps/plugin-updater": "^2.0.0",
+ "@tauri-apps/api": "^2.10.1",
+ "@tauri-apps/plugin-clipboard-manager": "^2.3.2",
+ "@tauri-apps/plugin-opener": "^2.5.3",
+ "@tauri-apps/plugin-process": "^2.3.1",
+ "@tauri-apps/plugin-updater": "^2.10.1",
"@tauri-apps/tauri-forage": "^1.0.0-beta.2",
"big.js": "^6.2.1",
"bs58": "^4.0.1",
+ "@emotion/cache": "^11.14.0",
"clsx": "^1.1.1",
"date-fns": "^2.28.0",
"joi": "^17.11.0",
@@ -51,8 +54,8 @@
"notistack": "^2.0.3",
"npm-run-all": "^4.1.5",
"qrcode.react": "^1.0.1",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
+ "react": "^19.2.0",
+ "react-dom": "^19.2.0",
"react-error-boundary": "^3.1.3",
"react-hook-form": "^7.14.2",
"react-router-dom": "6",
@@ -72,31 +75,31 @@
"@babel/preset-typescript": "^7.15.0",
"@nymproject/eslint-config-react-typescript": "^1.0.0",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.4",
- "@storybook/react": "^6.5.15",
"@svgr/webpack": "^6.1.1",
- "@tauri-apps/cli": "^2.4.0",
- "@testing-library/jest-dom": "^5.14.1",
- "@testing-library/react": "^12.0.0",
+ "@tauri-apps/cli": "^2.10.1",
+ "@testing-library/dom": "^10.4.1",
+ "@testing-library/jest-dom": "^6.9.1",
+ "@testing-library/react": "^16.3.2",
"@types/big.js": "^6.1.6",
"@types/bs58": "^4.0.1",
- "@types/jest": "^27.0.1",
+ "@types/jest": "^29.5.14",
"@types/minimatch": "5.1.2",
- "@types/node": "^16.7.13",
+ "@types/node": "^22.15.29",
"@types/qrcode.react": "^1.0.2",
- "@types/react": "^18.0.26",
- "@types/react-dom": "^18.0.10",
+ "@types/react": "^19.2.14",
+ "@types/react-dom": "^19.2.3",
"@types/semver": "^7.3.8",
"@types/uuid": "^8.3.4",
"@types/zxcvbn": "^4.4.1",
- "@typescript-eslint/eslint-plugin": "^5.13.0",
- "@typescript-eslint/parser": "^5.13.0",
+ "@typescript-eslint/eslint-plugin": "^8.56.1",
+ "@typescript-eslint/parser": "^8.56.1",
"babel-loader": "^8.3.0",
"babel-plugin-root-import": "^6.6.0",
"clean-webpack-plugin": "^4.0.0",
"css-loader": "^6.7.3",
"css-minimizer-webpack-plugin": "^3.0.2",
"dotenv-webpack": "^7.0.3",
- "eslint": "^9.26.0",
+ "eslint": "^8.57.1",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-airbnb-typescript": "^16.1.0",
"eslint-config-prettier": "^8.5.0",
@@ -107,13 +110,12 @@
"eslint-plugin-prettier": "^4.0.0",
"eslint-plugin-react": "^7.29.2",
"eslint-plugin-react-hooks": "^4.3.0",
- "eslint-plugin-storybook": "^0.5.12",
"favicons": "^7.0.2",
"favicons-webpack-plugin": "^5.0.2",
"file-loader": "^6.2.0",
"fork-ts-checker-webpack-plugin": "^7.2.1",
"html-webpack-plugin": "^5.3.2",
- "jest": "^27.1.0",
+ "jest": "^30.3.0",
"mini-css-extract-plugin": "^2.2.2",
"npm-run-all": "^4.1.5",
"prettier": "^2.8.7",
@@ -121,10 +123,10 @@
"react-refresh-typescript": "^2.0.2",
"style-loader": "^3.3.1",
"thread-loader": "^3.0.4",
- "ts-jest": "^27.0.5",
+ "ts-jest": "^29.4.9",
"ts-loader": "^9.4.2",
"tsconfig-paths-webpack-plugin": "^3.5.2",
- "typescript": "^4.6.2",
+ "typescript": "^5.9.3",
"url-loader": "^4.1.1",
"webpack": "^5.75.0",
"webpack-cli": "^4.8.0",
diff --git a/nym-wallet/public/index.html b/nym-wallet/public/index.html
index af101025cb..7e4a73b66f 100644
--- a/nym-wallet/public/index.html
+++ b/nym-wallet/public/index.html
@@ -4,6 +4,25 @@
Nym Wallet
+
diff --git a/nym-wallet/public/log.html b/nym-wallet/public/log.html
index 5ced2243f1..cfa9c797d8 100644
--- a/nym-wallet/public/log.html
+++ b/nym-wallet/public/log.html
@@ -4,6 +4,16 @@
Nym Wallet Logs
+
diff --git a/nym-wallet/scripts/check-mui-singletons.js b/nym-wallet/scripts/check-mui-singletons.js
new file mode 100644
index 0000000000..7ec57055bd
--- /dev/null
+++ b/nym-wallet/scripts/check-mui-singletons.js
@@ -0,0 +1,45 @@
+/* eslint-disable no-console -- build-time diagnostic */
+const path = require('path');
+const fs = require('fs');
+
+const walletRoot = path.resolve(__dirname, '..');
+
+const PKGS = [
+ '@emotion/react',
+ '@emotion/styled',
+ '@emotion/cache',
+ '@mui/material',
+ '@mui/system',
+ '@mui/styled-engine',
+ '@mui/private-theming',
+ '@mui/utils',
+ '@mui/lab',
+ '@mui/icons-material',
+ 'react',
+ 'react-dom',
+];
+
+const probes = [
+ walletRoot,
+ path.join(walletRoot, 'node_modules', '@nymproject', 'react'),
+ path.join(walletRoot, 'node_modules', '@mui', 'material'),
+];
+
+let bad = 0;
+PKGS.forEach((pkg) => {
+ const seen = new Set();
+ probes.forEach((probe) => {
+ try {
+ const p = require.resolve(`${pkg}/package.json`, { paths: [probe] });
+ seen.add(fs.realpathSync(p));
+ } catch {
+ /* probe may not resolve this package */
+ }
+ });
+ if (seen.size > 1) {
+ bad += 1;
+ console.error(`[singleton] DUPLICATE ${pkg}:\n ${[...seen].join('\n ')}`);
+ }
+});
+
+process.exit(bad ? 1 : 0);
diff --git a/nym-wallet/scripts/regenerate-tauri-icons.sh b/nym-wallet/scripts/regenerate-tauri-icons.sh
new file mode 100755
index 0000000000..ed3a75a4c8
--- /dev/null
+++ b/nym-wallet/scripts/regenerate-tauri-icons.sh
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+# Regenerate macOS/Windows icon bundles from the 1024x1024 master in src-tauri/icons/.
+# Master file: app-icon-source.png (padded per Apple-style safe zone). Edit that asset, then run:
+# ./scripts/regenerate-tauri-icons.sh
+# Requires: python3 with Pillow (`pip install pillow`) for tray_icon.png resize.
+set -euo pipefail
+ROOT="$(cd "$(dirname "$0")/.." && pwd)"
+SRC="$ROOT/src-tauri/icons/app-icon-source.png"
+yarn --cwd "$ROOT" tauri icon "$SRC" -o "$ROOT/src-tauri/icons"
+rm -rf "$ROOT/src-tauri/icons/android" "$ROOT/src-tauri/icons/ios"
+rm -f "$ROOT/src-tauri/icons"/Square*.png "$ROOT/src-tauri/icons/StoreLogo.png"
+python3 - <","type":"string"}},"required":["validator"],"type":"object"}],"description":"A command argument allowed to be executed by the webview API."},"ShellScopeEntryAllowedArgs":{"anyOf":[{"description":"Use a simple boolean to allow all or disable all arguments to this command configuration.","type":"boolean"},{"description":"A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.","items":{"$ref":"#/definitions/ShellScopeEntryAllowedArg"},"type":"array"}],"description":"A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration."}},"description":"Shell scope entry.","title":"ShellScopeEntry"}},"updater":{"default_permission":{"identifier":"default","description":"This permission set configures which kind of\nupdater functions are exposed to the frontend.\n\n#### Granted Permissions\n\nThe full workflow from checking for updates to installing them\nis enabled.\n\n","permissions":["allow-check","allow-download","allow-install","allow-download-and-install"]},"permissions":{"allow-check":{"identifier":"allow-check","description":"Enables the check command without any pre-configured scope.","commands":{"allow":["check"],"deny":[]}},"allow-download":{"identifier":"allow-download","description":"Enables the download command without any pre-configured scope.","commands":{"allow":["download"],"deny":[]}},"allow-download-and-install":{"identifier":"allow-download-and-install","description":"Enables the download_and_install command without any pre-configured scope.","commands":{"allow":["download_and_install"],"deny":[]}},"allow-install":{"identifier":"allow-install","description":"Enables the install command without any pre-configured scope.","commands":{"allow":["install"],"deny":[]}},"deny-check":{"identifier":"deny-check","description":"Denies the check command without any pre-configured scope.","commands":{"allow":[],"deny":["check"]}},"deny-download":{"identifier":"deny-download","description":"Denies the download command without any pre-configured scope.","commands":{"allow":[],"deny":["download"]}},"deny-download-and-install":{"identifier":"deny-download-and-install","description":"Denies the download_and_install command without any pre-configured scope.","commands":{"allow":[],"deny":["download_and_install"]}},"deny-install":{"identifier":"deny-install","description":"Denies the install command without any pre-configured scope.","commands":{"allow":[],"deny":["install"]}}},"permission_sets":{},"global_scope_schema":null}}
\ No newline at end of file
+{"clipboard-manager":{"default_permission":{"identifier":"default","description":"No features are enabled by default, as we believe\nthe clipboard can be inherently dangerous and it is \napplication specific if read and/or write access is needed.\n\nClipboard interaction needs to be explicitly enabled.\n","permissions":[]},"permissions":{"allow-clear":{"identifier":"allow-clear","description":"Enables the clear command without any pre-configured scope.","commands":{"allow":["clear"],"deny":[]}},"allow-read-image":{"identifier":"allow-read-image","description":"Enables the read_image command without any pre-configured scope.","commands":{"allow":["read_image"],"deny":[]}},"allow-read-text":{"identifier":"allow-read-text","description":"Enables the read_text command without any pre-configured scope.","commands":{"allow":["read_text"],"deny":[]}},"allow-write-html":{"identifier":"allow-write-html","description":"Enables the write_html command without any pre-configured scope.","commands":{"allow":["write_html"],"deny":[]}},"allow-write-image":{"identifier":"allow-write-image","description":"Enables the write_image command without any pre-configured scope.","commands":{"allow":["write_image"],"deny":[]}},"allow-write-text":{"identifier":"allow-write-text","description":"Enables the write_text command without any pre-configured scope.","commands":{"allow":["write_text"],"deny":[]}},"deny-clear":{"identifier":"deny-clear","description":"Denies the clear command without any pre-configured scope.","commands":{"allow":[],"deny":["clear"]}},"deny-read-image":{"identifier":"deny-read-image","description":"Denies the read_image command without any pre-configured scope.","commands":{"allow":[],"deny":["read_image"]}},"deny-read-text":{"identifier":"deny-read-text","description":"Denies the read_text command without any pre-configured scope.","commands":{"allow":[],"deny":["read_text"]}},"deny-write-html":{"identifier":"deny-write-html","description":"Denies the write_html command without any pre-configured scope.","commands":{"allow":[],"deny":["write_html"]}},"deny-write-image":{"identifier":"deny-write-image","description":"Denies the write_image command without any pre-configured scope.","commands":{"allow":[],"deny":["write_image"]}},"deny-write-text":{"identifier":"deny-write-text","description":"Denies the write_text command without any pre-configured scope.","commands":{"allow":[],"deny":["write_text"]}}},"permission_sets":{},"global_scope_schema":null},"core":{"default_permission":{"identifier":"default","description":"Default core plugins set.","permissions":["core:path:default","core:event:default","core:window:default","core:webview:default","core:app:default","core:image:default","core:resources:default","core:menu:default","core:tray:default"]},"permissions":{},"permission_sets":{},"global_scope_schema":null},"core:app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version","allow-identifier","allow-bundle-type","allow-register-listener","allow-remove-listener"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-bundle-type":{"identifier":"allow-bundle-type","description":"Enables the bundle_type command without any pre-configured scope.","commands":{"allow":["bundle_type"],"deny":[]}},"allow-default-window-icon":{"identifier":"allow-default-window-icon","description":"Enables the default_window_icon command without any pre-configured scope.","commands":{"allow":["default_window_icon"],"deny":[]}},"allow-fetch-data-store-identifiers":{"identifier":"allow-fetch-data-store-identifiers","description":"Enables the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":["fetch_data_store_identifiers"],"deny":[]}},"allow-identifier":{"identifier":"allow-identifier","description":"Enables the identifier command without any pre-configured scope.","commands":{"allow":["identifier"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-register-listener":{"identifier":"allow-register-listener","description":"Enables the register_listener command without any pre-configured scope.","commands":{"allow":["register_listener"],"deny":[]}},"allow-remove-data-store":{"identifier":"allow-remove-data-store","description":"Enables the remove_data_store command without any pre-configured scope.","commands":{"allow":["remove_data_store"],"deny":[]}},"allow-remove-listener":{"identifier":"allow-remove-listener","description":"Enables the remove_listener command without any pre-configured scope.","commands":{"allow":["remove_listener"],"deny":[]}},"allow-set-app-theme":{"identifier":"allow-set-app-theme","description":"Enables the set_app_theme command without any pre-configured scope.","commands":{"allow":["set_app_theme"],"deny":[]}},"allow-set-dock-visibility":{"identifier":"allow-set-dock-visibility","description":"Enables the set_dock_visibility command without any pre-configured scope.","commands":{"allow":["set_dock_visibility"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-bundle-type":{"identifier":"deny-bundle-type","description":"Denies the bundle_type command without any pre-configured scope.","commands":{"allow":[],"deny":["bundle_type"]}},"deny-default-window-icon":{"identifier":"deny-default-window-icon","description":"Denies the default_window_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["default_window_icon"]}},"deny-fetch-data-store-identifiers":{"identifier":"deny-fetch-data-store-identifiers","description":"Denies the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_data_store_identifiers"]}},"deny-identifier":{"identifier":"deny-identifier","description":"Denies the identifier command without any pre-configured scope.","commands":{"allow":[],"deny":["identifier"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-register-listener":{"identifier":"deny-register-listener","description":"Denies the register_listener command without any pre-configured scope.","commands":{"allow":[],"deny":["register_listener"]}},"deny-remove-data-store":{"identifier":"deny-remove-data-store","description":"Denies the remove_data_store command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_data_store"]}},"deny-remove-listener":{"identifier":"deny-remove-listener","description":"Denies the remove_listener command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_listener"]}},"deny-set-app-theme":{"identifier":"deny-set-app-theme","description":"Denies the set_app_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_app_theme"]}},"deny-set-dock-visibility":{"identifier":"deny-set-dock-visibility","description":"Denies the set_dock_visibility command without any pre-configured scope.","commands":{"allow":[],"deny":["set_dock_visibility"]}},"deny-tauri-version":{"identifier":"deny-tauri-version","description":"Denies the tauri_version command without any pre-configured scope.","commands":{"allow":[],"deny":["tauri_version"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"core:event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-listen","allow-unlisten","allow-emit","allow-emit-to"]},"permissions":{"allow-emit":{"identifier":"allow-emit","description":"Enables the emit command without any pre-configured scope.","commands":{"allow":["emit"],"deny":[]}},"allow-emit-to":{"identifier":"allow-emit-to","description":"Enables the emit_to command without any pre-configured scope.","commands":{"allow":["emit_to"],"deny":[]}},"allow-listen":{"identifier":"allow-listen","description":"Enables the listen command without any pre-configured scope.","commands":{"allow":["listen"],"deny":[]}},"allow-unlisten":{"identifier":"allow-unlisten","description":"Enables the unlisten command without any pre-configured scope.","commands":{"allow":["unlisten"],"deny":[]}},"deny-emit":{"identifier":"deny-emit","description":"Denies the emit command without any pre-configured scope.","commands":{"allow":[],"deny":["emit"]}},"deny-emit-to":{"identifier":"deny-emit-to","description":"Denies the emit_to command without any pre-configured scope.","commands":{"allow":[],"deny":["emit_to"]}},"deny-listen":{"identifier":"deny-listen","description":"Denies the listen command without any pre-configured scope.","commands":{"allow":[],"deny":["listen"]}},"deny-unlisten":{"identifier":"deny-unlisten","description":"Denies the unlisten command without any pre-configured scope.","commands":{"allow":[],"deny":["unlisten"]}}},"permission_sets":{},"global_scope_schema":null},"core:image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-from-bytes","allow-from-path","allow-rgba","allow-size"]},"permissions":{"allow-from-bytes":{"identifier":"allow-from-bytes","description":"Enables the from_bytes command without any pre-configured scope.","commands":{"allow":["from_bytes"],"deny":[]}},"allow-from-path":{"identifier":"allow-from-path","description":"Enables the from_path command without any pre-configured scope.","commands":{"allow":["from_path"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-rgba":{"identifier":"allow-rgba","description":"Enables the rgba command without any pre-configured scope.","commands":{"allow":["rgba"],"deny":[]}},"allow-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"deny-from-bytes":{"identifier":"deny-from-bytes","description":"Denies the from_bytes command without any pre-configured scope.","commands":{"allow":[],"deny":["from_bytes"]}},"deny-from-path":{"identifier":"deny-from-path","description":"Denies the from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["from_path"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-rgba":{"identifier":"deny-rgba","description":"Denies the rgba command without any pre-configured scope.","commands":{"allow":[],"deny":["rgba"]}},"deny-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}}},"permission_sets":{},"global_scope_schema":null},"core:menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-append","allow-prepend","allow-insert","allow-remove","allow-remove-at","allow-items","allow-get","allow-popup","allow-create-default","allow-set-as-app-menu","allow-set-as-window-menu","allow-text","allow-set-text","allow-is-enabled","allow-set-enabled","allow-set-accelerator","allow-set-as-windows-menu-for-nsapp","allow-set-as-help-menu-for-nsapp","allow-is-checked","allow-set-checked","allow-set-icon"]},"permissions":{"allow-append":{"identifier":"allow-append","description":"Enables the append command without any pre-configured scope.","commands":{"allow":["append"],"deny":[]}},"allow-create-default":{"identifier":"allow-create-default","description":"Enables the create_default command without any pre-configured scope.","commands":{"allow":["create_default"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-insert":{"identifier":"allow-insert","description":"Enables the insert command without any pre-configured scope.","commands":{"allow":["insert"],"deny":[]}},"allow-is-checked":{"identifier":"allow-is-checked","description":"Enables the is_checked command without any pre-configured scope.","commands":{"allow":["is_checked"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-items":{"identifier":"allow-items","description":"Enables the items command without any pre-configured scope.","commands":{"allow":["items"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-popup":{"identifier":"allow-popup","description":"Enables the popup command without any pre-configured scope.","commands":{"allow":["popup"],"deny":[]}},"allow-prepend":{"identifier":"allow-prepend","description":"Enables the prepend command without any pre-configured scope.","commands":{"allow":["prepend"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-remove-at":{"identifier":"allow-remove-at","description":"Enables the remove_at command without any pre-configured scope.","commands":{"allow":["remove_at"],"deny":[]}},"allow-set-accelerator":{"identifier":"allow-set-accelerator","description":"Enables the set_accelerator command without any pre-configured scope.","commands":{"allow":["set_accelerator"],"deny":[]}},"allow-set-as-app-menu":{"identifier":"allow-set-as-app-menu","description":"Enables the set_as_app_menu command without any pre-configured scope.","commands":{"allow":["set_as_app_menu"],"deny":[]}},"allow-set-as-help-menu-for-nsapp":{"identifier":"allow-set-as-help-menu-for-nsapp","description":"Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_help_menu_for_nsapp"],"deny":[]}},"allow-set-as-window-menu":{"identifier":"allow-set-as-window-menu","description":"Enables the set_as_window_menu command without any pre-configured scope.","commands":{"allow":["set_as_window_menu"],"deny":[]}},"allow-set-as-windows-menu-for-nsapp":{"identifier":"allow-set-as-windows-menu-for-nsapp","description":"Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_windows_menu_for_nsapp"],"deny":[]}},"allow-set-checked":{"identifier":"allow-set-checked","description":"Enables the set_checked command without any pre-configured scope.","commands":{"allow":["set_checked"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-text":{"identifier":"allow-set-text","description":"Enables the set_text command without any pre-configured scope.","commands":{"allow":["set_text"],"deny":[]}},"allow-text":{"identifier":"allow-text","description":"Enables the text command without any pre-configured scope.","commands":{"allow":["text"],"deny":[]}},"deny-append":{"identifier":"deny-append","description":"Denies the append command without any pre-configured scope.","commands":{"allow":[],"deny":["append"]}},"deny-create-default":{"identifier":"deny-create-default","description":"Denies the create_default command without any pre-configured scope.","commands":{"allow":[],"deny":["create_default"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-insert":{"identifier":"deny-insert","description":"Denies the insert command without any pre-configured scope.","commands":{"allow":[],"deny":["insert"]}},"deny-is-checked":{"identifier":"deny-is-checked","description":"Denies the is_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["is_checked"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-items":{"identifier":"deny-items","description":"Denies the items command without any pre-configured scope.","commands":{"allow":[],"deny":["items"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-popup":{"identifier":"deny-popup","description":"Denies the popup command without any pre-configured scope.","commands":{"allow":[],"deny":["popup"]}},"deny-prepend":{"identifier":"deny-prepend","description":"Denies the prepend command without any pre-configured scope.","commands":{"allow":[],"deny":["prepend"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-remove-at":{"identifier":"deny-remove-at","description":"Denies the remove_at command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_at"]}},"deny-set-accelerator":{"identifier":"deny-set-accelerator","description":"Denies the set_accelerator command without any pre-configured scope.","commands":{"allow":[],"deny":["set_accelerator"]}},"deny-set-as-app-menu":{"identifier":"deny-set-as-app-menu","description":"Denies the set_as_app_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_app_menu"]}},"deny-set-as-help-menu-for-nsapp":{"identifier":"deny-set-as-help-menu-for-nsapp","description":"Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_help_menu_for_nsapp"]}},"deny-set-as-window-menu":{"identifier":"deny-set-as-window-menu","description":"Denies the set_as_window_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_window_menu"]}},"deny-set-as-windows-menu-for-nsapp":{"identifier":"deny-set-as-windows-menu-for-nsapp","description":"Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_windows_menu_for_nsapp"]}},"deny-set-checked":{"identifier":"deny-set-checked","description":"Denies the set_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["set_checked"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-text":{"identifier":"deny-set-text","description":"Denies the set_text command without any pre-configured scope.","commands":{"allow":[],"deny":["set_text"]}},"deny-text":{"identifier":"deny-text","description":"Denies the text command without any pre-configured scope.","commands":{"allow":[],"deny":["text"]}}},"permission_sets":{},"global_scope_schema":null},"core:path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-resolve-directory","allow-resolve","allow-normalize","allow-join","allow-dirname","allow-extname","allow-basename","allow-is-absolute"]},"permissions":{"allow-basename":{"identifier":"allow-basename","description":"Enables the basename command without any pre-configured scope.","commands":{"allow":["basename"],"deny":[]}},"allow-dirname":{"identifier":"allow-dirname","description":"Enables the dirname command without any pre-configured scope.","commands":{"allow":["dirname"],"deny":[]}},"allow-extname":{"identifier":"allow-extname","description":"Enables the extname command without any pre-configured scope.","commands":{"allow":["extname"],"deny":[]}},"allow-is-absolute":{"identifier":"allow-is-absolute","description":"Enables the is_absolute command without any pre-configured scope.","commands":{"allow":["is_absolute"],"deny":[]}},"allow-join":{"identifier":"allow-join","description":"Enables the join command without any pre-configured scope.","commands":{"allow":["join"],"deny":[]}},"allow-normalize":{"identifier":"allow-normalize","description":"Enables the normalize command without any pre-configured scope.","commands":{"allow":["normalize"],"deny":[]}},"allow-resolve":{"identifier":"allow-resolve","description":"Enables the resolve command without any pre-configured scope.","commands":{"allow":["resolve"],"deny":[]}},"allow-resolve-directory":{"identifier":"allow-resolve-directory","description":"Enables the resolve_directory command without any pre-configured scope.","commands":{"allow":["resolve_directory"],"deny":[]}},"deny-basename":{"identifier":"deny-basename","description":"Denies the basename command without any pre-configured scope.","commands":{"allow":[],"deny":["basename"]}},"deny-dirname":{"identifier":"deny-dirname","description":"Denies the dirname command without any pre-configured scope.","commands":{"allow":[],"deny":["dirname"]}},"deny-extname":{"identifier":"deny-extname","description":"Denies the extname command without any pre-configured scope.","commands":{"allow":[],"deny":["extname"]}},"deny-is-absolute":{"identifier":"deny-is-absolute","description":"Denies the is_absolute command without any pre-configured scope.","commands":{"allow":[],"deny":["is_absolute"]}},"deny-join":{"identifier":"deny-join","description":"Denies the join command without any pre-configured scope.","commands":{"allow":[],"deny":["join"]}},"deny-normalize":{"identifier":"deny-normalize","description":"Denies the normalize command without any pre-configured scope.","commands":{"allow":[],"deny":["normalize"]}},"deny-resolve":{"identifier":"deny-resolve","description":"Denies the resolve command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve"]}},"deny-resolve-directory":{"identifier":"deny-resolve-directory","description":"Denies the resolve_directory command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve_directory"]}}},"permission_sets":{},"global_scope_schema":null},"core:resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-close"]},"permissions":{"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}}},"permission_sets":{},"global_scope_schema":null},"core:tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-get-by-id","allow-remove-by-id","allow-set-icon","allow-set-menu","allow-set-tooltip","allow-set-title","allow-set-visible","allow-set-temp-dir-path","allow-set-icon-as-template","allow-set-show-menu-on-left-click"]},"permissions":{"allow-get-by-id":{"identifier":"allow-get-by-id","description":"Enables the get_by_id command without any pre-configured scope.","commands":{"allow":["get_by_id"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-remove-by-id":{"identifier":"allow-remove-by-id","description":"Enables the remove_by_id command without any pre-configured scope.","commands":{"allow":["remove_by_id"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-icon-as-template":{"identifier":"allow-set-icon-as-template","description":"Enables the set_icon_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_as_template"],"deny":[]}},"allow-set-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"core:webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-webviews","allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-clear-all-browsing-data":{"identifier":"allow-clear-all-browsing-data","description":"Enables the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":["clear_all_browsing_data"],"deny":[]}},"allow-create-webview":{"identifier":"allow-create-webview","description":"Enables the create_webview command without any pre-configured scope.","commands":{"allow":["create_webview"],"deny":[]}},"allow-create-webview-window":{"identifier":"allow-create-webview-window","description":"Enables the create_webview_window command without any pre-configured scope.","commands":{"allow":["create_webview_window"],"deny":[]}},"allow-get-all-webviews":{"identifier":"allow-get-all-webviews","description":"Enables the get_all_webviews command without any pre-configured scope.","commands":{"allow":["get_all_webviews"],"deny":[]}},"allow-internal-toggle-devtools":{"identifier":"allow-internal-toggle-devtools","description":"Enables the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":["internal_toggle_devtools"],"deny":[]}},"allow-print":{"identifier":"allow-print","description":"Enables the print command without any pre-configured scope.","commands":{"allow":["print"],"deny":[]}},"allow-reparent":{"identifier":"allow-reparent","description":"Enables the reparent command without any pre-configured scope.","commands":{"allow":["reparent"],"deny":[]}},"allow-set-webview-auto-resize":{"identifier":"allow-set-webview-auto-resize","description":"Enables the set_webview_auto_resize command without any pre-configured scope.","commands":{"allow":["set_webview_auto_resize"],"deny":[]}},"allow-set-webview-background-color":{"identifier":"allow-set-webview-background-color","description":"Enables the set_webview_background_color command without any pre-configured scope.","commands":{"allow":["set_webview_background_color"],"deny":[]}},"allow-set-webview-focus":{"identifier":"allow-set-webview-focus","description":"Enables the set_webview_focus command without any pre-configured scope.","commands":{"allow":["set_webview_focus"],"deny":[]}},"allow-set-webview-position":{"identifier":"allow-set-webview-position","description":"Enables the set_webview_position command without any pre-configured scope.","commands":{"allow":["set_webview_position"],"deny":[]}},"allow-set-webview-size":{"identifier":"allow-set-webview-size","description":"Enables the set_webview_size command without any pre-configured scope.","commands":{"allow":["set_webview_size"],"deny":[]}},"allow-set-webview-zoom":{"identifier":"allow-set-webview-zoom","description":"Enables the set_webview_zoom command without any pre-configured scope.","commands":{"allow":["set_webview_zoom"],"deny":[]}},"allow-webview-close":{"identifier":"allow-webview-close","description":"Enables the webview_close command without any pre-configured scope.","commands":{"allow":["webview_close"],"deny":[]}},"allow-webview-hide":{"identifier":"allow-webview-hide","description":"Enables the webview_hide command without any pre-configured scope.","commands":{"allow":["webview_hide"],"deny":[]}},"allow-webview-position":{"identifier":"allow-webview-position","description":"Enables the webview_position command without any pre-configured scope.","commands":{"allow":["webview_position"],"deny":[]}},"allow-webview-show":{"identifier":"allow-webview-show","description":"Enables the webview_show command without any pre-configured scope.","commands":{"allow":["webview_show"],"deny":[]}},"allow-webview-size":{"identifier":"allow-webview-size","description":"Enables the webview_size command without any pre-configured scope.","commands":{"allow":["webview_size"],"deny":[]}},"deny-clear-all-browsing-data":{"identifier":"deny-clear-all-browsing-data","description":"Denies the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":[],"deny":["clear_all_browsing_data"]}},"deny-create-webview":{"identifier":"deny-create-webview","description":"Denies the create_webview command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview"]}},"deny-create-webview-window":{"identifier":"deny-create-webview-window","description":"Denies the create_webview_window command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview_window"]}},"deny-get-all-webviews":{"identifier":"deny-get-all-webviews","description":"Denies the get_all_webviews command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_webviews"]}},"deny-internal-toggle-devtools":{"identifier":"deny-internal-toggle-devtools","description":"Denies the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_devtools"]}},"deny-print":{"identifier":"deny-print","description":"Denies the print command without any pre-configured scope.","commands":{"allow":[],"deny":["print"]}},"deny-reparent":{"identifier":"deny-reparent","description":"Denies the reparent command without any pre-configured scope.","commands":{"allow":[],"deny":["reparent"]}},"deny-set-webview-auto-resize":{"identifier":"deny-set-webview-auto-resize","description":"Denies the set_webview_auto_resize command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_auto_resize"]}},"deny-set-webview-background-color":{"identifier":"deny-set-webview-background-color","description":"Denies the set_webview_background_color command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_background_color"]}},"deny-set-webview-focus":{"identifier":"deny-set-webview-focus","description":"Denies the set_webview_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_focus"]}},"deny-set-webview-position":{"identifier":"deny-set-webview-position","description":"Denies the set_webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_position"]}},"deny-set-webview-size":{"identifier":"deny-set-webview-size","description":"Denies the set_webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_size"]}},"deny-set-webview-zoom":{"identifier":"deny-set-webview-zoom","description":"Denies the set_webview_zoom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_zoom"]}},"deny-webview-close":{"identifier":"deny-webview-close","description":"Denies the webview_close command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_close"]}},"deny-webview-hide":{"identifier":"deny-webview-hide","description":"Denies the webview_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_hide"]}},"deny-webview-position":{"identifier":"deny-webview-position","description":"Denies the webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_position"]}},"deny-webview-show":{"identifier":"deny-webview-show","description":"Denies the webview_show command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_show"]}},"deny-webview-size":{"identifier":"deny-webview-size","description":"Denies the webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_size"]}}},"permission_sets":{},"global_scope_schema":null},"core:window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-windows","allow-scale-factor","allow-inner-position","allow-outer-position","allow-inner-size","allow-outer-size","allow-is-fullscreen","allow-is-minimized","allow-is-maximized","allow-is-focused","allow-is-decorated","allow-is-resizable","allow-is-maximizable","allow-is-minimizable","allow-is-closable","allow-is-visible","allow-is-enabled","allow-title","allow-current-monitor","allow-primary-monitor","allow-monitor-from-point","allow-available-monitors","allow-cursor-position","allow-theme","allow-is-always-on-top","allow-internal-toggle-maximize"]},"permissions":{"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-get-all-windows":{"identifier":"allow-get-all-windows","description":"Enables the get_all_windows command without any pre-configured scope.","commands":{"allow":["get_all_windows"],"deny":[]}},"allow-hide":{"identifier":"allow-hide","description":"Enables the hide command without any pre-configured scope.","commands":{"allow":["hide"],"deny":[]}},"allow-inner-position":{"identifier":"allow-inner-position","description":"Enables the inner_position command without any pre-configured scope.","commands":{"allow":["inner_position"],"deny":[]}},"allow-inner-size":{"identifier":"allow-inner-size","description":"Enables the inner_size command without any pre-configured scope.","commands":{"allow":["inner_size"],"deny":[]}},"allow-internal-toggle-maximize":{"identifier":"allow-internal-toggle-maximize","description":"Enables the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":["internal_toggle_maximize"],"deny":[]}},"allow-is-always-on-top":{"identifier":"allow-is-always-on-top","description":"Enables the is_always_on_top command without any pre-configured scope.","commands":{"allow":["is_always_on_top"],"deny":[]}},"allow-is-closable":{"identifier":"allow-is-closable","description":"Enables the is_closable command without any pre-configured scope.","commands":{"allow":["is_closable"],"deny":[]}},"allow-is-decorated":{"identifier":"allow-is-decorated","description":"Enables the is_decorated command without any pre-configured scope.","commands":{"allow":["is_decorated"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-is-focused":{"identifier":"allow-is-focused","description":"Enables the is_focused command without any pre-configured scope.","commands":{"allow":["is_focused"],"deny":[]}},"allow-is-fullscreen":{"identifier":"allow-is-fullscreen","description":"Enables the is_fullscreen command without any pre-configured scope.","commands":{"allow":["is_fullscreen"],"deny":[]}},"allow-is-maximizable":{"identifier":"allow-is-maximizable","description":"Enables the is_maximizable command without any pre-configured scope.","commands":{"allow":["is_maximizable"],"deny":[]}},"allow-is-maximized":{"identifier":"allow-is-maximized","description":"Enables the is_maximized command without any pre-configured scope.","commands":{"allow":["is_maximized"],"deny":[]}},"allow-is-minimizable":{"identifier":"allow-is-minimizable","description":"Enables the is_minimizable command without any pre-configured scope.","commands":{"allow":["is_minimizable"],"deny":[]}},"allow-is-minimized":{"identifier":"allow-is-minimized","description":"Enables the is_minimized command without any pre-configured scope.","commands":{"allow":["is_minimized"],"deny":[]}},"allow-is-resizable":{"identifier":"allow-is-resizable","description":"Enables the is_resizable command without any pre-configured scope.","commands":{"allow":["is_resizable"],"deny":[]}},"allow-is-visible":{"identifier":"allow-is-visible","description":"Enables the is_visible command without any pre-configured scope.","commands":{"allow":["is_visible"],"deny":[]}},"allow-maximize":{"identifier":"allow-maximize","description":"Enables the maximize command without any pre-configured scope.","commands":{"allow":["maximize"],"deny":[]}},"allow-minimize":{"identifier":"allow-minimize","description":"Enables the minimize command without any pre-configured scope.","commands":{"allow":["minimize"],"deny":[]}},"allow-monitor-from-point":{"identifier":"allow-monitor-from-point","description":"Enables the monitor_from_point command without any pre-configured scope.","commands":{"allow":["monitor_from_point"],"deny":[]}},"allow-outer-position":{"identifier":"allow-outer-position","description":"Enables the outer_position command without any pre-configured scope.","commands":{"allow":["outer_position"],"deny":[]}},"allow-outer-size":{"identifier":"allow-outer-size","description":"Enables the outer_size command without any pre-configured scope.","commands":{"allow":["outer_size"],"deny":[]}},"allow-primary-monitor":{"identifier":"allow-primary-monitor","description":"Enables the primary_monitor command without any pre-configured scope.","commands":{"allow":["primary_monitor"],"deny":[]}},"allow-request-user-attention":{"identifier":"allow-request-user-attention","description":"Enables the request_user_attention command without any pre-configured scope.","commands":{"allow":["request_user_attention"],"deny":[]}},"allow-scale-factor":{"identifier":"allow-scale-factor","description":"Enables the scale_factor command without any pre-configured scope.","commands":{"allow":["scale_factor"],"deny":[]}},"allow-set-always-on-bottom":{"identifier":"allow-set-always-on-bottom","description":"Enables the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":["set_always_on_bottom"],"deny":[]}},"allow-set-always-on-top":{"identifier":"allow-set-always-on-top","description":"Enables the set_always_on_top command without any pre-configured scope.","commands":{"allow":["set_always_on_top"],"deny":[]}},"allow-set-background-color":{"identifier":"allow-set-background-color","description":"Enables the set_background_color command without any pre-configured scope.","commands":{"allow":["set_background_color"],"deny":[]}},"allow-set-badge-count":{"identifier":"allow-set-badge-count","description":"Enables the set_badge_count command without any pre-configured scope.","commands":{"allow":["set_badge_count"],"deny":[]}},"allow-set-badge-label":{"identifier":"allow-set-badge-label","description":"Enables the set_badge_label command without any pre-configured scope.","commands":{"allow":["set_badge_label"],"deny":[]}},"allow-set-closable":{"identifier":"allow-set-closable","description":"Enables the set_closable command without any pre-configured scope.","commands":{"allow":["set_closable"],"deny":[]}},"allow-set-content-protected":{"identifier":"allow-set-content-protected","description":"Enables the set_content_protected command without any pre-configured scope.","commands":{"allow":["set_content_protected"],"deny":[]}},"allow-set-cursor-grab":{"identifier":"allow-set-cursor-grab","description":"Enables the set_cursor_grab command without any pre-configured scope.","commands":{"allow":["set_cursor_grab"],"deny":[]}},"allow-set-cursor-icon":{"identifier":"allow-set-cursor-icon","description":"Enables the set_cursor_icon command without any pre-configured scope.","commands":{"allow":["set_cursor_icon"],"deny":[]}},"allow-set-cursor-position":{"identifier":"allow-set-cursor-position","description":"Enables the set_cursor_position command without any pre-configured scope.","commands":{"allow":["set_cursor_position"],"deny":[]}},"allow-set-cursor-visible":{"identifier":"allow-set-cursor-visible","description":"Enables the set_cursor_visible command without any pre-configured scope.","commands":{"allow":["set_cursor_visible"],"deny":[]}},"allow-set-decorations":{"identifier":"allow-set-decorations","description":"Enables the set_decorations command without any pre-configured scope.","commands":{"allow":["set_decorations"],"deny":[]}},"allow-set-effects":{"identifier":"allow-set-effects","description":"Enables the set_effects command without any pre-configured scope.","commands":{"allow":["set_effects"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-focus":{"identifier":"allow-set-focus","description":"Enables the set_focus command without any pre-configured scope.","commands":{"allow":["set_focus"],"deny":[]}},"allow-set-focusable":{"identifier":"allow-set-focusable","description":"Enables the set_focusable command without any pre-configured scope.","commands":{"allow":["set_focusable"],"deny":[]}},"allow-set-fullscreen":{"identifier":"allow-set-fullscreen","description":"Enables the set_fullscreen command without any pre-configured scope.","commands":{"allow":["set_fullscreen"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-ignore-cursor-events":{"identifier":"allow-set-ignore-cursor-events","description":"Enables the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":["set_ignore_cursor_events"],"deny":[]}},"allow-set-max-size":{"identifier":"allow-set-max-size","description":"Enables the set_max_size command without any pre-configured scope.","commands":{"allow":["set_max_size"],"deny":[]}},"allow-set-maximizable":{"identifier":"allow-set-maximizable","description":"Enables the set_maximizable command without any pre-configured scope.","commands":{"allow":["set_maximizable"],"deny":[]}},"allow-set-min-size":{"identifier":"allow-set-min-size","description":"Enables the set_min_size command without any pre-configured scope.","commands":{"allow":["set_min_size"],"deny":[]}},"allow-set-minimizable":{"identifier":"allow-set-minimizable","description":"Enables the set_minimizable command without any pre-configured scope.","commands":{"allow":["set_minimizable"],"deny":[]}},"allow-set-overlay-icon":{"identifier":"allow-set-overlay-icon","description":"Enables the set_overlay_icon command without any pre-configured scope.","commands":{"allow":["set_overlay_icon"],"deny":[]}},"allow-set-position":{"identifier":"allow-set-position","description":"Enables the set_position command without any pre-configured scope.","commands":{"allow":["set_position"],"deny":[]}},"allow-set-progress-bar":{"identifier":"allow-set-progress-bar","description":"Enables the set_progress_bar command without any pre-configured scope.","commands":{"allow":["set_progress_bar"],"deny":[]}},"allow-set-resizable":{"identifier":"allow-set-resizable","description":"Enables the set_resizable command without any pre-configured scope.","commands":{"allow":["set_resizable"],"deny":[]}},"allow-set-shadow":{"identifier":"allow-set-shadow","description":"Enables the set_shadow command without any pre-configured scope.","commands":{"allow":["set_shadow"],"deny":[]}},"allow-set-simple-fullscreen":{"identifier":"allow-set-simple-fullscreen","description":"Enables the set_simple_fullscreen command without any pre-configured scope.","commands":{"allow":["set_simple_fullscreen"],"deny":[]}},"allow-set-size":{"identifier":"allow-set-size","description":"Enables the set_size command without any pre-configured scope.","commands":{"allow":["set_size"],"deny":[]}},"allow-set-size-constraints":{"identifier":"allow-set-size-constraints","description":"Enables the set_size_constraints command without any pre-configured scope.","commands":{"allow":["set_size_constraints"],"deny":[]}},"allow-set-skip-taskbar":{"identifier":"allow-set-skip-taskbar","description":"Enables the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":["set_skip_taskbar"],"deny":[]}},"allow-set-theme":{"identifier":"allow-set-theme","description":"Enables the set_theme command without any pre-configured scope.","commands":{"allow":["set_theme"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-title-bar-style":{"identifier":"allow-set-title-bar-style","description":"Enables the set_title_bar_style command without any pre-configured scope.","commands":{"allow":["set_title_bar_style"],"deny":[]}},"allow-set-visible-on-all-workspaces":{"identifier":"allow-set-visible-on-all-workspaces","description":"Enables the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":["set_visible_on_all_workspaces"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"allow-start-dragging":{"identifier":"allow-start-dragging","description":"Enables the start_dragging command without any pre-configured scope.","commands":{"allow":["start_dragging"],"deny":[]}},"allow-start-resize-dragging":{"identifier":"allow-start-resize-dragging","description":"Enables the start_resize_dragging command without any pre-configured scope.","commands":{"allow":["start_resize_dragging"],"deny":[]}},"allow-theme":{"identifier":"allow-theme","description":"Enables the theme command without any pre-configured scope.","commands":{"allow":["theme"],"deny":[]}},"allow-title":{"identifier":"allow-title","description":"Enables the title command without any pre-configured scope.","commands":{"allow":["title"],"deny":[]}},"allow-toggle-maximize":{"identifier":"allow-toggle-maximize","description":"Enables the toggle_maximize command without any pre-configured scope.","commands":{"allow":["toggle_maximize"],"deny":[]}},"allow-unmaximize":{"identifier":"allow-unmaximize","description":"Enables the unmaximize command without any pre-configured scope.","commands":{"allow":["unmaximize"],"deny":[]}},"allow-unminimize":{"identifier":"allow-unminimize","description":"Enables the unminimize command without any pre-configured scope.","commands":{"allow":["unminimize"],"deny":[]}},"deny-available-monitors":{"identifier":"deny-available-monitors","description":"Denies the available_monitors command without any pre-configured scope.","commands":{"allow":[],"deny":["available_monitors"]}},"deny-center":{"identifier":"deny-center","description":"Denies the center command without any pre-configured scope.","commands":{"allow":[],"deny":["center"]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-current-monitor":{"identifier":"deny-current-monitor","description":"Denies the current_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["current_monitor"]}},"deny-cursor-position":{"identifier":"deny-cursor-position","description":"Denies the cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["cursor_position"]}},"deny-destroy":{"identifier":"deny-destroy","description":"Denies the destroy command without any pre-configured scope.","commands":{"allow":[],"deny":["destroy"]}},"deny-get-all-windows":{"identifier":"deny-get-all-windows","description":"Denies the get_all_windows command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_windows"]}},"deny-hide":{"identifier":"deny-hide","description":"Denies the hide command without any pre-configured scope.","commands":{"allow":[],"deny":["hide"]}},"deny-inner-position":{"identifier":"deny-inner-position","description":"Denies the inner_position command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_position"]}},"deny-inner-size":{"identifier":"deny-inner-size","description":"Denies the inner_size command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_size"]}},"deny-internal-toggle-maximize":{"identifier":"deny-internal-toggle-maximize","description":"Denies the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_maximize"]}},"deny-is-always-on-top":{"identifier":"deny-is-always-on-top","description":"Denies the is_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["is_always_on_top"]}},"deny-is-closable":{"identifier":"deny-is-closable","description":"Denies the is_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_closable"]}},"deny-is-decorated":{"identifier":"deny-is-decorated","description":"Denies the is_decorated command without any pre-configured scope.","commands":{"allow":[],"deny":["is_decorated"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-is-focused":{"identifier":"deny-is-focused","description":"Denies the is_focused command without any pre-configured scope.","commands":{"allow":[],"deny":["is_focused"]}},"deny-is-fullscreen":{"identifier":"deny-is-fullscreen","description":"Denies the is_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["is_fullscreen"]}},"deny-is-maximizable":{"identifier":"deny-is-maximizable","description":"Denies the is_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximizable"]}},"deny-is-maximized":{"identifier":"deny-is-maximized","description":"Denies the is_maximized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximized"]}},"deny-is-minimizable":{"identifier":"deny-is-minimizable","description":"Denies the is_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimizable"]}},"deny-is-minimized":{"identifier":"deny-is-minimized","description":"Denies the is_minimized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimized"]}},"deny-is-resizable":{"identifier":"deny-is-resizable","description":"Denies the is_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_resizable"]}},"deny-is-visible":{"identifier":"deny-is-visible","description":"Denies the is_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["is_visible"]}},"deny-maximize":{"identifier":"deny-maximize","description":"Denies the maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["maximize"]}},"deny-minimize":{"identifier":"deny-minimize","description":"Denies the minimize command without any pre-configured scope.","commands":{"allow":[],"deny":["minimize"]}},"deny-monitor-from-point":{"identifier":"deny-monitor-from-point","description":"Denies the monitor_from_point command without any pre-configured scope.","commands":{"allow":[],"deny":["monitor_from_point"]}},"deny-outer-position":{"identifier":"deny-outer-position","description":"Denies the outer_position command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_position"]}},"deny-outer-size":{"identifier":"deny-outer-size","description":"Denies the outer_size command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_size"]}},"deny-primary-monitor":{"identifier":"deny-primary-monitor","description":"Denies the primary_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["primary_monitor"]}},"deny-request-user-attention":{"identifier":"deny-request-user-attention","description":"Denies the request_user_attention command without any pre-configured scope.","commands":{"allow":[],"deny":["request_user_attention"]}},"deny-scale-factor":{"identifier":"deny-scale-factor","description":"Denies the scale_factor command without any pre-configured scope.","commands":{"allow":[],"deny":["scale_factor"]}},"deny-set-always-on-bottom":{"identifier":"deny-set-always-on-bottom","description":"Denies the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_bottom"]}},"deny-set-always-on-top":{"identifier":"deny-set-always-on-top","description":"Denies the set_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_top"]}},"deny-set-background-color":{"identifier":"deny-set-background-color","description":"Denies the set_background_color command without any pre-configured scope.","commands":{"allow":[],"deny":["set_background_color"]}},"deny-set-badge-count":{"identifier":"deny-set-badge-count","description":"Denies the set_badge_count command without any pre-configured scope.","commands":{"allow":[],"deny":["set_badge_count"]}},"deny-set-badge-label":{"identifier":"deny-set-badge-label","description":"Denies the set_badge_label command without any pre-configured scope.","commands":{"allow":[],"deny":["set_badge_label"]}},"deny-set-closable":{"identifier":"deny-set-closable","description":"Denies the set_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_closable"]}},"deny-set-content-protected":{"identifier":"deny-set-content-protected","description":"Denies the set_content_protected command without any pre-configured scope.","commands":{"allow":[],"deny":["set_content_protected"]}},"deny-set-cursor-grab":{"identifier":"deny-set-cursor-grab","description":"Denies the set_cursor_grab command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_grab"]}},"deny-set-cursor-icon":{"identifier":"deny-set-cursor-icon","description":"Denies the set_cursor_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_icon"]}},"deny-set-cursor-position":{"identifier":"deny-set-cursor-position","description":"Denies the set_cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_position"]}},"deny-set-cursor-visible":{"identifier":"deny-set-cursor-visible","description":"Denies the set_cursor_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_visible"]}},"deny-set-decorations":{"identifier":"deny-set-decorations","description":"Denies the set_decorations command without any pre-configured scope.","commands":{"allow":[],"deny":["set_decorations"]}},"deny-set-effects":{"identifier":"deny-set-effects","description":"Denies the set_effects command without any pre-configured scope.","commands":{"allow":[],"deny":["set_effects"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-focus":{"identifier":"deny-set-focus","description":"Denies the set_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focus"]}},"deny-set-focusable":{"identifier":"deny-set-focusable","description":"Denies the set_focusable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focusable"]}},"deny-set-fullscreen":{"identifier":"deny-set-fullscreen","description":"Denies the set_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_fullscreen"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-ignore-cursor-events":{"identifier":"deny-set-ignore-cursor-events","description":"Denies the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":[],"deny":["set_ignore_cursor_events"]}},"deny-set-max-size":{"identifier":"deny-set-max-size","description":"Denies the set_max_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_max_size"]}},"deny-set-maximizable":{"identifier":"deny-set-maximizable","description":"Denies the set_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_maximizable"]}},"deny-set-min-size":{"identifier":"deny-set-min-size","description":"Denies the set_min_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_min_size"]}},"deny-set-minimizable":{"identifier":"deny-set-minimizable","description":"Denies the set_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_minimizable"]}},"deny-set-overlay-icon":{"identifier":"deny-set-overlay-icon","description":"Denies the set_overlay_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_overlay_icon"]}},"deny-set-position":{"identifier":"deny-set-position","description":"Denies the set_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_position"]}},"deny-set-progress-bar":{"identifier":"deny-set-progress-bar","description":"Denies the set_progress_bar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_progress_bar"]}},"deny-set-resizable":{"identifier":"deny-set-resizable","description":"Denies the set_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_resizable"]}},"deny-set-shadow":{"identifier":"deny-set-shadow","description":"Denies the set_shadow command without any pre-configured scope.","commands":{"allow":[],"deny":["set_shadow"]}},"deny-set-simple-fullscreen":{"identifier":"deny-set-simple-fullscreen","description":"Denies the set_simple_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_simple_fullscreen"]}},"deny-set-size":{"identifier":"deny-set-size","description":"Denies the set_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size"]}},"deny-set-size-constraints":{"identifier":"deny-set-size-constraints","description":"Denies the set_size_constraints command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size_constraints"]}},"deny-set-skip-taskbar":{"identifier":"deny-set-skip-taskbar","description":"Denies the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_skip_taskbar"]}},"deny-set-theme":{"identifier":"deny-set-theme","description":"Denies the set_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_theme"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-title-bar-style":{"identifier":"deny-set-title-bar-style","description":"Denies the set_title_bar_style command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title_bar_style"]}},"deny-set-visible-on-all-workspaces":{"identifier":"deny-set-visible-on-all-workspaces","description":"Denies the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible_on_all_workspaces"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}},"deny-start-dragging":{"identifier":"deny-start-dragging","description":"Denies the start_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_dragging"]}},"deny-start-resize-dragging":{"identifier":"deny-start-resize-dragging","description":"Denies the start_resize_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_resize_dragging"]}},"deny-theme":{"identifier":"deny-theme","description":"Denies the theme command without any pre-configured scope.","commands":{"allow":[],"deny":["theme"]}},"deny-title":{"identifier":"deny-title","description":"Denies the title command without any pre-configured scope.","commands":{"allow":[],"deny":["title"]}},"deny-toggle-maximize":{"identifier":"deny-toggle-maximize","description":"Denies the toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["toggle_maximize"]}},"deny-unmaximize":{"identifier":"deny-unmaximize","description":"Denies the unmaximize command without any pre-configured scope.","commands":{"allow":[],"deny":["unmaximize"]}},"deny-unminimize":{"identifier":"deny-unminimize","description":"Denies the unminimize command without any pre-configured scope.","commands":{"allow":[],"deny":["unminimize"]}}},"permission_sets":{},"global_scope_schema":null},"opener":{"default_permission":{"identifier":"default","description":"This permission set allows opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application\nas well as reveal file in directories using default file explorer","permissions":["allow-open-url","allow-reveal-item-in-dir","allow-default-urls"]},"permissions":{"allow-default-urls":{"identifier":"allow-default-urls","description":"This enables opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"url":"mailto:*"},{"url":"tel:*"},{"url":"http://*"},{"url":"https://*"}]}},"allow-open-path":{"identifier":"allow-open-path","description":"Enables the open_path command without any pre-configured scope.","commands":{"allow":["open_path"],"deny":[]}},"allow-open-url":{"identifier":"allow-open-url","description":"Enables the open_url command without any pre-configured scope.","commands":{"allow":["open_url"],"deny":[]}},"allow-reveal-item-in-dir":{"identifier":"allow-reveal-item-in-dir","description":"Enables the reveal_item_in_dir command without any pre-configured scope.","commands":{"allow":["reveal_item_in_dir"],"deny":[]}},"deny-open-path":{"identifier":"deny-open-path","description":"Denies the open_path command without any pre-configured scope.","commands":{"allow":[],"deny":["open_path"]}},"deny-open-url":{"identifier":"deny-open-url","description":"Denies the open_url command without any pre-configured scope.","commands":{"allow":[],"deny":["open_url"]}},"deny-reveal-item-in-dir":{"identifier":"deny-reveal-item-in-dir","description":"Denies the reveal_item_in_dir command without any pre-configured scope.","commands":{"allow":[],"deny":["reveal_item_in_dir"]}}},"permission_sets":{},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","anyOf":[{"properties":{"app":{"allOf":[{"$ref":"#/definitions/Application"}],"description":"An application to open this url with, for example: firefox."},"url":{"description":"A URL that can be opened by the webview when using the Opener APIs.\n\nWildcards can be used following the UNIX glob pattern.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"","type":"string"}},"required":["url"],"type":"object"},{"properties":{"app":{"allOf":[{"$ref":"#/definitions/Application"}],"description":"An application to open this path with, for example: xdg-open."},"path":{"description":"A path that can be opened by the webview when using the Opener APIs.\n\nThe pattern can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.","type":"string"}},"required":["path"],"type":"object"}],"definitions":{"Application":{"anyOf":[{"description":"Open in default application.","type":"null"},{"description":"If true, allow open with any application.","type":"boolean"},{"description":"Allow specific application to open with.","type":"string"}],"description":"Opener scope application."}},"description":"Opener scope entry.","title":"OpenerScopeEntry"}},"process":{"default_permission":{"identifier":"default","description":"This permission set configures which\nprocess features are by default exposed.\n\n#### Granted Permissions\n\nThis enables to quit via `allow-exit` and restart via `allow-restart`\nthe application.\n","permissions":["allow-exit","allow-restart"]},"permissions":{"allow-exit":{"identifier":"allow-exit","description":"Enables the exit command without any pre-configured scope.","commands":{"allow":["exit"],"deny":[]}},"allow-restart":{"identifier":"allow-restart","description":"Enables the restart command without any pre-configured scope.","commands":{"allow":["restart"],"deny":[]}},"deny-exit":{"identifier":"deny-exit","description":"Denies the exit command without any pre-configured scope.","commands":{"allow":[],"deny":["exit"]}},"deny-restart":{"identifier":"deny-restart","description":"Denies the restart command without any pre-configured scope.","commands":{"allow":[],"deny":["restart"]}}},"permission_sets":{},"global_scope_schema":null},"updater":{"default_permission":{"identifier":"default","description":"This permission set configures which kind of\nupdater functions are exposed to the frontend.\n\n#### Granted Permissions\n\nThe full workflow from checking for updates to installing them\nis enabled.\n\n","permissions":["allow-check","allow-download","allow-install","allow-download-and-install"]},"permissions":{"allow-check":{"identifier":"allow-check","description":"Enables the check command without any pre-configured scope.","commands":{"allow":["check"],"deny":[]}},"allow-download":{"identifier":"allow-download","description":"Enables the download command without any pre-configured scope.","commands":{"allow":["download"],"deny":[]}},"allow-download-and-install":{"identifier":"allow-download-and-install","description":"Enables the download_and_install command without any pre-configured scope.","commands":{"allow":["download_and_install"],"deny":[]}},"allow-install":{"identifier":"allow-install","description":"Enables the install command without any pre-configured scope.","commands":{"allow":["install"],"deny":[]}},"deny-check":{"identifier":"deny-check","description":"Denies the check command without any pre-configured scope.","commands":{"allow":[],"deny":["check"]}},"deny-download":{"identifier":"deny-download","description":"Denies the download command without any pre-configured scope.","commands":{"allow":[],"deny":["download"]}},"deny-download-and-install":{"identifier":"deny-download-and-install","description":"Denies the download_and_install command without any pre-configured scope.","commands":{"allow":[],"deny":["download_and_install"]}},"deny-install":{"identifier":"deny-install","description":"Denies the install command without any pre-configured scope.","commands":{"allow":[],"deny":["install"]}}},"permission_sets":{},"global_scope_schema":null}}
\ No newline at end of file
diff --git a/nym-wallet/src-tauri/gen/schemas/capabilities.json b/nym-wallet/src-tauri/gen/schemas/capabilities.json
index a0a9361c59..ca137ac2f0 100644
--- a/nym-wallet/src-tauri/gen/schemas/capabilities.json
+++ b/nym-wallet/src-tauri/gen/schemas/capabilities.json
@@ -1 +1 @@
-{"main-capability":{"identifier":"main-capability","description":"Default capability for Nym Wallet main window","local":true,"windows":["main","nymWalletApp","log"],"permissions":["core:default","core:path:default","core:event:default","core:window:default","core:app:default","core:resources:default","core:menu:default","core:tray:default","opener:allow-open-url","opener:allow-default-urls","core:window:allow-set-title","core:app:allow-version","clipboard-manager:allow-read-text","clipboard-manager:allow-write-text","updater:default","updater:allow-check","updater:allow-download","updater:allow-download-and-install","updater:allow-install","core:event:allow-listen","shell:allow-open"],"platforms":["linux","macOS","windows"]}}
\ No newline at end of file
+{"main-capability":{"identifier":"main-capability","description":"Default capability for Nym Wallet main window","local":true,"windows":["main","nymWalletApp","log"],"permissions":["core:default","core:path:default","core:event:default","core:window:default","core:app:default","core:resources:default","core:menu:default","core:tray:default","opener:allow-open-url","opener:allow-default-urls","core:window:allow-set-title","core:window:allow-maximize","core:app:allow-version","clipboard-manager:allow-read-text","clipboard-manager:allow-write-text","updater:default","updater:allow-check","updater:allow-download","updater:allow-download-and-install","updater:allow-install","core:event:allow-listen","process:default"],"platforms":["linux","macOS","windows"]}}
\ No newline at end of file
diff --git a/nym-wallet/src-tauri/gen/schemas/desktop-schema.json b/nym-wallet/src-tauri/gen/schemas/desktop-schema.json
index 80f89170ce..0bf95b61ce 100644
--- a/nym-wallet/src-tauri/gen/schemas/desktop-schema.json
+++ b/nym-wallet/src-tauri/gen/schemas/desktop-schema.json
@@ -37,7 +37,7 @@
],
"definitions": {
"Capability": {
- "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows' and webviews' fine grained access to the Tauri core, application, or plugin commands. If a webview or its window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```",
+ "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows' and webviews' fine grained access to the Tauri core, application, or plugin commands. If a webview or its window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```",
"type": "object",
"required": [
"identifier",
@@ -49,7 +49,7 @@
"type": "string"
},
"description": {
- "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.",
+ "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.",
"default": "",
"type": "string"
},
@@ -302,216 +302,6 @@
}
}
},
- {
- "if": {
- "properties": {
- "identifier": {
- "anyOf": [
- {
- "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`",
- "type": "string",
- "const": "shell:default",
- "markdownDescription": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`"
- },
- {
- "description": "Enables the execute command without any pre-configured scope.",
- "type": "string",
- "const": "shell:allow-execute",
- "markdownDescription": "Enables the execute command without any pre-configured scope."
- },
- {
- "description": "Enables the kill command without any pre-configured scope.",
- "type": "string",
- "const": "shell:allow-kill",
- "markdownDescription": "Enables the kill command without any pre-configured scope."
- },
- {
- "description": "Enables the open command without any pre-configured scope.",
- "type": "string",
- "const": "shell:allow-open",
- "markdownDescription": "Enables the open command without any pre-configured scope."
- },
- {
- "description": "Enables the spawn command without any pre-configured scope.",
- "type": "string",
- "const": "shell:allow-spawn",
- "markdownDescription": "Enables the spawn command without any pre-configured scope."
- },
- {
- "description": "Enables the stdin_write command without any pre-configured scope.",
- "type": "string",
- "const": "shell:allow-stdin-write",
- "markdownDescription": "Enables the stdin_write command without any pre-configured scope."
- },
- {
- "description": "Denies the execute command without any pre-configured scope.",
- "type": "string",
- "const": "shell:deny-execute",
- "markdownDescription": "Denies the execute command without any pre-configured scope."
- },
- {
- "description": "Denies the kill command without any pre-configured scope.",
- "type": "string",
- "const": "shell:deny-kill",
- "markdownDescription": "Denies the kill command without any pre-configured scope."
- },
- {
- "description": "Denies the open command without any pre-configured scope.",
- "type": "string",
- "const": "shell:deny-open",
- "markdownDescription": "Denies the open command without any pre-configured scope."
- },
- {
- "description": "Denies the spawn command without any pre-configured scope.",
- "type": "string",
- "const": "shell:deny-spawn",
- "markdownDescription": "Denies the spawn command without any pre-configured scope."
- },
- {
- "description": "Denies the stdin_write command without any pre-configured scope.",
- "type": "string",
- "const": "shell:deny-stdin-write",
- "markdownDescription": "Denies the stdin_write command without any pre-configured scope."
- }
- ]
- }
- }
- },
- "then": {
- "properties": {
- "allow": {
- "items": {
- "title": "ShellScopeEntry",
- "description": "Shell scope entry.",
- "anyOf": [
- {
- "type": "object",
- "required": [
- "cmd",
- "name"
- ],
- "properties": {
- "args": {
- "description": "The allowed arguments for the command execution.",
- "allOf": [
- {
- "$ref": "#/definitions/ShellScopeEntryAllowedArgs"
- }
- ]
- },
- "cmd": {
- "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
- "type": "string"
- },
- "name": {
- "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.",
- "type": "string"
- }
- },
- "additionalProperties": false
- },
- {
- "type": "object",
- "required": [
- "name",
- "sidecar"
- ],
- "properties": {
- "args": {
- "description": "The allowed arguments for the command execution.",
- "allOf": [
- {
- "$ref": "#/definitions/ShellScopeEntryAllowedArgs"
- }
- ]
- },
- "name": {
- "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.",
- "type": "string"
- },
- "sidecar": {
- "description": "If this command is a sidecar command.",
- "type": "boolean"
- }
- },
- "additionalProperties": false
- }
- ]
- }
- },
- "deny": {
- "items": {
- "title": "ShellScopeEntry",
- "description": "Shell scope entry.",
- "anyOf": [
- {
- "type": "object",
- "required": [
- "cmd",
- "name"
- ],
- "properties": {
- "args": {
- "description": "The allowed arguments for the command execution.",
- "allOf": [
- {
- "$ref": "#/definitions/ShellScopeEntryAllowedArgs"
- }
- ]
- },
- "cmd": {
- "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
- "type": "string"
- },
- "name": {
- "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.",
- "type": "string"
- }
- },
- "additionalProperties": false
- },
- {
- "type": "object",
- "required": [
- "name",
- "sidecar"
- ],
- "properties": {
- "args": {
- "description": "The allowed arguments for the command execution.",
- "allOf": [
- {
- "$ref": "#/definitions/ShellScopeEntryAllowedArgs"
- }
- ]
- },
- "name": {
- "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.",
- "type": "string"
- },
- "sidecar": {
- "description": "If this command is a sidecar command.",
- "type": "boolean"
- }
- },
- "additionalProperties": false
- }
- ]
- }
- }
- }
- },
- "properties": {
- "identifier": {
- "description": "Identifier of the permission or permission set.",
- "allOf": [
- {
- "$ref": "#/definitions/Identifier"
- }
- ]
- }
- }
- },
{
"properties": {
"identifier": {
@@ -639,10 +429,10 @@
"markdownDescription": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`"
},
{
- "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`",
+ "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`",
"type": "string",
"const": "core:app:default",
- "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`"
+ "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`"
},
{
"description": "Enables the app_hide command without any pre-configured scope.",
@@ -656,6 +446,12 @@
"const": "core:app:allow-app-show",
"markdownDescription": "Enables the app_show command without any pre-configured scope."
},
+ {
+ "description": "Enables the bundle_type command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:app:allow-bundle-type",
+ "markdownDescription": "Enables the bundle_type command without any pre-configured scope."
+ },
{
"description": "Enables the default_window_icon command without any pre-configured scope.",
"type": "string",
@@ -680,18 +476,36 @@
"const": "core:app:allow-name",
"markdownDescription": "Enables the name command without any pre-configured scope."
},
+ {
+ "description": "Enables the register_listener command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:app:allow-register-listener",
+ "markdownDescription": "Enables the register_listener command without any pre-configured scope."
+ },
{
"description": "Enables the remove_data_store command without any pre-configured scope.",
"type": "string",
"const": "core:app:allow-remove-data-store",
"markdownDescription": "Enables the remove_data_store command without any pre-configured scope."
},
+ {
+ "description": "Enables the remove_listener command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:app:allow-remove-listener",
+ "markdownDescription": "Enables the remove_listener command without any pre-configured scope."
+ },
{
"description": "Enables the set_app_theme command without any pre-configured scope.",
"type": "string",
"const": "core:app:allow-set-app-theme",
"markdownDescription": "Enables the set_app_theme command without any pre-configured scope."
},
+ {
+ "description": "Enables the set_dock_visibility command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:app:allow-set-dock-visibility",
+ "markdownDescription": "Enables the set_dock_visibility command without any pre-configured scope."
+ },
{
"description": "Enables the tauri_version command without any pre-configured scope.",
"type": "string",
@@ -716,6 +530,12 @@
"const": "core:app:deny-app-show",
"markdownDescription": "Denies the app_show command without any pre-configured scope."
},
+ {
+ "description": "Denies the bundle_type command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:app:deny-bundle-type",
+ "markdownDescription": "Denies the bundle_type command without any pre-configured scope."
+ },
{
"description": "Denies the default_window_icon command without any pre-configured scope.",
"type": "string",
@@ -740,18 +560,36 @@
"const": "core:app:deny-name",
"markdownDescription": "Denies the name command without any pre-configured scope."
},
+ {
+ "description": "Denies the register_listener command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:app:deny-register-listener",
+ "markdownDescription": "Denies the register_listener command without any pre-configured scope."
+ },
{
"description": "Denies the remove_data_store command without any pre-configured scope.",
"type": "string",
"const": "core:app:deny-remove-data-store",
"markdownDescription": "Denies the remove_data_store command without any pre-configured scope."
},
+ {
+ "description": "Denies the remove_listener command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:app:deny-remove-listener",
+ "markdownDescription": "Denies the remove_listener command without any pre-configured scope."
+ },
{
"description": "Denies the set_app_theme command without any pre-configured scope.",
"type": "string",
"const": "core:app:deny-set-app-theme",
"markdownDescription": "Denies the set_app_theme command without any pre-configured scope."
},
+ {
+ "description": "Denies the set_dock_visibility command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:app:deny-set-dock-visibility",
+ "markdownDescription": "Denies the set_dock_visibility command without any pre-configured scope."
+ },
{
"description": "Denies the tauri_version command without any pre-configured scope.",
"type": "string",
@@ -1460,6 +1298,12 @@
"const": "core:webview:allow-reparent",
"markdownDescription": "Enables the reparent command without any pre-configured scope."
},
+ {
+ "description": "Enables the set_webview_auto_resize command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:webview:allow-set-webview-auto-resize",
+ "markdownDescription": "Enables the set_webview_auto_resize command without any pre-configured scope."
+ },
{
"description": "Enables the set_webview_background_color command without any pre-configured scope.",
"type": "string",
@@ -1562,6 +1406,12 @@
"const": "core:webview:deny-reparent",
"markdownDescription": "Denies the reparent command without any pre-configured scope."
},
+ {
+ "description": "Denies the set_webview_auto_resize command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:webview:deny-set-webview-auto-resize",
+ "markdownDescription": "Denies the set_webview_auto_resize command without any pre-configured scope."
+ },
{
"description": "Denies the set_webview_background_color command without any pre-configured scope.",
"type": "string",
@@ -1910,6 +1760,12 @@
"const": "core:window:allow-set-focus",
"markdownDescription": "Enables the set_focus command without any pre-configured scope."
},
+ {
+ "description": "Enables the set_focusable command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:window:allow-set-focusable",
+ "markdownDescription": "Enables the set_focusable command without any pre-configured scope."
+ },
{
"description": "Enables the set_fullscreen command without any pre-configured scope.",
"type": "string",
@@ -1982,6 +1838,12 @@
"const": "core:window:allow-set-shadow",
"markdownDescription": "Enables the set_shadow command without any pre-configured scope."
},
+ {
+ "description": "Enables the set_simple_fullscreen command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:window:allow-set-simple-fullscreen",
+ "markdownDescription": "Enables the set_simple_fullscreen command without any pre-configured scope."
+ },
{
"description": "Enables the set_size command without any pre-configured scope.",
"type": "string",
@@ -2354,6 +2216,12 @@
"const": "core:window:deny-set-focus",
"markdownDescription": "Denies the set_focus command without any pre-configured scope."
},
+ {
+ "description": "Denies the set_focusable command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:window:deny-set-focusable",
+ "markdownDescription": "Denies the set_focusable command without any pre-configured scope."
+ },
{
"description": "Denies the set_fullscreen command without any pre-configured scope.",
"type": "string",
@@ -2426,6 +2294,12 @@
"const": "core:window:deny-set-shadow",
"markdownDescription": "Denies the set_shadow command without any pre-configured scope."
},
+ {
+ "description": "Denies the set_simple_fullscreen command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:window:deny-set-simple-fullscreen",
+ "markdownDescription": "Denies the set_simple_fullscreen command without any pre-configured scope."
+ },
{
"description": "Denies the set_size command without any pre-configured scope.",
"type": "string",
@@ -2594,72 +2468,6 @@
"const": "process:deny-restart",
"markdownDescription": "Denies the restart command without any pre-configured scope."
},
- {
- "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`",
- "type": "string",
- "const": "shell:default",
- "markdownDescription": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`"
- },
- {
- "description": "Enables the execute command without any pre-configured scope.",
- "type": "string",
- "const": "shell:allow-execute",
- "markdownDescription": "Enables the execute command without any pre-configured scope."
- },
- {
- "description": "Enables the kill command without any pre-configured scope.",
- "type": "string",
- "const": "shell:allow-kill",
- "markdownDescription": "Enables the kill command without any pre-configured scope."
- },
- {
- "description": "Enables the open command without any pre-configured scope.",
- "type": "string",
- "const": "shell:allow-open",
- "markdownDescription": "Enables the open command without any pre-configured scope."
- },
- {
- "description": "Enables the spawn command without any pre-configured scope.",
- "type": "string",
- "const": "shell:allow-spawn",
- "markdownDescription": "Enables the spawn command without any pre-configured scope."
- },
- {
- "description": "Enables the stdin_write command without any pre-configured scope.",
- "type": "string",
- "const": "shell:allow-stdin-write",
- "markdownDescription": "Enables the stdin_write command without any pre-configured scope."
- },
- {
- "description": "Denies the execute command without any pre-configured scope.",
- "type": "string",
- "const": "shell:deny-execute",
- "markdownDescription": "Denies the execute command without any pre-configured scope."
- },
- {
- "description": "Denies the kill command without any pre-configured scope.",
- "type": "string",
- "const": "shell:deny-kill",
- "markdownDescription": "Denies the kill command without any pre-configured scope."
- },
- {
- "description": "Denies the open command without any pre-configured scope.",
- "type": "string",
- "const": "shell:deny-open",
- "markdownDescription": "Denies the open command without any pre-configured scope."
- },
- {
- "description": "Denies the spawn command without any pre-configured scope.",
- "type": "string",
- "const": "shell:deny-spawn",
- "markdownDescription": "Denies the spawn command without any pre-configured scope."
- },
- {
- "description": "Denies the stdin_write command without any pre-configured scope.",
- "type": "string",
- "const": "shell:deny-stdin-write",
- "markdownDescription": "Denies the stdin_write command without any pre-configured scope."
- },
{
"description": "This permission set configures which kind of\nupdater functions are exposed to the frontend.\n\n#### Granted Permissions\n\nThe full workflow from checking for updates to installing them\nis enabled.\n\n\n#### This default permission set includes:\n\n- `allow-check`\n- `allow-download`\n- `allow-install`\n- `allow-download-and-install`",
"type": "string",
@@ -2826,50 +2634,6 @@
"type": "string"
}
]
- },
- "ShellScopeEntryAllowedArg": {
- "description": "A command argument allowed to be executed by the webview API.",
- "anyOf": [
- {
- "description": "A non-configurable argument that is passed to the command in the order it was specified.",
- "type": "string"
- },
- {
- "description": "A variable that is set while calling the command from the webview API.",
- "type": "object",
- "required": [
- "validator"
- ],
- "properties": {
- "raw": {
- "description": "Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.",
- "default": false,
- "type": "boolean"
- },
- "validator": {
- "description": "[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: ",
- "type": "string"
- }
- },
- "additionalProperties": false
- }
- ]
- },
- "ShellScopeEntryAllowedArgs": {
- "description": "A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration.",
- "anyOf": [
- {
- "description": "Use a simple boolean to allow all or disable all arguments to this command configuration.",
- "type": "boolean"
- },
- {
- "description": "A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.",
- "type": "array",
- "items": {
- "$ref": "#/definitions/ShellScopeEntryAllowedArg"
- }
- }
- ]
}
}
}
\ No newline at end of file
diff --git a/nym-wallet/src-tauri/gen/schemas/macOS-schema.json b/nym-wallet/src-tauri/gen/schemas/macOS-schema.json
index 80f89170ce..0bf95b61ce 100644
--- a/nym-wallet/src-tauri/gen/schemas/macOS-schema.json
+++ b/nym-wallet/src-tauri/gen/schemas/macOS-schema.json
@@ -37,7 +37,7 @@
],
"definitions": {
"Capability": {
- "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows' and webviews' fine grained access to the Tauri core, application, or plugin commands. If a webview or its window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```",
+ "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows' and webviews' fine grained access to the Tauri core, application, or plugin commands. If a webview or its window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```",
"type": "object",
"required": [
"identifier",
@@ -49,7 +49,7 @@
"type": "string"
},
"description": {
- "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.",
+ "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.",
"default": "",
"type": "string"
},
@@ -302,216 +302,6 @@
}
}
},
- {
- "if": {
- "properties": {
- "identifier": {
- "anyOf": [
- {
- "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`",
- "type": "string",
- "const": "shell:default",
- "markdownDescription": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`"
- },
- {
- "description": "Enables the execute command without any pre-configured scope.",
- "type": "string",
- "const": "shell:allow-execute",
- "markdownDescription": "Enables the execute command without any pre-configured scope."
- },
- {
- "description": "Enables the kill command without any pre-configured scope.",
- "type": "string",
- "const": "shell:allow-kill",
- "markdownDescription": "Enables the kill command without any pre-configured scope."
- },
- {
- "description": "Enables the open command without any pre-configured scope.",
- "type": "string",
- "const": "shell:allow-open",
- "markdownDescription": "Enables the open command without any pre-configured scope."
- },
- {
- "description": "Enables the spawn command without any pre-configured scope.",
- "type": "string",
- "const": "shell:allow-spawn",
- "markdownDescription": "Enables the spawn command without any pre-configured scope."
- },
- {
- "description": "Enables the stdin_write command without any pre-configured scope.",
- "type": "string",
- "const": "shell:allow-stdin-write",
- "markdownDescription": "Enables the stdin_write command without any pre-configured scope."
- },
- {
- "description": "Denies the execute command without any pre-configured scope.",
- "type": "string",
- "const": "shell:deny-execute",
- "markdownDescription": "Denies the execute command without any pre-configured scope."
- },
- {
- "description": "Denies the kill command without any pre-configured scope.",
- "type": "string",
- "const": "shell:deny-kill",
- "markdownDescription": "Denies the kill command without any pre-configured scope."
- },
- {
- "description": "Denies the open command without any pre-configured scope.",
- "type": "string",
- "const": "shell:deny-open",
- "markdownDescription": "Denies the open command without any pre-configured scope."
- },
- {
- "description": "Denies the spawn command without any pre-configured scope.",
- "type": "string",
- "const": "shell:deny-spawn",
- "markdownDescription": "Denies the spawn command without any pre-configured scope."
- },
- {
- "description": "Denies the stdin_write command without any pre-configured scope.",
- "type": "string",
- "const": "shell:deny-stdin-write",
- "markdownDescription": "Denies the stdin_write command without any pre-configured scope."
- }
- ]
- }
- }
- },
- "then": {
- "properties": {
- "allow": {
- "items": {
- "title": "ShellScopeEntry",
- "description": "Shell scope entry.",
- "anyOf": [
- {
- "type": "object",
- "required": [
- "cmd",
- "name"
- ],
- "properties": {
- "args": {
- "description": "The allowed arguments for the command execution.",
- "allOf": [
- {
- "$ref": "#/definitions/ShellScopeEntryAllowedArgs"
- }
- ]
- },
- "cmd": {
- "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
- "type": "string"
- },
- "name": {
- "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.",
- "type": "string"
- }
- },
- "additionalProperties": false
- },
- {
- "type": "object",
- "required": [
- "name",
- "sidecar"
- ],
- "properties": {
- "args": {
- "description": "The allowed arguments for the command execution.",
- "allOf": [
- {
- "$ref": "#/definitions/ShellScopeEntryAllowedArgs"
- }
- ]
- },
- "name": {
- "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.",
- "type": "string"
- },
- "sidecar": {
- "description": "If this command is a sidecar command.",
- "type": "boolean"
- }
- },
- "additionalProperties": false
- }
- ]
- }
- },
- "deny": {
- "items": {
- "title": "ShellScopeEntry",
- "description": "Shell scope entry.",
- "anyOf": [
- {
- "type": "object",
- "required": [
- "cmd",
- "name"
- ],
- "properties": {
- "args": {
- "description": "The allowed arguments for the command execution.",
- "allOf": [
- {
- "$ref": "#/definitions/ShellScopeEntryAllowedArgs"
- }
- ]
- },
- "cmd": {
- "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
- "type": "string"
- },
- "name": {
- "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.",
- "type": "string"
- }
- },
- "additionalProperties": false
- },
- {
- "type": "object",
- "required": [
- "name",
- "sidecar"
- ],
- "properties": {
- "args": {
- "description": "The allowed arguments for the command execution.",
- "allOf": [
- {
- "$ref": "#/definitions/ShellScopeEntryAllowedArgs"
- }
- ]
- },
- "name": {
- "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.",
- "type": "string"
- },
- "sidecar": {
- "description": "If this command is a sidecar command.",
- "type": "boolean"
- }
- },
- "additionalProperties": false
- }
- ]
- }
- }
- }
- },
- "properties": {
- "identifier": {
- "description": "Identifier of the permission or permission set.",
- "allOf": [
- {
- "$ref": "#/definitions/Identifier"
- }
- ]
- }
- }
- },
{
"properties": {
"identifier": {
@@ -639,10 +429,10 @@
"markdownDescription": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`"
},
{
- "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`",
+ "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`",
"type": "string",
"const": "core:app:default",
- "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`"
+ "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`"
},
{
"description": "Enables the app_hide command without any pre-configured scope.",
@@ -656,6 +446,12 @@
"const": "core:app:allow-app-show",
"markdownDescription": "Enables the app_show command without any pre-configured scope."
},
+ {
+ "description": "Enables the bundle_type command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:app:allow-bundle-type",
+ "markdownDescription": "Enables the bundle_type command without any pre-configured scope."
+ },
{
"description": "Enables the default_window_icon command without any pre-configured scope.",
"type": "string",
@@ -680,18 +476,36 @@
"const": "core:app:allow-name",
"markdownDescription": "Enables the name command without any pre-configured scope."
},
+ {
+ "description": "Enables the register_listener command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:app:allow-register-listener",
+ "markdownDescription": "Enables the register_listener command without any pre-configured scope."
+ },
{
"description": "Enables the remove_data_store command without any pre-configured scope.",
"type": "string",
"const": "core:app:allow-remove-data-store",
"markdownDescription": "Enables the remove_data_store command without any pre-configured scope."
},
+ {
+ "description": "Enables the remove_listener command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:app:allow-remove-listener",
+ "markdownDescription": "Enables the remove_listener command without any pre-configured scope."
+ },
{
"description": "Enables the set_app_theme command without any pre-configured scope.",
"type": "string",
"const": "core:app:allow-set-app-theme",
"markdownDescription": "Enables the set_app_theme command without any pre-configured scope."
},
+ {
+ "description": "Enables the set_dock_visibility command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:app:allow-set-dock-visibility",
+ "markdownDescription": "Enables the set_dock_visibility command without any pre-configured scope."
+ },
{
"description": "Enables the tauri_version command without any pre-configured scope.",
"type": "string",
@@ -716,6 +530,12 @@
"const": "core:app:deny-app-show",
"markdownDescription": "Denies the app_show command without any pre-configured scope."
},
+ {
+ "description": "Denies the bundle_type command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:app:deny-bundle-type",
+ "markdownDescription": "Denies the bundle_type command without any pre-configured scope."
+ },
{
"description": "Denies the default_window_icon command without any pre-configured scope.",
"type": "string",
@@ -740,18 +560,36 @@
"const": "core:app:deny-name",
"markdownDescription": "Denies the name command without any pre-configured scope."
},
+ {
+ "description": "Denies the register_listener command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:app:deny-register-listener",
+ "markdownDescription": "Denies the register_listener command without any pre-configured scope."
+ },
{
"description": "Denies the remove_data_store command without any pre-configured scope.",
"type": "string",
"const": "core:app:deny-remove-data-store",
"markdownDescription": "Denies the remove_data_store command without any pre-configured scope."
},
+ {
+ "description": "Denies the remove_listener command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:app:deny-remove-listener",
+ "markdownDescription": "Denies the remove_listener command without any pre-configured scope."
+ },
{
"description": "Denies the set_app_theme command without any pre-configured scope.",
"type": "string",
"const": "core:app:deny-set-app-theme",
"markdownDescription": "Denies the set_app_theme command without any pre-configured scope."
},
+ {
+ "description": "Denies the set_dock_visibility command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:app:deny-set-dock-visibility",
+ "markdownDescription": "Denies the set_dock_visibility command without any pre-configured scope."
+ },
{
"description": "Denies the tauri_version command without any pre-configured scope.",
"type": "string",
@@ -1460,6 +1298,12 @@
"const": "core:webview:allow-reparent",
"markdownDescription": "Enables the reparent command without any pre-configured scope."
},
+ {
+ "description": "Enables the set_webview_auto_resize command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:webview:allow-set-webview-auto-resize",
+ "markdownDescription": "Enables the set_webview_auto_resize command without any pre-configured scope."
+ },
{
"description": "Enables the set_webview_background_color command without any pre-configured scope.",
"type": "string",
@@ -1562,6 +1406,12 @@
"const": "core:webview:deny-reparent",
"markdownDescription": "Denies the reparent command without any pre-configured scope."
},
+ {
+ "description": "Denies the set_webview_auto_resize command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:webview:deny-set-webview-auto-resize",
+ "markdownDescription": "Denies the set_webview_auto_resize command without any pre-configured scope."
+ },
{
"description": "Denies the set_webview_background_color command without any pre-configured scope.",
"type": "string",
@@ -1910,6 +1760,12 @@
"const": "core:window:allow-set-focus",
"markdownDescription": "Enables the set_focus command without any pre-configured scope."
},
+ {
+ "description": "Enables the set_focusable command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:window:allow-set-focusable",
+ "markdownDescription": "Enables the set_focusable command without any pre-configured scope."
+ },
{
"description": "Enables the set_fullscreen command without any pre-configured scope.",
"type": "string",
@@ -1982,6 +1838,12 @@
"const": "core:window:allow-set-shadow",
"markdownDescription": "Enables the set_shadow command without any pre-configured scope."
},
+ {
+ "description": "Enables the set_simple_fullscreen command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:window:allow-set-simple-fullscreen",
+ "markdownDescription": "Enables the set_simple_fullscreen command without any pre-configured scope."
+ },
{
"description": "Enables the set_size command without any pre-configured scope.",
"type": "string",
@@ -2354,6 +2216,12 @@
"const": "core:window:deny-set-focus",
"markdownDescription": "Denies the set_focus command without any pre-configured scope."
},
+ {
+ "description": "Denies the set_focusable command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:window:deny-set-focusable",
+ "markdownDescription": "Denies the set_focusable command without any pre-configured scope."
+ },
{
"description": "Denies the set_fullscreen command without any pre-configured scope.",
"type": "string",
@@ -2426,6 +2294,12 @@
"const": "core:window:deny-set-shadow",
"markdownDescription": "Denies the set_shadow command without any pre-configured scope."
},
+ {
+ "description": "Denies the set_simple_fullscreen command without any pre-configured scope.",
+ "type": "string",
+ "const": "core:window:deny-set-simple-fullscreen",
+ "markdownDescription": "Denies the set_simple_fullscreen command without any pre-configured scope."
+ },
{
"description": "Denies the set_size command without any pre-configured scope.",
"type": "string",
@@ -2594,72 +2468,6 @@
"const": "process:deny-restart",
"markdownDescription": "Denies the restart command without any pre-configured scope."
},
- {
- "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`",
- "type": "string",
- "const": "shell:default",
- "markdownDescription": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`"
- },
- {
- "description": "Enables the execute command without any pre-configured scope.",
- "type": "string",
- "const": "shell:allow-execute",
- "markdownDescription": "Enables the execute command without any pre-configured scope."
- },
- {
- "description": "Enables the kill command without any pre-configured scope.",
- "type": "string",
- "const": "shell:allow-kill",
- "markdownDescription": "Enables the kill command without any pre-configured scope."
- },
- {
- "description": "Enables the open command without any pre-configured scope.",
- "type": "string",
- "const": "shell:allow-open",
- "markdownDescription": "Enables the open command without any pre-configured scope."
- },
- {
- "description": "Enables the spawn command without any pre-configured scope.",
- "type": "string",
- "const": "shell:allow-spawn",
- "markdownDescription": "Enables the spawn command without any pre-configured scope."
- },
- {
- "description": "Enables the stdin_write command without any pre-configured scope.",
- "type": "string",
- "const": "shell:allow-stdin-write",
- "markdownDescription": "Enables the stdin_write command without any pre-configured scope."
- },
- {
- "description": "Denies the execute command without any pre-configured scope.",
- "type": "string",
- "const": "shell:deny-execute",
- "markdownDescription": "Denies the execute command without any pre-configured scope."
- },
- {
- "description": "Denies the kill command without any pre-configured scope.",
- "type": "string",
- "const": "shell:deny-kill",
- "markdownDescription": "Denies the kill command without any pre-configured scope."
- },
- {
- "description": "Denies the open command without any pre-configured scope.",
- "type": "string",
- "const": "shell:deny-open",
- "markdownDescription": "Denies the open command without any pre-configured scope."
- },
- {
- "description": "Denies the spawn command without any pre-configured scope.",
- "type": "string",
- "const": "shell:deny-spawn",
- "markdownDescription": "Denies the spawn command without any pre-configured scope."
- },
- {
- "description": "Denies the stdin_write command without any pre-configured scope.",
- "type": "string",
- "const": "shell:deny-stdin-write",
- "markdownDescription": "Denies the stdin_write command without any pre-configured scope."
- },
{
"description": "This permission set configures which kind of\nupdater functions are exposed to the frontend.\n\n#### Granted Permissions\n\nThe full workflow from checking for updates to installing them\nis enabled.\n\n\n#### This default permission set includes:\n\n- `allow-check`\n- `allow-download`\n- `allow-install`\n- `allow-download-and-install`",
"type": "string",
@@ -2826,50 +2634,6 @@
"type": "string"
}
]
- },
- "ShellScopeEntryAllowedArg": {
- "description": "A command argument allowed to be executed by the webview API.",
- "anyOf": [
- {
- "description": "A non-configurable argument that is passed to the command in the order it was specified.",
- "type": "string"
- },
- {
- "description": "A variable that is set while calling the command from the webview API.",
- "type": "object",
- "required": [
- "validator"
- ],
- "properties": {
- "raw": {
- "description": "Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.",
- "default": false,
- "type": "boolean"
- },
- "validator": {
- "description": "[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: ",
- "type": "string"
- }
- },
- "additionalProperties": false
- }
- ]
- },
- "ShellScopeEntryAllowedArgs": {
- "description": "A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration.",
- "anyOf": [
- {
- "description": "Use a simple boolean to allow all or disable all arguments to this command configuration.",
- "type": "boolean"
- },
- {
- "description": "A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.",
- "type": "array",
- "items": {
- "$ref": "#/definitions/ShellScopeEntryAllowedArg"
- }
- }
- ]
}
}
}
\ No newline at end of file
diff --git a/nym-wallet/src-tauri/icons/128x128.png b/nym-wallet/src-tauri/icons/128x128.png
index c8c1b37414..412cadc6d7 100644
Binary files a/nym-wallet/src-tauri/icons/128x128.png and b/nym-wallet/src-tauri/icons/128x128.png differ
diff --git a/nym-wallet/src-tauri/icons/128x128@2x.png b/nym-wallet/src-tauri/icons/128x128@2x.png
new file mode 100644
index 0000000000..0617557567
Binary files /dev/null and b/nym-wallet/src-tauri/icons/128x128@2x.png differ
diff --git a/nym-wallet/src-tauri/icons/32x32.png b/nym-wallet/src-tauri/icons/32x32.png
index 76e4168cd7..6549f3a6b8 100644
Binary files a/nym-wallet/src-tauri/icons/32x32.png and b/nym-wallet/src-tauri/icons/32x32.png differ
diff --git a/nym-wallet/src-tauri/icons/64x64.png b/nym-wallet/src-tauri/icons/64x64.png
new file mode 100644
index 0000000000..d5c694a23a
Binary files /dev/null and b/nym-wallet/src-tauri/icons/64x64.png differ
diff --git a/nym-wallet/src-tauri/icons/app-icon-source.png b/nym-wallet/src-tauri/icons/app-icon-source.png
new file mode 100644
index 0000000000..01d39e7fbc
Binary files /dev/null and b/nym-wallet/src-tauri/icons/app-icon-source.png differ
diff --git a/nym-wallet/src-tauri/icons/icon.icns b/nym-wallet/src-tauri/icons/icon.icns
index d964ffd4da..30a1ed71bb 100644
Binary files a/nym-wallet/src-tauri/icons/icon.icns and b/nym-wallet/src-tauri/icons/icon.icns differ
diff --git a/nym-wallet/src-tauri/icons/icon.ico b/nym-wallet/src-tauri/icons/icon.ico
index c312b68a41..9b72bd77ec 100644
Binary files a/nym-wallet/src-tauri/icons/icon.ico and b/nym-wallet/src-tauri/icons/icon.ico differ
diff --git a/nym-wallet/src-tauri/icons/icon.png b/nym-wallet/src-tauri/icons/icon.png
index d964ffd4da..1c7a21d21e 100644
Binary files a/nym-wallet/src-tauri/icons/icon.png and b/nym-wallet/src-tauri/icons/icon.png differ
diff --git a/nym-wallet/src-tauri/icons/tray_icon.png b/nym-wallet/src-tauri/icons/tray_icon.png
index c8c1b37414..1a52bb5258 100644
Binary files a/nym-wallet/src-tauri/icons/tray_icon.png and b/nym-wallet/src-tauri/icons/tray_icon.png differ
diff --git a/nym-wallet/src-tauri/scripts/appimage-wayland-hook.sh b/nym-wallet/src-tauri/scripts/appimage-wayland-hook.sh
new file mode 100644
index 0000000000..d046bc8042
--- /dev/null
+++ b/nym-wallet/src-tauri/scripts/appimage-wayland-hook.sh
@@ -0,0 +1,27 @@
+#!/usr/bin/env bash
+# Reference only: Tauri AppImage bundling does not place /apprun-hooks/ into the final image (only /usr/ is staged).
+# Wayland defaults and WEBKIT_DISABLE_DMABUF_RENDERER are applied in src/main.rs (configure_linux_wayland_defaults).
+
+if [ -z "${WAYLAND_DISPLAY:-}" ]; then
+ return 0 2>/dev/null || exit 0
+fi
+
+if [ -z "${LD_PRELOAD:-}" ]; then
+ for lib_path in \
+ /usr/lib/libwayland-client.so \
+ /usr/lib64/libwayland-client.so \
+ /usr/lib/x86_64-linux-gnu/libwayland-client.so
+ do
+ if [ -f "$lib_path" ]; then
+ export LD_PRELOAD="$lib_path"
+ break
+ fi
+ done
+fi
+
+export GDK_BACKEND="${GDK_BACKEND:-wayland}"
+export GDK_SCALE="${GDK_SCALE:-1}"
+export GDK_DPI_SCALE="${GDK_DPI_SCALE:-0.8}"
+
+# Reduces WebKit DMA-BUF / EGL failures on some rolling Mesa + Wayland stacks. Set WEBKIT_DISABLE_DMABUF_RENDERER=0 to opt out.
+export WEBKIT_DISABLE_DMABUF_RENDERER="${WEBKIT_DISABLE_DMABUF_RENDERER:-1}"
diff --git a/nym-wallet/src-tauri/src/error.rs b/nym-wallet/src-tauri/src/error.rs
index 6f491d4532..542def7d6b 100644
--- a/nym-wallet/src-tauri/src/error.rs
+++ b/nym-wallet/src-tauri/src/error.rs
@@ -13,10 +13,7 @@ use thiserror::Error;
#[derive(Error, Debug)]
pub enum BackendError {
#[error(transparent)]
- TypesError {
- #[from]
- source: TypesError,
- },
+ TypesError { source: TypesError },
#[error(transparent)]
Bip39Error {
#[from]
@@ -115,6 +112,8 @@ pub enum BackendError {
WalletUnexpectedMnemonicAccount,
#[error("Failed to derive address from mnemonic")]
FailedToDeriveAddress,
+ #[error("Built-in HD derivation path constant failed to parse (internal error)")]
+ InvalidInternalDerivationPath,
#[error(transparent)]
ValueParseError(#[from] ParseIntError),
#[error("The provided coin has an unknown denomination - {0}")]
@@ -156,6 +155,10 @@ pub enum BackendError {
#[error("there aren't any vesting delegations to migrate")]
NoVestingDelegations,
+ /// Vesting contract [`nym_vesting_contract_common::VestingContractError::NoAccountForAddress`].
+ #[error("Vesting contract has no account for this address")]
+ VestingContractAccountNotFound,
+
#[error("this command has been temporarily disabled")]
Disabled,
//
@@ -172,8 +175,52 @@ impl Serialize for BackendError {
}
}
+/// Cosmwasm returns vesting [`nym_vesting_contract_common::VestingContractError::NoAccountForAddress`]
+/// as `VESTING (...): Account does not exist - ...` in the ABCI log.
+///
+/// This is **string-based** on RPC/log text: upstream wording changes can break detection or cause
+/// false positives. Prefer tightening if structured codes become available from the client stack.
+/// Regression coverage: `vesting_no_account_tests` in this file.
+fn nyxd_error_is_vesting_contract_no_account(err: &NyxdError) -> bool {
+ fn text_matches_strict(text: &str) -> bool {
+ text.contains("VESTING") && text.contains("Account does not exist")
+ }
+ // Prefer strict match; fall back for ABCI text that omits the `VESTING` prefix. Exclude Nyxd
+ // `NonExistentAccountError` (`... does not exist on the chain`).
+ fn abci_query_vesting_no_account(text: &str) -> bool {
+ text_matches_strict(text)
+ || (text.contains("Account does not exist")
+ && !text.contains("does not exist on the chain"))
+ }
+ match err {
+ NyxdError::AbciError {
+ log, pretty_log, ..
+ } => {
+ pretty_log
+ .as_ref()
+ .is_some_and(|s| abci_query_vesting_no_account(s))
+ || abci_query_vesting_no_account(log)
+ }
+ _ => text_matches_strict(&err.to_string()),
+ }
+}
+
+impl From for BackendError {
+ fn from(e: TypesError) -> Self {
+ if let TypesError::NyxdError { ref source } = e {
+ if nyxd_error_is_vesting_contract_no_account(source) {
+ return Self::VestingContractAccountNotFound;
+ }
+ }
+ Self::TypesError { source: e }
+ }
+}
+
impl From for BackendError {
fn from(source: NyxdError) -> Self {
+ if nyxd_error_is_vesting_contract_no_account(&source) {
+ return Self::VestingContractAccountNotFound;
+ }
match source {
NyxdError::AbciError {
code: _,
@@ -213,3 +260,66 @@ impl From for BackendError {
}
}
}
+
+#[cfg(test)]
+mod vesting_no_account_tests {
+ use super::nyxd_error_is_vesting_contract_no_account;
+ use super::BackendError;
+ use nym_types::error::TypesError;
+ use nym_validator_client::nyxd::error::NyxdError;
+
+ fn abci(log: impl Into, pretty_log: Option) -> NyxdError {
+ NyxdError::AbciError {
+ code: 1,
+ log: log.into(),
+ pretty_log,
+ }
+ }
+
+ #[test]
+ fn strict_vesting_prefix_in_log() {
+ let e = abci("VESTING (99): Account does not exist - nym1test", None);
+ assert!(nyxd_error_is_vesting_contract_no_account(&e));
+ assert!(matches!(
+ BackendError::from(e),
+ BackendError::VestingContractAccountNotFound
+ ));
+ }
+
+ #[test]
+ fn strict_match_in_pretty_log() {
+ let e = abci(
+ "raw abci",
+ Some("VESTING: Account does not exist - addr".to_string()),
+ );
+ assert!(nyxd_error_is_vesting_contract_no_account(&e));
+ }
+
+ #[test]
+ fn fallback_when_vesting_prefix_missing_in_log() {
+ let e = abci("Account does not exist - nym1abc", None);
+ assert!(nyxd_error_is_vesting_contract_no_account(&e));
+ }
+
+ #[test]
+ fn excludes_chain_account_not_found_wording() {
+ let e = abci("Account nym1abc does not exist on the chain", None);
+ assert!(!nyxd_error_is_vesting_contract_no_account(&e));
+ }
+
+ #[test]
+ fn non_abci_error_not_matched_loosely() {
+ let e = NyxdError::MalformedGasPrice;
+ assert!(!nyxd_error_is_vesting_contract_no_account(&e));
+ }
+
+ #[test]
+ fn types_error_nyxd_wrapper_maps() {
+ let inner = abci("VESTING (1): Account does not exist - x", None);
+ let wrapped = TypesError::NyxdError { source: inner };
+ assert!(matches!(
+ BackendError::from(wrapped),
+ BackendError::VestingContractAccountNotFound
+ ));
+ }
+}
diff --git a/nym-wallet/src-tauri/src/log.rs b/nym-wallet/src-tauri/src/log.rs
index d7642291e3..f9b61aaff2 100644
--- a/nym-wallet/src-tauri/src/log.rs
+++ b/nym-wallet/src-tauri/src/log.rs
@@ -3,7 +3,7 @@ use std::str::FromStr;
use fern::colors::{Color, ColoredLevelConfig};
use serde::Serialize;
use serde_repr::{Deserialize_repr, Serialize_repr};
-use tauri::Emitter;
+use tauri::{Emitter, Manager};
use time::{format_description, OffsetDateTime};
fn formatted_time() -> String {
@@ -24,6 +24,7 @@ fn formatted_time() -> String {
}
pub fn setup_logging(app_handle: tauri::AppHandle) -> Result<(), log::SetLoggerError> {
+ let log_window_app = app_handle.clone();
let colors = ColoredLevelConfig::new()
.trace(Color::Magenta)
.debug(Color::Blue)
@@ -61,7 +62,10 @@ pub fn setup_logging(app_handle: tauri::AppHandle) -> Result<(), log::SetLoggerE
message: record.args().to_string(),
level: record.level().into(),
};
- app_handle.emit("log://log", msg).unwrap();
+ // Tauri 2: target the log webview explicitly so the dedicated window receives events.
+ if let Some(log_win) = log_window_app.get_webview_window("log") {
+ let _ = log_win.emit("log://log", msg);
+ }
}));
base_config
diff --git a/nym-wallet/src-tauri/src/main.rs b/nym-wallet/src-tauri/src/main.rs
index fe9aa8664c..e03c36765a 100644
--- a/nym-wallet/src-tauri/src/main.rs
+++ b/nym-wallet/src-tauri/src/main.rs
@@ -4,10 +4,9 @@
)]
use nym_mixnet_contract_common::{Gateway, MixNode};
-use tauri::menu::{MenuBuilder, MenuItemBuilder, SubmenuBuilder};
use tauri::Manager;
use tauri_plugin_opener::init as init_opener;
-use tauri_plugin_shell::init as init_shell;
+use tauri_plugin_process::init as init_process;
use tauri_plugin_updater::Builder as UpdaterBuilder;
use crate::menu::SHOW_LOG_WINDOW;
@@ -30,15 +29,17 @@ mod platform_constants;
mod state;
mod utils;
mod wallet_storage;
+mod webview_theme;
#[allow(clippy::too_many_lines)]
fn main() {
dotenvy::dotenv().ok();
+ configure_linux_wayland_defaults();
let context = tauri::generate_context!();
tauri::Builder::default()
- .plugin(init_shell())
.plugin(init_opener())
+ .plugin(init_process())
.plugin(UpdaterBuilder::new().build())
.plugin(tauri_plugin_clipboard_manager::init())
.manage(WalletState::default())
@@ -217,25 +218,7 @@ fn main() {
app::react::set_react_state,
app::react::get_react_state,
])
- .menu(|app| {
- // Create a menu builder
- let menu_builder = MenuBuilder::new(app);
- if ::std::env::var("NYM_WALLET_ENABLE_LOG").is_ok() {
- let help_text = MenuItemBuilder::with_id(SHOW_LOG_WINDOW, "Show logs")
- .build(app)
- .expect("Failed to create menu item");
-
- let submenu = SubmenuBuilder::new(app, "Help")
- .items(&[&help_text])
- .build()
- .expect("Failed to create help submenu");
-
- menu_builder.item(&submenu).build()
- } else {
- // Build a default menu without the submenu
- menu_builder.build()
- }
- })
+ .menu(menu::build_app_menu)
.on_menu_event(|app, event| {
if event.id() == SHOW_LOG_WINDOW {
let _r = help::log::help_log_toggle_window(app.app_handle().clone());
@@ -245,3 +228,32 @@ fn main() {
.run(context)
.expect("error while running tauri application");
}
+
+/// Sets GTK/Wayland-related env vars before GTK or the webview initializes.
+///
+/// `std::env::set_var` is `unsafe` in current Rust because mutating the process environment is not
+/// defined as thread-safe if other threads read the environment concurrently. This runs from
+/// `main()` before `tauri::Builder` spawns worker threads, so no other Rust threads should be
+/// reading `std::env` yet. If that ordering ever changes, prefer setting these variables in a
+/// launcher script (for example AppImage `AppRun`) instead of here.
+fn configure_linux_wayland_defaults() {
+ #[cfg(target_os = "linux")]
+ {
+ if std::env::var_os("WAYLAND_DISPLAY").is_some() {
+ if std::env::var_os("GDK_BACKEND").is_none() {
+ unsafe { std::env::set_var("GDK_BACKEND", "wayland") };
+ }
+
+ if std::env::var_os("GDK_SCALE").is_none() {
+ unsafe { std::env::set_var("GDK_SCALE", "1") };
+ }
+
+ if std::env::var_os("GDK_DPI_SCALE").is_none() {
+ unsafe { std::env::set_var("GDK_DPI_SCALE", "0.8") };
+ }
+ if std::env::var_os("WEBKIT_DISABLE_DMABUF_RENDERER").is_none() {
+ unsafe { std::env::set_var("WEBKIT_DISABLE_DMABUF_RENDERER", "1") };
+ }
+ }
+ }
+}
diff --git a/nym-wallet/src-tauri/src/menu.rs b/nym-wallet/src-tauri/src/menu.rs
index 58caa8b803..e4cd3393b0 100644
--- a/nym-wallet/src-tauri/src/menu.rs
+++ b/nym-wallet/src-tauri/src/menu.rs
@@ -1,36 +1,27 @@
-use tauri::menu::Menu;
-use tauri::menu::{MenuBuilder, MenuItemBuilder, SubmenuBuilder};
+use tauri::menu::{Menu, MenuBuilder, MenuItemBuilder, SubmenuBuilder};
+use tauri::{AppHandle, Runtime};
pub const SHOW_LOG_WINDOW: &str = "show_log_window";
-pub trait AddDefaultSubmenus {
- #[allow(dead_code)]
- fn add_default_app_submenus(self) -> Self;
-}
+pub fn build_app_menu(app: &AppHandle) -> tauri::Result