Merge branch 'dev' into docs/android-plugin-library-name-14569

This commit is contained in:
Subham 2025-12-19 14:07:23 +05:30 committed by GitHub
commit 9c4e20f988
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
74 changed files with 529 additions and 441 deletions

View File

@ -1,5 +0,0 @@
---
"@tauri-apps/api": patch:bug
---
Fix `addPluginListener` fallback added in https://github.com/tauri-apps/tauri/pull/14132 didn't work properly

View File

@ -1,5 +0,0 @@
---
tauri-bundler: patch:bug
---
Fixed an issue that caused the AppImage bundler to fail with 404 errors for 32-bit builds.

View File

@ -0,0 +1,7 @@
---
"tauri-utils": patch:enhance
"tauri-build": patch:enhance
"tauri-cli": patch:enhance
---
Small code refactors for improved code readability. No user facing changes.

View File

@ -1,8 +0,0 @@
---
"tauri": patch:perf
"tauri-cli": patch:perf
"tauri-bundler": patch:perf
"@tauri-apps/cli": patch:perf
---
refactor: remove needless collect. No user facing changes.

View File

@ -1,6 +0,0 @@
---
tauri-cli: patch:bug
---
Fixed an issue that caused the cli to error out with missing private key, in case the option `--no-sign` was requested and the `tauri.config` has signing key set and the plugin `tauri-plugin-updater` is used.

View File

@ -1,5 +0,0 @@
---
"tauri-bundler": patch:deps
---
Updated NSIS from 3.8 to 3.11

View File

@ -1,8 +0,0 @@
---
"tauri-bundler": patch:perf
"tauri-cli": patch:perf
"tauri-macos-sign": patch:perf
"tauri": patch:perf
---
perf: remove needless clones in various files for improved performance. No user facing changes.

View File

@ -1,6 +0,0 @@
---
"tauri-cli": patch:bug
"@tauri-apps/cli": patch:bug
---
Fixed the mismatched tauri package versions check didn't work for pnpm

View File

@ -1,5 +0,0 @@
---
tauri-utils: patch:bug
---
Fixed an issue that caused schema files to have `\r` characters on Windows.

View File

@ -1,5 +0,0 @@
---
tauri-cli: patch:bug
---
Fixed an issue that caused the cli to print errors like `Error Failed to parse version 2 for crate tauri` when there was no `Cargo.lock` file present yet. This will still be logged in `--verbose` mode.

View File

@ -0,0 +1,5 @@
---
tauri: patch:bug
---
`WindowConfig::focus` is set to `false` in `WindowConfig::default()`

108
Cargo.lock generated
View File

