snapshot of https://github.com/tauri-apps/tauri.git (dev, 2026-09-23; blobs > 131072B omitted)
Some checks failed
Audit / audit-js (push) Failing after 0s
bench / bench (map[os:ubuntu-latest runner:xvfb-run --auto-servernum target:x86_64-unknown-linux-gnu], nightly) (push) Failing after 0s
covector version or publish / run-integration-tests (ubuntu-latest) (push) Failing after 0s
Audit / audit-rust (push) Failing after 0s
test `@tauri-apps/cli` / test (ubuntu-latest) (push) Failing after 0s
test `tauri-cli` / test (map[os:ubuntu-latest target:x86_64-unknown-linux-gnu]) (push) Failing after 0s
test core / test (map[args:--all-features key:all], map[cargo:cargo command:test os:ubuntu-latest target:x86_64-unknown-linux-gnu toolchain:1.90]) (push) Failing after 0s
test core / test (map[args:--no-default-features key:no-default], map[cargo:cargo command:test os:ubuntu-latest target:x86_64-unknown-linux-gnu toolchain:1.90]) (push) Failing after 0s
test core / test (map[args:--no-default-features key:no-default], map[cargo:cross command:build os:ubuntu-latest target:aarch64-linux-android toolchain:1.90]) (push) Failing after 0s
deploy schema worker / deploy (push) Failing after 0s
lint rust / clippy (map[cargo:cargo include: os:ubuntu-latest target:x86_64-unknown-linux-gnu]) (push) Failing after 0s
lint rust / clippy (map[cargo:cross include:--package api os:ubuntu-latest target:aarch64-linux-android]) (push) Failing after 0s
supply chain health status / check rust dependencies with cargo vet (push) Failing after 0s
test `@tauri-apps/api` e2e (mobile) / android (push) Failing after 0s
test `@tauri-apps/api` e2e / test (map[name:Linux os:ubuntu-latest]) (push) Failing after 0s
test core / test (map[args:--all-features key:all], map[cargo:cross command:build os:ubuntu-latest target:aarch64-linux-android toolchain:1.90]) (push) Failing after 0s
Udeps / changes (push) Failing after 0s
Udeps / setup (push) Has been skipped
Udeps / udeps (push) Has been skipped
bench / bench (map[os:macos-latest runner: target:aarch64-apple-darwin], nightly) (push) Has been cancelled
bench / bench (map[os:windows-latest runner: target:x86_64-pc-windows-msvc], nightly) (push) Has been cancelled
covector version or publish / run-integration-tests (macos-latest) (push) Has been cancelled
covector version or publish / run-integration-tests (windows-latest) (push) Has been cancelled
covector version or publish / version-or-publish (push) Has been cancelled
test `@tauri-apps/cli` / test (macos-latest) (push) Has been cancelled
test `tauri-cli` / test (map[args:--no-default-features --features native-tls-vendored os:windows-latest restore-only:true target:aarch64-pc-windows-msvc]) (push) Has been cancelled
test `tauri-cli` / test (map[os:macos-latest target:x86_64-apple-darwin]) (push) Has been cancelled
test `tauri-cli` / test (map[os:windows-latest target:x86_64-pc-windows-msvc]) (push) Has been cancelled
test core / test (map[args:--all-features key:all], map[cargo:cargo command:build os:macos-latest target:aarch64-apple-ios toolchain:1.90]) (push) Has been cancelled
test core / test (map[args:--all-features key:all], map[cargo:cargo command:test os:macos-14 target:aarch64-apple-darwin toolchain:1.90]) (push) Has been cancelled
lint rust / clippy (map[cargo:cargo include: os:macos-latest target:aarch64-apple-darwin]) (push) Has been cancelled
lint rust / clippy (map[cargo:cargo include: os:windows-latest target:x86_64-pc-windows-msvc]) (push) Has been cancelled
lint rust / clippy (map[cargo:cargo include:--package api os:macos-latest target:aarch64-apple-ios]) (push) Has been cancelled
test `@tauri-apps/api` e2e (mobile) / ios (push) Has been cancelled
test `@tauri-apps/api` e2e / test (map[name:Windows os:windows-latest]) (push) Has been cancelled
test `@tauri-apps/api` e2e / test (map[name:macOS os:macos-latest]) (push) Has been cancelled
test `@tauri-apps/cli` / test (windows-latest) (push) Has been cancelled
test core / test (map[args:--all-features key:all], map[cargo:cargo command:test os:windows-latest target:x86_64-pc-windows-msvc toolchain:1.90]) (push) Has been cancelled
test core / test (map[args:--no-default-features key:no-default], map[cargo:cargo command:build os:macos-latest target:aarch64-apple-ios toolchain:1.90]) (push) Has been cancelled
test core / test (map[args:--no-default-features key:no-default], map[cargo:cargo command:test os:macos-14 target:aarch64-apple-darwin toolchain:1.90]) (push) Has been cancelled
test core / test (map[args:--no-default-features key:no-default], map[cargo:cargo command:test os:windows-latest target:x86_64-pc-windows-msvc toolchain:1.90]) (push) Has been cancelled

This commit is contained in:
upstream-mirror
2026-09-23 17:00:42 +05:00
commit feda81bf2f
1178 changed files with 156404 additions and 0 deletions

14
.cargo/audit.toml Normal file
View File

@@ -0,0 +1,14 @@
[advisories]
ignore = [
# rsa Marvin Attack
"RUSTSEC-2023-0071",
# difference is unmaintained
"RUSTSEC-2020-0095",
# proc-macro-error is unmaintained
"RUSTSEC-2024-0370",
# rand unsoundness, fixed when we remove kuchikiki from deps in v3, currently
# remains for semver reasons but is not built in default configuration
"RUSTSEC-2026-0097",
# glib 0.18.5 unsoundness, fixed by updating to gtk4
"RUSTSEC-2024-0429",
]