@ -1319,7 +1319,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c"
dependencies = [
"lazy_static",
"windows-sys 0.48.0",
"windows-sys 0.59.0",
]
[[package]]
@ -3467,9 +3467,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",
@ -3968,9 +3968,9 @@ checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0"
[[package]]
name = "js-sys"
version = "0.3.77"
version = "0.3.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8"
dependencies = [
"once_cell",
"wasm-bindgen",
@ -4319,7 +4319,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34"
dependencies = [
"cfg-if",
"windows-targets 0.48.5",
"windows-targets 0.52.6",
]
[[package]]
@ -4897,11 +4897,10 @@ dependencies = [
[[package]]
name = "num-bigint-dig"
version = "0.8.4"
version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151"
checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7"
dependencies = [
"byteorder",
"lazy_static",
"libm",
"num-integer",
@ -8494,7 +8493,7 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
[[package]]
name = "tauri"
version = "2.9.3"
version = "2.9.5"
dependencies = [
"anyhow",
"bytes",
@ -8554,7 +8553,7 @@ dependencies = [
[[package]]
name = "tauri-build"
version = "2.5.2"
version = "2.5.3"
dependencies = [
"anyhow",
"cargo_toml",
@ -8576,7 +8575,7 @@ dependencies = [
[[package]]
name = "tauri-bundler"
version = "2.7.3"
version = "2.7.5"
dependencies = [
"anyhow",
"ar",
@ -8622,7 +8621,7 @@ dependencies = [
[[package]]
name = "tauri-cli"
version = "2.9.4"
version = "2.9.6"
dependencies = [
"ar",
"axum",
@ -8716,7 +8715,7 @@ dependencies = [
[[package]]
name = "tauri-codegen"
version = "2.5.1"
version = "2.5.2"
dependencies = [
"base64 0.22.1",
"brotli",
@ -8782,7 +8781,7 @@ dependencies = [
[[package]]
name = "tauri-macos-sign"
version = "2.3.0"
version = "2.3.2"
dependencies = [
"apple-codesign",
"chrono",
@ -8802,7 +8801,7 @@ dependencies = [
[[package]]
name = "tauri-macros"
version = "2.5.1"
version = "2.5.2"
dependencies = [
"heck 0.5.0",
"proc-macro2",
@ -8814,7 +8813,7 @@ dependencies = [
[[package]]
name = "tauri-plugin"
version = "2.5.1"
version = "2.5.2"
dependencies = [
"anyhow",
"glob",
@ -8862,7 +8861,7 @@ dependencies = [
[[package]]
name = "tauri-runtime"
version = "2.9.1"
version = "2.9.2"
dependencies = [
"cookie",
"dpi",
@ -8885,7 +8884,7 @@ dependencies = [
[[package]]
name = "tauri-runtime-wry"
version = "2.9.1"
version = "2.9.3"
dependencies = [
"gtk",
"http 1.3.1",
@ -8936,7 +8935,7 @@ dependencies = [
[[package]]
name = "tauri-utils"
version = "2.8.0"
version = "2.8.1"
dependencies = [
"aes-gcm",
"anyhow",
@ -10063,35 +10062,22 @@ dependencies = [
[[package]]
name = "wasm-bindgen"
version = "0.2.100"
version = "0.2.106"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd"
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.95",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-futures"
version = "0.4.50"
version = "0.4.56"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61"
checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c"
dependencies = [
"cfg-if",
"js-sys",
@ -10102,9 +10088,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.100"
version = "0.2.106"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@ -10112,22 +10098,22 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.100"
version = "0.2.106"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40"
dependencies = [
"bumpalo",
"proc-macro2",
"quote",
"syn 2.0.95",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
version = "0.2.100"
version = "0.2.106"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4"
dependencies = [
"unicode-ident",
]
@ -10147,9 +10133,9 @@ dependencies = [
[[package]]
name = "web-sys"
version = "0.3.77"
version = "0.3.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac"
dependencies = [
"js-sys",
"wasm-bindgen",
@ -10324,7 +10310,7 @@ version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
dependencies = [
"windows-sys 0.48.0",
"windows-sys 0.59.0",
]
[[package]]
@ -10869,9 +10855,9 @@ dependencies = [
[[package]]
name = "worker"
version = "0.6.0"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f6ac1566a3005b790b974f0621d77431e2a47e5f481276485f5ac0485775de2"
checksum = "42c76c5889873a2c309365ad4503810c007d3c25fbb4e9fa9e4e23c4ceb3c7f2"
dependencies = [
"async-trait",
"axum",
@ -10894,31 +10880,15 @@ dependencies = [
"wasm-bindgen-futures",
"wasm-streams",
"web-sys",
"worker-kv",
"worker-macros",
"worker-sys",
]
[[package]]
name = "worker-kv"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b0d30eb90e8db0657414129624c0d12c6cb480574bc2ddd584822db196cb9a52"
dependencies = [
"js-sys",
"serde",
"serde-wasm-bindgen",
"serde_json",
"thiserror 2.0.12",
"wasm-bindgen",
"wasm-bindgen-futures",
]
[[package]]
name = "worker-macros"
version = "0.6.0"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ba7478759843ae3d56dc7ba2445e7a514a5d043eaa98cebac2789f7ab5221ee"
checksum = "62c62584d037bad33789a6a5d605b3fccea1c52de9251d06f9d44054170dc612"
dependencies = [
"async-trait",
"proc-macro2",
@ -10932,9 +10902,9 @@ dependencies = [
[[package]]
name = "worker-sys"
version = "0.6.0"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb4d7a3273dd584b9526aec77bbcf815c51d1a0e17407b1a390cf5a39b6d4fbd"
checksum = "72ddd412fd62c6eeffc1dd85e6ae5960a33b534f44a733df75b6e7519972bc74"
dependencies = [
"cfg-if",
"js-sys",

View File

@ -1,5 +1,12 @@
# Changelog
## \[2.5.3]
### Dependencies
- Upgraded to `tauri-utils@2.8.1`
- Upgraded to `tauri-codegen@2.5.2`
## \[2.5.2]
### Dependencies

View File

@ -1,6 +1,6 @@
[package]
name = "tauri-build"
version = "2.5.2"
version = "2.5.3"
description = "build time code to pair with https://crates.io/crates/tauri"
exclude = ["CHANGELOG.md", "/target"]
readme = "README.md"
@ -26,8 +26,8 @@ targets = [
[dependencies]
anyhow = "1"
quote = { version = "1", optional = true }
tauri-codegen = { version = "2.5.1", path = "../tauri-codegen", optional = true }
tauri-utils = { version = "2.8.0", path = "../tauri-utils", features = [
tauri-codegen = { version = "2.5.2", path = "../tauri-codegen", optional = true }
tauri-utils = { version = "2.8.1", path = "../tauri-utils", features = [
"build",
"resources",
] }

View File

@ -165,21 +165,21 @@ fn copy_frameworks(dest_dir: &Path, frameworks: &[String]) -> Result<()> {
.with_context(|| format!("Failed to create frameworks output directory at {dest_dir:?}"))?;
for framework in frameworks.iter() {
if framework.ends_with(".framework") {
let src_path = PathBuf::from(framework);
let src_path = Path::new(framework);
let src_name = src_path
.file_name()
.expect("Couldn't get framework filename");
let dest_path = dest_dir.join(src_name);
copy_dir(&src_path, &dest_path)?;
copy_dir(src_path, &dest_path)?;
continue;
} else if framework.ends_with(".dylib") {
let src_path = PathBuf::from(framework);
let src_path = Path::new(framework);
if !src_path.exists() {
return Err(anyhow::anyhow!("Library not found: {}", framework));
}
let src_name = src_path.file_name().expect("Couldn't get library filename");
let dest_path = dest_dir.join(src_name);
copy_file(&src_path, &dest_path)?;
copy_file(src_path, &dest_path)?;
continue;
} else if framework.contains('/') {
return Err(anyhow::anyhow!(
@ -192,12 +192,8 @@ fn copy_frameworks(dest_dir: &Path, frameworks: &[String]) -> Result<()> {
continue;
}
}
if copy_framework_from(&PathBuf::from("/Library/Frameworks/"), framework, dest_dir)?
|| copy_framework_from(
&PathBuf::from("/Network/Library/Frameworks/"),
framework,
dest_dir,
)?
if copy_framework_from("/Library/Frameworks/".as_ref(), framework, dest_dir)?
|| copy_framework_from("/Network/Library/Frameworks/".as_ref(), framework, dest_dir)?
{
continue;
}

View File

@ -1,5 +1,37 @@
# Changelog
## \[2.7.5]
### Enhancements
- [`4176f93ae`](https://www.github.com/tauri-apps/tauri/commit/4176f93ae43ef66714c4934feb3df19df3a3e28a) ([#14570](https://www.github.com/tauri-apps/tauri/pull/14570) by [@chfaft](https://www.github.com/tauri-apps/tauri/../../chfaft)) Consider extensions that are defined in the wxs template.
### Bug Fixes
- [`018b4db22`](https://www.github.com/tauri-apps/tauri/commit/018b4db22e167fa67b37b0933e192a0f3556d3e5) ([#14625](https://www.github.com/tauri-apps/tauri/pull/14625) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Skip signing for NSIS uninstaller when using `--no-sign` flag
- [`91becd9e4`](https://www.github.com/tauri-apps/tauri/commit/91becd9e4fa2db089ddc6b21dadc06133e939e08) ([#14627](https://www.github.com/tauri-apps/tauri/pull/14627) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix NSIS plugins not being signed due to wrong path handlings
### Dependencies
- Upgraded to `tauri-macos-sign@2.3.2`
## \[2.7.4]
### Bug Fixes
- [`1496145f8`](https://www.github.com/tauri-apps/tauri/commit/1496145f8222649efeff22b819a96208670bbea1) ([#14585](https://www.github.com/tauri-apps/tauri/pull/14585) by [@FabianLars](https://www.github.com/tauri-apps/tauri/../../FabianLars)) Fixed an issue that caused the AppImage bundler to fail with 404 errors for 32-bit builds.
### Performance Improvements
- [`ce98d87ce`](https://www.github.com/tauri-apps/tauri/commit/ce98d87ce0aaa907285852eb80691197424e03c3) ([#14474](https://www.github.com/tauri-apps/tauri/pull/14474) by [@Tunglies](https://www.github.com/tauri-apps/tauri/../../Tunglies)) refactor: remove needless collect. No user facing changes.
- [`ee3cc4a91`](https://www.github.com/tauri-apps/tauri/commit/ee3cc4a91bf1315ecaefe90f423ffd55ef6c40db) ([#14475](https://www.github.com/tauri-apps/tauri/pull/14475) by [@Tunglies](https://www.github.com/tauri-apps/tauri/../../Tunglies)) perf: remove needless clones in various files for improved performance. No user facing changes.
### Dependencies
- Upgraded to `tauri-macos-sign@2.3.1`
- Upgraded to `tauri-utils@2.8.1`
- [`b5ef603d8`](https://www.github.com/tauri-apps/tauri/commit/b5ef603d84bd8044625e50dcfdabb099b2e9fdd9) ([#14478](https://www.github.com/tauri-apps/tauri/pull/14478) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Updated NSIS from 3.8 to 3.11
## \[2.7.3]
### Enhancements

View File

@ -1,6 +1,6 @@
[package]
name = "tauri-bundler"
version = "2.7.3"
version = "2.7.5"
authors = [
"George Burton <burtonageo@gmail.com>",
"Tauri Programme within The Commons Conservancy",
@ -15,7 +15,7 @@ rust-version = "1.77.2"
exclude = ["CHANGELOG.md", "/target", "rustfmt.toml"]
[dependencies]
tauri-utils = { version = "2.8.0", path = "../tauri-utils", features = [
tauri-utils = { version = "2.8.1", path = "../tauri-utils", features = [
"resources",
] }
image = "0.25"
@ -59,7 +59,7 @@ features = ["Win32_System_SystemInformation", "Win32_System_Diagnostics_Debug"]
[target."cfg(target_os = \"macos\")".dependencies]
icns = { package = "tauri-icns", version = "0.1" }
time = { version = "0.3", features = ["formatting"] }
tauri-macos-sign = { version = "2.3.0", path = "../tauri-macos-sign" }
tauri-macos-sign = { version = "2.3.2", path = "../tauri-macos-sign" }
[target."cfg(target_os = \"linux\")".dependencies]
heck = "0.5"

View File

@ -273,7 +273,7 @@ fn sign_binaries_if_needed(settings: &Settings, target_os: &TargetPlatform) -> c
if matches!(target_os, TargetPlatform::Windows) {
if settings.windows().can_sign() {
if settings.no_sign() {
log::info!("Skipping binary signing due to --no-sign flag.");
log::warn!("Skipping binary signing due to --no-sign flag.");
return Ok(());
}

View File

@ -119,8 +119,9 @@ pub fn generate_data(
for bin in settings.binaries() {
let bin_path = settings.binary_path(bin);
fs_utils::copy_file(&bin_path, &bin_dir.join(bin.name()))
.with_context(|| format!("Failed to copy binary from {bin_path:?}"))?;
let trgt = bin_dir.join(bin.name());
fs_utils::copy_file(&bin_path, &trgt)
.with_context(|| format!("Failed to copy binary from {bin_path:?} to {trgt:?}"))?;
}
copy_resource_files(settings, &data_dir).with_context(|| "Failed to copy resource files")?;

View File

@ -753,26 +753,28 @@ pub fn build_wix_app_installer(
}
let main_wxs_path = output_path.join("main.wxs");
fs::write(main_wxs_path, handlebars.render("main.wxs", &data)?)?;
fs::write(&main_wxs_path, handlebars.render("main.wxs", &data)?)?;
let mut candle_inputs = vec![("main.wxs".into(), Vec::new())];
let mut candle_inputs = vec![];
let current_dir = std::env::current_dir()?;
let extension_regex = Regex::new("\"http://schemas.microsoft.com/wix/(\\w+)\"")?;
for fragment_path in fragment_paths {
let fragment_path = current_dir.join(fragment_path);
let fragment_content = fs::read_to_string(&fragment_path)?;
let fragment_handlebars = Handlebars::new();
let fragment = fragment_handlebars.render_template(&fragment_content, &data)?;
let input_paths =
std::iter::once(main_wxs_path).chain(fragment_paths.iter().map(|p| current_dir.join(p)));
for input_path in input_paths {
let input_content = fs::read_to_string(&input_path)?;
let input_handlebars = Handlebars::new();
let input = input_handlebars.render_template(&input_content, &data)?;
let mut extensions = Vec::new();
for cap in extension_regex.captures_iter(&fragment) {
for cap in extension_regex.captures_iter(&input) {
let path = wix_toolset_path.join(format!("Wix{}.dll", &cap[1]));
if settings.windows().can_sign() {
try_sign(&path, settings)?;
}
extensions.push(path);
}
candle_inputs.push((fragment_path, extensions));
candle_inputs.push((input_path, extensions));
}
let mut fragment_extensions = HashSet::new();

View File

@ -298,8 +298,12 @@ fn build_nsis_app_installer(
data.insert("copyright", to_json(settings.copyright_string()));
if settings.windows().can_sign() {
let sign_cmd = format!("{:?}", sign_command("%1", &settings.sign_params())?);
data.insert("uninstaller_sign_cmd", to_json(sign_cmd));
if settings.no_sign() {
log::warn!("Skipping signing for NSIS uninstaller due to --no-sign flag.");
} else {
let sign_cmd = format!("{:?}", sign_command("%1", &settings.sign_params())?);
data.insert("uninstaller_sign_cmd", to_json(sign_cmd));
}
}
let version = settings.version_string();
@ -617,13 +621,16 @@ fn build_nsis_app_installer(
fs::create_dir_all(nsis_installer_path.parent().unwrap())?;
if settings.windows().can_sign() {
log::info!("Signing NSIS plugins");
for dll in NSIS_PLUGIN_FILES {
let path = additional_plugins_path.join(dll);
if path.exists() {
try_sign(&path, settings)?;
} else {
log::warn!("Could not find {}, skipping signing", path.display());
if let Some(plugin_copy_path) = &maybe_plugin_copy_path {
let plugin_copy_path = plugin_copy_path.join("x86-unicode");
log::info!("Signing NSIS plugins");
for dll in NSIS_PLUGIN_FILES {
let path = plugin_copy_path.join(dll);
if path.exists() {
try_sign(&path, settings)?;
} else {
log::warn!("Could not find {}, skipping signing", path.display());
}
}
}
}

View File

@ -266,8 +266,7 @@ pub fn try_sign<P: AsRef<Path>>(file_path: P, settings: &Settings) -> crate::Res
pub fn should_sign(file_path: &Path) -> crate::Result<bool> {
let is_binary = file_path
.extension()
.and_then(|extension| extension.to_str())
.is_some_and(|extension| matches!(extension, "exe" | "dll"));
.is_some_and(|ext| ext == "exe" || ext == "dll");
if !is_binary {
return Ok(false);
}

View File

@ -1,5 +1,35 @@
# Changelog
## \[2.9.6]
### What's Changed
- [`7b1b3514d`](https://www.github.com/tauri-apps/tauri/commit/7b1b3514df771e6e9859b9f54fa4df332433948e) ([#14621](https://www.github.com/tauri-apps/tauri/pull/14621) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Errors like `Error Failed to parse version 2 for for NPM package tauri` when there was no `package-lock.json` file present yet or when using ones like `link:./tauri` are now only logged in `--verbose` mode.
### Dependencies
- Upgraded to `tauri-macos-sign@2.3.2`
- Upgraded to `tauri-bundler@2.7.5`
## \[2.9.5]
### Bug Fixes
- [`f022b2d1a`](https://www.github.com/tauri-apps/tauri/commit/f022b2d1ae57612e39c75782926f2f341d9034a8) ([#14582](https://www.github.com/tauri-apps/tauri/pull/14582) by [@hrzlgnm](https://www.github.com/tauri-apps/tauri/../../hrzlgnm)) Fixed an issue that caused the cli to error out with missing private key, in case the option `--no-sign` was requested and the `tauri.config` has signing key set and the plugin `tauri-plugin-updater` is used.
- [`f855caf8a`](https://www.github.com/tauri-apps/tauri/commit/f855caf8a3830aa5dd6d0b039312866a5d9c3606) ([#14481](https://www.github.com/tauri-apps/tauri/pull/14481) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fixed the mismatched tauri package versions check didn't work for pnpm
- [`79a7d9ec0`](https://www.github.com/tauri-apps/tauri/commit/79a7d9ec01be1a371b8e923848140fea75e9caed) ([#14468](https://www.github.com/tauri-apps/tauri/pull/14468) by [@FabianLars](https://www.github.com/tauri-apps/tauri/../../FabianLars)) Fixed an issue that caused the cli to print errors like `Error Failed to parse version 2 for crate tauri` when there was no `Cargo.lock` file present yet. This will still be logged in `--verbose` mode.
### Performance Improvements
- [`ce98d87ce`](https://www.github.com/tauri-apps/tauri/commit/ce98d87ce0aaa907285852eb80691197424e03c3) ([#14474](https://www.github.com/tauri-apps/tauri/pull/14474) by [@Tunglies](https://www.github.com/tauri-apps/tauri/../../Tunglies)) refactor: remove needless collect. No user facing changes.
- [`ee3cc4a91`](https://www.github.com/tauri-apps/tauri/commit/ee3cc4a91bf1315ecaefe90f423ffd55ef6c40db) ([#14475](https://www.github.com/tauri-apps/tauri/pull/14475) by [@Tunglies](https://www.github.com/tauri-apps/tauri/../../Tunglies)) perf: remove needless clones in various files for improved performance. No user facing changes.
### Dependencies
- Upgraded to `tauri-bundler@2.7.4`
- Upgraded to `tauri-macos-sign@2.3.1`
- Upgraded to `tauri-utils@2.8.1`
## \[2.9.4]
### Bug Fixes

View File

@ -1,6 +1,6 @@
[package]
name = "tauri-cli"
version = "2.9.4"
version = "2.9.6"
authors = ["Tauri Programme within The Commons Conservancy"]
edition = "2021"
rust-version = "1.77.2"
@ -47,7 +47,7 @@ sublime_fuzzy = "0.7"
clap_complete = "4"
clap = { version = "4", features = ["derive", "env"] }
thiserror = "2"
tauri-bundler = { version = "2.7.3", default-features = false, path = "../tauri-bundler" }
tauri-bundler = { version = "2.7.5", default-features = false, path = "../tauri-bundler" }
colored = "2"
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", features = ["preserve_order"] }
@ -58,7 +58,7 @@ shared_child = "1"
duct = "1.0"
toml_edit = { version = "0.23", features = ["serde"] }
json-patch = "3"
tauri-utils = { version = "2.8.0", path = "../tauri-utils", features = [
tauri-utils = { version = "2.8.1", path = "../tauri-utils", features = [
"isolation",
"schema",
"config-json5",
@ -133,7 +133,7 @@ libc = "0.2"
[target."cfg(target_os = \"macos\")".dependencies]
plist = "1"
tauri-macos-sign = { version = "2.3.0", path = "../tauri-macos-sign" }
tauri-macos-sign = { version = "2.3.2", path = "../tauri-macos-sign" }
object = { version = "0.36", default-features = false, features = [
"macho",
"read_core",

View File

@ -1,6 +1,6 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://schema.tauri.app/config/2.9.3",
"$id": "https://schema.tauri.app/config/2.9.5",
"title": "Config",
"description": "The Tauri configuration object.\n It is read from a file where you can define your frontend assets,\n configure the bundler and define a tray icon.\n\n The configuration file is generated by the\n [`tauri init`](https://v2.tauri.app/reference/cli/#init) command that lives in\n your Tauri application source directory (src-tauri).\n\n Once generated, you may modify it at will to customize your Tauri application.\n\n ## File Formats\n\n By default, the configuration is defined as a JSON file named `tauri.conf.json`.\n\n Tauri also supports JSON5 and TOML files via the `config-json5` and `config-toml` Cargo features, respectively.\n The JSON5 file name must be either `tauri.conf.json` or `tauri.conf.json5`.\n The TOML file name is `Tauri.toml`.\n\n ## Platform-Specific Configuration\n\n In addition to the default configuration file, Tauri can\n read a platform-specific configuration from `tauri.linux.conf.json`,\n `tauri.windows.conf.json`, `tauri.macos.conf.json`, `tauri.android.conf.json` and `tauri.ios.conf.json`\n (or `Tauri.linux.toml`, `Tauri.windows.toml`, `Tauri.macos.toml`, `Tauri.android.toml` and `Tauri.ios.toml` if the `Tauri.toml` format is used),\n which gets merged with the main configuration object.\n\n ## Configuration Structure\n\n The configuration is composed of the following objects:\n\n - [`app`](#appconfig): The Tauri configuration\n - [`build`](#buildconfig): The build configuration\n - [`bundle`](#bundleconfig): The bundle configurations\n - [`plugins`](#pluginconfig): The plugins configuration\n\n Example tauri.config.json file:\n\n ```json\n {\n \"productName\": \"tauri-app\",\n \"version\": \"0.1.0\",\n \"build\": {\n \"beforeBuildCommand\": \"\",\n \"beforeDevCommand\": \"\",\n \"devUrl\": \"http://localhost:3000\",\n \"frontendDist\": \"../dist\"\n },\n \"app\": {\n \"security\": {\n \"csp\": null\n },\n \"windows\": [\n {\n \"fullscreen\": false,\n \"height\": 600,\n \"resizable\": true,\n \"title\": \"Tauri App\",\n \"width\": 800\n }\n ]\n },\n \"bundle\": {},\n \"plugins\": {}\n }\n ```",
"type": "object",
@ -231,7 +231,7 @@
"type": "string"
},
"create": {
"description": "Whether Tauri should create this window at app startup or not.\n\n When this is set to `false` you must manually grab the config object via `app.config().app.windows`\n and create it with [`WebviewWindowBuilder::from_config`](https://docs.rs/tauri/2/tauri/webview/struct.WebviewWindowBuilder.html#method.from_config).\n\n ## Example:\n\n ```rust\n tauri::Builder::default()\n .setup(|app| {\n tauri::WebviewWindowBuilder::from_config(app.handle(), app.config().app.windows[0])?.build()?;\n Ok(())\n });\n ```",
"description": "Whether Tauri should create this window at app startup or not.\n\n When this is set to `false` you must manually grab the config object via `app.config().app.windows`\n and create it with [`WebviewWindowBuilder::from_config`](https://docs.rs/tauri/2/tauri/webview/struct.WebviewWindowBuilder.html#method.from_config).\n\n ## Example:\n\n ```rust\n tauri::Builder::default()\n .setup(|app| {\n tauri::WebviewWindowBuilder::from_config(app.handle(), &app.config().app.windows[0])?.build()?;\n Ok(())\n });\n ```",
"default": true,
"type": "boolean"
},
@ -1296,7 +1296,7 @@
"additionalProperties": false
},
"FsScope": {
"description": "Protocol scope definition.\n It is a list of glob patterns that restrict the API access from the webview.\n\n Each pattern can start with a variable that resolves to a system base directory.\n The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`,\n `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`,\n `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`,\n `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
"description": "Protocol scope definition.\n It is a list of glob patterns that restrict the API access from the webview.\n\n Each pattern can start with a variable that resolves to a system base directory.\n The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`,\n `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`,\n `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$TEMP`,\n `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
"anyOf": [
{
"description": "A list of paths that are allowed by this scope.",

View File

@ -1,9 +1,9 @@
{
"cli.js": {
"version": "2.9.4",
"version": "2.9.6",
"node": ">= 10.0.0"
},
"tauri": "2.9.3",
"tauri-build": "2.5.2",
"tauri-plugin": "2.5.1"
"tauri": "2.9.5",
"tauri-build": "2.5.3",
"tauri-plugin": "2.5.2"
}

View File

@ -8,7 +8,7 @@ use crate::{
helpers::{
self,
app_paths::{frontend_dir, tauri_dir},
config::{get as get_config, ConfigHandle, FrontendDist},
config::{get as get_config, ConfigMetadata, FrontendDist},
},
info::plugins::check_mismatched_packages,
interface::{rust::get_cargo_target_dir, AppInterface, Interface},
@ -106,11 +106,11 @@ pub fn command(mut options: Options, verbosity: u8) -> Result<()> {
options.target.clone(),
)?;
setup(&interface, &mut options, config.clone(), false)?;
let config_guard = config.lock().unwrap();
let config_ = config_guard.as_ref().unwrap();
setup(&interface, &mut options, config_, false)?;
if let Some(minimum_system_version) = &config_.bundle.macos.minimum_system_version {
std::env::set_var("MACOSX_DEPLOYMENT_TARGET", minimum_system_version);
}
@ -132,7 +132,7 @@ pub fn command(mut options: Options, verbosity: u8) -> Result<()> {
verbosity,
ci,
&interface,
&app_settings,
&*app_settings,
config_,
&out_dir,
)?;
@ -144,7 +144,7 @@ pub fn command(mut options: Options, verbosity: u8) -> Result<()> {
pub fn setup(
interface: &AppInterface,
options: &mut Options,
config: ConfigHandle,
config: &ConfigMetadata,
mobile: bool,
) -> Result<()> {
let tauri_path = tauri_dir();
@ -162,44 +162,39 @@ pub fn setup(
set_current_dir(tauri_path).context("failed to set current directory")?;
let config_guard = config.lock().unwrap();
let config_ = config_guard.as_ref().unwrap();
let bundle_identifier_source = config_
let bundle_identifier_source = config
.find_bundle_identifier_overwriter()
.unwrap_or_else(|| "tauri.conf.json".into());
if config_.identifier == "com.tauri.dev" {
if config.identifier == "com.tauri.dev" {
crate::error::bail!(
"You must change the bundle identifier in `{bundle_identifier_source} identifier`. The default value `com.tauri.dev` is not allowed as it must be unique across applications.",
);
}
if config_
if config
.identifier
.chars()
.any(|ch| !(ch.is_alphanumeric() || ch == '-' || ch == '.'))
{
crate::error::bail!(
"The bundle identifier \"{}\" set in `{} identifier`. The bundle identifier string must contain only alphanumeric characters (A-Z, a-z, and 0-9), hyphens (-), and periods (.).",
config_.identifier,
bundle_identifier_source
"The bundle identifier \"{}\" set in `{bundle_identifier_source:?} identifier`. The bundle identifier string must contain only alphanumeric characters (A-Z, a-z, and 0-9), hyphens (-), and periods (.).",
config.identifier,
);
}
if config_.identifier.ends_with(".app") {
if config.identifier.ends_with(".app") {
log::warn!(
"The bundle identifier \"{}\" set in `{} identifier` ends with `.app`. This is not recommended because it conflicts with the application bundle extension on macOS.",
config_.identifier,
bundle_identifier_source
"The bundle identifier \"{}\" set in `{bundle_identifier_source:?} identifier` ends with `.app`. This is not recommended because it conflicts with the application bundle extension on macOS.",
config.identifier,
);
}
if let Some(before_build) = config_.build.before_build_command.clone() {
if let Some(before_build) = config.build.before_build_command.clone() {
helpers::run_hook("beforeBuildCommand", before_build, interface, options.debug)?;
}
if let Some(FrontendDist::Directory(web_asset_path)) = &config_.build.frontend_dist {
if let Some(FrontendDist::Directory(web_asset_path)) = &config.build.frontend_dist {
if !web_asset_path.exists() {
let absolute_path = web_asset_path
.parent()
@ -252,13 +247,13 @@ pub fn setup(
}
if options.runner.is_none() {
options.runner = config_.build.runner.clone();
options.runner = config.build.runner.clone();
}
options
.features
.get_or_insert(Vec::new())
.extend(config_.build.features.clone().unwrap_or_default());
.extend(config.build.features.clone().unwrap_or_default());
interface.build_options(&mut options.args, &mut options.features, mobile);
Ok(())

View File

@ -158,7 +158,7 @@ pub fn command(options: Options, verbosity: u8) -> crate::Result<()> {
verbosity,
ci,
&interface,
&app_settings,
&*app_settings,
config_,
&out_dir,
)
@ -170,7 +170,7 @@ pub fn bundle<A: AppSettings>(
verbosity: u8,
ci: bool,
interface: &AppInterface,
app_settings: &std::sync::Arc<A>,
app_settings: &A,
config: &ConfigMetadata,
out_dir: &Path,
) -> crate::Result<()> {

View File

@ -34,7 +34,7 @@ use std::{
mod builtin_dev_server;
static BEFORE_DEV: OnceLock<Mutex<Arc<SharedChild>>> = OnceLock::new();
static KILL_BEFORE_DEV_FLAG: OnceLock<AtomicBool> = OnceLock::new();
static KILL_BEFORE_DEV_FLAG: AtomicBool = AtomicBool::new(false);
#[cfg(unix)]
const KILL_CHILDREN_SCRIPT: &[u8] = include_bytes!("../scripts/kill-children.sh");
@ -218,14 +218,13 @@ pub fn setup(interface: &AppInterface, options: &mut Options, config: ConfigHand
let status = child_
.wait()
.expect("failed to wait on \"beforeDevCommand\"");
if !(status.success() || KILL_BEFORE_DEV_FLAG.get().unwrap().load(Ordering::Relaxed)) {
if !(status.success() || KILL_BEFORE_DEV_FLAG.load(Ordering::Relaxed)) {
log::error!("The \"beforeDevCommand\" terminated with a non-zero status code.");
exit(status.code().unwrap_or(1));
}
});
BEFORE_DEV.set(Mutex::new(child)).unwrap();
KILL_BEFORE_DEV_FLAG.set(AtomicBool::default()).unwrap();
let _ = ctrlc::set_handler(move || {
kill_before_dev_process();
@ -304,12 +303,10 @@ pub fn setup(interface: &AppInterface, options: &mut Options, config: ConfigHand
if !options.no_dev_server_wait {
if let Some(url) = dev_url {
let host = url
.host()
.unwrap_or_else(|| panic!("No host name in the URL"));
let host = url.host().expect("No host name in the URL");
let port = url
.port_or_known_default()
.unwrap_or_else(|| panic!("No port number in the URL"));
.expect("No port number in the URL");
let addrs;
let addr;
let addrs = match host {
@ -380,11 +377,10 @@ pub fn on_app_exit(code: Option<i32>, reason: ExitReason, exit_on_panic: bool, n
pub fn kill_before_dev_process() {
if let Some(child) = BEFORE_DEV.get() {
let child = child.lock().unwrap();
let kill_before_dev_flag = KILL_BEFORE_DEV_FLAG.get().unwrap();
if kill_before_dev_flag.load(Ordering::Relaxed) {
if KILL_BEFORE_DEV_FLAG.load(Ordering::Relaxed) {
return;
}
kill_before_dev_flag.store(true, Ordering::Relaxed);
KILL_BEFORE_DEV_FLAG.store(true, Ordering::Relaxed);
#[cfg(windows)]
{
let powershell_path = std::env::var("SYSTEMROOT").map_or_else(

View File

@ -75,21 +75,13 @@ fn lookup<F: Fn(&PathBuf) -> bool>(dir: &Path, checker: F) -> Option<PathBuf> {
}
fn env_tauri_app_path() -> Option<PathBuf> {
std::env::var(ENV_TAURI_APP_PATH)
.map(PathBuf::from)
.ok()?
.canonicalize()
.ok()
.map(|p| dunce::simplified(&p).to_path_buf())
let p = PathBuf::from(std::env::var_os(ENV_TAURI_APP_PATH)?);
dunce::canonicalize(p).ok()
}
fn env_tauri_frontend_path() -> Option<PathBuf> {
std::env::var(ENV_TAURI_FRONTEND_PATH)
.map(PathBuf::from)
.ok()?
.canonicalize()
.ok()
.map(|p| dunce::simplified(&p).to_path_buf())
let p = PathBuf::from(std::env::var_os(ENV_TAURI_FRONTEND_PATH)?);
dunce::canonicalize(p).ok()
}
pub fn resolve_tauri_dir() -> Option<PathBuf> {

View File

@ -12,9 +12,9 @@ pub use tauri_utils::{config::*, platform::Target};
use std::{
collections::HashMap,
env::{current_dir, set_current_dir, set_var},
ffi::OsStr,
ffi::{OsStr, OsString},
process::exit,
sync::{Arc, Mutex, OnceLock},
sync::Mutex,
};
use crate::error::Context;
@ -30,7 +30,7 @@ pub struct ConfigMetadata {
inner: Config,
/// The config extensions (platform-specific config files or the config CLI argument).
/// Maps the extension name to its value.
extensions: HashMap<String, JsonValue>,
extensions: HashMap<OsString, JsonValue>,
}
impl std::ops::Deref for ConfigMetadata {
@ -50,7 +50,7 @@ impl ConfigMetadata {
}
/// Checks which config is overwriting the bundle identifier.
pub fn find_bundle_identifier_overwriter(&self) -> Option<String> {
pub fn find_bundle_identifier_overwriter(&self) -> Option<OsString> {
for (ext, config) in &self.extensions {
if let Some(identifier) = config
.as_object()
@ -66,7 +66,7 @@ impl ConfigMetadata {
}
}
pub type ConfigHandle = Arc<Mutex<Option<ConfigMetadata>>>;
pub type ConfigHandle = &'static Mutex<Option<ConfigMetadata>>;
pub fn wix_settings(config: WixConfig) -> tauri_bundler::WixSettings {
tauri_bundler::WixSettings {
@ -141,9 +141,9 @@ pub fn custom_sign_settings(
}
}
fn config_handle() -> &'static ConfigHandle {
static CONFIG_HANDLE: OnceLock<ConfigHandle> = OnceLock::new();
CONFIG_HANDLE.get_or_init(Default::default)
fn config_handle() -> ConfigHandle {
static CONFIG_HANDLE: Mutex<Option<ConfigMetadata>> = Mutex::new(None);
&CONFIG_HANDLE
}
/// Gets the static parsed config from `tauri.conf.json`.
@ -153,14 +153,14 @@ fn get_internal(
target: Target,
) -> crate::Result<ConfigHandle> {
if !reload && config_handle().lock().unwrap().is_some() {
return Ok(config_handle().clone());
return Ok(config_handle());
}
let tauri_dir = super::app_paths::tauri_dir();
let (mut config, config_path) =
tauri_utils::config::parse::parse_value(target, tauri_dir.join("tauri.conf.json"))
.context("failed to parse config")?;
let config_file_name = config_path.file_name().unwrap().to_string_lossy();
let config_file_name = config_path.file_name().unwrap();
let mut extensions = HashMap::new();
let original_identifier = config
@ -174,10 +174,7 @@ fn get_internal(
.context("failed to parse platform config")?
{
merge(&mut config, &platform_config);
extensions.insert(
config_path.file_name().unwrap().to_str().unwrap().into(),
platform_config,
);
extensions.insert(config_path.file_name().unwrap().into(), platform_config);
}
if !merge_configs.is_empty() {
@ -203,9 +200,9 @@ fn get_internal(
for error in errors {
let path = error.instance_path.into_iter().join(" > ");
if path.is_empty() {
log::error!("`{}` error: {}", config_file_name, error);
log::error!("`{config_file_name:?}` error: {}", error);
} else {
log::error!("`{}` error on `{}`: {}", config_file_name, path, error);
log::error!("`{config_file_name:?}` error on `{}`: {}", path, error);
}
}
if !reload {
@ -243,7 +240,7 @@ fn get_internal(
extensions,
});
Ok(config_handle().clone())
Ok(config_handle())
}
pub fn get(target: Target, merge_configs: &[&serde_json::Value]) -> crate::Result<ConfigHandle> {
@ -268,7 +265,7 @@ pub fn merge_with(merge_configs: &[&serde_json::Value]) -> crate::Result<ConfigH
let handle = config_handle();
if merge_configs.is_empty() {
return Ok(handle.clone());
return Ok(handle);
}
if let Some(config_metadata) = &mut *handle.lock().unwrap() {
@ -285,7 +282,7 @@ pub fn merge_with(merge_configs: &[&serde_json::Value]) -> crate::Result<ConfigH
merge(&mut value, &merge_config);
config_metadata.inner = serde_json::from_value(value).context("failed to parse config")?;
Ok(handle.clone())
Ok(handle)
} else {
crate::error::bail!("config not loaded");
}

View File

@ -345,7 +345,7 @@ impl PackageManager {
if let Ok(version) = semver::Version::parse(&version) {
versions.insert(package, version);
} else {
log::error!("Failed to parse version `{version}` for NPM package `{package}`");
log::debug!("Failed to parse version `{version}` for NPM package `{package}`");
}
}
Ok(versions)
@ -397,7 +397,7 @@ fn yarn_package_versions(
if let Ok(version) = semver::Version::parse(version) {
versions.insert(name.to_owned(), version);
} else {
log::error!("Failed to parse version `{version}` for NPM package `{name}`");
log::debug!("Failed to parse version `{version}` for NPM package `{name}`");
}
}
return Ok(versions);
@ -450,7 +450,7 @@ fn yarn_berry_package_versions(
if let Ok(version) = semver::Version::parse(&version) {
versions.insert(name.to_owned(), version);
} else {
log::error!("Failed to parse version `{version}` for NPM package `{name}`");
log::debug!("Failed to parse version `{version}` for NPM package `{name}`");
}
}
}

View File

@ -184,7 +184,12 @@ pub fn command(options: Options, noise_level: NoiseLevel) -> Result<BuiltApplica
false,
)?;
crate::build::setup(&interface, &mut build_options, tauri_config.clone(), true)?;
{
let config_guard = tauri_config.lock().unwrap();
let config_ = config_guard.as_ref().unwrap();
crate::build::setup(&interface, &mut build_options, config_, true)?;
}
let installed_targets =
crate::interface::rust::installation::installed_targets().unwrap_or_default();

View File

@ -257,7 +257,7 @@ fn run_dev(
use_network_address_for_dev_url(&tauri_config, &mut dev_options, options.force_ip_prompt)?;
}
crate::dev::setup(&interface, &mut dev_options, tauri_config.clone())?;
crate::dev::setup(&interface, &mut dev_options, tauri_config)?;
let interface_options = InterfaceOptions {
debug: !dev_options.release_mode,

View File

@ -367,7 +367,12 @@ fn run_build(
Profile::Release
};
crate::build::setup(interface, &mut build_options, tauri_config.clone(), true)?;
crate::build::setup(
interface,
&mut build_options,
tauri_config.lock().unwrap().as_ref().unwrap(),
true,
)?;
let app_settings = interface.app_settings();
let out_dir = app_settings.out_dir(&InterfaceOptions {

View File

@ -1,5 +1,11 @@
# Changelog
## \[2.5.2]
### Dependencies
- Upgraded to `tauri-utils@2.8.1`
## \[2.5.1]
### Performance Improvements

View File

@ -1,6 +1,6 @@
[package]
name = "tauri-codegen"
version = "2.5.1"
version = "2.5.2"
description = "code generation meant to be consumed inside of `tauri` through `tauri-build` or `tauri-macros`"
exclude = ["CHANGELOG.md", "/target"]
readme = "README.md"
@ -20,7 +20,7 @@ quote = "1"
syn = "2"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tauri-utils = { version = "2.8.0", path = "../tauri-utils", features = [
tauri-utils = { version = "2.8.1", path = "../tauri-utils", features = [
"build",
] }
thiserror = "2"
@ -30,7 +30,7 @@ brotli = { version = "8", optional = true, default-features = false, features =
] }
uuid = { version = "1", features = ["v4"] }
semver = "1"
ico = "0.4"
ico = "0.5"
png = "0.17"
json-patch = "3"
url = "2"

View File

@ -1,5 +1,17 @@
# Changelog
## \[2.3.2]
### Dependencies
- [`514cf21e1`](https://www.github.com/tauri-apps/tauri/commit/514cf21e1417c7a78a0db494f891ba79d948b73d) ([#14591](https://www.github.com/tauri-apps/tauri/pull/14591) by [@Tunglies](https://www.github.com/tauri-apps/tauri/../../Tunglies)) Update num-bigint-dig from 0.8.4 to 0.8.6
## \[2.3.1]
### Performance Improvements
- [`ee3cc4a91`](https://www.github.com/tauri-apps/tauri/commit/ee3cc4a91bf1315ecaefe90f423ffd55ef6c40db) ([#14475](https://www.github.com/tauri-apps/tauri/pull/14475) by [@Tunglies](https://www.github.com/tauri-apps/tauri/../../Tunglies)) perf: remove needless clones in various files for improved performance. No user facing changes.
## \[2.3.0]
### Enhancements

View File

@ -1,6 +1,6 @@
[package]
name = "tauri-macos-sign"
version = "2.3.0"
version = "2.3.2"
authors = ["Tauri Programme within The Commons Conservancy"]
license = "Apache-2.0 OR MIT"
keywords = ["codesign", "signing", "macos", "ios", "tauri"]

View File

@ -1,5 +1,12 @@
# Changelog
## \[2.5.2]
### Dependencies
- Upgraded to `tauri-utils@2.8.1`
- Upgraded to `tauri-codegen@2.5.2`
## \[2.5.1]
### Bug Fixes

View File

@ -1,6 +1,6 @@
[package]
name = "tauri-macros"
version = "2.5.1"
version = "2.5.2"
description = "Macros for the tauri crate."
exclude = ["CHANGELOG.md", "/target"]
readme = "README.md"
@ -20,8 +20,8 @@ proc-macro2 = { version = "1", features = ["span-locations"] }
quote = "1"
syn = { version = "2", features = ["full"] }
heck = "0.5"
tauri-codegen = { version = "2.5.1", default-features = false, path = "../tauri-codegen" }
tauri-utils = { version = "2.8.0", path = "../tauri-utils" }
tauri-codegen = { version = "2.5.2", default-features = false, path = "../tauri-codegen" }
tauri-utils = { version = "2.8.1", path = "../tauri-utils" }
[features]
custom-protocol = []

View File

@ -1,5 +1,11 @@
# Changelog
## \[2.5.2]
### Dependencies
- Upgraded to `tauri-utils@2.8.1`
## \[2.5.1]
### Bug Fixes

View File

@ -1,6 +1,6 @@
[package]
name = "tauri-plugin"
version = "2.5.1"
version = "2.5.2"
description = "Build script and runtime Tauri plugin definitions"
authors.workspace = true
homepage.workspace = true
@ -28,7 +28,7 @@ runtime = []
[dependencies]
anyhow = { version = "1", optional = true }
serde = { version = "1", optional = true }
tauri-utils = { version = "2.8.0", default-features = false, features = [
tauri-utils = { version = "2.8.1", default-features = false, features = [
"build",
], path = "../tauri-utils" }
serde_json = { version = "1", optional = true }

View File

@ -1,5 +1,18 @@
# Changelog
## \[2.9.3]
### Bug Fixes
- [`251203b89`](https://www.github.com/tauri-apps/tauri/commit/251203b8963419cb3b40741767393e8f3c909ef9) ([#14637](https://www.github.com/tauri-apps/tauri/pull/14637) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix `Monitor::work_area` returns logical position and size inside the `PhysicalRect` on Linux
## \[2.9.2]
### Dependencies
- Upgraded to `tauri-utils@2.8.1`
- Upgraded to `tauri-runtime@2.9.2`
## \[2.9.1]
### Bug Fixes

View File

@ -1,6 +1,6 @@
[package]
name = "tauri-runtime-wry"
version = "2.9.1"
version = "2.9.3"
description = "Wry bindings to the Tauri runtime"
exclude = ["CHANGELOG.md", "/target"]
readme = "README.md"
@ -20,8 +20,8 @@ wry = { version = "0.53.4", default-features = false, features = [
"linux-body",
] }
tao = { version = "0.34.5", default-features = false, features = ["rwh_06"] }
tauri-runtime = { version = "2.9.1", path = "../tauri-runtime" }
tauri-utils = { version = "2.8.0", path = "../tauri-utils" }
tauri-runtime = { version = "2.9.2", path = "../tauri-runtime" }
tauri-utils = { version = "2.8.1", path = "../tauri-utils" }
raw-window-handle = "0.6"
http = "1"
url = "2"

View File

@ -4,14 +4,15 @@
use gtk::prelude::MonitorExt;
use tao::platform::unix::MonitorHandleExtUnix;
use tauri_runtime::dpi::{PhysicalPosition, PhysicalRect, PhysicalSize};
use tauri_runtime::dpi::{LogicalPosition, LogicalSize, PhysicalRect};
impl super::MonitorExt for tao::monitor::MonitorHandle {
fn work_area(&self) -> PhysicalRect<i32, u32> {
let rect = self.gdk_monitor().workarea();
let scale_factor = self.scale_factor();
PhysicalRect {
size: PhysicalSize::new(rect.width() as u32, rect.height() as u32),
position: PhysicalPosition::new(rect.x(), rect.y()),
size: LogicalSize::new(rect.width() as u32, rect.height() as u32).to_physical(scale_factor),
position: LogicalPosition::new(rect.x(), rect.y()).to_physical(scale_factor),
}
}
}

View File

@ -1,5 +1,11 @@
# Changelog
## \[2.9.2]
### Dependencies
- Upgraded to `tauri-utils@2.8.1`
## \[2.9.1]
### Bug Fixes

View File

@ -1,6 +1,6 @@
[package]
name = "tauri-runtime"
version = "2.9.1"
version = "2.9.2"
description = "Runtime for Tauri applications"
exclude = ["CHANGELOG.md", "/target"]
readme = "README.md"
@ -27,7 +27,7 @@ targets = [
serde = { version = "1", features = ["derive"] }
serde_json = "1"
thiserror = "2"
tauri-utils = { version = "2.8.0", path = "../tauri-utils" }
tauri-utils = { version = "2.8.1", path = "../tauri-utils" }
http = "1"
raw-window-handle = "0.6"
url = { version = "2" }

View File

@ -1,6 +1,6 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://schema.tauri.app/config/2.9.3",
"$id": "https://schema.tauri.app/config/2.9.5",
"title": "Config",
"description": "The Tauri configuration object.\n It is read from a file where you can define your frontend assets,\n configure the bundler and define a tray icon.\n\n The configuration file is generated by the\n [`tauri init`](https://v2.tauri.app/reference/cli/#init) command that lives in\n your Tauri application source directory (src-tauri).\n\n Once generated, you may modify it at will to customize your Tauri application.\n\n ## File Formats\n\n By default, the configuration is defined as a JSON file named `tauri.conf.json`.\n\n Tauri also supports JSON5 and TOML files via the `config-json5` and `config-toml` Cargo features, respectively.\n The JSON5 file name must be either `tauri.conf.json` or `tauri.conf.json5`.\n The TOML file name is `Tauri.toml`.\n\n ## Platform-Specific Configuration\n\n In addition to the default configuration file, Tauri can\n read a platform-specific configuration from `tauri.linux.conf.json`,\n `tauri.windows.conf.json`, `tauri.macos.conf.json`, `tauri.android.conf.json` and `tauri.ios.conf.json`\n (or `Tauri.linux.toml`, `Tauri.windows.toml`, `Tauri.macos.toml`, `Tauri.android.toml` and `Tauri.ios.toml` if the `Tauri.toml` format is used),\n which gets merged with the main configuration object.\n\n ## Configuration Structure\n\n The configuration is composed of the following objects:\n\n - [`app`](#appconfig): The Tauri configuration\n - [`build`](#buildconfig): The build configuration\n - [`bundle`](#bundleconfig): The bundle configurations\n - [`plugins`](#pluginconfig): The plugins configuration\n\n Example tauri.config.json file:\n\n ```json\n {\n \"productName\": \"tauri-app\",\n \"version\": \"0.1.0\",\n \"build\": {\n \"beforeBuildCommand\": \"\",\n \"beforeDevCommand\": \"\",\n \"devUrl\": \"http://localhost:3000\",\n \"frontendDist\": \"../dist\"\n },\n \"app\": {\n \"security\": {\n \"csp\": null\n },\n \"windows\": [\n {\n \"fullscreen\": false,\n \"height\": 600,\n \"resizable\": true,\n \"title\": \"Tauri App\",\n \"width\": 800\n }\n ]\n },\n \"bundle\": {},\n \"plugins\": {}\n }\n ```",
"type": "object",
@ -231,7 +231,7 @@
"type": "string"
},
"create": {
"description": "Whether Tauri should create this window at app startup or not.\n\n When this is set to `false` you must manually grab the config object via `app.config().app.windows`\n and create it with [`WebviewWindowBuilder::from_config`](https://docs.rs/tauri/2/tauri/webview/struct.WebviewWindowBuilder.html#method.from_config).\n\n ## Example:\n\n ```rust\n tauri::Builder::default()\n .setup(|app| {\n tauri::WebviewWindowBuilder::from_config(app.handle(), app.config().app.windows[0])?.build()?;\n Ok(())\n });\n ```",
"description": "Whether Tauri should create this window at app startup or not.\n\n When this is set to `false` you must manually grab the config object via `app.config().app.windows`\n and create it with [`WebviewWindowBuilder::from_config`](https://docs.rs/tauri/2/tauri/webview/struct.WebviewWindowBuilder.html#method.from_config).\n\n ## Example:\n\n ```rust\n tauri::Builder::default()\n .setup(|app| {\n tauri::WebviewWindowBuilder::from_config(app.handle(), &app.config().app.windows[0])?.build()?;\n Ok(())\n });\n ```",
"default": true,
"type": "boolean"
},
@ -1296,7 +1296,7 @@
"additionalProperties": false
},
"FsScope": {
"description": "Protocol scope definition.\n It is a list of glob patterns that restrict the API access from the webview.\n\n Each pattern can start with a variable that resolves to a system base directory.\n The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`,\n `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`,\n `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`,\n `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
"description": "Protocol scope definition.\n It is a list of glob patterns that restrict the API access from the webview.\n\n Each pattern can start with a variable that resolves to a system base directory.\n The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`,\n `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`,\n `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$TEMP`,\n `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
"anyOf": [
{
"description": "A list of paths that are allowed by this scope.",

View File

@ -8,8 +8,8 @@ publish = false
crate-type = ["cdylib"]
[dependencies]
worker = { version = "0.6", features = ['http', 'axum'] }
worker-macros = { version = "0.6", features = ['http'] }
worker = { version = "0.7", features = ['http', 'axum'] }
worker-macros = { version = "0.7", features = ['http'] }
console_error_panic_hook = { version = "0.1" }
axum = { version = "0.8", default-features = false }
tower-service = "0.3"

View File

@ -7,8 +7,9 @@ main = "build/worker/shim.mjs"
compatibility_date = "2023-08-23"
send_metrics = false
# The minor version of worker-build must match worker/worker-macros in Cargo.toml!
[build]
command = "cargo install -q worker-build && worker-build --release"
command = "cargo install -q worker-build@^0.7 && worker-build --release"
[observability]
enabled = true

View File

@ -1,5 +1,11 @@
# Changelog
## \[2.8.1]
### Bug Fixes
- [`1573c7240`](https://www.github.com/tauri-apps/tauri/commit/1573c72402352949d1fd3ca5c6fdbee46fe69fbb) ([#14561](https://www.github.com/tauri-apps/tauri/pull/14561) by [@FabianLars](https://www.github.com/tauri-apps/tauri/../../FabianLars)) Fixed an issue that caused schema files to have `\r` characters on Windows.
## \[2.8.0]
### New Features

View File

@ -1,6 +1,6 @@
[package]
name = "tauri-utils"
version = "2.8.0"
version = "2.8.1"
description = "Utilities for Tauri"
exclude = ["CHANGELOG.md", "/target"]
readme = "README.md"

View File

@ -1653,7 +1653,7 @@ pub struct WindowConfig {
/// ```rust
/// tauri::Builder::default()
/// .setup(|app| {
/// tauri::WebviewWindowBuilder::from_config(app.handle(), app.config().app.windows[0])?.build()?;
/// tauri::WebviewWindowBuilder::from_config(app.handle(), &app.config().app.windows[0])?.build()?;
/// Ok(())
/// });
/// ```
@ -2006,7 +2006,7 @@ impl Default for WindowConfig {
closable: true,
title: default_title(),
fullscreen: false,
focus: false,
focus: true,
focusable: true,
transparent: false,
maximized: false,
@ -2211,8 +2211,8 @@ impl Default for DisabledCspModificationKind {
/// Each 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`.
/// `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$TEMP`,
/// `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.
#[derive(Debug, PartialEq, Eq, Clone, Deserialize, Serialize)]
#[serde(untagged)]
#[cfg_attr(feature = "schema", derive(JsonSchema))]
@ -4384,4 +4384,12 @@ mod test {
assert!(object_json.contains("\"cwd\":null") || !object_json.contains("cwd"));
assert!(object_json.contains("\"args\":null") || !object_json.contains("args"));
}
#[test]
fn window_config_default_same_as_deserialize() {
let config_from_deserialization: WindowConfig = serde_json::from_str("{}").unwrap();
let config_from_default: WindowConfig = WindowConfig::default();
assert_eq!(config_from_deserialization, config_from_default);
}
}

View File

@ -209,7 +209,7 @@ pub fn read_platform(
/// JSON with `.json`.
pub fn does_supported_file_name_exist(target: Target, path: impl Into<PathBuf>) -> bool {
let path = path.into();
let source_file_name = path.file_name().unwrap().to_str().unwrap();
let source_file_name = path.file_name().unwrap();
let lookup_platform_config = ENABLED_FORMATS
.iter()
.any(|format| source_file_name == format.into_platform_file_name(target));

View File

@ -238,16 +238,12 @@ const CARGO_OUTPUT_DIRECTORIES: &[&str] = &["debug", "release", "custom-profile"
#[cfg(test)]
fn is_cargo_output_directory(path: &std::path::Path) -> bool {
let last_component = path
.components()
.next_back()
.unwrap()
.as_os_str()
.to_str()
.unwrap();
let Some(last_component) = path.components().next_back() else {
return false;
};
CARGO_OUTPUT_DIRECTORIES
.iter()
.any(|dirname| &last_component == dirname)
.any(|dirname| &last_component.as_os_str() == dirname)
}
/// Computes the resource directory of the current environment.

View File

@ -97,9 +97,7 @@ impl<'a> ResourcePaths<'a> {
iter: ResourcePathsIter {
pattern_iter: PatternIter::Slice(patterns.iter()),
allow_walk,
current_path: None,
current_pattern: None,
current_dest: None,
walk_iter: None,
glob_iter: None,
},
@ -112,9 +110,7 @@ impl<'a> ResourcePaths<'a> {
iter: ResourcePathsIter {
pattern_iter: PatternIter::Map(patterns.iter()),
allow_walk,
current_path: None,
current_pattern: None,
current_dest: None,
walk_iter: None,
glob_iter: None,
},
@ -136,13 +132,9 @@ pub struct ResourcePathsIter<'a> {
/// whether the resource paths allows directories or not.
allow_walk: bool,
current_path: Option<PathBuf>,
/// The key of map when `pattern_iter` is a [`PatternIter::Map`],
/// The (key, value) of map when `pattern_iter` is a [`PatternIter::Map`],
/// used for determining [`Resource::target`]
current_pattern: Option<String>,
/// The value of the map when `pattern_iter` is a [`PatternIter::Map`],
/// used for determining [`Resource::target`]
current_dest: Option<PathBuf>,
current_pattern: Option<(String, PathBuf)>,
walk_iter: Option<walkdir::IntoIter>,
glob_iter: Option<glob::Paths>,
@ -157,8 +149,7 @@ impl ResourcePathsIter<'_> {
Err(err) => return Some(Err(err.into())),
};
self.current_path = Some(normalize(&entry));
self.next_current_path()
self.next_current_path(normalize(&entry))
}
fn next_walk_iter(&mut self) -> Option<crate::Result<Resource>> {
@ -169,8 +160,7 @@ impl ResourcePathsIter<'_> {
Err(err) => return Some(Err(err.into())),
};
self.current_path = Some(normalize(entry.path()));
self.next_current_path()
self.next_current_path(normalize(entry.path()))
}
fn resource_from_path(&mut self, path: &Path) -> crate::Result<Resource> {
@ -180,12 +170,11 @@ impl ResourcePathsIter<'_> {
Ok(Resource {
path: path.to_path_buf(),
target: if let Some(current_dest) = &self.current_dest {
target: if let Some((pattern, dest)) = &self.current_pattern {
// if processing a directory, preserve directory structure under current_dest
if self.walk_iter.is_some() {
let current_pattern = self.current_pattern.as_ref().unwrap();
current_dest.join(path.strip_prefix(current_pattern).unwrap_or(path))
} else if current_dest.components().count() == 0 {
dest.join(path.strip_prefix(pattern).unwrap_or(path))
} else if dest.components().count() == 0 {
// if current_dest is empty while processing a file pattern or glob
// we preserve the file name as it is
PathBuf::from(path.file_name().unwrap())
@ -193,9 +182,9 @@ impl ResourcePathsIter<'_> {
// if processing a glob and current_dest is not empty
// we put all globbed paths under current_dest
// preserving the file name as it is
current_dest.join(path.file_name().unwrap())
dest.join(path.file_name().unwrap())
} else {
current_dest.clone()
dest.clone()
}
} else {
// If `pattern_iter` is a [`PatternIter::Slice`]
@ -204,11 +193,7 @@ impl ResourcePathsIter<'_> {
})
}
fn next_current_path(&mut self) -> Option<crate::Result<Resource>> {
// should be safe to unwrap since every call to `self.next_current_path()`
// is preceded with assignment to `self.current_path`
let path = self.current_path.take().unwrap();
fn next_current_path(&mut self, path: PathBuf) -> Option<crate::Result<Resource>> {
let is_dir = path.is_dir();
if is_dir {
@ -238,15 +223,12 @@ impl ResourcePathsIter<'_> {
fn next_pattern(&mut self) -> Option<crate::Result<Resource>> {
self.current_pattern = None;
self.current_dest = None;
self.current_path = None;
let pattern = match &mut self.pattern_iter {
PatternIter::Slice(iter) => iter.next()?,
PatternIter::Map(iter) => {
let (pattern, dest) = iter.next()?;
self.current_pattern = Some(pattern.clone());
self.current_dest = Some(resource_relpath(Path::new(dest)));
self.current_pattern = Some((pattern.clone(), resource_relpath(Path::new(dest))));
pattern
}
};
@ -265,8 +247,7 @@ impl ResourcePathsIter<'_> {
}
}
self.current_path = Some(normalize(Path::new(pattern)));
self.next_current_path()
self.next_current_path(normalize(Path::new(pattern)))
}
}
@ -282,10 +263,6 @@ impl Iterator for ResourcePathsIter<'_> {
type Item = crate::Result<Resource>;
fn next(&mut self) -> Option<crate::Result<Resource>> {
if self.current_path.is_some() {
return self.next_current_path();
}
if self.walk_iter.is_some() {
match self.next_walk_iter() {
Some(r) => return Some(r),

View File

@ -1,5 +1,30 @@
# Changelog
## \[2.9.5]
### Bug Fixes
- [`251203b89`](https://www.github.com/tauri-apps/tauri/commit/251203b8963419cb3b40741767393e8f3c909ef9) ([#14637](https://www.github.com/tauri-apps/tauri/pull/14637) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix `Monitor::work_area` returns logical position and size inside the `PhysicalRect` on Linux
### Dependencies
- Upgraded to `tauri-runtime-wry@2.9.3`
## \[2.9.4]
### Performance Improvements
- [`ce98d87ce`](https://www.github.com/tauri-apps/tauri/commit/ce98d87ce0aaa907285852eb80691197424e03c3) ([#14474](https://www.github.com/tauri-apps/tauri/pull/14474) by [@Tunglies](https://www.github.com/tauri-apps/tauri/../../Tunglies)) refactor: remove needless collect. No user facing changes.
- [`ee3cc4a91`](https://www.github.com/tauri-apps/tauri/commit/ee3cc4a91bf1315ecaefe90f423ffd55ef6c40db) ([#14475](https://www.github.com/tauri-apps/tauri/pull/14475) by [@Tunglies](https://www.github.com/tauri-apps/tauri/../../Tunglies)) perf: remove needless clones in various files for improved performance. No user facing changes.
### Dependencies
- Upgraded to `tauri-utils@2.8.1`
- Upgraded to `tauri-runtime@2.9.2`
- Upgraded to `tauri-runtime-wry@2.9.2`
- Upgraded to `tauri-macros@2.5.2`
- Upgraded to `tauri-build@2.5.3`
## \[2.9.3]
### Bug Fixes

View File

@ -1,6 +1,6 @@
[package]
name = "tauri"
version = "2.9.3"
version = "2.9.5"
description = "Make tiny, secure apps for all desktop platforms with Tauri"
exclude = ["/test", "/.scripts", "CHANGELOG.md", "/target"]
readme = "README.md"
@ -55,12 +55,12 @@ uuid = { version = "1", features = ["v4"], optional = true }
url = "2"
anyhow = "1"
thiserror = "2"
tauri-runtime = { version = "2.9.1", path = "../tauri-runtime" }
tauri-macros = { version = "2.5.1", path = "../tauri-macros" }
tauri-utils = { version = "2.8.0", features = [
tauri-runtime = { version = "2.9.2", path = "../tauri-runtime" }
tauri-macros = { version = "2.5.2", path = "../tauri-macros" }
tauri-utils = { version = "2.8.1", features = [
"resources",
], path = "../tauri-utils" }
tauri-runtime-wry = { version = "2.9.1", path = "../tauri-runtime-wry", default-features = false, optional = true }
tauri-runtime-wry = { version = "2.9.3", path = "../tauri-runtime-wry", default-features = false, optional = true }
getrandom = "0.3"
serde_repr = "0.1"
http = "1"
@ -162,8 +162,8 @@ objc2-ui-kit = { version = "0.3.0", default-features = false, features = [
[build-dependencies]
glob = "0.3"
heck = "0.5"
tauri-build = { path = "../tauri-build/", default-features = false, version = "2.5.2" }
tauri-utils = { path = "../tauri-utils/", version = "2.8.0", features = [
tauri-build = { path = "../tauri-build/", default-features = false, version = "2.5.3" }
tauri-utils = { path = "../tauri-utils/", version = "2.8.1", features = [
"build",
] }

View File

@ -25,12 +25,12 @@
"identifier": "fs:allow-app",
"allow": [
{
"path": "$APP/**"
"path": "$APPDATA/**"
}
],
"deny": [
{
"path": "$APP/*.db"
"path": "$APPDATA/*.db"
}
]
},

View File

@ -1,8 +1,8 @@
[[permission]]
identifier = "allow-app"
description = "Allows accessing the $APP path."
description = "Allows accessing the $APPDATA path."
[[permission.scope.allow]]
path = "$APP"
path = "$APPDATA"
[[permission]]
identifier = "allow-download-dir"

View File

@ -3,4 +3,4 @@ identifier = "deny-webview-folder-windows"
platforms = ["windows"]
description = "Denies access to the webview folder on Windows"
[[permission.scope.deny]]
path = "$APP/EBWebView/**"
path = "$APPLOCALDATA/EBWebView/**"

View File

@ -398,7 +398,7 @@ Resolved {
Map(
{
"path": String(
"$APP",
"$APPDATA",
),
},
),

View File

@ -68,7 +68,7 @@ Resolved {
Map(
{
"path": String(
"$APP",
"$APPDATA",
),
},
),

View File

@ -310,7 +310,7 @@ Resolved {
Map(
{
"path": String(
"$APP",
"$APPDATA",
),
},
),

View File

@ -244,14 +244,14 @@ Resolved {
Map(
{
"path": String(
"$APP/**",
"$APPDATA/**",
),
},
),
Map(
{
"path": String(
"$APP",
"$APPDATA",
),
},
),
@ -281,7 +281,7 @@ Resolved {
Map(
{
"path": String(
"$APP/*.db",
"$APPDATA/*.db",
),
},
),

View File

@ -208,7 +208,7 @@ Resolved {
Map(
{
"path": String(
"$APP",
"$APPDATA",
),
},
),

View File

@ -56,7 +56,7 @@ Resolved {
Map(
{
"path": String(
"$APP/EBWebView/**",
"$APPLOCALDATA/EBWebView/**",
),
},
),

View File

@ -1,5 +1,11 @@
# Changelog
## \[2.9.1]
### Bug Fixes
- [`ad1dec2e2`](https://www.github.com/tauri-apps/tauri/commit/ad1dec2e2488fe5c0a004b69f1bd290dfc593bf8) ([#14464](https://www.github.com/tauri-apps/tauri/pull/14464) by [@funnydino](https://www.github.com/tauri-apps/tauri/../../funnydino)) Fix `addPluginListener` fallback added in https://github.com/tauri-apps/tauri/pull/14132 didn't work properly
## \[2.9.0]
### New Features

View File

@ -1,6 +1,6 @@
{
"name": "@tauri-apps/api",
"version": "2.9.0",
"version": "2.9.1",
"description": "Tauri API definitions",
"funding": {
"type": "opencollective",
@ -55,7 +55,7 @@
"eslint-plugin-security": "3.0.1",
"fast-glob": "3.3.3",
"globals": "^16.2.0",
"rollup": "4.53.3",
"rollup": "4.53.4",
"tslib": "^2.8.1",
"typescript": "^5.8.3",
"typescript-eslint": "^8.34.1"

View File

@ -1,5 +1,25 @@
# Changelog
## \[2.9.6]
### Dependencies
- Upgraded to `tauri-cli@2.9.6`
## \[2.9.5]
### Bug Fixes
- [`f855caf8a`](https://www.github.com/tauri-apps/tauri/commit/f855caf8a3830aa5dd6d0b039312866a5d9c3606) ([#14481](https://www.github.com/tauri-apps/tauri/pull/14481) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fixed the mismatched tauri package versions check didn't work for pnpm
### Performance Improvements
- [`ce98d87ce`](https://www.github.com/tauri-apps/tauri/commit/ce98d87ce0aaa907285852eb80691197424e03c3) ([#14474](https://www.github.com/tauri-apps/tauri/pull/14474) by [@Tunglies](https://www.github.com/tauri-apps/tauri/../../Tunglies)) refactor: remove needless collect. No user facing changes.
### Dependencies
- Upgraded to `tauri-cli@2.9.5`
## \[2.9.4]
### Bug Fixes

View File

@ -1,6 +1,6 @@
{
"name": "@tauri-apps/cli",
"version": "2.9.4",
"version": "2.9.6",
"description": "Command line interface for building Tauri apps",
"type": "commonjs",
"funding": {

View File

@ -63,10 +63,10 @@ importers:
version: 9.29.0
'@rollup/plugin-terser':
specifier: 0.4.4
version: 0.4.4(rollup@4.53.3)
version: 0.4.4(rollup@4.53.4)
'@rollup/plugin-typescript':
specifier: 12.3.0
version: 12.3.0(rollup@4.53.3)(tslib@2.8.1)(typescript@5.8.3)
version: 12.3.0(rollup@4.53.4)(tslib@2.8.1)(typescript@5.8.3)
'@types/eslint':
specifier: ^9.6.1
version: 9.6.1
@ -89,8 +89,8 @@ importers:
specifier: ^16.2.0
version: 16.2.0
rollup:
specifier: 4.53.3
version: 4.53.3
specifier: 4.53.4
version: 4.53.4
tslib:
specifier: ^2.8.1
version: 2.8.1
@ -1125,113 +1125,113 @@ packages:
rollup:
optional: true
'@rollup/rollup-android-arm-eabi@4.53.3':
resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==}
'@rollup/rollup-android-arm-eabi@4.53.4':
resolution: {integrity: sha512-PWU3Y92H4DD0bOqorEPp1Y0tbzwAurFmIYpjcObv5axGVOtcTlB0b2UKMd2echo08MgN7jO8WQZSSysvfisFSQ==}
cpu: [arm]
os: [android]
'@rollup/rollup-android-arm64@4.53.3':
resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==}
'@rollup/rollup-android-arm64@4.53.4':
resolution: {integrity: sha512-Gw0/DuVm3rGsqhMGYkSOXXIx20cC3kTlivZeuaGt4gEgILivykNyBWxeUV5Cf2tDA2nPLah26vq3emlRrWVbng==}
cpu: [arm64]
os: [android]
'@rollup/rollup-darwin-arm64@4.53.3':
resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==}
'@rollup/rollup-darwin-arm64@4.53.4':
resolution: {integrity: sha512-+w06QvXsgzKwdVg5qRLZpTHh1bigHZIqoIUPtiqh05ZiJVUQ6ymOxaPkXTvRPRLH88575ZCRSRM3PwIoNma01Q==}
cpu: [arm64]
os: [darwin]
'@rollup/rollup-darwin-x64@4.53.3':
resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==}
'@rollup/rollup-darwin-x64@4.53.4':
resolution: {integrity: sha512-EB4Na9G2GsrRNRNFPuxfwvDRDUwQEzJPpiK1vo2zMVhEeufZ1k7J1bKnT0JYDfnPC7RNZ2H5YNQhW6/p2QKATw==}
cpu: [x64]
os: [darwin]
'@rollup/rollup-freebsd-arm64@4.53.3':
resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==}
'@rollup/rollup-freebsd-arm64@4.53.4':
resolution: {integrity: sha512-bldA8XEqPcs6OYdknoTMaGhjytnwQ0NClSPpWpmufOuGPN5dDmvIa32FygC2gneKK4A1oSx86V1l55hyUWUYFQ==}
cpu: [arm64]
os: [freebsd]
'@rollup/rollup-freebsd-x64@4.53.3':
resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==}
'@rollup/rollup-freebsd-x64@4.53.4':
resolution: {integrity: sha512-3T8GPjH6mixCd0YPn0bXtcuSXi1Lj+15Ujw2CEb7dd24j9thcKscCf88IV7n76WaAdorOzAgSSbuVRg4C8V8Qw==}
cpu: [x64]
os: [freebsd]
'@rollup/rollup-linux-arm-gnueabihf@4.53.3':
resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==}
'@rollup/rollup-linux-arm-gnueabihf@4.53.4':
resolution: {integrity: sha512-UPMMNeC4LXW7ZSHxeP3Edv09aLsFUMaD1TSVW6n1CWMECnUIJMFFB7+XC2lZTdPtvB36tYC0cJWc86mzSsaviw==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm-musleabihf@4.53.3':
resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==}
'@rollup/rollup-linux-arm-musleabihf@4.53.4':
resolution: {integrity: sha512-H8uwlV0otHs5Q7WAMSoyvjV9DJPiy5nJ/xnHolY0QptLPjaSsuX7tw+SPIfiYH6cnVx3fe4EWFafo6gH6ekZKA==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm64-gnu@4.53.3':
resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==}
'@rollup/rollup-linux-arm64-gnu@4.53.4':
resolution: {integrity: sha512-BLRwSRwICXz0TXkbIbqJ1ibK+/dSBpTJqDClF61GWIrxTXZWQE78ROeIhgl5MjVs4B4gSLPCFeD4xML9vbzvCQ==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-arm64-musl@4.53.3':
resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==}
'@rollup/rollup-linux-arm64-musl@4.53.4':
resolution: {integrity: sha512-6bySEjOTbmVcPJAywjpGLckK793A0TJWSbIa0sVwtVGfe/Nz6gOWHOwkshUIAp9j7wg2WKcA4Snu7Y1nUZyQew==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-loong64-gnu@4.53.3':
resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==}
'@rollup/rollup-linux-loong64-gnu@4.53.4':
resolution: {integrity: sha512-U0ow3bXYJZ5MIbchVusxEycBw7bO6C2u5UvD31i5IMTrnt2p4Fh4ZbHSdc/31TScIJQYHwxbj05BpevB3201ug==}
cpu: [loong64]
os: [linux]
'@rollup/rollup-linux-ppc64-gnu@4.53.3':
resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==}
'@rollup/rollup-linux-ppc64-gnu@4.53.4':
resolution: {integrity: sha512-iujDk07ZNwGLVn0YIWM80SFN039bHZHCdCCuX9nyx3Jsa2d9V/0Y32F+YadzwbvDxhSeVo9zefkoPnXEImnM5w==}
cpu: [ppc64]
os: [linux]
'@rollup/rollup-linux-riscv64-gnu@4.53.3':
resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==}
'@rollup/rollup-linux-riscv64-gnu@4.53.4':
resolution: {integrity: sha512-MUtAktiOUSu+AXBpx1fkuG/Bi5rhlorGs3lw5QeJ2X3ziEGAq7vFNdWVde6XGaVqi0LGSvugwjoxSNJfHFTC0g==}
cpu: [riscv64]
os: [linux]
'@rollup/rollup-linux-riscv64-musl@4.53.3':
resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==}
'@rollup/rollup-linux-riscv64-musl@4.53.4':
resolution: {integrity: sha512-btm35eAbDfPtcFEgaXCI5l3c2WXyzwiE8pArhd66SDtoLWmgK5/M7CUxmUglkwtniPzwvWioBKKl6IXLbPf2sQ==}
cpu: [riscv64]
os: [linux]
'@rollup/rollup-linux-s390x-gnu@4.53.3':
resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==}
'@rollup/rollup-linux-s390x-gnu@4.53.4':
resolution: {integrity: sha512-uJlhKE9ccUTCUlK+HUz/80cVtx2RayadC5ldDrrDUFaJK0SNb8/cCmC9RhBhIWuZ71Nqj4Uoa9+xljKWRogdhA==}
cpu: [s390x]
os: [linux]
'@rollup/rollup-linux-x64-gnu@4.53.3':
resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==}
'@rollup/rollup-linux-x64-gnu@4.53.4':
resolution: {integrity: sha512-jjEMkzvASQBbzzlzf4os7nzSBd/cvPrpqXCUOqoeCh1dQ4BP3RZCJk8XBeik4MUln3m+8LeTJcY54C/u8wb3DQ==}
cpu: [x64]
os: [linux]
'@rollup/rollup-linux-x64-musl@4.53.3':
resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==}
'@rollup/rollup-linux-x64-musl@4.53.4':
resolution: {integrity: sha512-lu90KG06NNH19shC5rBPkrh6mrTpq5kviFylPBXQVpdEu0yzb0mDgyxLr6XdcGdBIQTH/UAhDJnL+APZTBu1aQ==}
cpu: [x64]
os: [linux]
'@rollup/rollup-openharmony-arm64@4.53.3':
resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==}
'@rollup/rollup-openharmony-arm64@4.53.4':
resolution: {integrity: sha512-dFDcmLwsUzhAm/dn0+dMOQZoONVYBtgik0VuY/d5IJUUb787L3Ko/ibvTvddqhb3RaB7vFEozYevHN4ox22R/w==}
cpu: [arm64]
os: [openharmony]
'@rollup/rollup-win32-arm64-msvc@4.53.3':
resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==}
'@rollup/rollup-win32-arm64-msvc@4.53.4':
resolution: {integrity: sha512-WvUpUAWmUxZKtRnQWpRKnLW2DEO8HB/l8z6oFFMNuHndMzFTJEXzaYJ5ZAmzNw0L21QQJZsUQFt2oPf3ykAD/w==}
cpu: [arm64]
os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.53.3':
resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==}
'@rollup/rollup-win32-ia32-msvc@4.53.4':
resolution: {integrity: sha512-JGbeF2/FDU0x2OLySw/jgvkwWUo05BSiJK0dtuI4LyuXbz3wKiC1xHhLB1Tqm5VU6ZZDmAorj45r/IgWNWku5g==}
cpu: [ia32]
os: [win32]
'@rollup/rollup-win32-x64-gnu@4.53.3':
resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==}
'@rollup/rollup-win32-x64-gnu@4.53.4':
resolution: {integrity: sha512-zuuC7AyxLWLubP+mlUwEyR8M1ixW1ERNPHJfXm8x7eQNP4Pzkd7hS3qBuKBR70VRiQ04Kw8FNfRMF5TNxuZq2g==}
cpu: [x64]
os: [win32]
'@rollup/rollup-win32-x64-msvc@4.53.3':
resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==}
'@rollup/rollup-win32-x64-msvc@4.53.4':
resolution: {integrity: sha512-Sbx45u/Lbb5RyptSbX7/3deP+/lzEmZ0BTSHxwxN/IMOZDZf8S0AGo0hJD5n/LQssxb5Z3B4og4P2X6Dd8acCA==}
cpu: [x64]
os: [win32]
@ -2151,8 +2151,8 @@ packages:
resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
rollup@4.53.3:
resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==}
rollup@4.53.4:
resolution: {integrity: sha512-YpXaaArg0MvrnJpvduEDYIp7uGOqKXbH9NsHGQ6SxKCOsNAjZF018MmxefFUulVP2KLtiGw1UvZbr+/ekjvlDg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@ -3290,95 +3290,95 @@ snapshots:
dependencies:
quansync: 0.2.10
'@rollup/plugin-terser@0.4.4(rollup@4.53.3)':
'@rollup/plugin-terser@0.4.4(rollup@4.53.4)':
dependencies:
serialize-javascript: 6.0.2
smob: 1.5.0
terser: 5.43.1
optionalDependencies:
rollup: 4.53.3
rollup: 4.53.4
'@rollup/plugin-typescript@12.3.0(rollup@4.53.3)(tslib@2.8.1)(typescript@5.8.3)':
'@rollup/plugin-typescript@12.3.0(rollup@4.53.4)(tslib@2.8.1)(typescript@5.8.3)':
dependencies:
'@rollup/pluginutils': 5.2.0(rollup@4.53.3)
'@rollup/pluginutils': 5.2.0(rollup@4.53.4)
resolve: 1.22.10
typescript: 5.8.3
optionalDependencies:
rollup: 4.53.3
rollup: 4.53.4
tslib: 2.8.1
'@rollup/pluginutils@5.2.0(rollup@4.53.3)':
'@rollup/pluginutils@5.2.0(rollup@4.53.4)':
dependencies:
'@types/estree': 1.0.8
estree-walker: 2.0.2
picomatch: 4.0.3
optionalDependencies:
rollup: 4.53.3
rollup: 4.53.4
'@rollup/rollup-android-arm-eabi@4.53.3':
'@rollup/rollup-android-arm-eabi@4.53.4':
optional: true
'@rollup/rollup-android-arm64@4.53.3':
'@rollup/rollup-android-arm64@4.53.4':
optional: true
'@rollup/rollup-darwin-arm64@4.53.3':
'@rollup/rollup-darwin-arm64@4.53.4':
optional: true
'@rollup/rollup-darwin-x64@4.53.3':
'@rollup/rollup-darwin-x64@4.53.4':
optional: true
'@rollup/rollup-freebsd-arm64@4.53.3':
'@rollup/rollup-freebsd-arm64@4.53.4':
optional: true
'@rollup/rollup-freebsd-x64@4.53.3':
'@rollup/rollup-freebsd-x64@4.53.4':
optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.53.3':
'@rollup/rollup-linux-arm-gnueabihf@4.53.4':
optional: true
'@rollup/rollup-linux-arm-musleabihf@4.53.3':
'@rollup/rollup-linux-arm-musleabihf@4.53.4':
optional: true
'@rollup/rollup-linux-arm64-gnu@4.53.3':
'@rollup/rollup-linux-arm64-gnu@4.53.4':
optional: true
'@rollup/rollup-linux-arm64-musl@4.53.3':
'@rollup/rollup-linux-arm64-musl@4.53.4':
optional: true
'@rollup/rollup-linux-loong64-gnu@4.53.3':
'@rollup/rollup-linux-loong64-gnu@4.53.4':
optional: true
'@rollup/rollup-linux-ppc64-gnu@4.53.3':
'@rollup/rollup-linux-ppc64-gnu@4.53.4':
optional: true
'@rollup/rollup-linux-riscv64-gnu@4.53.3':
'@rollup/rollup-linux-riscv64-gnu@4.53.4':
optional: true
'@rollup/rollup-linux-riscv64-musl@4.53.3':
'@rollup/rollup-linux-riscv64-musl@4.53.4':
optional: true
'@rollup/rollup-linux-s390x-gnu@4.53.3':
'@rollup/rollup-linux-s390x-gnu@4.53.4':
optional: true
'@rollup/rollup-linux-x64-gnu@4.53.3':
'@rollup/rollup-linux-x64-gnu@4.53.4':
optional: true
'@rollup/rollup-linux-x64-musl@4.53.3':
'@rollup/rollup-linux-x64-musl@4.53.4':
optional: true
'@rollup/rollup-openharmony-arm64@4.53.3':
'@rollup/rollup-openharmony-arm64@4.53.4':
optional: true
'@rollup/rollup-win32-arm64-msvc@4.53.3':
'@rollup/rollup-win32-arm64-msvc@4.53.4':
optional: true
'@rollup/rollup-win32-ia32-msvc@4.53.3':
'@rollup/rollup-win32-ia32-msvc@4.53.4':
optional: true
'@rollup/rollup-win32-x64-gnu@4.53.3':
'@rollup/rollup-win32-x64-gnu@4.53.4':
optional: true
'@rollup/rollup-win32-x64-msvc@4.53.3':
'@rollup/rollup-win32-x64-msvc@4.53.4':
optional: true
'@standard-schema/spec@1.0.0': {}
@ -4385,32 +4385,32 @@ snapshots:
reusify@1.1.0: {}
rollup@4.53.3:
rollup@4.53.4:
dependencies:
'@types/estree': 1.0.8
optionalDependencies:
'@rollup/rollup-android-arm-eabi': 4.53.3
'@rollup/rollup-android-arm64': 4.53.3
'@rollup/rollup-darwin-arm64': 4.53.3
'@rollup/rollup-darwin-x64': 4.53.3
'@rollup/rollup-freebsd-arm64': 4.53.3
'@rollup/rollup-freebsd-x64': 4.53.3
'@rollup/rollup-linux-arm-gnueabihf': 4.53.3
'@rollup/rollup-linux-arm-musleabihf': 4.53.3
'@rollup/rollup-linux-arm64-gnu': 4.53.3
'@rollup/rollup-linux-arm64-musl': 4.53.3
'@rollup/rollup-linux-loong64-gnu': 4.53.3
'@rollup/rollup-linux-ppc64-gnu': 4.53.3
'@rollup/rollup-linux-riscv64-gnu': 4.53.3
'@rollup/rollup-linux-riscv64-musl': 4.53.3
'@rollup/rollup-linux-s390x-gnu': 4.53.3
'@rollup/rollup-linux-x64-gnu': 4.53.3
'@rollup/rollup-linux-x64-musl': 4.53.3
'@rollup/rollup-openharmony-arm64': 4.53.3
'@rollup/rollup-win32-arm64-msvc': 4.53.3
'@rollup/rollup-win32-ia32-msvc': 4.53.3
'@rollup/rollup-win32-x64-gnu': 4.53.3
'@rollup/rollup-win32-x64-msvc': 4.53.3
'@rollup/rollup-android-arm-eabi': 4.53.4
'@rollup/rollup-android-arm64': 4.53.4
'@rollup/rollup-darwin-arm64': 4.53.4
'@rollup/rollup-darwin-x64': 4.53.4
'@rollup/rollup-freebsd-arm64': 4.53.4
'@rollup/rollup-freebsd-x64': 4.53.4
'@rollup/rollup-linux-arm-gnueabihf': 4.53.4
'@rollup/rollup-linux-arm-musleabihf': 4.53.4
'@rollup/rollup-linux-arm64-gnu': 4.53.4
'@rollup/rollup-linux-arm64-musl': 4.53.4
'@rollup/rollup-linux-loong64-gnu': 4.53.4
'@rollup/rollup-linux-ppc64-gnu': 4.53.4
'@rollup/rollup-linux-riscv64-gnu': 4.53.4
'@rollup/rollup-linux-riscv64-musl': 4.53.4
'@rollup/rollup-linux-s390x-gnu': 4.53.4
'@rollup/rollup-linux-x64-gnu': 4.53.4
'@rollup/rollup-linux-x64-musl': 4.53.4
'@rollup/rollup-openharmony-arm64': 4.53.4
'@rollup/rollup-win32-arm64-msvc': 4.53.4
'@rollup/rollup-win32-ia32-msvc': 4.53.4
'@rollup/rollup-win32-x64-gnu': 4.53.4
'@rollup/rollup-win32-x64-msvc': 4.53.4
fsevents: 2.3.3
run-parallel@1.2.0:
@ -4652,7 +4652,7 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
postcss: 8.5.6
rollup: 4.53.3
rollup: 4.53.4
tinyglobby: 0.2.15
optionalDependencies:
'@types/node': 24.10.0

View File

@ -29,6 +29,11 @@
"https://github.com/microsoft/windows-rs",
"https://github.com/wravery/webview2-rs"
]
},
{
"description": "Group worker-rs crates",
"groupName": "worker-rs crates",
"matchSourceUrls": ["https://github.com/cloudflare/workers-rs"]
}
],
"postUpdateOptions": ["pnpmDedupe"]