4
.cargo/config.toml Normal file
View File

@@ -0,0 +1,4 @@
[env]
# workaround needed to prevent `STATUS_ENTRYPOINT_NOT_FOUND` error in tests
# see https://github.com/tauri-apps/tauri/pull/4383#issuecomment-1212221864
__TAURI_WORKSPACE__ = "true"

44
.changes/README.md Normal file
View File

@@ -0,0 +1,44 @@
# Changes
##### via https://github.com/jbolda/covector
As you create PRs and make changes that require a version bump, please add a new markdown file in this folder. You do not note the version _number_, but rather the type of bump that you expect: major, minor, or patch. The filename is not important, as long as it is a `.md`, but we recommend that it represents the overall change for organizational purposes.
When you select the version bump required, you do _not_ need to consider dependencies. Only note the package with the actual change, and any packages that depend on that package will be bumped automatically in the process.
Use the following format:
```md
---
'package-a': 'patch:enhance'
'package-b': 'patch:enhance'
---
Change summary goes here
```
Summaries do not have a specific character limit, but are text only. These summaries are used within the (future implementation of) changelogs. They will give context to the change and also point back to the original PR if more details and context are needed.
Changes will be designated as a `major`, `minor` or `patch` as further described in [semver](https://semver.org/).
Given a version number MAJOR.MINOR.PATCH, increment the:
- MAJOR version when you make incompatible API changes,
- MINOR version when you add functionality in a backwards compatible manner, and
- PATCH version when you make backwards compatible bug fixes.
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format, but will be discussed prior to usage (as extra steps will be necessary in consideration of merging and publishing).
Additionally you could specify a tag for the change file to group it with other changes by prefixing the bump with `:<tag>`, for example:
```md
---
'package-a': 'patch:enhance'
---
Change summary goes here
```
which will group this change file with other changes that specify the `bug` tag.
For list of available tags, see the `changeTags` key in [./config.json](./config.json)

View File

@@ -0,0 +1,5 @@
---
tauri: patch:bug
---
Fix the runtime ACL denying a command for every origin when any capability denied it: deny permissions are now correctly scoped to the capability's execution context (local/remote) instead of denying the command for every origin. Previously a capability that denied a command for a remote URL also denied it for the local app (and vice-versa), because the origin match result was discarded. The debug message reporting an explicit denial now also only references the capabilities that actually deny the requesting origin.

View File

@@ -0,0 +1,5 @@
---
"tauri-utils": patch:bug
---
Added `additional-watch-folders` as an alias for the `build > additionalWatchFolders` configuration value, so the kebab-case spelling that matches the camelCase key is accepted in `Tauri.toml`. The previous `additional-watch-directories` alias keeps working.

View File

@@ -0,0 +1,6 @@
---
"tauri-cli": patch:enhance
"@tauri-apps/cli": patch:enhance
---
Don't always rewrite `Cargo.toml` file from CRLF line endings to LF

View File

@@ -0,0 +1,9 @@
---
"tauri": patch:enhance
"tauri-cli": patch:enhance
"@tauri-apps/cli": patch:enhance
---
Migrate the Android Gradle scripts from the deprecated `kotlinOptions` DSL to `compilerOptions`, which is accepted by both Kotlin Gradle Plugin 1.9.x and 2.x. This lets projects move to Kotlin 2.x without hitting the hard error that 2.3+ raises on the old DSL.
This increased the minimum supported Gradle version to 8.13, if your `gradle` is on an earlier version, delete `src-tauri/gen/android/gradle/wrapper/gradle-wrapper.properties` and re-run `tauri android init` to update it.

View File

@@ -0,0 +1,23 @@
---
tauri: minor:deps
tauri-cli: minor:deps
"@tauri-apps/cli": minor:deps
---
On Android, fix missing `consumer-rules.pro` file in the template.
**IMPORTANT**: For plugin authors, update your `build.gradle.kts` file to remove the
```kotlin
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
```
section and rename your `proguard-rules.pro` to `consumer-rules.pro` to match the `consumerProguardFiles("consumer-rules.pro")` in the template.

View File

@@ -0,0 +1,5 @@
---
'tauri': 'patch:bug'
---
On Android, `AppHandle::exit` (and the process plugin `exit` command) now finishes the activity instead of exiting the process directly, so the app closes with the system transition instead of flashing a blank screen.

View File

@@ -0,0 +1,8 @@
---
tauri: minor:deps
tauri-build: minor:deps
tauri-cli: minor:deps
"@tauri-apps/cli": minor:deps
---
On Android, updated the template to use Gradle v9.6.1 (`com.android.tools.build:gradle` v9.3.1) and Kotlin v2.2. Use `tauri android init` to apply the change.

View File

@@ -0,0 +1,6 @@
---
"tauri-cli": patch:enhance
"@tauri-apps/cli": patch:enhance
---
Warn during Android commands (`init`/`dev`/`build`) when the active Java version is too new for the Gradle version the project uses (e.g. Java 27 against the Gradle 9.6.1 the template ships, or Java 25 against a project still on Gradle 8.14), instead of letting the build fail later with a cryptic error. The warning points to the Gradle/Java compatibility matrix and suggests a supported JDK.

View File

@@ -0,0 +1,5 @@
---
tauri: patch:bug
---
On Android, `Invoke.resolveObject` and the other values serialized with the plugin JSON mapper now write `JSObject` and `JSArray` as JSON objects and arrays. They were serialized through their private fields, so a `JSArray` reached the frontend as `{ "values": [...] }` and a `JSObject` as `{ "nameValuePairs": {...} }`.

View File

@@ -0,0 +1,6 @@
---
"tauri-cli": patch:enhance
"@tauri-apps/cli": patch:enhance
---
Use `Theme.Material3.DayNight.NoActionBar` instead of `Theme.MaterialComponents.DayNight.NoActionBar` when running `tauri android init`

View File

@@ -0,0 +1,5 @@
---
tauri: patch:bug
---
On Android, fixed requesting permission in a plugin fails after the first activity closed.

View File

@@ -0,0 +1,5 @@
---
tauri: patch:bug
---
On Android, fixed a crash when an activity is destroyed while another one is already running — installing an APK over the running app is the common way to hit it. The plugin manager tried to move its activity result launchers to the surviving activity, and `registerForActivityResult` rejects that with `IllegalStateException: LifecycleOwner ... is attempting to register while current state is RESUMED`. Each activity now registers its own launchers when it is created.

View File

@@ -0,0 +1,6 @@
---
"tauri-cli": patch:enhance
"@tauri-apps/cli": patch:enhance
---
Update template to use `targetSdk = 37`

View File

@@ -0,0 +1,7 @@
---
tauri: minor:breaking
---
On Android, `$VIDEO` and `video_dir()` now resolve to the app-specific Movies directory instead of external cache storage.
**Migration:** Files previously written to the old location (`.../cache`) will not be discovered at the new location (`.../files/Movies`). Migrate existing files or update path assumptions accordingly.

View File

@@ -0,0 +1,8 @@
---
"tauri": minor:feat
"tauri-runtime": minor:feat
"tauri-runtime-wry": minor:feat
"tauri-utils": minor:feat
---
Add `WebviewBuilder::limit_navigations_to_app_bound_domains`, `WebviewWindowBuilder::limit_navigations_to_app_bound_domains`, and limitNavigationsToAppBoundDomains to tauri.config.json.

6
.changes/app-exit-api.md Normal file
View File

@@ -0,0 +1,6 @@
---
'tauri': 'minor:feat'
'@tauri-apps/api': 'minor:feat'
---
Added the `exit` function to `@tauri-apps/api/app`, backed by the new `plugin:app|exit` command (`core:app:allow-exit` permission), to exit the app without requiring the `@tauri-apps/plugin-process` plugin.

View File

@@ -0,0 +1,5 @@
---
"tauri-bundler": "patch:bug"
---
Respect an explicitly configured `GDK_BACKEND` in AppImage GTK hooks while retaining `x11` as the default.

View File

@@ -0,0 +1,5 @@
---
tauri: patch:bug
---
Fix malformed `asset://` multi-range responses: the multipart body now ends with the closing boundary, `Content-Type` is only `multipart/byteranges`, and the status is `206 Partial Content`.

View File

@@ -0,0 +1,5 @@
---
tauri: patch:bug
---
Load `asset://` files asynchronously instead of on the event loop thread, so a slow or unreachable path no longer freezes every window.

6
.changes/brotli-9.md Normal file
View File

@@ -0,0 +1,6 @@
---
"tauri-codegen": patch:deps
"tauri-utils": patch:deps
---
Updated brotli to v9

View File

@@ -0,0 +1,5 @@
---
"tauri-build": minor:feat
---
Added `Attributes::config_path` to customize config path, deprecated `CodegenContext::config_path` in favor of this

View File

@@ -0,0 +1,5 @@
---
"tauri-build": patch:bug
---
The `.ico` from `bundle > icon` (or the `icons/icon.ico` fallback) embedded as the Windows application icon is now resolved relative to the config file directory instead of the build script's working directory, so it works with `Attributes::config_path`.

View File

@@ -0,0 +1,8 @@
---
"tauri-bundler": "minor:feat"
"tauri-cli": "minor:feat"
"@tauri-apps/cli": "minor:feat"
"tauri-utils": "minor:feat"
---
Added `bundle.windows.bundleVCRuntime` to copy the Visual C++ runtime DLLs into Windows MSI and NSIS installers. The bundler locates the runtime through `VCTOOLS_REDIST_DIR` or the bundled `vswhere.exe`.

View File

@@ -0,0 +1,5 @@
---
tauri-bundler: patch:deps
---
**Breaking Change:** Updated various dependencies and removed `goblin`. Some of these dependencies are part of the public API which makes this a breaking change. Added a warning about `tauri-bundler`'s API stability in reflection to past regular breaking struct changes.

View File

@@ -0,0 +1,7 @@
---
"tauri-bundler": "minor:feat"
"tauri-cli": "minor:feat"
"@tauri-apps/cli": "minor:feat"
---
The bundler now prints the size of each generated bundle next to its path in the `Finished N bundles at:` output (directories such as macOS `.app` bundles are measured recursively).

6
.changes/cargo-toml-1.md Normal file
View File

@@ -0,0 +1,6 @@
---
tauri: patch:deps
tauri-build: patch:deps
---
Updated `cargo_toml` crate to `1`

View File

@@ -0,0 +1,5 @@
---
"tauri": patch:enhance
---
`State` had `Send` and `Sync` trait bounds that were already implied, remove them from the struct definition.

View File

@@ -0,0 +1,5 @@
---
"tauri-macos-sign": patch:deps
---
Updated dependency `apple-codesign` to `0.29`, no user facing changes.

View File

@@ -0,0 +1,5 @@
---
"tauri-utils": patch:deps
---
Update `serial_test` to 3.5 to pull in the updated `scc` and fix RUSTSEC advisory

View File

@@ -0,0 +1,6 @@
---
"tauri": patch:changes
---
Internal refactors removing an `Arc` and a `Mutex`.
Deprecate `InvokeMessage::state` and `InvokeMessage::state_ref` that should accidentally were made public.

View File

@@ -0,0 +1,6 @@
---
"tauri-cli": "patch:enhance"
"@tauri-apps/cli": "patch:enhance"
---
Clarify that the `tauri init` frontend commands run before `tauri dev` and `tauri build`, and can be left empty when they are not needed.

View File

@@ -0,0 +1,5 @@
---
"tauri": "patch:bug"
---
Remove the `Channel` used to send event to JavaScript side on dropping the menu

View File

@@ -0,0 +1,6 @@
---
"tauri-cli": patch:bug
"@tauri-apps/cli": patch:bug
---
`tauri dev` now kills the whole process tree of the running app when it restarts or exits, so processes spawned by the app (e.g. sidecars) are no longer left orphaned.

View File

@@ -0,0 +1,6 @@
---
'tauri-cli': 'patch:enhance'
'@tauri-apps/cli': 'patch:enhance'
---
When stdin is not a terminal, `tauri init` now automatically skips prompts, avoiding IO errors in CI and scripts. This eliminates the need to pass `--ci` explicitly in non-interactive environments.

View File

@@ -0,0 +1,6 @@
---
"tauri-cli": patch:bug
"@tauri-apps/cli": patch:bug
---
Normalize `gen/android/gradlew` CRLF line endings to LF on all host platforms, not only Unix. A `gradlew` checked out with CRLF broke `sh ./gradlew` on Windows hosts using Git Bash. The rewrite only runs when a CRLF is actually present. A failure to rewrite aborts on Unix, where the script is executed directly; on Windows the CLI invokes `gradlew.bat`, so failures there only warn.

View File

@@ -0,0 +1,6 @@
---
"tauri-cli": "patch:bug"
"@tauri-apps/cli": "patch:bug"
---
Fix the `tauri capability new` command description, which said "Create a new permission file", and the `--skip-stapling` help text on `tauri build` and `tauri bundle`, whose first line described the opposite of what the flag does.

View File

@@ -0,0 +1,6 @@
---
"tauri-cli": patch:bug
"@tauri-apps/cli": patch:bug
---
`tauri ios build` for a simulator target no longer fails with "failed to rename app: Directory not empty" when the output `.app` from a previous build exists.

224
.changes/config.json Normal file
View File

@@ -0,0 +1,224 @@
{
"gitSiteUrl": "https://www.github.com/tauri-apps/tauri/",
"changeTags": {
"feat": "New Features",
"enhance": "Enhancements",
"bug": "Bug Fixes",
"perf": "Performance Improvements",
"changes": "What's Changed",
"sec": "Security fixes",
"deps": "Dependencies",
"breaking": "Breaking Changes"
},
"defaultChangeTag": "changes",
"pkgManagers": {
"rust": {
"version": true,
"getPublishedVersion": {
"use": "fetch:check",
"options": {
"url": "https://crates.io/api/v1/crates/${ pkg.pkgFile.pkg.package.name }/${ pkg.pkgFile.version }"
}
},
"prepublish": [
"cargo install cargo-audit --features=fix",
{
"command": "echo '<details>\n<summary><em><h4>Cargo Audit</h4></em></summary>\n\n```'",
"dryRunCommand": true,
"pipe": true
},
{
"command": "cargo audit ${ process.env.CARGO_AUDIT_OPTIONS || '' }",
"dryRunCommand": true,
"runFromRoot": true,
"pipe": true
},
{
"command": "echo '```\n\n</details>\n'",
"dryRunCommand": true,
"pipe": true
}
],
"publish": [
{
"command": "echo '<details>\n<summary><em><h4>Cargo Publish</h4></em></summary>\n\n```'",
"dryRunCommand": true,
"pipe": true
},
{
"command": "cargo publish",
"dryRunCommand": "cargo publish --dry-run",
"pipe": true
},
{
"command": "echo '```\n\n</details>\n'",
"dryRunCommand": true,
"pipe": true
}
],
"postpublish": {
"use": "fetch:check",
"options": {
"url": "https://crates.io/api/v1/crates/${ pkg.pkgFile.pkg.package.name }/${ pkg.pkgFile.version }"
},
"retries": [5000, 5000, 5000]
}
},
"javascript": {
"version": true,
"getPublishedVersion": {
"use": "fetch:check",
"options": {
"url": "https://registry.npmjs.com/${ pkg.pkgFile.pkg.name }/${ pkg.pkgFile.version }"
}
},
"prepublish": [
{
"command": "echo '<details>\n<summary><em><h4>PNPM Audit</h4></em></summary>\n\n```'",
"dryRunCommand": true,
"pipe": true
},
{
"command": "pnpm i --frozen-lockfile",
"dryRunCommand": true
},
{
"command": "pnpm audit",
"dryRunCommand": true,
"runFromRoot": true,
"pipe": true
},
{
"command": "echo '```\n\n</details>\n'",
"dryRunCommand": true,
"pipe": true
}
],
"publish": [
{
"command": "echo '<details>\n<summary><em><h4>PNPM Publish</h4></em></summary>\n\n```'",
"dryRunCommand": true,
"pipe": true
},
{
"command": "pnpm publish --access public --loglevel silly --no-git-checks",
"dryRunCommand": "npm publish --dry-run --access public --no-git-checks",
"pipe": true
},
{
"command": "echo '```\n\n</details>\n'",
"dryRunCommand": true,
"pipe": true
}
],
"postpublish": {
"use": "fetch:check",
"options": {
"url": "https://registry.npmjs.com/${ pkg.pkgFile.pkg.name }/${ pkg.pkgFile.version }"
},
"retries": [5000, 5000, 5000]
}
}
},
"packages": {
"@tauri-apps/api": {
"path": "./packages/api",
"manager": "javascript",
"publish": [
{
"command": "echo '<details>\n<summary><em><h4>PNPM Publish</h4></em></summary>\n\n```'",
"dryRunCommand": true,
"pipe": true
},
{
"command": "pnpm npm-publish",
"dryRunCommand": true,
"pipe": true
},
{
"command": "echo '```\n\n</details>\n'",
"dryRunCommand": true,
"pipe": true
}
]
},
"tauri-utils": {
"path": "./crates/tauri-utils",
"manager": "rust"
},
"tauri-macos-sign": {
"path": "./crates/tauri-macos-sign",
"manager": "rust"
},
"tauri-bundler": {
"path": "./crates/tauri-bundler",
"manager": "rust",
"dependencies": ["tauri-utils", "tauri-macos-sign"]
},
"tauri-runtime": {
"path": "./crates/tauri-runtime",
"manager": "rust",
"dependencies": ["tauri-utils"]
},
"tauri-runtime-wry": {
"path": "./crates/tauri-runtime-wry",
"manager": "rust",
"dependencies": ["tauri-utils", "tauri-runtime"]
},
"tauri-codegen": {
"path": "./crates/tauri-codegen",
"manager": "rust",
"dependencies": ["tauri-utils"]
},
"tauri-macros": {
"path": "./crates/tauri-macros",
"manager": "rust",
"dependencies": ["tauri-codegen", "tauri-utils"]
},
"tauri-plugin": {
"path": "./crates/tauri-plugin",
"manager": "rust",
"dependencies": ["tauri-utils"],
"postversion": "node ../../.scripts/ci/sync-cli-metadata.js ${ pkg.pkg } ${ release.type }"
},
"tauri-build": {
"path": "./crates/tauri-build",
"manager": "rust",
"dependencies": ["tauri-codegen", "tauri-utils"],
"postversion": "node ../../.scripts/ci/sync-cli-metadata.js ${ pkg.pkg } ${ release.type }"
},
"tauri": {
"path": "./crates/tauri",
"manager": "rust",
"dependencies": [
"tauri-macros",
"tauri-utils",
"tauri-runtime",
"tauri-runtime-wry",
"tauri-build"
],
"postversion": [
"node ../../.scripts/ci/sync-cli-metadata.js ${ pkg.pkg } ${ release.type }",
"cargo build --manifest-path ../tauri-schema-generator/Cargo.toml"
]
},
"@tauri-apps/cli": {
"path": "./packages/cli",
"manager": "javascript",
"dependencies": ["tauri-cli"],
"postversion": "node ../../.scripts/ci/sync-cli-metadata.js ${ pkg.pkg } ${ release.type }",
"prepublish": [],
"publish": [],
"postpublish": []
},
"tauri-cli": {
"path": "./crates/tauri-cli",
"manager": "rust",
"dependencies": ["tauri-bundler", "tauri-utils", "tauri-macos-sign"]
},
"tauri-driver": {
"path": "./crates/tauri-driver",
"manager": "rust"
}
}
}

View File

@@ -0,0 +1,5 @@
---
"tauri": minor:feat
---
Add `Webview::convert_file_src` and `WebviewWindow::convert_file_src`, the Rust equivalent of the JavaScript `convertFileSrc` function. The returned URL uses the scheme the webview was configured with (`useHttpsScheme`), so it always matches what the webview can load.

5
.changes/ctor-1.md Normal file
View File

@@ -0,0 +1,5 @@
---
tauri-utils: patch:deps
---
Updated `ctor` crate to `1`

View File

@@ -0,0 +1,7 @@
---
"tauri-cli": patch:enhance
"@tauri-apps/cli": patch:enhance
"tauri-utils": patch:enhance
---
`tauri build` now warns when `productName` is still set to the default `tauri-app`, since it names the generated bundles and is written into install paths and metadata that are expected to be unique to your application. The config documentation for `productName` now lists what the field controls on each platform, and `identifier`'s documentation notes that the default value is rejected.

View File

@@ -0,0 +1,7 @@
---
"tauri-bundler": "minor:feat"
"tauri-cli": "minor:feat"
"@tauri-apps/cli": "minor:feat"
---
Add a `--no-binary-patching` flag to `tauri build` and `tauri bundle`. When set, the bundler skips patching the main executable with bundle type information (and the subsequent re-signing), leaving an already-signed binary untouched. Patching is only required when shipping multiple bundle types per platform that should each update with their own installer format.

View File

@@ -0,0 +1,5 @@
---
"tauri-runtime-wry": "minor:breaking"
---
Removed unused dpi wrapper types like `PhysicalPositionWrapper`

View File

@@ -0,0 +1,6 @@
---
tauri-cli: minor:changes
"@tauri-apps/cli": minor:changes
---
Moved to edition 2024 for the `tauri init`/`tauri plugin init` templates

16
.changes/edition-2024.md Normal file
View File

@@ -0,0 +1,16 @@
---
"tauri": minor:changes
"tauri-utils": minor:changes
"tauri-runtime": minor:changes
"tauri-runtime-wry": minor:changes
"tauri-codegen": minor:changes
"tauri-macros": minor:changes
"tauri-plugin": minor:changes
"tauri-build": minor:changes
"tauri-cli": minor:changes
"tauri-macos-sign": minor:changes
"tauri-bundler": minor:changes
"tauri-driver": minor:changes
---
Moved to edition 2024

View File

@@ -0,0 +1,5 @@
---
"tauri": "patch:bug"
---
Remove Rust-side event listeners bound to a window or webview when that target is destroyed, so `listen`/`once` handlers registered on a `Window`, `Webview` or `WebviewWindow` no longer leak after it is closed.

View File

@@ -0,0 +1,6 @@
---
'tauri': 'patch:bug'
'tauri-runtime-wry': 'patch:bug'
---
Transfer the exit code from the `window.app_handle().exit(1)` call to the `run_return()` result instead of always returning 0.

View File

@@ -0,0 +1,15 @@
---
"@tauri-apps/api": minor:enhance
---
Add ECMAScript Explicit Resource Management to Resource. You can now use the `using` syntax in supported browsers or with polyfills:
```javascript
import { create, BaseDirectory } from "@tauri-apps/plugin-fs"
...
{
await using file = await create("foo/bar.txt", { baseDir: BaseDirectory.AppConfig });
await file.write(new TextEncoder().encode("Hello world"));
// Before `file` goes out of scope, it is disposed by calling `file[Symbol.asyncDispose]()` and awaited.
}
```

View File

@@ -0,0 +1,7 @@
---
"tauri-runtime-wry": minor:feat
"tauri-runtime": minor:feat
"tauri": minor:feat
---
Add `Builder::activate_ignoring_other_apps` on macOS to control whether the app activates at launch when another app is already active.

View File

@@ -0,0 +1,7 @@
---
tauri-bundler: patch:bug
tauri-cli: patch:bug
"@tauri-apps/cli": patch:bug
---
On Linux, do not bundle xdg-open and xdg-utils in the AppImage anymore. This rarely worked and usually requires host system support anyway.

View File

@@ -0,0 +1,5 @@
---
'tauri-build': 'patch:bug'
---
Emit an absolute path for the capabilities directory `cargo:rerun-if-changed`. Cargo resolves a relative watch path against the package owning the build script, while the capabilities glob is resolved against the process working directory, so callers that change the current directory before `try_build`/`try_build_context` ended up watching a non-existent directory — which is always dirty and re-ran the build script (and recompiled everything downstream) on every build.

View File

@@ -0,0 +1,7 @@
---
"tauri": patch:sec
---
Bind channel data IPC queue entries to the webview they were created for and scope their ids per webview.
Queued channel payloads and large invoke responses can no longer be read by other webviews, and entries are purged when the owning webview is closed.
Fixes GHSA-w28w-mhc8-qvjv.

View File

@@ -0,0 +1,6 @@
---
"tauri-cli": patch:bug
"@tauri-apps/cli": patch:bug
---
Fix `tauri add` / `tauri remove` installing npm plugin packages into `src-tauri` instead of the frontend directory.

View File

@@ -0,0 +1,6 @@
---
'tauri-build': 'patch:bug'
'tauri-utils': 'patch:enhance'
---
Emit a `cargo:rerun-if-changed` for each resource directory (and glob base directory), so that adding or removing a file inside a resource directory re-runs the build script and copies the new files. Previously only the individual files present at build time were watched, so newly added files were silently ignored until an unrelated rebuild.

View File

@@ -0,0 +1,5 @@
---
'tauri-utils': 'patch:bug'
---
Serialize the CSP directive map, header source maps and plugin config with sorted keys so writing the processed config (e.g. the `tauri.conf.json` embedded in Android/iOS projects) is deterministic across builds.

View File

@@ -0,0 +1,5 @@
---
'tauri-codegen': 'patch:bug'
---
Emit embedded assets and CSP script/style hashes in sorted order so `generate_context!` output no longer depends on the filesystem walk order, which varies across machines and broke reproducible builds.

View File

@@ -0,0 +1,6 @@
---
"tauri-cli": patch:bug
"@tauri-apps/cli": patch:bug
---
Fix broken child window icons in Task Manager, you'll need to re-run `tauri icon` to generate the fixed icons

View File

@@ -0,0 +1,5 @@
---
"tauri-codegen": patch:bug
---
Select the largest entry of an ICO file instead of the first one when embedding it with `include_image!` or as the tray icon, so the OS downscales a high-resolution source instead of upscaling the 16x16 entry.

View File

@@ -0,0 +1,5 @@
---
'tauri': 'patch:bug'
---
Remove a webview's JS event listeners from the backend `Listeners` map when that webview is destroyed. Previously the entries keyed by the source webview label lingered after the webview was dropped, so they could never be delivered and leaked until the app exited — forcing apps to manually `unlisten()` before closing a window.

View File

@@ -0,0 +1,5 @@
---
"@tauri-apps/api": patch:bug
---
Fix `Window.setBackgroundColor`, `Webview.setBackgroundColor` and `WebviewWindow.setBackgroundColor` sending a `color` argument while the `plugin:window|set_background_color` and `plugin:webview|set_webview_background_color` commands expect `label` and `value`. The color was always deserialized as `None`, so instead of applying the given color the call cleared the background of the calling window/webview.

View File

@@ -0,0 +1,6 @@
---
'tauri': 'patch:bug'
'tauri-runtime-wry': 'patch:bug'
---
Query monitor information (`primary_monitor`, `monitor_from_point`, `available_monitors`) on the main thread from the app-level runtime handle instead of touching the event loop's window target directly.

View File

@@ -0,0 +1,6 @@
---
"tauri": patch:bug
"tauri-runtime-wry": patch:bug
---
Avoid leaking Objective-C objects in `WebviewMessage::WithWebview` on Apple targets by replacing `Retained::into_raw` with scoped retained bindings and `Retained::as_ptr` pointer handoff.

View File

@@ -0,0 +1,5 @@
---
"tauri-runtime-wry": minor:breaking
---
`WindowsStore` and `DispatcherMainThreadContext` are no longer `Send` and `Sync`, and unsafe impl has been moved to `Context` directly.

View File

@@ -0,0 +1,5 @@
---
'tauri': 'patch:bug'
---
Guard the handler lookup in the generated unlisten script. When the unlisten function ran before its listener registration eval reached the webview, the entry was still missing and reading its `handlerId` threw, which aborted `_unlisten` before it sent the backend `plugin:event|unlisten` and left the listener registered.

View File

@@ -0,0 +1,7 @@
---
"tauri-bundler": patch:bug
"tauri-cli": patch:bug
"@tauri-apps/cli": patch:bug
---
Fix MSI bundling when an external binary filename starts with a digit.

View File

@@ -0,0 +1,8 @@
---
"tauri-bundler": patch:bug
"tauri-cli": patch:bug
"@tauri-apps/cli": patch:bug
---
Fix WiX bundler doesn't respect the resource's target file name.

View File

@@ -0,0 +1,5 @@
---
"tauri-utils": patch:bug
---
Fixed header values configured with an object in `app > security > headers` being serialized in a random order, which made the resulting header value differ between runs. The `key value` pairs are now always sorted by key, matching the ordering already used when the configuration is serialized.

View File

@@ -0,0 +1,6 @@
---
"tauri-cli": "minor:feat"
"@tauri-apps/cli": "minor:feat"
---
Add a `--fit` option to `tauri icon` to accept non-square source images. `--fit cover` center-crops the source to a square (clipping the longer side) and `--fit contain` pads the shorter side with transparency. Non-square sources without `--fit` keep erroring, now with a hint pointing to the flag.

View File

@@ -0,0 +1,7 @@
---
"tauri": minor:feat
"tauri-codegen": minor:feat
"tauri-utils": minor:feat
---
Added `Image::from_app_icon_resource` and `Image::from_icon_resource` on Windows for loading images from icon resources embedded in the executable (identified by an `IconResource` id or name), and the default `default_window_icon` from `tauri::generate_context` macro is now loaded using `from_app_icon_resource`. The resource id `tauri-build` embeds the application icon with is exposed as `tauri_utils::platform::WINDOWS_APP_ICON_RESOURCE_ID`.

View File

@@ -0,0 +1,5 @@
---
tauri: patch:perf
---
Skip redundant rgba buffer copies in icon conversions (`muda::Icon`/`tray_icon::Icon`), `Image::from_bytes`, and submenu icon construction.

View File

@@ -0,0 +1,5 @@
---
tauri: patch:perf
---
Skip serializing to JSON for `Image::rgba`

View File

@@ -0,0 +1,5 @@
---
"@tauri-apps/api": patch:bug
---
`Image.rgba` now returns a more specific type `Promise<Uint8Array<ArrayBuffer>>` instead of the default `Promise<Uint8Array<ArrayBufferLike>`

6
.changes/ios-27.md Normal file
View File

@@ -0,0 +1,6 @@
---
tauri-cli: minor:deps
"@tauri-apps/cli": minor:deps
---
Update the generated iOS Xcode project to build with Xcode 27. The scenes lifecycle is **not** enabled by default: to opt in, add the `UIApplicationSceneManifest` key to your `src-tauri/Info.ios.plist`.

View File

@@ -0,0 +1,5 @@
---
"tauri-runtime-wry": patch:bug
---
Fix a crash on iOS when the monitor APIs (`Window::current_monitor`, `primary_monitor`, `available_monitors`, `monitor_from_point` and the `AppHandle` equivalents) are called off the main thread, e.g. from a command: the monitor is now read on the main thread, where iOS requires it.

View File

@@ -0,0 +1,5 @@
---
'@tauri-apps/api': 'minor:feat'
---
Added `JsImage` type alias and documented its relationship to the Rust `JsImage`

View File

@@ -0,0 +1,12 @@
---
"tauri": minor:changes
"tauri-runtime": minor:changes
"tauri-runtime-wry": minor:changes
"tauri-build": minor:changes
"tauri-macros": minor:changes
"tauri-codegen": minor:changes
"tauri-cli": minor:changes
"@tauri-apps/cli": minor:changes
---
Lock unstable tauri crates to minor versions.

View File

@@ -0,0 +1,5 @@
---
"tauri-runtime-wry": patch:bug
---
On macOS, `App::set_theme` now also updates the theme each window reports, so `Window::theme` (and `getCurrentWindow().theme()` in JavaScript) reflects the app-level theme instead of keeping the previous value until the system appearance changes.

View File

@@ -0,0 +1,7 @@
---
tauri: minor:enhance
tauri-utils: minor:enhance
"@tauri-apps/api": minor:enhance
---
Added `Regular` and `Clear` Liquid Glass window effects, and the `interactive` window effects option (macOS 27.0+) that enables the glass' visual response to user interactions.

View File

@@ -0,0 +1,9 @@
---
tauri: minor:bug
tauri-macros: minor:bug
---
Fix menu related commands can panic if called with invalid menu types through `invoke` directly.
- The internal `do_menu_item!` macro now returns `Err(crate::Error::UnexpectedMenuKind)` instead of `unreachable!()`
- Added a new error type `tauri::Error::UnexpectedMenuKind`

View File

@@ -0,0 +1,6 @@
---
"tauri-cli": patch:bug
"@tauri-apps/cli": patch:bug
---
Detect pnpm from `npm_config_user_agent` when generating the mobile projects. pnpm's native binary (pnpm 11+) runs package scripts without setting `PNPM_PACKAGE_NAME`, and when installed through corepack the binary is named `pnpm-native`, so `tauri android init` recorded `pnpm-native` as the command for Gradle to run and the Android build failed with "A problem occurred starting process 'command 'pnpm-native''".

View File

@@ -0,0 +1,6 @@
---
"tauri": minor:changes
"tauri-runtime-wry": minor:changes
---
`WindowEvent::Resumed` and `WindowEvent::Suspended` are now only fired for the matching activity window instead of every window.

View File

@@ -0,0 +1,5 @@
---
tauri: patch:bug
---
Fix `run_main_thread!` macro used by things like `MenuItem` and some other APIs deadlock when called on main thread with `MockRuntime`

16
.changes/msrv-1.90.md Normal file
View File

@@ -0,0 +1,16 @@
---
"tauri": minor:changes
"tauri-utils": minor:changes
"tauri-runtime": minor:changes
"tauri-runtime-wry": minor:changes
"tauri-codegen": minor:changes
"tauri-macros": minor:changes
"tauri-plugin": minor:changes
"tauri-build": minor:changes
"tauri-cli": minor:changes
"tauri-macos-sign": minor:changes
"tauri-bundler": minor:changes
"tauri-driver": minor:changes
---
Set MSRV to 1.90.

View File

@@ -0,0 +1,5 @@
---
'@tauri-apps/api': 'minor:feat'
---
Added `noRedirectionBitmap` option to the `Window` and `WebviewWindow` constructors on Windows.

View File

@@ -0,0 +1,6 @@
---
'tauri': 'minor:feat'
'tauri-utils': 'minor:feat'
---
Added `app > windows > noRedirectionBitmap` config option to disable the window redirection bitmap on Windows.

View File

@@ -0,0 +1,7 @@
---
'tauri': 'minor:feat'
'tauri-runtime': 'minor:feat'
'tauri-runtime-wry': 'minor:feat'
---
Added `WindowBuilder/WebviewWindowBuilder::no_redirection_bitmap` method to disable the window redirection bitmap on Windows.

View File

@@ -0,0 +1,5 @@
---
"tauri-bundler": minor:enhance
---
Switch to use restart manager to close running app, this makes it so that we send a `WM_ENDSESSION` signal to the app for it to gracefully shutdown

7
.changes/objc2-0.3.2.md Normal file
View File

@@ -0,0 +1,7 @@
---
"tauri": patch:deps
"tauri-runtime": patch:deps
"tauri-runtime-wry": patch:deps
---
On macOS, updated `objc2-*` dependencies to 0.3.2

View File

@@ -0,0 +1,5 @@
---
tauri: patch:bug
---
Fix `path.normalize("")` returning an empty string instead of `"."`, matching Node.js and the existing `path.join("")` behavior.

View File

@@ -0,0 +1,9 @@
---
"tauri": "minor:feat"
"tauri-runtime": "minor:feat"
"tauri-runtime-wry": "minor:feat"
---
Expose the `wry` permission handler API through Tauri.
This includes support for permission types such as `DisplayCapture`, `Midi`, `Sensors`, `MediaKeySystemAccess`, `LocalFonts`, `WindowManagement`, `PointerLock`, `AutomaticDownloads`, `FileSystemAccess`, and `Autoplay`.
Added `PermissionResponse::{Allow, Deny, Default}` for runtime permission decisions.

View File

@@ -0,0 +1,5 @@
---
"tauri-utils": patch:bug
---
Fixed the `app > security > headers > Permissions-Policy` configuration being sent as a header named `Permission-Policy`, which is not a real HTTP header, so the policy had no effect. The header is now correctly named `Permissions-Policy`.

View File

@@ -0,0 +1,5 @@
---
"tauri": minor:feat
---
Added the `Plugin::cleanup_before_exit` hook and `plugin::Builder::on_cleanup_before_exit`, invoked by `App::cleanup_before_exit` right before the process exits so plugins can release resources such as sidecar processes. Unlike `RunEvent::Exit`, it also runs on exit paths that bypass the event loop such as `AppHandle::restart` on the main thread.

View File

@@ -0,0 +1,6 @@
---
"tauri-cli": patch:deps
"@tauri-apps/cli": patch:deps
---
Update typescript to v7 in `tauri plugin init` template. Also fixes the default `rootDir` in the template `tsconfig.json`

5
.changes/png-0.18.md Normal file
View File

@@ -0,0 +1,5 @@
---
tauri-codegen: patch:deps
---
Updated `png` crate to `0.18`

View File

@@ -0,0 +1,8 @@
---
tauri: minor:enhance
tauri-macros: minor:enhance
tauri-utils: minor:enhance
tauri-build: minor:enhance
---
Fix different build and runtime debug assertion profiles on the tauri-utils crate can resulting in compilation errors.

View File

@@ -0,0 +1,6 @@
---
'tauri-runtime': 'minor:breaking'
'tauri-runtime-wry': 'minor:breaking'
---
Changed `RuntimeHandle::primary_monitor`, `RuntimeHandle::monitor_from_point`, `RuntimeHandle::available_monitors` to return `Result`s

View File

@@ -0,0 +1,5 @@
---
"tauri-runtime-wry": "minor:changes"
---
`EventLoopIterationContext` and `UserMessageContext` now takes references to avoid clones

Some files were not shown because too many files have changed in this diff Show More