{"owner":"tauri-apps","repo":"tauri","hasSkills":true,"totalSkillsCount":34,"totalTokensCount":47125,"categories":["command-prompt","anthropic-skill","plugin-manifest","project-spec","cursor-rule"],"hasMcp":false,"mcpConfig":null,"found":["examples/commands/README.md","examples/commands/tauri.conf.json","packages/cli/package.json","packages/cli/README.md","ARCHITECTURE.md","packages/api/CHANGELOG.md","packages/cli/CHANGELOG.md","packages/api/package.json","packages/api/tsconfig.json","packages/api/README.md","packages/cli/npm/win32-x64-msvc/README.md","packages/cli/npm/win32-x64-msvc/package.json","packages/cli/npm/win32-ia32-msvc/package.json","packages/cli/npm/win32-ia32-msvc/README.md","packages/cli/npm/win32-arm64-msvc/package.json","packages/cli/npm/win32-arm64-msvc/README.md","packages/cli/npm/linux-x64-musl/package.json","packages/cli/npm/linux-x64-musl/README.md","packages/cli/npm/linux-x64-gnu/package.json","packages/cli/npm/linux-x64-gnu/README.md","packages/cli/npm/linux-riscv64-gnu/package.json","packages/cli/npm/linux-riscv64-gnu/README.md","packages/cli/npm/linux-arm64-musl/package.json","packages/cli/npm/linux-arm64-musl/README.md","packages/cli/npm/linux-arm64-gnu/package.json","packages/cli/npm/linux-arm64-gnu/README.md","packages/cli/npm/linux-arm-gnueabihf/package.json","packages/cli/npm/linux-arm-gnueabihf/README.md","packages/cli/npm/darwin-x64/package.json","packages/cli/npm/darwin-x64/README.md","packages/cli/npm/darwin-arm64/package.json","packages/cli/npm/darwin-arm64/README.md","packages/cli/__tests__/fixtures/empty/package.json",".cursorrules (tauri-svelte-typescript-guide-cursorrules-prompt-f.mdc)"],"skills":{"examples/commands/README.md":"# Commands Example\n\nA simple Tauri Application showcasing the command API.\n\nTo execute run the following on the root directory of the repository: `cargo run --example commands`.\n","examples/commands/tauri.conf.json":"{\n  \"$schema\": \"../../crates/tauri-schema-generator/schemas/config.schema.json\",\n  \"productName\": \"Commands\",\n  \"version\": \"0.1.0\",\n  \"identifier\": \"com.tauri.dev\",\n  \"build\": {\n    \"frontendDist\": [\"index.html\"]\n  },\n  \"app\": {\n    \"withGlobalTauri\": true,\n    \"windows\": [\n      {\n        \"title\": \"Welcome to Tauri!\",\n        \"width\": 800,\n        \"height\": 600,\n        \"resizable\": true,\n        \"fullscreen\": false\n      }\n    ],\n    \"security\": {\n      \"csp\": \"default-src 'self'; connect-src ipc: http://ipc.localhost\"\n    }\n  },\n  \"bundle\": {\n    \"active\": true,\n    \"targets\": \"all\",\n    \"icon\": [\n      \"../.icons/32x32.png\",\n      \"../.icons/128x128.png\",\n      \"../.icons/128x128@2x.png\",\n      \"../.icons/icon.icns\",\n      \"../.icons/icon.ico\"\n    ]\n  }\n}\n","packages/cli/package.json":"{\n  \"name\": \"@tauri-apps/cli\",\n  \"version\": \"2.12.4\",\n  \"description\": \"Command line interface for building Tauri apps\",\n  \"type\": \"commonjs\",\n  \"funding\": {\n    \"type\": \"opencollective\",\n    \"url\": \"https://opencollective.com/tauri\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/tauri-apps/tauri.git\"\n  },\n  \"contributors\": [\n    \"Tauri Programme within The Commons Conservancy\"\n  ],\n  \"license\": \"Apache-2.0 OR MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/tauri-apps/tauri/issues\"\n  },\n  \"homepage\": \"https://github.com/tauri-apps/tauri#readme\",\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"main\": \"main.js\",\n  \"types\": \"main.d.ts\",\n  \"napi\": {\n    \"binaryName\": \"cli\",\n    \"targets\": [\n      \"x86_64-unknown-linux-gnu\",\n      \"x86_64-pc-windows-msvc\",\n      \"x86_64-apple-darwin\",\n      \"aarch64-apple-darwin\",\n      \"aarch64-unknown-linux-gnu\",\n      \"aarch64-unknown-linux-musl\",\n      \"armv7-unknown-linux-gnueabihf\",\n      \"x86_64-unknown-linux-musl\",\n      \"riscv64gc-unknown-linux-gnu\",\n      \"i686-pc-windows-msvc\",\n      \"aarch64-pc-windows-msvc\"\n    ]\n  },\n  \"devDependencies\": {\n    \"@napi-rs/cli\": \"3.10.8\",\n    \"@types/node\": \"^24.11.0\",\n    \"cross-env\": \"10.1.0\",\n    \"vitest\": \"^5.0.0\"\n  },\n  \"engines\": {\n    \"node\": \">= 10\"\n  },\n  \"bin\": {\n    \"tauri\": \"./tauri.js\"\n  },\n  \"scripts\": {\n    \"artifacts\": \"napi artifacts\",\n    \"build\": \"cross-env TARGET=node napi build --platform --profile release-size-optimized\",\n    \"postbuild\": \"node append-headers.js\",\n    \"build:debug\": \"cross-env TARGET=node napi build --platform\",\n    \"postbuild:debug\": \"node append-headers.js\",\n    \"prepublishOnly\": \"napi prepublish -t npm --gh-release-id $RELEASE_ID\",\n    \"prepack\": \"cp ../../crates/tauri-schema-generator/schemas/config.schema.json .\",\n    \"version\": \"napi version\",\n    \"test\": \"vitest run\",\n    \"tauri\": \"node ./tauri.js\"\n  }\n}\n","packages/cli/README.md":"# @tauri-apps/cli\n\n <img align=\"right\" src=\"https://github.com/tauri-apps/tauri/raw/dev/.github/icon.png\" height=\"128\" width=\"128\">\n\n[![status](https://img.shields.io/badge/status-stable-blue.svg)](https://github.com/tauri-apps/tauri/tree/dev)\n[![License](https://img.shields.io/badge/License-MIT%20or%20Apache%202-green.svg)](https://opencollective.com/tauri)\n[![test cli](https://img.shields.io/github/actions/workflow/status/tauri-apps/tauri/test-cli-js.yml?label=test%20cli&logo=github)](https://github.com/tauri-apps/tauri/actions/workflows/test-cli-js.yml)\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri?ref=badge_shield)\n[![Chat Server](https://img.shields.io/badge/chat-discord-7289da.svg)](https://discord.gg/SpmNs4S)\n[![website](https://img.shields.io/badge/website-tauri.app-purple.svg)](https://tauri.app)\n[![https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg](https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg)](https://good-labs.github.io/greater-good-affirmation)\n[![support](https://img.shields.io/badge/sponsor-Open%20Collective-blue.svg)](https://opencollective.com/tauri)\n\n| Component       | Version                                               |\n| --------------- | ----------------------------------------------------- |\n| @tauri-apps/cli | ![](https://img.shields.io/npm/v/@tauri-apps/cli.svg) |\n\n## About Tauri\n\nTauri is a polyglot and generic system that is very composable and allows engineers to make a wide variety of applications. It is used for building applications for Desktop Computers using a combination of Rust tools and HTML rendered in a Webview. Apps built with Tauri can ship with any number of pieces of an optional JS API / Rust API so that webviews can control the system via message passing. In fact, developers can extend the default API with their own functionality and bridge the Webview and Rust-based backend easily.\n\nTauri apps can have custom menus and have tray-type interfaces. They can be updated, and are managed by the user's operating system as expected. They are very small, because they use the system's webview. They do not ship a runtime, since the final binary is compiled from rust. This makes the reversing of Tauri apps not a trivial task.\n\n## This module\n\nWritten in Typescript and packaged such that it can be used with `npm`, `pnpm`, `yarn`, and `bun`, this library provides a node.js runner for common tasks when using Tauri, like `pnpm tauri dev`. For the most part it is a wrapper around [tauri-cli](https://github.com/tauri-apps/tauri/blob/dev/crates/tauri-cli).\n\nTo learn more about the details of how all of these pieces fit together, please consult this [ARCHITECTURE.md](https://github.com/tauri-apps/tauri/blob/dev/ARCHITECTURE.md) document.\n\n## Installation\n\nThe preferred method is to install this module locally as a development dependency:\n\n```\n$ pnpm add -D @tauri-apps/cli\n$ yarn add -D @tauri-apps/cli\n$ npm add -D @tauri-apps/cli\n```\n\n## Semver\n\n**tauri** is following [Semantic Versioning 2.0](https://semver.org/).\n\n## Licenses\n\nCode: (c) 2019 - 2021 - The Tauri Programme within The Commons Conservancy.\n\nMIT or MIT/Apache 2.0 where applicable.\n\nLogo: CC-BY-NC-ND\n\n- Original Tauri Logo Designs by [Daniel Thompson-Yvetot](https://github.com/nothingismagick) and [Guillaume Chau](https://github.com/akryum)\n","ARCHITECTURE.md":"# The Tauri Architecture\n\n<https://tauri.app>\n\n<https://github.com/tauri-apps/tauri>\n\n## Introduction\n\nTauri is a polyglot and generic toolkit that is very composable and allows engineers to make a wide variety of applications. It is used for building applications for Desktop Computers using a combination of Rust tools and HTML rendered in a Webview. Apps built with Tauri can ship with any number of pieces of an optional JS API / Rust API so that webviews can control the system via message passing. In fact, developers can extend the default API with their own functionality and bridge the Webview and Rust-based backend easily.\n\nTauri apps can have custom menus and have tray-type interfaces. They can be updated, and are managed by the user's operating system as expected. They are very small, because they use the OS's webview. They do not ship a runtime, since the final binary is compiled from Rust. This makes the reversing of Tauri apps not a trivial task.\n\n## What Tauri is NOT\n\n- Tauri is not a lightweight kernel wrapper...instead it directly uses [WRY](https://github.com/tauri-apps/wry) and [TAO](https://github.com/tauri-apps/tao) to do the heavy-lifting in making system calls to the OS.\n- Tauri is not a VM or virtualized environment...instead it is an application toolkit that allows making Webview OS applications.\n\n## Major Components\n\nThe following section briefly describes the roles of the various parts of Tauri.\n\n### Tauri Core [STABLE RUST]\n\n#### [tauri](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri)\n\nThis is the major crate that holds everything together. It brings the runtimes, macros, utilities and API into one final product. It reads the `tauri.conf.json` file at compile time in order to bring in features and undertake actual configuration of the app (and even the `Cargo.toml` file in the project's folder). It handles script injection (for polyfills / prototype revision) at runtime, hosts the API for systems interaction, and even manages updating.\n\n#### [tauri-build](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-build)\n\nApply the macros at build-time in order to rig some special features needed by `cargo`.\n\n#### [tauri-codegen](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-codegen)\n\n- Embed, hash, and compress assets, including icons for the app as well as the system-tray.\n- Parse `tauri.conf.json` at compile time and generate the Config struct.\n\n#### [tauri-macros](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-macros)\n\nCreate macros for the context, handler, and commands by leveraging the `tauri-codegen` crate.\n\n#### [tauri-runtime](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-runtime)\n\nThis is the glue layer between tauri itself and lower level webview libraries.\n\n#### [tauri-runtime-wry](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-runtime-wry)\n\nThis crate opens up direct systems-level interactions specifically for WRY, such as printing, monitor detection, and other windowing related tasks. `tauri-runtime` implementation for WRY.\n\n#### [tauri-utils](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-utils)\n\nThis is common code that is reused in many places and offers useful utilities like parsing configuration files, detecting platform triples, injecting the CSP, and managing assets.\n\n### Tauri Tooling\n\n#### [@tauri-apps/api](https://github.com/tauri-apps/tauri/tree/dev/packages/api) [TS -> JS]\n\nA TypeScript library that creates `cjs` and `esm` JavaScript endpoints for you to import into your Frontend framework so that the Webview can call and listen to backend activity. We also ship the pure TypeScript, because for some frameworks this is more optimal. It uses the message passing of webviews to their hosts.\n\n#### [bundler](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-bundler) [RUST / SHELL]\n\nThe bundler is a library that builds a Tauri App for the platform triple it detects / is told. At the moment it currently supports macOS, Windows and Linux - but in the near future will support mobile platforms as well. May be used outside of Tauri projects.\n\n#### [@tauri-apps/cli](https://github.com/tauri-apps/tauri/tree/dev/packages/cli) [JS]\n\nIt is a wrapper around [tauri-cli](https://github.com/tauri-apps/tauri/blob/dev/crates/tauri-cli) using [napi-rs](https://github.com/napi-rs/napi-rs) to produce NPM packages for each platform.\n\n#### [tauri-cli](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-cli) [RUST]\n\nThis rust executable provides the full interface to all of the required activities for which the CLI is required. It will run on macOS, Windows, and Linux.\n\n#### [create-tauri-app](https://github.com/tauri-apps/create-tauri-app) [JS]\n\nThis is a toolkit that will enable engineering teams to rapidly scaffold out a new tauri-apps project using the frontend framework of their choice (as long as it has been configured).\n\n# External Crates\n\nThe Tauri-Apps organisation maintains two \"upstream\" crates from Tauri, namely TAO for creating and managing application windows, and WRY for interfacing with the Webview that lives within the window.\n\n## [TAO](https://github.com/tauri-apps/tao)\n\nCross-platform application window creation library in Rust that supports all major platforms like Windows, macOS, Linux, iOS and Android. Written in Rust, it is a fork of [winit](https://github.com/rust-windowing/winit) that we have extended for our own needs like menu bar and system tray.\n\n## [WRY](https://github.com/tauri-apps/wry)\n\nWRY is a cross-platform WebView rendering library in Rust that supports all major desktop platforms like Windows, macOS, and Linux.\nTauri uses WRY as the abstract layer responsible to determine which webview is used (and how interactions are made).\n\n# Additional tooling\n\n## [tauri-action](https://github.com/tauri-apps/tauri-action)\n\nThis is a github workflow that builds tauri binaries for all platforms. It is not the fastest out there, but it gets the job done and is highly configurable. Even allowing you to create a (very basic) tauri app even if tauri is not setup.\n\n## [create-pull-request](https://github.com/tauri-apps/create-pull-request)\n\nBecause this is a very risky (potentially destructive) github action, we forked it in order to have strong guarantees that the code we think is running is actually the code that is running.\n\n## [vue-cli-plugin-tauri](https://github.com/tauri-apps/vue-cli-plugin-tauri)\n\nThis plugin allows you to very quickly install tauri in a vue-cli project.\n\n## [tauri-vscode](https://github.com/tauri-apps/tauri-vscode)\n\nThis project enhances the VS Code interface with several nice-to-have features.\n\n# Tauri Plugins [documentation](https://v2.tauri.app/develop/plugins/)\n\nGenerally speaking, plugins are authored by third parties (even though there may be official, supported plugins). A plugin generally does 3 things:\n\n1. It provides rust code to do \"something\".\n2. It provides interface glue to make it easy to integrate into an app.\n3. It provides a JS API for interfacing with the rust code.\n\nHere are several examples of Tauri Plugins:\n\n- <https://github.com/tauri-apps/tauri-plugin-sql>\n- <https://github.com/tauri-apps/tauri-plugin-stronghold>\n- <https://github.com/tauri-apps/tauri-plugin-authenticator>\n\n# Workflows\n\n## What does the Development flow look like?\n\nA developer must first install the prerequisite toolchains for creating a Tauri app. At the very least this will entail installing rust & cargo, and most likely also a modern version of node.js and potentially another package manager. Some platforms may also require other tooling and libraries, but this has been documented carefully in the respective platform docs.\n\nBecause of the many ways to build front-ends, we will stick with a common node.js based approach for development. (Note: Tauri does not by default ship a node.js runtime.)\n\nThe easiest way to do this is to run the following:\n\n```\nnpm create tauri-app\n```\n\nWhich will ask you a bunch of questions about the framework you want to install and then create everything you need in a single folder - some via the placement of template files and some through normal installation procedures of your framework.\n\n> If you don't use this process, you will have to manually install the tauri cli, initialise tauri and manually configure the `tauri.conf.json` file.\n\nOnce everything is installed, you can run:\n\n```\npnpm tauri dev\n-or-\nyarn tauri dev\n-or-\nnpm run tauri dev\n```\n\nThis will do several things:\n\n1. start the JS Framework devserver\n2. begin the long process of downloading and compiling the rust libraries\n3. open an application window with devtools enabled\n4. keep a long-lived console alive\n\nIf you change your HTML/CSS/TS/JS, your framework devserver should give you its best shot at instant hot module reloading and you will see the changes instantly.\n\nIf you modify your rust code or anything in the Cargo.toml, the window will close while rust recompiles. When finished it will reload.\n\nIf you need to get deeper insight into your current project, or triage requires investigation of installed components, just run:\n\n```\npnpm tauri info\n```\n\n## What does the Release flow look like?\n\nThe release flow begins with proper configuration in the `tauri.conf.json` file. In this file, the developer can configure not only the basic behaviour of the application (like window size and decoration), they can also provide settings for signing and updating.\n\nDepending upon the operating system that the developer (or CI) is building the application on, there will be an app built for them for that system. (Cross compilation is not currently available, however there is an official [GitHub Action](https://github.com/tauri-apps/tauri-action) that can be used to build for all platforms.)\n\nTo kick off this process, just:\n\n```\npnpm tauri build\n```\n\nAfter some time, the process will end and you can see the results in the `./src-tauri/target/release` folder.\n\n## What does the End-User flow look like?\n\nEnd users will be provided with binaries in ways that are appropriate for their systems. Whether macOS, Linux, or Windows, direct download or store installations - they will be able to follow procedures for installing and removing that they are used to.\n\n## What does the Updating flow look like?\n\nWhen a new version is ready, the developer publishes the new signed artifacts to a server (that they have configured within `tauri.conf.json`).\n\nThe application can poll this server to see if there is a new release. When there is a new release, the user is prompted to update. The application update is downloaded, verified (checksum & signature), updated, closed, and restarted.\n\n## License\n\nTauri itself is licensed under MIT or Apache-2.0. If you repackage it and modify any source code, it is your responsibility to verify that you are complying with all upstream licenses. Tauri is provided AS-IS with no explicit claim for suitability for any purpose.\n\nHere you may peruse our [Software Bill of Materials](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri).\n","packages/api/CHANGELOG.md":"# Changelog\n\n## [2.12.4]\n\n### What's Changed\n\n- [`dc637db65`](https://www.github.com/tauri-apps/tauri/commit/dc637db6573443cc668b06deed1f014c4ac01033) ([#16260](https://www.github.com/tauri-apps/tauri/pull/16260)) Improve menu documentation.\n\n## [2.12.3]\n\n### Bug Fixes\n\n- [`0204f6f3a`](https://www.github.com/tauri-apps/tauri/commit/0204f6f3ae1e8dda195b216b32c3ab1d95d928e0) ([#16244](https://www.github.com/tauri-apps/tauri/pull/16244)) Keep delivering `Channel` messages after the `onmessage` handler throws. The error is rethrown asynchronously so it is still reported as uncaught, instead of leaving every later message queued.\n\n## [2.12.2]\n\n### Bug Fixes\n\n- [`a916205db`](https://www.github.com/tauri-apps/tauri/commit/a916205db2c21a2475502452efa9b70132ae52f3) ([#16195](https://www.github.com/tauri-apps/tauri/pull/16195) by [@alessandrorodi](https://www.github.com/tauri-apps/tauri/../../alessandrorodi)) Return an awaitable cleanup function from `Window.onDragDropEvent`, `Window.onFocusChanged` and `Webview.onDragDropEvent` so rejections from the inner unlisten calls can be handled instead of surfacing as unhandled promise rejections.\n- [`a98038ec7`](https://www.github.com/tauri-apps/tauri/commit/a98038ec78422b821b2e25b26fb71a2805741673) ([#16235](https://www.github.com/tauri-apps/tauri/pull/16235) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix `Menu`/`Submenu` `append`, `prepend`, `insert` not taking `MenuItemOptions` as the typescript type suggests\n\n## [2.12.1]\n\n### Bug Fixes\n\n- [`c9a3cb892`](https://www.github.com/tauri-apps/tauri/commit/c9a3cb892e901e39ca46aad2ff6b14aac21fea0d) ([#16166](https://www.github.com/tauri-apps/tauri/pull/16166) by [@FabianLars](https://www.github.com/tauri-apps/tauri/../../FabianLars)) The `macos-private-api` feature flag / `macOSPrivateAPI` tauri.conf.json value is no longer required to use transparency or fullscreen on macOS.\n\n## [2.12.0]\n\n### New Features\n\n- [`d8d02ba60`](https://www.github.com/tauri-apps/tauri/commit/d8d02ba60c041fb0ab4f5631e8ea21ce7231a95a) ([#14767](https://www.github.com/tauri-apps/tauri/pull/14767)) 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.\n- [`990f77eb2`](https://www.github.com/tauri-apps/tauri/commit/990f77eb2f16b431dd5fd8b1059e6112647cca7a) ([#15961](https://www.github.com/tauri-apps/tauri/pull/15961)) Added `JsImage` type alias and documented its relationship to the Rust `JsImage`\n- [`29265557c`](https://www.github.com/tauri-apps/tauri/commit/29265557c7a42ef6a1f982e0ef738208df1f6dd3) ([#15410](https://www.github.com/tauri-apps/tauri/pull/15410)) Added `noRedirectionBitmap` option to the `Window` and `WebviewWindow` constructors on Windows.\n- [`6edc2f4d4`](https://www.github.com/tauri-apps/tauri/commit/6edc2f4d49d2477649bf170aa2867276c25573da) ([#14926](https://www.github.com/tauri-apps/tauri/pull/14926)) Added `Window::set_fullscreen_on_monitor`, `WebviewWindow::set_fullscreen_on_monitor` and the `setFullscreenOnMonitor` JavaScript API to make a window fullscreen on the monitor containing a given physical position, along with the `core:window:allow-set-fullscreen-on-monitor` permission.\n\n### Enhancements\n\n- [`be019795a`](https://www.github.com/tauri-apps/tauri/commit/be019795abc0316aa53f2519bfbf3e7624b9af2e) ([#14103](https://www.github.com/tauri-apps/tauri/pull/14103)) Add ECMAScript Explicit Resource Management to Resource. You can now use the `using` syntax in supported browsers or with polyfills:\n    \n    ```javascript\n    import { create, BaseDirectory } from \"@tauri-apps/plugin-fs\"\n    ...\n    {\n      await using file = await create(\"foo/bar.txt\", { baseDir: BaseDirectory.AppConfig });\n      await file.write(new TextEncoder().encode(\"Hello world\"));\n      // Before `file` goes out of scope, it is disposed by calling `file[Symbol.asyncDispose]()` and awaited.\n    }\n    ```\n- [`4a5065653`](https://www.github.com/tauri-apps/tauri/commit/4a506565374a6a0b4b595e4cdb6d7db68136d765) ([#14454](https://www.github.com/tauri-apps/tauri/pull/14454)) 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.\n\n### Bug Fixes\n\n- [`4fabe2ff1`](https://www.github.com/tauri-apps/tauri/commit/4fabe2ff1bfe28bbcd3335546caf7db7ff970706) ([#16067](https://www.github.com/tauri-apps/tauri/pull/16067)) 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.\n- [`32efd0232`](https://www.github.com/tauri-apps/tauri/commit/32efd0232d868984ac8de9efebae19e464c7c536) ([#15957](https://www.github.com/tauri-apps/tauri/pull/15957)) `Image.rgba` now returns a more specific type `Promise<Uint8Array<ArrayBuffer>>` instead of the default `Promise<Uint8Array<ArrayBufferLike>`\n\n## \\[2.11.1]\n\n### Enhancements\n\n- [`916782601`](https://www.github.com/tauri-apps/tauri/commit/9167826011cc3d114bf12dfb301968fae479891f) ([#15520](https://www.github.com/tauri-apps/tauri/pull/15520) by [@polw1](https://www.github.com/tauri-apps/tauri/../../polw1)) Document that `Monitor.size`, `Monitor.position` and `Monitor.workArea` are in physical pixels, with examples showing how to convert them to the logical pixels expected by window creation options via `toLogical(monitor.scaleFactor)`.\n\n## \\[2.11.0]\n\n### New Features\n\n- [`074299c08`](https://www.github.com/tauri-apps/tauri/commit/074299c08dd99d2e1c57796f55ab24bc1d3976cc) ([#14307](https://www.github.com/tauri-apps/tauri/pull/14307)) Add Bring All to Front predefined menu item type\n- [`a12142a48`](https://www.github.com/tauri-apps/tauri/commit/a12142a481f7a19b69e88ee36a438b1db71b36f5) ([#14357](https://www.github.com/tauri-apps/tauri/pull/14357)) Add macos support for setting the icon and icon template state in the same step of the main thread, to prevent flickering.\n- [`001c8fe3d`](https://www.github.com/tauri-apps/tauri/commit/001c8fe3d288802de9a8c29cfd2f46f9220d97c5) ([#14722](https://www.github.com/tauri-apps/tauri/pull/14722)) Add a WebView option to control browser-level general autofill behavior. This option does not disable password or credit card autofill. On Windows (WebView2), setting it to true disables the general autofill \"Suggestions\" UI, which may appear even when `autocomplete=\"off\"` is specified on input elements. On Linux, macOS, iOS, and Android, this option is currently unsupported and performs no operation.\n- [`eb0312ea9`](https://www.github.com/tauri-apps/tauri/commit/eb0312ea9e493954298ac0b3fdaae7eafb52750e) ([#15199](https://www.github.com/tauri-apps/tauri/pull/15199)) Propagates the `Event::Suspended` and `Event::Resumed` events from `tao` when they are emitted on mobile targets.\n\n## \\[2.10.1]\n\n### Bug Fixes\n\n- Re-release of `2.10.0` with working assets.\n\n## \\[2.10.0]\n\n### Dependencies\n\n- [`517b81e97`](https://www.github.com/tauri-apps/tauri/commit/517b81e97005d087ca5fc4538d954982fce0f4ac) ([#14876](https://www.github.com/tauri-apps/tauri/pull/14876)) Upgraded to `tauri@2.10`\n\n## \\[2.9.1]\n\n### Bug Fixes\n\n- [`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\n\n## \\[2.9.0]\n\n### New Features\n\n- [`f5851ee00`](https://www.github.com/tauri-apps/tauri/commit/f5851ee00d6d1f4d560a220ca5a728fedd525092) ([#14089](https://www.github.com/tauri-apps/tauri/pull/14089)) Adds the `scrollBarStyle` option to the Webview and WebviewBuilder constructors.\n- [`3397fd9bf`](https://www.github.com/tauri-apps/tauri/commit/3397fd9bfe5f6b1337110149f6c34731b8a44bb3) ([#14133](https://www.github.com/tauri-apps/tauri/pull/14133)) Added `app > onBackButtonPress` for Android back button handling.\n\n### Enhancements\n\n- [`59089723f`](https://www.github.com/tauri-apps/tauri/commit/59089723fc20d66f3f305f2008adeb279bf87462) ([#14091](https://www.github.com/tauri-apps/tauri/pull/14091)) Added a config to set a data_directory relative to the app-specific data dir in JavaScript and `tauri.conf.json`.\n\n### Bug Fixes\n\n- [`08bda64c2`](https://www.github.com/tauri-apps/tauri/commit/08bda64c25008bd45c5b58d06ff14649081a2f5d) ([#14132](https://www.github.com/tauri-apps/tauri/pull/14132)) Fix `core > addPluginListener` failing on command permission check.\n\n## \\[2.8.0]\n\n### New Features\n\n- [`68874c68c`](https://www.github.com/tauri-apps/tauri/commit/68874c68c566638b4c21a3aa67844d1bdaeb6dab) ([#13564](https://www.github.com/tauri-apps/tauri/pull/13564) by [@robertrpf](https://www.github.com/tauri-apps/tauri/../../robertrpf)) Add window focusable attribute and set_focusable API.\n- [`5110a762e`](https://www.github.com/tauri-apps/tauri/commit/5110a762e9db978a28a15400bf76e3c864da2a86) ([#13830](https://www.github.com/tauri-apps/tauri/pull/13830) by [@Sky-walkerX](https://www.github.com/tauri-apps/tauri/../../Sky-walkerX)) Added `Window::setSimpleFullscreen`.\n\n### Enhancements\n\n- [`5ba1c3faa`](https://www.github.com/tauri-apps/tauri/commit/5ba1c3faa468073512bdb5035a01f7f99720fcf0) ([#13722](https://www.github.com/tauri-apps/tauri/pull/13722) by [@s00d](https://www.github.com/tauri-apps/tauri/../../s00d)) Added icon (icon and nativeIcon) support for Submenu:\n\n  - In the Rust API (`tauri`), you can now set an icon for submenus via the builder and dedicated methods.\n  - In the JS/TS API (`@tauri-apps/api`), `SubmenuOptions` now has an `icon` field, and the `Submenu` class provides `setIcon` and `setNativeIcon` methods.\n  - Usage examples are added to the documentation and demo app.\n\n  This is a backwards-compatible feature. Submenus can now display icons just like regular menu items.\n\n## \\[2.7.0]\n\n### New Features\n\n- [`232265c70`](https://www.github.com/tauri-apps/tauri/commit/232265c70e1c213bbb3f84b5541ddc07d330fce1) ([#13209](https://www.github.com/tauri-apps/tauri/pull/13209) by [@kandrelczyk](https://www.github.com/tauri-apps/tauri/../../kandrelczyk)) Added `getBundleType` to the app module.\n\n### Enhancements\n\n- [`96391467e`](https://www.github.com/tauri-apps/tauri/commit/96391467e967c1e3c6475ce75166c58a326116a3) ([#13783](https://www.github.com/tauri-apps/tauri/pull/13783) by [@JosephBrooksbank](https://www.github.com/tauri-apps/tauri/../../JosephBrooksbank)) Allow events emitted with `emit` to be handled correctly by `listen` callbacks when in a mocked environment\n\n### Bug Fixes\n\n- [`152d971bc`](https://www.github.com/tauri-apps/tauri/commit/152d971bcd6c1fdc5716f7d5417dd4df5ce7479f) ([#13744](https://www.github.com/tauri-apps/tauri/pull/13744) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Expose `unregisterCallback`, `runCallback`, `callbacks` in `mockIPC`\n- [`b821796ad`](https://www.github.com/tauri-apps/tauri/commit/b821796add33cca4de72f48882684af487936d02) ([#13810](https://www.github.com/tauri-apps/tauri/pull/13810) by [@asdolo](https://www.github.com/tauri-apps/tauri/../../asdolo)) Add missing `trafficLightPosition` TypeScript type definition\n\n## \\[2.6.0]\n\n### New Features\n\n- [`50ebddaa2`](https://www.github.com/tauri-apps/tauri/commit/50ebddaa2d83033a393a176ba07ef28352b98210) ([#13319](https://www.github.com/tauri-apps/tauri/pull/13319) by [@kingsword09](https://www.github.com/tauri-apps/tauri/../../kingsword09)) Expose the `setAutoResize` API for webviews in `@tauri-apps/api`.\n- [`267368fd4`](https://www.github.com/tauri-apps/tauri/commit/267368fd4f83e0a71dfb1b72a66d56592a2066bc) ([#13276](https://www.github.com/tauri-apps/tauri/pull/13276) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `Monitor.workArea` field.\n\n### Bug Fixes\n\n- [`23b9da75b`](https://www.github.com/tauri-apps/tauri/commit/23b9da75b91379cca9520bc53b10fdf39ebae241) ([#13324](https://www.github.com/tauri-apps/tauri/pull/13324) by [@kingsword09](https://www.github.com/tauri-apps/tauri/../../kingsword09)) Fixed path joining behavior where `path.join('', 'a')` incorrectly returns \"/a\" instead of \"a\".\n- [`b985eaf0a`](https://www.github.com/tauri-apps/tauri/commit/b985eaf0a231ea570e36d686c665cddbc76ab4f6) ([#13306](https://www.github.com/tauri-apps/tauri/pull/13306) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Immediately unregister event listener when the unlisten function is called.\n\n### What's Changed\n\n- [`b5c549d18`](https://www.github.com/tauri-apps/tauri/commit/b5c549d1898ecdb712822c02dc665cc6771fbd07) ([#13325](https://www.github.com/tauri-apps/tauri/pull/13325) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) `transformCallback` now registers the callbacks inside `window.__TAURI_INTERNALS__.callbacks` instead of directly on `window['_{id}']`\n\n## \\[2.5.0]\n\n### New Features\n\n- [`66e6325f4`](https://www.github.com/tauri-apps/tauri/commit/66e6325f43efa49ec2165c45afec911a1a14ecfb) ([#13136](https://www.github.com/tauri-apps/tauri/pull/13136)) Allow passing the callback as the parameter of constructor of `Channel` so you can use it like this `new Channel((message) => console.log(message))`\n- [`ea36294cb`](https://www.github.com/tauri-apps/tauri/commit/ea36294cbca98f7725c91d1464fd92e77c89698a) ([#13208](https://www.github.com/tauri-apps/tauri/pull/13208)) Added `disableInputAccessoryView: bool` config for iOS.\n- [`c1cd0a2dd`](https://www.github.com/tauri-apps/tauri/commit/c1cd0a2ddb5bc3e99451cbe399b5fc9f0035f571) ([#13090](https://www.github.com/tauri-apps/tauri/pull/13090)) macOS/iOS: add option to disable or enable link previews when building a webview (the webkit api has it enabled by default)\n\n  - `WindowOptions::allowLinkPreview`\n  - `WebviewOptions::allowLinkPreview`\n- [`b072e2b29`](https://www.github.com/tauri-apps/tauri/commit/b072e2b2967640ae4fa1af466ae878c156551edd) ([#9687](https://www.github.com/tauri-apps/tauri/pull/9687)) Add `preventOverflow` config option to prevent the window from overflowing the monitor size on creation\n- [`dd4f13ce4`](https://www.github.com/tauri-apps/tauri/commit/dd4f13ce4b3cd89cde2fa3f18a063c272f215621) ([#13185](https://www.github.com/tauri-apps/tauri/pull/13185)) Added `app.setDockVisibility` for macOS.\n\n### Enhancements\n\n- [`b8f86669a`](https://www.github.com/tauri-apps/tauri/commit/b8f86669ab05f7dbdd15839a20999e63dc43bda6) ([#13145](https://www.github.com/tauri-apps/tauri/pull/13145)) `core.isTauri` now leverages `globalThis` instead of `window` in order to be used in unit tests.\n\n### Bug Fixes\n\n- [`66e6325f4`](https://www.github.com/tauri-apps/tauri/commit/66e6325f43efa49ec2165c45afec911a1a14ecfb) ([#13136](https://www.github.com/tauri-apps/tauri/pull/13136)) Fix `Channel`'s callback attached to `window` never cleaned up\n\n## \\[2.4.1]\n\n### Enhancements\n\n- [`dd1372833`](https://www.github.com/tauri-apps/tauri/commit/dd137283341ce0e6aabfd158d07d77c6feeb920e) ([#13066](https://www.github.com/tauri-apps/tauri/pull/13066) by [@ahaoboy](https://www.github.com/tauri-apps/tauri/../../ahaoboy)) Add a generic to `emit` and `emitTo` functions for the `payload` instead of the previously used type (`unknown`).\n\n## \\[2.4.0]\n\n### New Features\n\n- [`d8059bad3`](https://www.github.com/tauri-apps/tauri/commit/d8059bad3cc922dc369c39ca1cfa49aaec31322e) ([#12900](https://www.github.com/tauri-apps/tauri/pull/12900) by [@Simon-Laux](https://www.github.com/tauri-apps/tauri/../../Simon-Laux)) add `AppHandle.fetch_data_store_identifiers` and `AppHandle.remove_data_store` (macOS and iOS only)\n- [`20c190691`](https://www.github.com/tauri-apps/tauri/commit/20c19069125c89b2d45a2127278c9ffc2df35fc2) ([#12821](https://www.github.com/tauri-apps/tauri/pull/12821) by [@Simon-Laux](https://www.github.com/tauri-apps/tauri/../../Simon-Laux)) Added `WindowOptions::javascriptDisabled` and `WebviewOptions::javascriptDisabled`.\n- [`060de5bbd`](https://www.github.com/tauri-apps/tauri/commit/060de5bbdddca384e3965a8938d89840f27c581d) ([#12837](https://www.github.com/tauri-apps/tauri/pull/12837) by [@niladrix719](https://www.github.com/tauri-apps/tauri/../../niladrix719)) Added `getIdentifier()` function to get the application identifier configured in tauri.conf.json\n- [`be2e6b85f`](https://www.github.com/tauri-apps/tauri/commit/be2e6b85fed226732b4a98f68cc5d72b4f8f5a13) ([#12944](https://www.github.com/tauri-apps/tauri/pull/12944) by [@Simon-Laux](https://www.github.com/tauri-apps/tauri/../../Simon-Laux)) Added `Window#isAlwaysOnTop` and `WebviewWindow#isAlwaysOnTop` methods.\n- [`bcdd51025`](https://www.github.com/tauri-apps/tauri/commit/bcdd510254ebe37827e22a5ffeb944321361e97c) ([#13012](https://www.github.com/tauri-apps/tauri/pull/13012) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) The `path` basename and extname APIs now accept Android content URIs, such as the paths returned by the dialog plugin.\n\n### Bug Fixes\n\n- [`3a74dc8f3`](https://www.github.com/tauri-apps/tauri/commit/3a74dc8f3421112b1d0a32b6a432606b1f33cc25) ([#12935](https://www.github.com/tauri-apps/tauri/pull/12935) by [@tk103331](https://www.github.com/tauri-apps/tauri/../../tk103331)) Fix `Webview.close` always fail with command not found\n\n## \\[2.3.0]\n\n### Enhancements\n\n- [`a2d36b8c3`](https://www.github.com/tauri-apps/tauri/commit/a2d36b8c34a8dcfc6736797ca5cd4665faf75e7e) ([#12181](https://www.github.com/tauri-apps/tauri/pull/12181) by [@bastiankistner](https://www.github.com/tauri-apps/tauri/../../bastiankistner)) Add an option to change the default background throttling policy (currently for WebKit only).\n\n## \\[2.2.0]\n\n### New Features\n\n- [`020ea0556`](https://www.github.com/tauri-apps/tauri/commit/020ea05561348dcd6d2a7df358f8a5190f661ba2) ([#11661](https://www.github.com/tauri-apps/tauri/pull/11661) by [@ahqsoftwares](https://www.github.com/tauri-apps/tauri/../../ahqsoftwares)) Add badging APIs:\n\n  - `Window/WebviewWindow::set_badge_count` for Linux, macOS and IOS.\n  - `Window/WebviewWindow::set_overlay_icon` for Windows Only.\n  - `Window/WebviewWindow::set_badge_label`for macOS Only.\n- [`fc30b20be`](https://www.github.com/tauri-apps/tauri/commit/fc30b20bea125f647db00ca824663f8e1da4d61f) ([#11726](https://www.github.com/tauri-apps/tauri/pull/11726) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `TrayIcon.setShowMenuOnLeftClick` method and deprecate `TrayIcon.setMenuOnLeftClick` to match the Rust API.\n- [`fc30b20be`](https://www.github.com/tauri-apps/tauri/commit/fc30b20bea125f647db00ca824663f8e1da4d61f) ([#11726](https://www.github.com/tauri-apps/tauri/pull/11726) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `TrayIconOptions.showMenuOnLeftClick` field and deprecate `TrayIconOptions.menuOnLeftClick` to match the Rust API.\n\n### Enhancements\n\n- [`fc30b20be`](https://www.github.com/tauri-apps/tauri/commit/fc30b20bea125f647db00ca824663f8e1da4d61f) ([#11726](https://www.github.com/tauri-apps/tauri/pull/11726) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add support for `TrayIconOptions.menuOnLeftClick` option and `TrayIcon.setMenuOnLeftClick` on Windows.\n\n### Bug Fixes\n\n- [`a16796a55`](https://www.github.com/tauri-apps/tauri/commit/a16796a55592cf5be80043edfbb630dd2e32efab) ([#12069](https://www.github.com/tauri-apps/tauri/pull/12069) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix `Channel` never calls `onmessage` in some cases\n- [`12a48d1e2`](https://www.github.com/tauri-apps/tauri/commit/12a48d1e26a83c3915eaa0687b196fbc8f2d457a) ([#11741](https://www.github.com/tauri-apps/tauri/pull/11741) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Fix error when calling `PredefinedMenuItem.new` to create an `About` menu item that uses an `Image` instance for the about icon.\n- [`12a48d1e2`](https://www.github.com/tauri-apps/tauri/commit/12a48d1e26a83c3915eaa0687b196fbc8f2d457a) ([#11741](https://www.github.com/tauri-apps/tauri/pull/11741) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Fix error when calling `IconMenuItem.new` using an `Image` instance for the icon.\n- [`b63262cd4`](https://www.github.com/tauri-apps/tauri/commit/b63262cd4d6a3667ca1664607a0a5444ad79fe0e) ([#11724](https://www.github.com/tauri-apps/tauri/pull/11724) by [@FabianLars](https://www.github.com/tauri-apps/tauri/../../FabianLars)) Removed the generic in the type of the callback function argument in `mockIPC` which prevented its proper use in tests using TypeScript.\n- [`a6e84f7d2`](https://www.github.com/tauri-apps/tauri/commit/a6e84f7d2c1d5fdc65901fce683502be3f47833f) ([#11835](https://www.github.com/tauri-apps/tauri/pull/11835) by [@ilittlebig](https://www.github.com/tauri-apps/tauri/../../ilittlebig)) Fix error where using `isAbsolute` would return `Command not found`.\n\n## \\[2.1.1]\n\n### Bug Fixes\n\n- [`7f81f0523`](https://www.github.com/tauri-apps/tauri/commit/7f81f052365675721312aafba297a7b67fb872d2) Fix regression in `toLogical` and `toPhysical` for position types in `dpi` module returning incorrect `y` value.\n- [`e8a50f6d7`](https://www.github.com/tauri-apps/tauri/commit/e8a50f6d760fad4529e7abb400302a1b487f11dd) ([#11645](https://www.github.com/tauri-apps/tauri/pull/11645)) Fix integer values of `BasDirectory.Home` and `BaseDirectory.Font` regression which broke path APIs in JS.\n\n## \\[2.1.0]\n\n### New Features\n\n- [`5c4b83084`](https://www.github.com/tauri-apps/tauri/commit/5c4b830843ab085f8ff9db9e08d832223b027e4e) ([#11191](https://www.github.com/tauri-apps/tauri/pull/11191) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Improved support for `dpi` module types to allow these types to be used without manual conversions with `invoke`:\n\n  - Added `SERIALIZE_TO_IPC_FN` const in `core` module which can be used to implement custom IPC serialization for types passed to `invoke`.\n  - Added `Size` and `Position` classes in `dpi` module.\n  - Implementd `SERIALIZE_TO_IPC_FN` method on `PhysicalSize`, `PhysicalPosition`, `LogicalSize` and `LogicalPosition` to convert it into a valid IPC-compatible value that can be deserialized correctly on the Rust side into its equivalent struct.\n- [`4d545ab3c`](https://www.github.com/tauri-apps/tauri/commit/4d545ab3ca228c8a21b966b709f84a0da2864479) ([#11486](https://www.github.com/tauri-apps/tauri/pull/11486) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Added `Webview::setBackgroundColor`, `WebviewWindow::setBackgroundColor` APIs to set the window background color dynamically\n  and a `backgroundColor` window option to set the background color on window creation.\n- [`cbc095ec5`](https://www.github.com/tauri-apps/tauri/commit/cbc095ec5fe7de29b5c9265576d4e071ec159c1c) ([#11451](https://www.github.com/tauri-apps/tauri/pull/11451) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `app > windows > devtools` config option and when creating the webview from JS, to enable or disable devtools for a specific webview.\n- [`2a75c64b5`](https://www.github.com/tauri-apps/tauri/commit/2a75c64b5431284e7340e8743d4ea56a62c75466) ([#11469](https://www.github.com/tauri-apps/tauri/pull/11469) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Added `windowClassname` option, when constructing a `Webview` or `WebviewWindow`, to specify the name of the window class on Windows.\n\n### Bug Fixes\n\n- [`54cbf59b5`](https://www.github.com/tauri-apps/tauri/commit/54cbf59b5a572570a47237a3b5e6505f2a9e5d5d) ([#11441](https://www.github.com/tauri-apps/tauri/pull/11441) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Fix submenu created as a menu item instead of a submenu when created by using an object in the `items` field in the options object passed to `Menu.new` or `Submenu.new`.\n\n## \\[2.0.3]\n\n### Bug Fixes\n\n- [`fbb45c674`](https://www.github.com/tauri-apps/tauri/commit/fbb45c674ca92fbbe04f1a8360e5f2e477dd4297) ([#11423](https://www.github.com/tauri-apps/tauri/pull/11423) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Fixes `addPluginListener` not working.\n\n### What's Changed\n\n- [`2e88633ba`](https://www.github.com/tauri-apps/tauri/commit/2e88633ba4da8fc289c6d8a29c36f3327f9b576e) ([#11369](https://www.github.com/tauri-apps/tauri/pull/11369) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Remove references to no longer used `__TAURI_INTERNALS__.metadata.windows` and `__TAURI_INTERNALS__.metadata.webviews`.\n\n## \\[2.0.2]\n\n### What's Changed\n\n- [`e968b3d25`](https://www.github.com/tauri-apps/tauri/commit/e968b3d2527b8edf7653e6cf7284dc4a8889b5fe) ([#11219](https://www.github.com/tauri-apps/tauri/pull/11219) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Actually publish package with the latest tag.\n\n## \\[2.0.1]\n\n### What's Changed\n\n- [`be683e2ac`](https://www.github.com/tauri-apps/tauri/commit/be683e2ac36df9c51a5c050d9d500247bd019090) ([#11199](https://www.github.com/tauri-apps/tauri/pull/11199) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Publish package with the latest NPM tag.\n\n## \\[2.0.0]\n\n### What's Changed\n\n- [`637285790`](https://www.github.com/tauri-apps/tauri/commit/6372857905ae9c0aedb7f482ddf6cf9f9836c9f2) Promote to v2 stable!\n\n## \\[2.0.0-rc.6]\n\n### New Features\n\n- [`9014a3f17`](https://www.github.com/tauri-apps/tauri/commit/9014a3f1765ca406ea5c3e5224267a79c52cd53d) ([#11066](https://www.github.com/tauri-apps/tauri/pull/11066) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `WebviewWindow.clearAllBrowsingData` and `Webview.clearAllBrowsingData` to clear the webview browsing data.\n- [`95df53a2e`](https://www.github.com/tauri-apps/tauri/commit/95df53a2ed96873cd35a4b14a5e312d07e4e3004) ([#11143](https://www.github.com/tauri-apps/tauri/pull/11143) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Add the ability to set theme dynamically using `Window.setTheme` or `setTheme` function from the `app` module\n- [`d9d2502b4`](https://www.github.com/tauri-apps/tauri/commit/d9d2502b41e39efde679e30c8955006e2ba9ea64) ([#11140](https://www.github.com/tauri-apps/tauri/pull/11140) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `Webview.hide` and `Webview.show` methods.\n- [`de7414aab`](https://www.github.com/tauri-apps/tauri/commit/de7414aab935e45540594ea930eb60bae4dbc979) ([#11154](https://www.github.com/tauri-apps/tauri/pull/11154) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `Window::setEnabled` and `Window::isEnabled` methods\n\n### Bug Fixes\n\n- [`948772a65`](https://www.github.com/tauri-apps/tauri/commit/948772a657eb3caf20843628abac9109e3b67d41) ([#11114](https://www.github.com/tauri-apps/tauri/pull/11114) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Change the `button_state` tray event field to camelCase `buttonState`.\n\n### Breaking Changes\n\n- [`0b4495996`](https://www.github.com/tauri-apps/tauri/commit/0b4495996d3131a5ee80fbb2c71a28203e491ee7) ([#11121](https://www.github.com/tauri-apps/tauri/pull/11121) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Simplified emitted tray event JS value and updated `TrayIconEvent` type definition to match it.\n\n## \\[2.0.0-rc.5]\n\n### New Features\n\n- [`ddf69157b`](https://www.github.com/tauri-apps/tauri/commit/ddf69157b54249f3321ca72db6703812019f1ab9) ([#11031](https://www.github.com/tauri-apps/tauri/pull/11031) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `toPhysical` method on `LogicalPositon` and `LogicalSize` classes.\n\n## \\[2.0.0-rc.4]\n\n### Enhancements\n\n- [`f81929e25`](https://www.github.com/tauri-apps/tauri/commit/f81929e25104aa1091e464bd012c80649dedf9e5) ([#10799](https://www.github.com/tauri-apps/tauri/pull/10799) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Added `PermissionState`, `checkPermissions` and `requestPermissions` base APIs to the core module, designed for plugin authors to extend.\n\n### Bug Fixes\n\n- [`fbe76a955`](https://www.github.com/tauri-apps/tauri/commit/fbe76a955a63af9fb33f66d5f747caf858cf179b) ([#10797](https://www.github.com/tauri-apps/tauri/pull/10797) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Uint8Arrays and ArrayBuffers are now properly serialized as an array of numbers.\n\n## \\[2.0.0-rc.3]\n\n### What's Changed\n\n- [`f4d5241b3`](https://www.github.com/tauri-apps/tauri/commit/f4d5241b377d0f7a1b58100ee19f7843384634ac) ([#10731](https://www.github.com/tauri-apps/tauri/pull/10731) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Update documentation icon path.\n\n## \\[2.0.0-rc.2]\n\n### Bug Fixes\n\n- [`c689521a7`](https://www.github.com/tauri-apps/tauri/commit/c689521a7674b6562b5dfd4f5cacd12138d99d85) ([#10681](https://www.github.com/tauri-apps/tauri/pull/10681) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Fix tslib path in dist.\n\n## \\[2.0.0-rc.1]\n\n### Breaking Changes\n\n- [`b6dca99ff`](https://www.github.com/tauri-apps/tauri/commit/b6dca99fff73816a39380b288c299b47b493cfdb) ([#10630](https://www.github.com/tauri-apps/tauri/pull/10630) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Changed `WebviewWindow.getAll`, `WebviewWindow.getByLabel`, `getAllWebviewWindows`,\n  `Window.getAll`, `Window.getByLabel`, `getAllWindows`,\n  `Webview.getAll`, `Webview.getByLabel`, `getAllWebviews`\n  to be async so their return value are synchronized with the state from the Rust side,\n  meaning new and destroyed windows are reflected.\n\n## \\[2.0.0-rc.0]\n\n### Changes\n\n- Promoted to RC!\n\n## \\[2.0.0-beta.16]\n\n### New Features\n\n- [`da25f7353`](https://www.github.com/tauri-apps/tauri/commit/da25f7353070477ba969851e974379d7666d6806) ([#10242](https://www.github.com/tauri-apps/tauri/pull/10242) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add APIs to enable setting window size constraints separately:\n\n  - Added `WindowSizeConstraints` interface in `window` and `webviewWindow` modules.\n  - Added `Window.setSizeConstraints` and `WebviewWindow.setSizeConstraints`\n\n### Bug Fixes\n\n- [`3c17fb64f`](https://www.github.com/tauri-apps/tauri/commit/3c17fb64fd822597d5cc16ee7e7b3f9e1023637b) ([#10277](https://www.github.com/tauri-apps/tauri/pull/10277) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix `Webview.reparent` pointing to `set_webview_focus` instead of `reparent` Rust API\n- [`da25f7353`](https://www.github.com/tauri-apps/tauri/commit/da25f7353070477ba969851e974379d7666d6806) ([#10242](https://www.github.com/tauri-apps/tauri/pull/10242) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Apply `minWidth`, `minHieght`, `maxWidth` and `maxHeight` constraints separately, which fixes a long standing bug where these constraints were never applied unless width and height were constrained together.\n\n## \\[2.0.0-beta.15]\n\n### New Features\n\n- [`7bc6a2a1d`](https://www.github.com/tauri-apps/tauri/commit/7bc6a2a1d6d2c5406d91cac94d33bce76443c28f) ([#9788](https://www.github.com/tauri-apps/tauri/pull/9788) by [@pewsheen](https://www.github.com/tauri-apps/tauri/../../pewsheen)) Add a new method to set title bar style dynamically on macOS.\n\n### Enhancements\n\n- [`080b6e127`](https://www.github.com/tauri-apps/tauri/commit/080b6e12720b89d839c686d7067cc94d276ed7e4) ([#10246](https://www.github.com/tauri-apps/tauri/pull/10246) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Use `EventName` on `Window`, `Webview` and `WebviewWindow`'s `once` so you can get auto complete for tauri's built-in events\n\n### Bug Fixes\n\n- [`080b6e127`](https://www.github.com/tauri-apps/tauri/commit/080b6e12720b89d839c686d7067cc94d276ed7e4) ([#10246](https://www.github.com/tauri-apps/tauri/pull/10246) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix `once` doesn't detached after one callback if event handler throws\n\n### Breaking Changes\n\n- [`261c9f942`](https://www.github.com/tauri-apps/tauri/commit/261c9f942de9a598b5c6cc504de6bddd1306113b) ([#10170](https://www.github.com/tauri-apps/tauri/pull/10170) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Renamed drag and drop events in `TauriEvent` enum to better convey when they are triggered:\n\n  - `TauriEvent.DRAG` -> `TauriEvent.DRAG_ENTER`\n  - `TauriEvent.DROP_OVER` -> `TauriEvent.DRAG_OVER`\n  - `TauriEvent.DROP` -> `TauriEvent.DRAG_DROP`\n  - `TauriEvent.DROP_CANCELLED` -> `TauriEvent::DRAG_LEAVE`\n\n  Also the `type` field values in `Window/Webview/WebviewWindow.onDropEvent` and `DragDropEvent` have changed:\n\n  - `dragged` -> `enter`\n  - `dragOver` -> `over`\n  - `dropped` -> `drop`\n  - `cancelled` -> `leave`\n- [`2b1ceb40d`](https://www.github.com/tauri-apps/tauri/commit/2b1ceb40d345aef42dd79438fa69ca7989ee0194) ([#10229](https://www.github.com/tauri-apps/tauri/pull/10229) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Renamed the JS `getCurrent` and `getAll` functions to a clearer name to avoid ambiguity:\n\n  - `getCurrent` in `window` module has been renamed to `getCurrentWindow`\n  - `getCurrent` in `webview` module has been renamed to `getCurrentWebview`\n  - `getCurrent` in `webviewWindow` module has been renamed to `getCurrentWebviewWindow`\n  - `getAll` in `window` module has been renamed to `getAllWindows`\n  - `getAll` in `webview` module has been renamed to `getAllWebviews`\n  - `getAll` in `webviewWindow` module has been renamed to `getAllWebviewWindows`\n\n## \\[2.0.0-beta.14]\n\n### New Features\n\n- [`148f04887`](https://www.github.com/tauri-apps/tauri/commit/148f048871caee21498b236c058b8890f2b66cc7) ([#9979](https://www.github.com/tauri-apps/tauri/pull/9979)) Add `defaultWindowIcon` to the JS `app` module to retrieve the default window icon in JS.\n\n### Bug Fixes\n\n- [`c98f385cb`](https://www.github.com/tauri-apps/tauri/commit/c98f385cb5da4d72968df24b1fc0b58212d59653) ([#10044](https://www.github.com/tauri-apps/tauri/pull/10044)) Export `mocks` module in `@tauri-apps/api` npm package.\n\n## \\[2.0.0-beta.13]\n\n### Breaking Changes\n\n- [`c4410daa8`](https://www.github.com/tauri-apps/tauri/commit/c4410daa85616340e911c8243fdaa69e6906fd49)([#9777](https://www.github.com/tauri-apps/tauri/pull/9777)) This release contains breaking changes to the tray event structure because of newly added events:\n\n  - Changed `TrayIconEvent` to be an enum instead of a struct.\n  - Added `MouseButtonState` and `MouseButton` enums.\n  - Removed `ClickType` enum and replaced it with `MouseButton` enum.\n  - Added `MouseButtonState` enum.\n\n## \\[2.0.0-beta.12]\n\n### New Features\n\n- [`ec0e092ec`](https://www.github.com/tauri-apps/tauri/commit/ec0e092ecd23b547c756c7476f23a0d95be6db80)([#9770](https://www.github.com/tauri-apps/tauri/pull/9770)) Add `monitorFromPoint` function in `window` module to get the monitor from a given point.\n\n## \\[2.0.0-beta.11]\n\n### Bug Fixes\n\n- [`aa080696e`](https://www.github.com/tauri-apps/tauri/commit/aa080696e0952abff416dd9088d519eaf2587a3a)([#9618](https://www.github.com/tauri-apps/tauri/pull/9618)) Fix `isTauri` incorrect return type.\n\n## \\[2.0.0-beta.10]\n\n### New Features\n\n- [`477bb8cd4`](https://www.github.com/tauri-apps/tauri/commit/477bb8cd4ea88ade3f6c1f268ad1701a68150161)([#9297](https://www.github.com/tauri-apps/tauri/pull/9297)) Add `cursorPosition` function in `window` module to get the current cursor position.\n\n## \\[2.0.0-beta.9]\n\n### New Features\n\n- [`70c51371e`](https://www.github.com/tauri-apps/tauri/commit/70c51371e01184223312de3dba8030394a5a9406)([#9539](https://www.github.com/tauri-apps/tauri/pull/9539)) Add `isTauri` function in `core` module to check whether running inside tauri or not.\n\n### Bug Fixes\n\n- [`be7eab209`](https://www.github.com/tauri-apps/tauri/commit/be7eab209c60c45e140f7bcb4bab1037d62d4c03)([#9486](https://www.github.com/tauri-apps/tauri/pull/9486)) Set the `exports > types` package.json field.\n- [`cf615e8e4`](https://www.github.com/tauri-apps/tauri/commit/cf615e8e4d5008ee1ac3f77e530ba26fb91e8977)([#9463](https://www.github.com/tauri-apps/tauri/pull/9463)) Fixes a bug when processing channel messages out of order.\n- [`35b25f7e5`](https://www.github.com/tauri-apps/tauri/commit/35b25f7e5c0fe03af4ed3582e22a626863f035f0)([#9530](https://www.github.com/tauri-apps/tauri/pull/9530)) Do not use JS optional chaining to prevent script errors on older webviews such as macOS 10.14.\n\n## \\[2.0.0-beta.8]\n\n### New Features\n\n- [`58a7a552d`](https://www.github.com/tauri-apps/tauri/commit/58a7a552d739b77b71d61af11c53f7f2dc7a6e7e)([#9378](https://www.github.com/tauri-apps/tauri/pull/9378)) Added the `set_zoom` function to the webview API.\n- [`58a7a552d`](https://www.github.com/tauri-apps/tauri/commit/58a7a552d739b77b71d61af11c53f7f2dc7a6e7e)([#9378](https://www.github.com/tauri-apps/tauri/pull/9378)) Add `zoom_hotkeys_enabled` to enable browser native zoom controls on creating webviews.\n\n### Bug Fixes\n\n- [`48a7a78f8`](https://www.github.com/tauri-apps/tauri/commit/48a7a78f8094d08e5e403e88050391642d29151b)([#9376](https://www.github.com/tauri-apps/tauri/pull/9376)) Fix `Window/Webview/WebviewWindow.setSize`, `Window/Webview/WebviewWindow.setPostion`, `Window/WebviewWindow.setMinSize`, `Window/WebviewWindow.setMaxSize`, `Window/WebviewWindow.setCursorPosition` and `Menu/Submenu.popup` methods failing with invalid args.\n\n## \\[2.0.0-beta.7]\n\n### Bug Fixes\n\n- [`c33f6e6cf`](https://www.github.com/tauri-apps/tauri/commit/c33f6e6cf35a0d34b5598875a2e5b642a01c8b38)([#9211](https://www.github.com/tauri-apps/tauri/pull/9211)) Re-added the `TauriEvent.WINDOW_CREATED` (`tauri://window-created`) event.\n\n### Breaking Changes\n\n- [`06833f4fa`](https://www.github.com/tauri-apps/tauri/commit/06833f4fa8e63ecc55fe3fc874a9e397e77a5709)([#9100](https://www.github.com/tauri-apps/tauri/pull/9100)) Rename `FileDrop` to `DragDrop` on structs, enums and enum variants. Also renamed `file_drop` to `drag_drop` on fields and function names.\n\n## \\[2.0.0-beta.6]\n\n### New Features\n\n- [`acdd76833`](https://www.github.com/tauri-apps/tauri/commit/acdd76833db6d81f4012418133d0042220de100b)([#9155](https://www.github.com/tauri-apps/tauri/pull/9155)) Add `TrayIcon.getById` and `TrayIcon.removeById` static methods.\n\n### Enhancements\n\n- [`ea0242db4`](https://www.github.com/tauri-apps/tauri/commit/ea0242db4aa6c127d2bb4a2e275000ba47c9e68c)([#9179](https://www.github.com/tauri-apps/tauri/pull/9179)) The `Image` constructor is now public (for internal use only).\n\n### Bug Fixes\n\n- [`379cc2b35`](https://www.github.com/tauri-apps/tauri/commit/379cc2b3547395474d4b66b4222679cf4538428d)([#9165](https://www.github.com/tauri-apps/tauri/pull/9165)) Fix `basename(path, 'ext')` JS API when removing all occurances of `ext` where it should only remove the last one.\n\n### Breaking Changes\n\n- [`ea0242db4`](https://www.github.com/tauri-apps/tauri/commit/ea0242db4aa6c127d2bb4a2e275000ba47c9e68c)([#9179](https://www.github.com/tauri-apps/tauri/pull/9179)) `Image::rgba()` now returns `Promise<Uint8Array>`.\n- [`ea0242db4`](https://www.github.com/tauri-apps/tauri/commit/ea0242db4aa6c127d2bb4a2e275000ba47c9e68c)([#9179](https://www.github.com/tauri-apps/tauri/pull/9179)) Removed `width` and `height` methods on the JS `Image` class, use `size` instead.\n\n## \\[2.0.0-beta.5]\n\n### Breaking Changes\n\n- [`db0a24a97`](https://www.github.com/tauri-apps/tauri/commit/db0a24a973191752aeecfbd556faa254b0f17e79)([#9132](https://www.github.com/tauri-apps/tauri/pull/9132)) Remove the `Image.fromPngBytes` and `Image.fromIcoBytes` APIs. Use `Image.fromBytes` instead.\n\n## \\[2.0.0-beta.4]\n\n### New Features\n\n- [`d1e77acd8`](https://www.github.com/tauri-apps/tauri/commit/d1e77acd8dfdf554b90b542513a58a2de1ef2360)([#9011](https://www.github.com/tauri-apps/tauri/pull/9011)) Add a new `Image` type in Rust and JS.\n\n### Enhancements\n\n- [`e62ca4ee9`](https://www.github.com/tauri-apps/tauri/commit/e62ca4ee95f4308a6ad128d0f100c85634e28223)([#9070](https://www.github.com/tauri-apps/tauri/pull/9070)) Added a mechanism to preserve channel message order.\n\n## \\[2.0.0-beta.3]\n\n### New Features\n\n- [`fdcaf935`](https://www.github.com/tauri-apps/tauri/commit/fdcaf935fa75ecfa2806939c4faad4fe9e880386)([#8939](https://www.github.com/tauri-apps/tauri/pull/8939)) Added the `reparent` function to the webview API.\n\n## \\[2.0.0-beta.2]\n\n### Breaking Changes\n\n- [`361ec37f`](https://www.github.com/tauri-apps/tauri/commit/361ec37fd4a5caa5b6630b9563ef079f53c6c336)([#8932](https://www.github.com/tauri-apps/tauri/pull/8932)) Removed the `unityUri` option from the progress bar state, no longer required.\n\n## \\[2.0.0-beta.1]\n\n### New Features\n\n- [`16e550ec`](https://www.github.com/tauri-apps/tauri/commit/16e550ec1503765158cdc3bb2a20e70ec710e981)([#8844](https://www.github.com/tauri-apps/tauri/pull/8844)) Add a new `webviewWindow` module that exports `WebviewWindow` class and related methods such as `getCurrent` and `getAll`.\n- [`16e550ec`](https://www.github.com/tauri-apps/tauri/commit/16e550ec1503765158cdc3bb2a20e70ec710e981)([#8844](https://www.github.com/tauri-apps/tauri/pull/8844)) Add `Window.onFileDropEvent` method.\n\n### Breaking Changes\n\n- [`16e550ec`](https://www.github.com/tauri-apps/tauri/commit/16e550ec1503765158cdc3bb2a20e70ec710e981)([#8844](https://www.github.com/tauri-apps/tauri/pull/8844)) Renamed the following enum variants of `TauriEvent` enum:\n\n  - `TauriEvent.WEBVIEW_FILE_DROP` -> `TauriEvent.FILE_DROP`\n  - `TauriEvent.WEBVIEW_FILE_DROP_HOVER` -> `TauriEvent.FILE_DROP_HOVER`\n  - `TauriEvent.WEBVIEW_FILE_DROP_CANCELLED` -> `TauriEvent.FILE_DROP_CANCELLED`\n- [`16e550ec`](https://www.github.com/tauri-apps/tauri/commit/16e550ec1503765158cdc3bb2a20e70ec710e981)([#8844](https://www.github.com/tauri-apps/tauri/pull/8844)) Move `WebviewWindow` class from `webview` module to a new `webviewWindow` module.\n\n## \\[2.0.0-beta.0]\n\n### New Features\n\n- [`74a2a603`](https://www.github.com/tauri-apps/tauri/commit/74a2a6036a5e57462f161d728cbd8a6f121028ca)([#8661](https://www.github.com/tauri-apps/tauri/pull/8661)) Implement access control list for IPC usage.\n- [`a093682d`](https://www.github.com/tauri-apps/tauri/commit/a093682d2df7169b024bb4f736c7f1fd2ea8b327)([#8621](https://www.github.com/tauri-apps/tauri/pull/8621)) Added `emitTo` api to `event` module which is equivalent to the rust `emit_to` method. Also added `emitTo` method on `Window`, `Webivew` and `WebviewWindow` classes.\n- [`a2fc3a63`](https://www.github.com/tauri-apps/tauri/commit/a2fc3a63579ca739646d696870cbecbb3a169d33)([#8657](https://www.github.com/tauri-apps/tauri/pull/8657)) Add `visibleOnAllWorkspaces` option when creating the window in JS and `Window.setVisibleOnAllWorkspaces` method.\n- [`7f033f6d`](https://www.github.com/tauri-apps/tauri/commit/7f033f6dcd54c69a4193765a5c1584755ba92c61)([#8537](https://www.github.com/tauri-apps/tauri/pull/8537)) Add `Window.startResizeDragging`.\n- [`9eaeb5a8`](https://www.github.com/tauri-apps/tauri/commit/9eaeb5a8cd95ae24b5e66205bdc2763cb7f965ce)([#8622](https://www.github.com/tauri-apps/tauri/pull/8622)) Add `parent` option when creating a window.\n- [`af610232`](https://www.github.com/tauri-apps/tauri/commit/af6102327376884364b2075b468bdf08ee0d02aa)([#8710](https://www.github.com/tauri-apps/tauri/pull/8710)) Added `Window::destroy` to force close a window.\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) Added support to multiwebview via the new `window` and `webview` modules.\n\n### Breaking Changes\n\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) Removed event callback's `windowLabel`.\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) The event target is now an object so you can target either a window or a webview.\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) Moved webview-specific APIs from the `Window` class to the `Webview` class.\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) Renamed `TauriEvent.WINDOW_FILE_DROP` to `TauriEvent.WEBVIEW_FILE_DROP`, `TauriEvent.WINDOW_FILE_DROP_HOVER` to `TauriEvent.WEBVIEW_FILE_DROP_HOVER` and `TauriEvent.WINDOW_FILE_DROP_CANCELLED` to `TauriEvent.WEBVIEW_FILE_DROP_CANCELLED`.\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) Added back the `WebviewWindow` API that exposes functionality of a window that hosts a single webview. The dedicated `Window` and `Webview` types are exposed for multiwebview features.\n- [`af610232`](https://www.github.com/tauri-apps/tauri/commit/af6102327376884364b2075b468bdf08ee0d02aa)([#8710](https://www.github.com/tauri-apps/tauri/pull/8710)) `Window::close` now triggers a close requested event instead of forcing the window to be closed.\n\n## \\[2.0.0-alpha.14]\n\n- [`97e33412`](https://www.github.com/tauri-apps/tauri/commit/97e334129956159bbd60e1c531b6acd3bc6139a6)([#8534](https://www.github.com/tauri-apps/tauri/pull/8534)) `mockIPC` and `mockWindows` no longer crash if `window.__TAURI_INTERNALS__` is undefined.\n\n## \\[2.0.0-alpha.13]\n\n### New Features\n\n- [`428ea652`](https://www.github.com/tauri-apps/tauri/commit/428ea6524c70545be33aac96d7c22b21f25caa4c)([#8370](https://www.github.com/tauri-apps/tauri/pull/8370)) Exposed `Resource` class which should be extended for Rust-backed resources created through `tauri::Manager::resources_table`.\n\n### Bug Fixes\n\n- [`ef21b681`](https://www.github.com/tauri-apps/tauri/commit/ef21b681e237a80592c9118b9c023c1d57231bac)([#8391](https://www.github.com/tauri-apps/tauri/pull/8391)) Fix a regression where typescript could not find types when using `\"moduleResolution\": \"node\"`\n- [`46451aee`](https://www.github.com/tauri-apps/tauri/commit/46451aee1318f63a6cd861a12b63929b38c64eb6)([#8268](https://www.github.com/tauri-apps/tauri/pull/8268)) Add top-level `main`, `module` and `types` fields in `package.json` to be compliant with typescripts's `\"moduleResolution\": \"node\"`\n\n### Breaking Changes\n\n- [`c2ad4d28`](https://www.github.com/tauri-apps/tauri/commit/c2ad4d28c481b2d7ed643458db56210cd44a2e0c)([#8273](https://www.github.com/tauri-apps/tauri/pull/8273)) Changed former `tauri` module from `primitives` to `core`.\n\n## \\[2.0.0-alpha.12]\n\n### New Features\n\n- [`f93148ea`](https://www.github.com/tauri-apps/tauri/commit/f93148eac05a1428e038bd9351a8149b2464ff4c)([#7709](https://www.github.com/tauri-apps/tauri/pull/7709)) Add `tray` and `menu` modules to create and manage tray icons and menus from Javascript.\n\n### Enhancements\n\n- [`b7add750`](https://www.github.com/tauri-apps/tauri/commit/b7add750ef9f32d959de613ab35063ff240281c2)([#8204](https://www.github.com/tauri-apps/tauri/pull/8204)) Added `position` field to the `FileDropEvent` payload.\n\n## \\[2.0.0-alpha.11]\n\n### Bug Fixes\n\n- [`822bf15d`](https://www.github.com/tauri-apps/tauri/commit/822bf15d6b258556b689ca55ac2ac224897e913a)([#8130](https://www.github.com/tauri-apps/tauri/pull/8130)) Fix tslib missing in the distributed api package.\n\n## \\[2.0.0-alpha.10]\n\n### Enhancements\n\n- [`c6c59cf2`](https://www.github.com/tauri-apps/tauri/commit/c6c59cf2373258b626b00a26f4de4331765dd487) Pull changes from Tauri 1.5 release.\n\n### Bug Fixes\n\n- [`287066b2`](https://www.github.com/tauri-apps/tauri/commit/287066b279f503dd09bfd43d5da37d1f471451fb)([#8071](https://www.github.com/tauri-apps/tauri/pull/8071)) No longer crashing in tests without mocks when `clearMocks` is defined in `afterEach` hook.\n\n## \\[2.0.0-alpha.9]\n\n### New Features\n\n- [`c1ec0f15`](https://www.github.com/tauri-apps/tauri/commit/c1ec0f155118527361dd5645d920becbc8afd569)([#7933](https://www.github.com/tauri-apps/tauri/pull/7933)) Added `setAlwaysOnBottom` function on `Window` and the `alwaysOnBottom` option when creating a window.\n- [`fb10b879`](https://www.github.com/tauri-apps/tauri/commit/fb10b87970a43320ef4d14564f45e7579b774eaf)([#8039](https://www.github.com/tauri-apps/tauri/pull/8039)) Add the `app` module back.\n- [`ed32257d`](https://www.github.com/tauri-apps/tauri/commit/ed32257d044f90b5eb15053efd1667125def2d2b)([#7794](https://www.github.com/tauri-apps/tauri/pull/7794)) On Windows, add `Effect.Tabbed`,`Effect.TabbedDark` and `Effect.TabbedLight` effects.\n- [`c9a9246c`](https://www.github.com/tauri-apps/tauri/commit/c9a9246c37bdf190661355c8ee406dac6c427344)([#8007](https://www.github.com/tauri-apps/tauri/pull/8007)) Add the `window` module back.\n- [`c085adda`](https://www.github.com/tauri-apps/tauri/commit/c085addab58ba851398373c6fd13f9cb026d71e8)([#8009](https://www.github.com/tauri-apps/tauri/pull/8009)) Added the `setProgressBar` API on the `Window` class.\n\n### What's Changed\n\n- [`5c0eeb40`](https://www.github.com/tauri-apps/tauri/commit/5c0eeb40c1003583290ff3aebfa02e2b5f5b9c41)([#7638](https://www.github.com/tauri-apps/tauri/pull/7638)) Updated minimum Node.js version to 18.\n\n### Breaking Changes\n\n- [`a63e71f9`](https://www.github.com/","packages/cli/CHANGELOG.md":"# Changelog\n\n## [2.12.4]\n\n### Bug Fixes\n\n- [`136a28eaa`](https://www.github.com/tauri-apps/tauri/commit/136a28eaa879e8aa706f9b2e05a050c46dcc1f4f) ([#16305](https://www.github.com/tauri-apps/tauri/pull/16305) by [@Chaosnico9000](https://www.github.com/tauri-apps/tauri/../../Chaosnico9000)) Skip the `--target` validation when `rustup target list` fails, e.g. when `rustup` is on `PATH` but has no toolchain installed, instead of rejecting every target as missing.\n- [`52081e04a`](https://www.github.com/tauri-apps/tauri/commit/52081e04a0309620d3eb8121e5ca9b66312f9857) ([#16333](https://www.github.com/tauri-apps/tauri/pull/16333) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Rename the misspelled `choowHowToInstall` NSIS language string to `chooseHowToInstall`. A custom language file in `bundle.windows.nsis.customLanguageFiles` that only defines the old name keeps working for now, but users should migrate to the new name.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.12.4`\n- [`4a6f51251`](https://www.github.com/tauri-apps/tauri/commit/4a6f512519286ff9862b2e86c67ef39f4562aee5) ([#16317](https://www.github.com/tauri-apps/tauri/pull/16317) by [@lazerg](https://www.github.com/tauri-apps/tauri/../../lazerg)) Updated `zip` to v9 to fix RUSTSEC-2026-0367, RUSTSEC-2026-0368 and RUSTSEC-2026-0369.\n\n## [2.12.3]\n\n### Bug Fixes\n\n- [`c95be4615`](https://www.github.com/tauri-apps/tauri/commit/c95be4615a432b1d12409d3684c960e8aa718ada) ([#16287](https://www.github.com/tauri-apps/tauri/pull/16287)) Fix `tauri ios xcode-script` failing to find the Tauri project when Xcode inherits package manager environment variables from `tauri ios dev --open`, or when pnpm runs the CLI directly from the `gen/apple` folder.\n- [`d62e5d9c0`](https://www.github.com/tauri-apps/tauri/commit/d62e5d9c0878b6fb327543cc9be50aa1696ee23c) ([#16184](https://www.github.com/tauri-apps/tauri/pull/16184)) Fix NSIS installer leaving `uninstall.exe` and the installation directory behind when uninstalling an existing installation from the installer.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.12.3`\n- [`5a2953e55`](https://www.github.com/tauri-apps/tauri/commit/5a2953e555b4444bed68bd5324ea13ad85a6c06e) ([#16237](https://www.github.com/tauri-apps/tauri/pull/16237)) Updated NSIS to 3.13\n\n## [2.12.2]\n\n### Bug Fixes\n\n- [`c48e1ca89`](https://www.github.com/tauri-apps/tauri/commit/c48e1ca891a3b82770b6b03f87eba740344cf2f1) ([#16246](https://www.github.com/tauri-apps/tauri/pull/16246)) On iOS, mark the Swift `@_cdecl` entry points that Rust links against as `public` (in the iOS API and in the plugin templates), so release builds made with Xcode 27 keep them global and link.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.12.2`\n- [`fd319dd43`](https://www.github.com/tauri-apps/tauri/commit/fd319dd432e36748483ae93e6cdea1c44a66fe79) Update `base64` to 0.23.\n\n## [2.12.1]\n\n### Enhancements\n\n- [`64bfdd909`](https://www.github.com/tauri-apps/tauri/commit/64bfdd909c5c3f0828371e4995b69ad5ed685126) ([#16165](https://www.github.com/tauri-apps/tauri/pull/16165) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Ignore `src-tauri` in `tauri plugin init` example template\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.12.1`\n\n## [2.12.0]\n\n### New Features\n\n- [`f6c1eb253`](https://www.github.com/tauri-apps/tauri/commit/f6c1eb2533a0445e081c334931d67fee3e354c6f) ([#15401](https://www.github.com/tauri-apps/tauri/pull/15401)) 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`.\n- [`f76b1d3ae`](https://www.github.com/tauri-apps/tauri/commit/f76b1d3ae70d0ba0f0eba80b94b867593aa5ca8b) ([#15644](https://www.github.com/tauri-apps/tauri/pull/15644)) 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).\n- [`af465eae1`](https://www.github.com/tauri-apps/tauri/commit/af465eae1ad99d7b16b8fdbf9aa96bf76d6b9a76) ([#15619](https://www.github.com/tauri-apps/tauri/pull/15619)) 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.\n- [`0646cc162`](https://www.github.com/tauri-apps/tauri/commit/0646cc1623608dfdaec8d1adbc08d0159b9c2369) ([#15620](https://www.github.com/tauri-apps/tauri/pull/15620)) 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.\n- [`f6c1eb253`](https://www.github.com/tauri-apps/tauri/commit/f6c1eb2533a0445e081c334931d67fee3e354c6f) ([#15401](https://www.github.com/tauri-apps/tauri/pull/15401)) Added `build.windows.staticVCRuntime` to control MSVC static runtime linking. The `STATIC_VCRUNTIME` environment variable is now deprecated and emits a migration warning when used.\n- [`f45ec0dcf`](https://www.github.com/tauri-apps/tauri/commit/f45ec0dcf83c139c8fdde5e61923a0e82836f756) Record the app version in the trusted comment of updater signatures, so a signed artifact is bound to the version it was released as.\n    \n    An update endpoint response is not signed, and the signature only covers the downloaded artifact, so the announced `version` on its own does not prove which release the `url` and `signature` point at. minisign covers the trusted comment with its global signature, which lets the updater plugin compare the two and reject a response that pairs a version number with a different release. Enable `requireSignedVersion` in the updater plugin configuration to enforce this.\n    \n    `tauri build` fills the version in automatically, and `tauri plugin add updater` now enables `requireSignedVersion` for the project it is adding the plugin to. `tauri signer sign` gains an `--app-version` flag for signing updater artifacts by hand, and warns when it is omitted.\n\n### Enhancements\n\n- [`e19121427`](https://www.github.com/tauri-apps/tauri/commit/e19121427332c8a14165999251cce415707a62fc) ([#15993](https://www.github.com/tauri-apps/tauri/pull/15993)) Don't always rewrite `Cargo.toml` file from CRLF line endings to LF\n- [`aebf38c84`](https://www.github.com/tauri-apps/tauri/commit/aebf38c845b57bc5653eca677e2e2e044528ea73) ([#15694](https://www.github.com/tauri-apps/tauri/pull/15694)) 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.\n    \n    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.\n- [`d89d8fa62`](https://www.github.com/tauri-apps/tauri/commit/d89d8fa62302bd3553b66fd47ecfa046b2fc84ef) ([#15780](https://www.github.com/tauri-apps/tauri/pull/15780)) 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.\n- [`c3d21bd60`](https://www.github.com/tauri-apps/tauri/commit/c3d21bd60c3355b284b23dee1a181c3423231182) ([#15730](https://www.github.com/tauri-apps/tauri/pull/15730)) Use `Theme.Material3.DayNight.NoActionBar` instead of `Theme.MaterialComponents.DayNight.NoActionBar` when running `tauri android init`\n- [`f654f470c`](https://www.github.com/tauri-apps/tauri/commit/f654f470c122e925e425424cea733f13d3306412) ([#15862](https://www.github.com/tauri-apps/tauri/pull/15862)) Update template to use `targetSdk = 37`\n- [`cdaf7eab6`](https://www.github.com/tauri-apps/tauri/commit/cdaf7eab6c5fccc2a4812af18f58fd3530f3eedd) ([#15765](https://www.github.com/tauri-apps/tauri/pull/15765)) Clarify that the `tauri init` frontend commands run before `tauri dev` and `tauri build`, and can be left empty when they are not needed.\n- [`d0f38df06`](https://www.github.com/tauri-apps/tauri/commit/d0f38df06a2f4406b388a336694aa18b3c6bf1a9) ([#15997](https://www.github.com/tauri-apps/tauri/pull/15997)) 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.\n- [`ca160ad48`](https://www.github.com/tauri-apps/tauri/commit/ca160ad4808f477380cb0865a08a8ae781e37f85) ([#15895](https://www.github.com/tauri-apps/tauri/pull/15895)) `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.\n- [`010f06bae`](https://www.github.com/tauri-apps/tauri/commit/010f06baecd499c41321da3130e20147c50025f7) ([#15737](https://www.github.com/tauri-apps/tauri/pull/15737)) Document the `TAURI_SIGNING_PRIVATE_KEY_PATH` environment variable and clarify that `TAURI_SIGNING_PRIVATE_KEY` accepts a string or a path for the `build` and `bundle` command but must be the literal key string for the `signer sign` command, both in `ENVIRONMENT_VARIABLES.md` and in the `signer generate` command output.\n\n### Bug Fixes\n\n- [`9bad06b9f`](https://www.github.com/tauri-apps/tauri/commit/9bad06b9f61996faed1c33709f1b8dd196602793) ([#16096](https://www.github.com/tauri-apps/tauri/pull/16096)) `tauri capability new` and `tauri permission new` now accept an `--out` path to a file that does not exist yet, trim comma-separated prompt answers (so `fs:default, core:default` works), report invalid permissions as errors instead of panicking, and reject identifiers that are not valid file names (such as `../../x`), which previously let them write outside of the capabilities or permissions directory.\n- [`9642b3087`](https://www.github.com/tauri-apps/tauri/commit/9642b30879eda8bde35fa3c7606718ca0d364f2e) ([#16117](https://www.github.com/tauri-apps/tauri/pull/16117)) `tauri add` now honors `--tag`, `--rev` and `--branch` for official plugins instead of silently installing the registry version, and rejects passing more than one of them. With npm, the JS package requirement is now `~<version>` like the other package managers, instead of `>=<version>` which allowed a later major version.\n- [`cada1cd4f`](https://www.github.com/tauri-apps/tauri/commit/cada1cd4f3e59efb48b2c7a176d240846f55ad0d) ([#16105](https://www.github.com/tauri-apps/tauri/pull/16105)) Fix Android dev server port forwarding: `adb reverse --list` is now matched on the exact port (so `tcp:80` no longer matches `tcp:8080`), stale forwards on other connected devices are actually removed, and the forward verification gives up with a warning after a few attempts instead of retrying forever.\n- [`d5bd04658`](https://www.github.com/tauri-apps/tauri/commit/d5bd046583d066024ba073840007f4476e52a5fb) ([#16111](https://www.github.com/tauri-apps/tauri/pull/16111)) Fix `bundle > android > debugApplicationIdSuffix` being written to the `signingConfigs` debug block instead of the `buildTypes` one, and keep the existing content of single-line debug blocks such as `getByName(\"debug\") { isDebuggable = true }` instead of dropping it.\n- [`ba17da2e5`](https://www.github.com/tauri-apps/tauri/commit/ba17da2e55184fe74990db64496b0d02e79cce09) ([#16101](https://www.github.com/tauri-apps/tauri/pull/16101)) `tauri icon` now generates 72x72 Android `hdpi` launcher icons (previously 49x49) and writes the Android launcher background color in `#RRGGBB`/`#AARRGGBB` notation instead of the raw CSS color string, which Android rejected or misread. Invalid SVG sources and `--png 0` now return an error instead of panicking.\n- [`272842a57`](https://www.github.com/tauri-apps/tauri/commit/272842a571a56401649db7aaa93ea400561a1661) ([#16128](https://www.github.com/tauri-apps/tauri/pull/16128)) Fix error messages that printed placeholders such as `{t}` literally instead of the value, e.g. \"Could not find an Android device matching {t}\".\n- [`10ad4e54e`](https://www.github.com/tauri-apps/tauri/commit/10ad4e54e2f1272ee7bb08418dc386058532a5e8) ([#16127](https://www.github.com/tauri-apps/tauri/pull/16127)) The Bash completions generated by `tauri completions` no longer replace the completions of `cargo`, `npm`, `pnpm`, `yarn`, `bun` and `deno`. They now define a `_tauri_cli` function registered only for the `tauri` and `cargo-tauri` commands. Generating completions when running the `cargo-tauri` binary directly no longer panics.\n- [`0e4ded72a`](https://www.github.com/tauri-apps/tauri/commit/0e4ded72a6a617fa16dff196e7fbd3716997e66f) ([#16107](https://www.github.com/tauri-apps/tauri/pull/16107)) Fix binaries in `src/bin` and `src/main.rs` being left out of bundles when `Cargo.toml` declares a `[[bin]]` target without a `path`.\n- [`8e0fa2e2f`](https://www.github.com/tauri-apps/tauri/commit/8e0fa2e2f8859cdd38dc07cfc24a1b012ef29fc3) ([#16097](https://www.github.com/tauri-apps/tauri/pull/16097)) Fix the bundler using the host target triple when `--target` is not passed but `build.target` is set in `.cargo/config.toml`. The CLI now also accepts `build.target` as an array and honors the `CARGO_BUILD_TARGET` environment variable.\n- [`7bb0a5421`](https://www.github.com/tauri-apps/tauri/commit/7bb0a542179bd4ccb17e0baf0dca2c3b2f3f7721) ([#16120](https://www.github.com/tauri-apps/tauri/pull/16120)) Fix the Cargo.toml feature rewrite corrupting a string dependency version that has a trailing comment or uses single quotes (e.g. `tauri = \"2\" # pin` became `\"2#pin\"`). The version value is now kept as-is and the comment is preserved.\n- [`e4630258e`](https://www.github.com/tauri-apps/tauri/commit/e4630258e3184fceb60e6c548a7ec61fb81f885d) ([#16114](https://www.github.com/tauri-apps/tauri/pull/16114)) Fix the CLI's working directory being left changed to the config directory when the Tauri configuration fails to parse, for example when `tauri dev` reloads an invalid config.\n- [`1b91b7b7b`](https://www.github.com/tauri-apps/tauri/commit/1b91b7b7b3dad8b77bcaeadc6653250e04f0cb7b) ([#16102](https://www.github.com/tauri-apps/tauri/pull/16102)) `tauri info` now logs a warning when it cannot check the latest crate version on crates.io instead of silently ignoring the failure, and no longer panics if crates.io returns a version it cannot parse.\n- [`1b91b7b7b`](https://www.github.com/tauri-apps/tauri/commit/1b91b7b7b3dad8b77bcaeadc6653250e04f0cb7b) ([#16102](https://www.github.com/tauri-apps/tauri/pull/16102)) `tauri info` now lists every locked version of a Rust crate when `Cargo.lock` contains more than one, and no longer panics when the crates.io response cannot be parsed.\n- [`6507d0b8b`](https://www.github.com/tauri-apps/tauri/commit/6507d0b8b360a41615139619eb39680e60df7732) ([#16124](https://www.github.com/tauri-apps/tauri/pull/16124)) `tauri dev` now reports an error instead of panicking when the `beforeDevCommand` cannot be spawned or the `devUrl` host cannot be resolved, and no longer risks stopping the `beforeDevCommand` process tree twice when Ctrl+C and the app exit race.\n- [`c1ea96ad6`](https://www.github.com/tauri-apps/tauri/commit/c1ea96ad6b433524c5cb570f55bbbe1fd72cca1e) ([#16110](https://www.github.com/tauri-apps/tauri/pull/16110)) Fix `tauri dev` not reacting to the app exiting when a process spawned by the app kept its stderr open, and stop keeping the whole app stderr output in memory. Also fix command output capture that could return empty output when the command finished before its output was read.\n- [`d61fbdc3e`](https://www.github.com/tauri-apps/tauri/commit/d61fbdc3e825749261c76b7a37454dd3c4483619) ([#16109](https://www.github.com/tauri-apps/tauri/pull/16109)) Fix Cargo.toml feature injection and the v1 migration only updating either `[dependencies]` or `[target.'cfg(..)'.dependencies]`, whichever came first in the file. Both the main and all target-specific dependency tables are now updated.\n- [`5d995ed35`](https://www.github.com/tauri-apps/tauri/commit/5d995ed35b029cecd780fdbe614dc6023a89b81b) ([#16017](https://www.github.com/tauri-apps/tauri/pull/16017)) 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.\n- [`6d943c420`](https://www.github.com/tauri-apps/tauri/commit/6d943c420454e75636af968b435efb9167818d22) ([#16065](https://www.github.com/tauri-apps/tauri/pull/16065)) 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.\n- [`b8be924d3`](https://www.github.com/tauri-apps/tauri/commit/b8be924d39c87eaecb9ba6f893e1a7be94d7bd68) ([#16106](https://www.github.com/tauri-apps/tauri/pull/16106)) `tauri init` no longer panics when the app name, window title, frontend dist, dev URL or before dev/build commands contain quotes or backslashes (e.g. `-D ..\\dist` or `vite --host \"0.0.0.0\"`); the values are now JSON-escaped in the generated `tauri.conf.json`.\n- [`b9b32a259`](https://www.github.com/tauri-apps/tauri/commit/b9b32a259fb00524808e84b4da0f7904a51be06c) ([#16108](https://www.github.com/tauri-apps/tauri/pull/16108)) Fix `PRODUCT_BUNDLE_IDENTIFIER` in the iOS Xcode project being set to the raw `identifier` (with underscores) instead of the sanitized iOS bundle identifier used by the Xcode project template and the export options provisioning profiles.\n- [`4f51a2f06`](https://www.github.com/tauri-apps/tauri/commit/4f51a2f06248f231fc6a9160c95c026634356ba5) ([#16115](https://www.github.com/tauri-apps/tauri/pull/16115)) Fix `tauri ios run --features` being ignored, and `tauri ios dev --release` still building the app in debug mode.\n- [`59e077457`](https://www.github.com/tauri-apps/tauri/commit/59e077457ac87ffd43db4c557ca2987d2fa6d37e) ([#16075](https://www.github.com/tauri-apps/tauri/pull/16075)) `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.\n- [`fe1aa30d2`](https://www.github.com/tauri-apps/tauri/commit/fe1aa30d2b1743325cdd882fe36604daf62c2440) ([#16113](https://www.github.com/tauri-apps/tauri/pull/16113)) Quote the Tauri CLI path and the Xcode variables in the iOS \"Build Rust Code\" build phase, fixing builds when Xcode or the CLI is installed in a path containing spaces (requires regenerating the Xcode project with `tauri ios init`). Also fixes `CXXFLAGS` not being set for iOS targets in `tauri ios xcode-script`.\n- [`aa0a801c3`](https://www.github.com/tauri-apps/tauri/commit/aa0a801c3acb6cc1f9d0afbae6cbfa144a5ea7fb) ([#16116](https://www.github.com/tauri-apps/tauri/pull/16116)) Fix Java version detection for the Android Java/Gradle compatibility warning when `JAVA_HOME` is not set: the `java` binary on `PATH` is now resolved through symlinks (e.g. Linux alternatives and Homebrew), and on macOS the `/usr/bin/java` stub falls back to `/usr/libexec/java_home`.\n- [`1aafaa4e3`](https://www.github.com/tauri-apps/tauri/commit/1aafaa4e3cafc779d4d825c95c3604a7da661092) ([#16103](https://www.github.com/tauri-apps/tauri/pull/16103)) When rewriting a localhost `devUrl` to the network address for mobile development, the query string and fragment are now preserved, and the IPv6 loopback (`[::1]`) and unspecified (`[::]`) addresses are now treated as localhost.\n- [`022932dd5`](https://www.github.com/tauri-apps/tauri/commit/022932dd596e38d27a0bafebf26ea9df2ec2cff3) ([#16123](https://www.github.com/tauri-apps/tauri/pull/16123)) Fix iOS Xcode project synchronization corrupting `project.pbxproj` when several build settings were added to the same configuration, when an added setting was changed again, or when a multi-line setting was overwritten. Product names, signing identities and other values written to the project are now properly escaped.\n- [`a4099d819`](https://www.github.com/tauri-apps/tauri/commit/a4099d819bdc33385adcc11b7830fc5fdda410d2) ([#16098](https://www.github.com/tauri-apps/tauri/pull/16098)) `tauri permission add` (and `tauri add`) no longer overwrites an existing `capabilities/desktop.json` or `capabilities/mobile.json` when adding a desktop-only or mobile-only plugin permission and no platform-restricted capability exists; the new capability now gets an unused file name and identifier (e.g. `desktop-2.json`). An explicitly passed capability is now used even if its platforms do not match the plugin, with a warning, instead of being silently ignored.\n- [`e49d1b474`](https://www.github.com/tauri-apps/tauri/commit/e49d1b47429acaf34de9e9edc251f71163990783) ([#16100](https://www.github.com/tauri-apps/tauri/pull/16100)) `tauri permission rm <plugin>:*` and `tauri remove` no longer strip unrelated permissions whose identifier merely contains the plugin name (e.g. `tauri remove os` removing `positioner:default`). Local permission files are now looked up in the Tauri directory, like `tauri permission new`, and an unparsable permission file is skipped with a warning instead of aborting the command.\n- [`efa82f5ed`](https://www.github.com/tauri-apps/tauri/commit/efa82f5ed989f84b076b6ee6d2f0e1e6dd0aadbf) ([#16125](https://www.github.com/tauri-apps/tauri/pull/16125)) Fix plugin scaffolding for names like `my-plugin`: the default Android package ID now uses a snake_case segment (`com.plugin.my_plugin`) and user-provided IDs are validated, iOS Xcode folders use the same kebab-case name as the project file, and the `plugin ios init`/`plugin android init` code snippets now match the generated bindings and the `setup(|app, api| ..)` API. `plugin init` into a non-empty directory no longer creates a `permissions` folder after skipping the template.\n- [`db6804d80`](https://www.github.com/tauri-apps/tauri/commit/db6804d80223aabc6b338e94d192a5ad6dd6220b) ([#16126](https://www.github.com/tauri-apps/tauri/pull/16126)) Fix `--release` being added to the cargo command when a custom profile is passed as `--profile=<name>`, which made cargo reject the build.\n- [`8310461f6`](https://www.github.com/tauri-apps/tauri/commit/8310461f6453ce478d2092a4744d42e3468e0bb0) ([#16104](https://www.github.com/tauri-apps/tauri/pull/16104)) Fix `tauri init` and `tauri info` detecting SvelteKit projects as plain Svelte; `tauri init` suggested the wrong dev server URL and frontend dist directory.\n- [`eaf96690d`](https://www.github.com/tauri-apps/tauri/commit/eaf96690db2439445fe16da24031bf3294ada605) ([#15804](https://www.github.com/tauri-apps/tauri/pull/15804)) On Linux, do not bundle xdg-open and xdg-utils in the AppImage anymore. This rarely worked and usually requires host system support anyway.\n- [`2b7c1f8b6`](https://www.github.com/tauri-apps/tauri/commit/2b7c1f8b63619c6f4c16380d0c4a3358e694fb11) ([#16003](https://www.github.com/tauri-apps/tauri/pull/16003)) Fix `tauri add` / `tauri remove` installing npm plugin packages into `src-tauri` instead of the frontend directory.\n- [`c735ba32b`](https://www.github.com/tauri-apps/tauri/commit/c735ba32b36d505cbf9eabfb4a33005ca31edbdd) ([#15241](https://www.github.com/tauri-apps/tauri/pull/15241)) Fix broken child window icons in Task Manager, you'll need to re-run `tauri icon` to generate the fixed icons\n- [`adf5acf6f`](https://www.github.com/tauri-apps/tauri/commit/adf5acf6fbc0ef26de6b1eb30c47bb701c256954) ([#15651](https://www.github.com/tauri-apps/tauri/pull/15651)) Fix MSI bundling when an external binary filename starts with a digit.\n- [`11012a13f`](https://www.github.com/tauri-apps/tauri/commit/11012a13f55ab55ec5ed12ca3ac95338ae1731c3) ([#15681](https://www.github.com/tauri-apps/tauri/pull/15681)) Fix WiX bundler doesn't respect the resource's target file name.\n- [`59e077457`](https://www.github.com/tauri-apps/tauri/commit/59e077457ac87ffd43db4c557ca2987d2fa6d37e) ([#16075](https://www.github.com/tauri-apps/tauri/pull/16075)) 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''\".\n- [`6a298ee12`](https://www.github.com/tauri-apps/tauri/commit/6a298ee12e7ffde115175d43ac63a2fdcba51c3e) ([#15713](https://www.github.com/tauri-apps/tauri/pull/15713)) Fix `tauri info` reporting the Rust-only plugins (`localhost`, `persisted-scope` and `single-instance`) as missing their `@tauri-apps/plugin-*` JavaScript package, which is never published for those plugins.\n- [`33b3ea582`](https://www.github.com/tauri-apps/tauri/commit/33b3ea582340ce8fe799929472595789319d0826) The bundled `vswhere.exe` is now written to a new, uniquely named temporary file on each use and removed afterwards, instead of running any existing `%TEMP%\\vswhere.exe`.\n\n### What's Changed\n\n- [`2e6e33c85`](https://www.github.com/tauri-apps/tauri/commit/2e6e33c8501c66c9a49aad861048d39345cfb26f) ([#16029](https://www.github.com/tauri-apps/tauri/pull/16029)) Moved to edition 2024 for the `tauri init`/`tauri plugin init` templates\n- [`ce3f13b91`](https://www.github.com/tauri-apps/tauri/commit/ce3f13b91a75cb723f229f56a3e82eb5f2d3f644) ([#15887](https://www.github.com/tauri-apps/tauri/pull/15887)) Lock unstable tauri crates to minor versions.\n\n### Security fixes\n\n- [`98918df64`](https://www.github.com/tauri-apps/tauri/commit/98918df6416f7ac6849962141a41bbd210131067) ([#16112](https://www.github.com/tauri-apps/tauri/pull/16112)) `tauri add` no longer installs the npm package `tauri-plugin-<name>-api` for community plugins. npm and crates.io are separate namespaces, so that package may be unowned or squatted; the CLI now asks you to install the plugin's JavaScript bindings yourself. `tauri remove` only removes the plugin's JS package when `package.json` lists it, and a failure there no longer skips the capability cleanup.\n- [`cc9d522c6`](https://www.github.com/tauri-apps/tauri/commit/cc9d522c64329b8dab84ecbd38c76928ad31cb43) ([#16095](https://www.github.com/tauri-apps/tauri/pull/16095)) The built-in dev server now rejects requests whose `Host` header is not the address it serves on, which blocks DNS rebinding attacks, and rejects cross-site `Origin`s on its reload WebSocket. The `index.html` fallback now goes through the same path scope check as other files, and the reload WebSocket no longer closes when the client sends a message.\n- [`dacddfe9f`](https://www.github.com/tauri-apps/tauri/commit/dacddfe9ff1f28b53e2c0324498e3a666a8041fa) ([#16094](https://www.github.com/tauri-apps/tauri/pull/16094)) The CLI no longer writes its default ignore rules to shared files in the system temporary directory (`.gitignore` and `.tauri/.gitignore`) and reads them back, which let other local users change which files the project lookup and the dev watcher skip. The rules are now applied in memory. `TAURI_CLI_WATCHER_IGNORE_FILENAME` is now consistently treated as an ignore file name looked up in each directory, as documented.\n- [`fdd56da19`](https://www.github.com/tauri-apps/tauri/commit/fdd56da19e40962cb2db613a0b87a38a21f571e4) ([#16099](https://www.github.com/tauri-apps/tauri/pull/16099)) Secure the local server that `tauri android|ios dev|build` uses to pass options to the Android Studio and Xcode build scripts: requests now need a random per-session token, WebSocket connections from web pages (with an `Origin` header) are rejected, and variables whose name contains `TOKEN`, `PASSWORD`, `SECRET` or `CREDENTIAL` are no longer sent. The connection details are now written with owner-only permissions to `gen/<android|apple>/.tauri/cli-options-server.json` (instead of the shared temp directory) and removed when the command exits. The IDE build scripts now report a clear error when the Tauri CLI command is not running.\n- [`ff7cd8d86`](https://www.github.com/tauri-apps/tauri/commit/ff7cd8d863061aaa1c5932062b071db6b17af36e) ([#16118](https://www.github.com/tauri-apps/tauri/pull/16118)) `tauri signer generate --write-keys` now creates the private key with owner-only permissions (0600) on Unix and refuses to overwrite either the private or the public key file without `--force`. Updater signing now rejects file names containing tabs or newlines (which would corrupt the signature's trusted comment) and assumes an empty password instead of prompting when no password is given and stdin is not a terminal. `tauri signer` reports errors instead of panicking.\n- [`51aa20388`](https://www.github.com/tauri-apps/tauri/commit/51aa20388e01c9d03f33992647b14dcf7800c540) ([#16119](https://www.github.com/tauri-apps/tauri/pull/16119)) On Windows, package manager commands (`npm`, `pnpm`, `yarn`, `bun`, `deno`, `node`) are now executed directly instead of through `cmd /c`, so arguments such as `@tauri-apps/plugin-fs@>=2` are escaped properly and can no longer be interpreted as shell redirections or command separators.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.12.0`\n- [`e2e585ad1`](https://www.github.com/tauri-apps/tauri/commit/e2e585ad1196c9572f86ef39aae01ef4c3b1a762) ([#15828](https://www.github.com/tauri-apps/tauri/pull/15828)) On Android, fix missing `consumer-rules.pro` file in the template.\n    \n    **IMPORTANT**: For plugin authors, update your `build.gradle.kts` file to remove the\n    \n    ```kotlin\n        buildTypes {\n            release {\n                isMinifyEnabled = false\n                proguardFiles(\n                    getDefaultProguardFile(\"proguard-android-optimize.txt\"),\n                    \"proguard-rules.pro\"\n                )\n            }\n        }\n    ```\n    \n    section and rename your `proguard-rules.pro` to `consumer-rules.pro` to match the `consumerProguardFiles(\"consumer-rules.pro\")` in the template.\n- [`e2e585ad1`](https://www.github.com/tauri-apps/tauri/commit/e2e585ad1196c9572f86ef39aae01ef4c3b1a762) ([#15828](https://www.github.com/tauri-apps/tauri/pull/15828)) 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.\n- [`9e9a54dea`](https://www.github.com/tauri-apps/tauri/commit/9e9a54dea26ae66de63800cabbccf980902a1cd3) ([#15890](https://www.github.com/tauri-apps/tauri/pull/15890)) 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`.\n- [`b6660a041`](https://www.github.com/tauri-apps/tauri/commit/b6660a041db44729893dae7991a9be61cf8c2ed5) ([#15954](https://www.github.com/tauri-apps/tauri/pull/15954)) Update typescript to v7 in `tauri plugin init` template. Also fixes the default `rootDir` in the template `tsconfig.json`\n- [`9e9a54dea`](https://www.github.com/tauri-apps/tauri/commit/9e9a54dea26ae66de63800cabbccf980902a1cd3) ([#15890](https://www.github.com/tauri-apps/tauri/pull/15890)) Update cargo-mobile2 and change the default minimum iOS version to 15.0 to support Xcode 27.\n\n## \\[2.11.4]\n\n### Bug Fixes\n\n- [`67ffa192a`](https://www.github.com/tauri-apps/tauri/commit/67ffa192a499131e7e750f164fe61a40ca0fb2e7) ([#15596](https://www.github.com/tauri-apps/tauri/pull/15596) by [@FabianLars](https://www.github.com/tauri-apps/tauri/../../FabianLars)) Fixed an issue in the AppImage bundler that caused the `/.desktop` and `.DirIcon` files to be absolute symlinks instead of relative symlinks which caused problems with AppImage installers like `AppManager`.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.11.4`\n\n## \\[2.11.3]\n\n### Bug Fixes\n\n- [`50b0237ed`](https://www.github.com/tauri-apps/tauri/commit/50b0237edb9ed683979b7954975b98a4d22a9f70) ([#15549](https://www.github.com/tauri-apps/tauri/pull/15549) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Escape special characters in `productName` when generating Android `strings.xml`\n- [`728c8d4a5`](https://www.github.com/tauri-apps/tauri/commit/728c8d4a5d9e3badf4683eb2e493d950d27d6b66) ([#15473](https://www.github.com/tauri-apps/tauri/pull/15473) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Skip building bundles when using `tauri android run`\n- [`be0cb0d43`](https://www.github.com/tauri-apps/tauri/commit/be0cb0d4378ddf26bc33066b3750f2639ade15f5) ([#15344](https://www.github.com/tauri-apps/tauri/pull/15344) by [@raglady](https://www.github.com/tauri-apps/tauri/../../raglady)) Fix NDK_HOME environment variable not honored when set\n- [`ed8fd411f`](https://www.github.com/tauri-apps/tauri/commit/ed8fd411fe10469da33f63ed5bd9d7ae19e77d84) ([#15552](https://www.github.com/tauri-apps/tauri/pull/15552) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Make `ureq_proto` show trace level logs only on `-vvv` instead of `-vv`\n- [`fca4a31f9`](https://www.github.com/tauri-apps/tauri/commit/fca4a31f94f8ba709d1b28e073e69867b8704e6e) ([#15454](https://www.github.com/tauri-apps/tauri/pull/15454) by [@fallintoplace](https://www.github.com/tauri-apps/tauri/../../fallintoplace)) Fix `tauri migrate` generating invalid namespace imports for aliased pluginified imports from `@tauri-apps/api`.\n\n  Inputs like `import { cli as superCli } from \"@tauri-apps/api\"` now migrate to `import * as superCli from \"@tauri-apps/plugin-cli\"` instead of producing invalid ESM syntax. The migration tests also reparse migrated JS, Svelte, and Vue output so syntax regressions are caught directly.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.11.3`\n\n## \\[2.11.2]\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.11.2`\n\n## \\[2.11.1]\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.11.1`\n\n## \\[2.11.0]\n\n### New Features\n\n- [`926a57bb0`](https://www.github.com/tauri-apps/tauri/commit/926a57bb0851e45d47ad1ee68fc96a9c25754c7c) ([#15201](https://www.github.com/tauri-apps/tauri/pull/15201)) Added uninstaller icon and uninstaller header image support for NSIS installer.\n\n  Notes:\n\n  - For `tauri-bundler` lib users, the `NsisSettings` now has 2 new fields `uninstaller_icon` and `uninstaller_header_image` which can be a breaking change\n  - When bundling with NSIS, users can add `uninstallerIcon` and `uninstallerHeaderImage` under `bundle > windows > nsis` to configure them.\n- [`764b9139a`](https://www.github.com/tauri-apps/tauri/commit/764b9139a32de149d8a914a6b5ec6cd1937c64eb) ([#14313](https://www.github.com/tauri-apps/tauri/pull/14313)) Prompt to restart the Android emulator if it is not connected to adb.\n- [`5dc2cee60`](https://www.github.com/tauri-apps/tauri/commit/5dc2cee60370665af88c185684432e425b1c987d) ([#14793](https://www.github.com/tauri-apps/tauri/pull/14793)) Added support for `minimumWebview2Version` option support for the MSI (Wix) installer, the old `bundle > windows > nsis > minimumWebview2Version` is now deprecated in favor of `bundle > windows > minimumWebview2Version`\n\n  Notes:\n\n  - For anyone relying on the `WVRTINSTALLED` `Property` tag in `main.wxs`, it is now renamed to `INSTALLED_WEBVIEW2_VERSION`\n  - For `tauri-bundler` lib users, the `WindowsSettings` now has a new field `minimum_webview2_version` which can be a breaking change\n\n### Enhancements\n\n- [`be0e4bd2d`](https://www.github.com/tauri-apps/tauri/commit/be0e4bd2da02eb6cc75a8dc7c81663277e64c590) ([#15218](https://www.github.com/tauri-apps/tauri/pull/15218)) Added Vietnamese translations for the NSIS installer\n- [`8718d0816`](https://www.github.com/tauri-apps/tauri/commit/8718d08163f074dfc53387ebd1d823f9c28280ee) ([#15033](https://www.github.com/tauri-apps/tauri/pull/15033)) Show the context before prompting for updater signing key password\n\n### Bug Fixes\n\n- [`fcb702ec4`](https://www.github.com/tauri-apps/tauri/commit/fcb702ec4d924e81943efaeebea8d3edb7289c33) ([#14954](https://www.github.com/tauri-apps/tauri/pull/14954)) Fix `build --bundles` to allow `nsis` arg in linux+macOS\n- [`80c1425af`](https://www.github.com/tauri-apps/tauri/commit/80c1425af86058b1fc9489a30f778b6288d79b6b) ([#14921](https://www.github.com/tauri-apps/tauri/pull/14921)) Fix iOS build failure when `Metal Toolchain` is installed by using explicit `$(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain` path instead of `$(TOOLCHAIN_DIR)` for Swift library search paths.\n\n### What's Changed\n\n- [`9979cde1c`](https://www.github.com/tauri-apps/tauri/commit/9979cde1c5534dafb1a07cc4dc2bc280d15d2f66) ([#15175](https://www.github.com/tauri-apps/tauri/pull/15175)) Update NSIS installer Italian translations\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.11.0`\n\n## \\[2.10.1]\n\n### Bug Fixes\n\n- [`35c35f27a`](https://www.github.com/tauri-apps/tauri/commit/35c35f27aedc430b602ec74059b271128c15ad36) ([#14931](https://www.github.com/tauri-apps/tauri/pull/14931) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Support comma-separated list of Cargo features on all commands.\n- [`0d1cb83ba`](https://www.github.com/tauri-apps/tauri/commit/0d1cb83bab2aa482c7d73116893fd7ff6aa56283) ([#14932](https://www.github.com/tauri-apps/tauri/pull/14932) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Fix missing Cargo args when running mobile dev and build commands.\n- [`33754ae5e`](https://www.github.com/tauri-apps/tauri/commit/33754ae5e3740d022483b6164511c5c001a3c24b) ([#15022](https://www.github.com/tauri-apps/tauri/pull/15022) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix updater signing private keys generated using `tauri signer generate` with empty password can't be used (The keys generated during tauri were broken between v2.9.3 and v2.10.0, you'll need to regenerate them)\n\n### What's Changed\n\n- [`7be58a1c6`](https://www.github.com/tauri-apps/tauri/commit/7be58a1c643a7ed6d0f484a7e1134022618eb2b2) ([#14894](https://www.github.com/tauri-apps/tauri/pull/14894) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Log patching bundle type information again\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.10.1`\n\n## \\[2.10.0]\n\n### Enhancements\n\n- [`f82594410`](https://www.github.com/tauri-apps/tauri/commit/f82594410cd57d6f794f58d4afea0ed335aa796f) ([#13253](https://www.github.com/tauri-apps/tauri/pull/13253) by [@Armaldio](https://www.github.com/tauri-apps/tauri/../../Armaldio)) Allow electron to run the CLI directly\n- [`a2abe2e6b`](https://www.github.com/tauri-apps/tauri/commit/a2abe2e6bcb9e1eed8484240dfdb76a5bc28ae58) ([#14607](https://www.github.com/tauri-apps/tauri/pull/14607) by [@sftse](https://www.github.com/tauri-apps/tauri/../../sftse)) Simplified internal representation of `features: Option<Vec<String>>` with `Vec<String>`, no user facing changes\n- [`84b04c4a8`](https://www.github.com/tauri-apps/tauri/commit/84b04c4a8d3310b7a7091d10e36244bf94996e51) ([#14759](https://www.github.com/tauri-apps/tauri/pull/14759) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Added new environment variables for `tauri signer sign` command, to align with existing environment variables used in `tauri build`, `tauri bundle` and `tauri signer generate`\n\n  - `TAURI_SIGNING_PRIVATE_KEY`\n  - `TAURI_SIGNING_PRIVATE_KEY_PATH`\n  - `TAURI_SIGNING_PRIVATE_KEY_PASSWORD`\n\n  The old environment variables are deprecated and will be removed in a future release.\n\n  - `TAURI_PRIVATE_KEY`\n  - `TAURI_PRIVATE_KEY_PATH`\n  - `TAURI_PRIVATE_KEY_PASSWORD`\n\n### Bug Fixes\n\n- [`62aa13a12`](https://www.github.com/tauri-apps/tauri/commit/62aa13a124ef46bb5ce9887a2a574dd35ef86d4f) ([#14629](https://www.github.com/tauri-apps/tauri/pull/14629) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Fix `android build`'s `--aab` and `--apk` flags requiring a value to be provided.\n- [`eccff9758`](https://www.github.com/tauri-apps/tauri/commit/eccff97588232055bd0cafd83e6ee03d11a501fb) ([#14779](https://www.github.com/tauri-apps/tauri/pull/14779) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Fix empty associated-domains entitlements when domains are not configured for deep links.\n- [`ea31b07f1`](https://www.github.com/tauri-apps/tauri/commit/ea31b07f19e0aa467ed0f921f60575cfe09809c8) ([#14789](https://www.github.com/tauri-apps/tauri/pull/14789) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fixed the command description for `tauri inspect`\n- [`7fca58230`](https://www.github.com/tauri-apps/tauri/commit/7fca58230f97c3e6834134419514a0c7dbbe784b) ([#14830](https://www.github.com/tauri-apps/tauri/pull/14830) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Updated `nsis_tauri_utils` to 0.5.3:\n\n  - Use an alternative method `CreateProcessWithTokenW` to run programs as user, this fixed a problem that the program launched with the previous method can't query its own handle\n- [`53611c4d7`](https://www.github.com/tauri-apps/tauri/commit/53611c4d7bdaf89b9a5d7c46a9c4bf4e34216148) ([#14747](https://www.github.com/tauri-apps/tauri/pull/14747) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Only watch dependent workspace members when running `tauri dev` instead of watching on all members\n- [`1b0e335d3`](https://www.github.com/tauri-apps/tauri/commit/1b0e335d3f3445948d6590f7e074275d97cd9859) ([#14713](https://www.github.com/tauri-apps/tauri/pull/14713) by [@wasuaje](https://www.github.com/tauri-apps/tauri/../../wasuaje)) `tauri signer sign` doesn't work for files without an extension\n\n### What's Changed\n\n- [`e3fdcb500`](https://www.github.com/tauri-apps/tauri/commit/e3fdcb5002b362b46cde2a1971e4e7f2a1161208) ([#14836](https://www.github.com/tauri-apps/tauri/pull/14836) by [@sftse](https://www.github.com/tauri-apps/tauri/../../sftse)) Continued refactors of tauri-cli, fix too weak atomics.\n- [`0575dd287`](https://www.github.com/tauri-apps/tauri/commit/0575dd287e021b61d2aedf64d62ae84a2c925fb4) ([#14521](https://www.github.com/tauri-apps/tauri/pull/14521) by [@kandrelczyk](https://www.github.com/tauri-apps/tauri/../../kandrelczyk)) Change the way bundle type information is added to binary files. Instead of looking up the value of a variable we simply look for the default value.\n- [`7f7d9aac2`](https://www.github.com/tauri-apps/tauri/commit/7f7d9aac214e22d9492490543f7a9bcae0a6659e) ([#14668](https://www.github.com/tauri-apps/tauri/pull/14668) by [@sftse](https://www.github.com/tauri-apps/tauri/../../sftse)) Refactored internal use of static on config and directory resolvings, no user facing changes, please report any regressions if you encounter any\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.10.0`\n\n## \\[2.9.6]\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.6`\n\n## \\[2.9.5]\n\n### Bug Fixes\n\n- [`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\n\n### Performance Improvements\n\n- [`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.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.5`\n\n## \\[2.9.4]\n\n### Bug Fixes\n\n- [`b586ecf1f`](https://www.github.com/tauri-apps/tauri/commit/b586ecf1f4b3b087f9aa6c4668c2c18b1b7925f4) ([#14416](https://www.github.com/tauri-apps/tauri/pull/14416) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Premultiply Alpha before Resizing which gets rid of the gray fringe around the icons for svg images.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.4`\n\n## \\[2.9.3]\n\n### Bug Fixes\n\n- [`fd8c30b4f`](https://www.github.com/tauri-apps/tauri/commit/fd8c30b4f1bca8dd7165c5c0ebe7fbfd17662153) ([#14353](https://www.github.com/tauri-apps/tauri/pull/14353) by [@ChaseKnowlden](https://www.github.com/tauri-apps/tauri/../../ChaseKnowlden)) Premultiply Alpha before Resizing which gets rid of the gray fringe around the icons.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.3`\n\n## \\[2.9.2]\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.2`\n\n## \\[2.9.1]\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.1`\n\n## \\[2.9.0]\n\n### New Features\n\n- [`3b4fac201`](https://www.github.com/tauri-apps/tauri/commit/3b4fac2017832d426dd07c5e24e26684eda57f7b) ([#14194](https://www.github.com/tauri-apps/tauri/pull/14194)) Add `tauri.conf.json > bundle > android > autoIncrementVersionCode` config option to automatically increment the Android version code.\n- [`673867aa0`](https://www.github.com/tauri-apps/tauri/commit/673867aa0e1ccd766ee879ffe96aba58c758613c) ([#14094](https://www.github.com/tauri-apps/tauri/pull/14094)) Try to detect ANDROID_HOME and NDK_HOME environment variables from default system locations and install them if needed using the Android Studio command line tools.\n- [`3d6868d09`](https://www.github.com/tauri-apps/tauri/commit/3d6868d09c323d68a152f3c3f8c7256311bd020a) ([#14128](https://www.github.com/tauri-apps/tauri/pull/14128)) Added support to defining the content type of the declared file association on macOS (maps to LSItemContentTypes property).\n- [`3d6868d09`](https://www.github.com/tauri-apps/tauri/commit/3d6868d09c323d68a152f3c3f8c7256311bd020a) ([#14128](https://www.github.com/tauri-apps/tauri/pull/14128)) Added support to defining the metadata for custom types declared in `tauri.conf.json > bundle > fileAssociations > exportedType` via the `UTExportedTypeDeclarations` Info.plist property.\n- [`ed7c9a410`](https://www.github.com/tauri-apps/tauri/commit/ed7c9a4100e08c002212265549d12130d021ad1e) ([#14108](https://www.github.com/tauri-apps/tauri/pull/14108)) Added `bundle > macOS > infoPlist` and `bundle > iOS > infoPlist` configurations to allow defining custom Info.plist extensions.\n- [`75082cc5b`](https://www.github.com/tauri-apps/tauri/commit/75082cc5b340e30e2c4b4cd4bd6a1fe5382164aa) ([#14120](https://www.github.com/tauri-apps/tauri/pull/14120)) Added `ios run` and `android run` commands to run the app in production mode.\n- [`cc8c0b531`](https://www.github.com/tauri-apps/tauri/commit/cc8c0b53171173dbd1d01781a50de1a3ea159031) ([#14031](https://www.github.com/tauri-apps/tauri/pull/14031)) Added support to universal app links on macOS with the `plugins > deep-link > desktop > domains` configuration.\n\n### Enhancements\n\n- [`b5aa01870`](https://www.github.com/tauri-apps/tauri/commit/b5aa018702bf45dc98297698f9b7d238705865a6) ([#14268](https://www.github.com/tauri-apps/tauri/pull/14268)) Update cargo-mobile2 to 0.21, enhancing error messages and opening Xcode when multiple apps are installed.\n- [`55453e845`](https://www.github.com/tauri-apps/tauri/commit/55453e8453d927b8197f1ba9f26fd944482938f7) ([#14262](https://www.github.com/tauri-apps/tauri/pull/14262)) Check mismatched versions in `tauri info`\n- [`1a6627ee7`](https://www.github.com/tauri-apps/tauri/commit/1a6627ee7d085a4e66784e2705254714d68c7244) ([#14122](https://www.github.com/tauri-apps/tauri/pull/14122)) Set a default log level filter when running `tauri add log`.\n- [`b06b3bd09`](https://www.github.com/tauri-apps/tauri/commit/b06b3bd091b0fed26cdcfb23cacb0462a7a9cc2d) ([#14126](https://www.github.com/tauri-apps/tauri/pull/14126)) Improve error messages with more context.\n- [`f6622a3e3`](https://www.github.com/tauri-apps/tauri/commit/f6622a3e342f5dd5fb3cf6e0f79fb309a10e9b3d) ([#14129](https://www.github.com/tauri-apps/tauri/pull/14129)) Prompt to install the iOS platform if it isn't installed yet.\n- [`6bbb530fd`](https://www.github.com/tauri-apps/tauri/commit/6bbb530fd5edfc07b180a4f3782b8566872ca3b1) ([#14105](https://www.github.com/tauri-apps/tauri/pull/14105)) Warn if productName is empty when initializing mobile project.\n\n### Bug Fixes\n\n- [`19fb6f7cb`](https://www.github.com/tauri-apps/tauri/commit/19fb6f7cb0d702cb2f25f6f2d1e11014d9dada5d) ([#14146](https://www.github.com/tauri-apps/tauri/pull/14146)) Strip Windows-only extensions from the binary path so an Android project initialized on Windows can be used on UNIX systems.\n- [`19fb6f7cb`](https://www.github.com/tauri-apps/tauri/commit/19fb6f7cb0d702cb2f25f6f2d1e11014d9dada5d) ([#14146](https://www.github.com/tauri-apps/tauri/pull/14146)) Enhance Android build script usage on Windows by attempting to run cmd, bat and exe formats.\n- [`28a2f9bc5`](https://www.github.com/tauri-apps/tauri/commit/28a2f9bc55f658eb71ef1a970ff9f791346f7682) ([#14101](https://www.github.com/tauri-apps/tauri/pull/14101)) Fix iOS CLI usage after modifying the package name.\n- [`d2938486e`](https://www.github.com/tauri-apps/tauri/commit/d2938486e9d974debd90c15d7160b8a17bf4d763) ([#14261](https://www.github.com/","packages/api/package.json":"{\n  \"name\": \"@tauri-apps/api\",\n  \"version\": \"2.12.4\",\n  \"description\": \"Tauri API definitions\",\n  \"funding\": {\n    \"type\": \"opencollective\",\n    \"url\": \"https://opencollective.com/tauri\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/tauri-apps/tauri.git\"\n  },\n  \"contributors\": [\n    \"Tauri Programme within The Commons Conservancy\"\n  ],\n  \"license\": \"Apache-2.0 OR MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/tauri-apps/tauri/issues\"\n  },\n  \"homepage\": \"https://github.com/tauri-apps/tauri#readme\",\n  \"type\": \"module\",\n  \"main\": \"./index.cjs\",\n  \"module\": \"./index.js\",\n  \"types\": \"./index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": \"./index.js\",\n      \"require\": \"./index.cjs\",\n      \"types\": \"./index.d.ts\"\n    },\n    \"./*\": {\n      \"import\": \"./*.js\",\n      \"require\": \"./*.cjs\",\n      \"types\": \"./*.d.ts\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"scripts\": {\n    \"build\": \"rollup -c --configPlugin typescript\",\n    \"build:debug\": \"rollup -c --configPlugin typescript\",\n    \"npm-pack\": \"pnpm build && cd ./dist && npm pack\",\n    \"npm-publish\": \"pnpm build && cd ./dist && pnpm publish --access public --loglevel debug --no-git-checks\",\n    \"ts:check\": \"tsc --noEmit\",\n    \"eslint:check\": \"eslint src/**/*.ts\",\n    \"eslint:fix\": \"eslint src/**/*.ts --fix\"\n  },\n  \"devDependencies\": {\n    \"@eslint/js\": \"^10.0.1\",\n    \"@rollup/plugin-terser\": \"1.0.0\",\n    \"@rollup/plugin-typescript\": \"12.3.0\",\n    \"@types/eslint\": \"^9.6.1\",\n    \"@types/node\": \"^24.11.0\",\n    \"eslint\": \"^10.0.2\",\n    \"eslint-config-prettier\": \"10.1.8\",\n    \"eslint-plugin-security\": \"4.2.0\",\n    \"globals\": \"^17.4.0\",\n    \"rollup\": \"4.64.10\",\n    \"tslib\": \"^2.8.1\",\n    \"typescript\": \"^6.0.3\",\n    \"typescript-eslint\": \"^8.58.2\"\n  }\n}\n","packages/api/tsconfig.json":"{\n  \"compilerOptions\": {\n    \"target\": \"es2019\",\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noUnusedLocals\": true,\n    \"noImplicitAny\": true,\n    \"noEmit\": true,\n    \"lib\": [\"es2022\", \"esnext.disposable\", \"dom\"],\n    // This is used only for the dev tooling config files. You should not use node APIs inside `./src`.\n    // We need to composite multiple tsconfigs but it didn't work because of https://github.com/rollup/plugins/issues/1755\n    \"types\": [\"node\"]\n  }\n}\n","packages/api/README.md":"# @tauri-apps/api\n\n <img align=\"right\" src=\"https://github.com/tauri-apps/tauri/raw/dev/.github/icon.png\" height=\"128\" width=\"128\">\n\n[![status](https://img.shields.io/badge/status-stable-blue.svg)](https://github.com/tauri-apps/tauri/tree/dev)\n[![License](https://img.shields.io/badge/License-MIT%20or%20Apache%202-green.svg)](https://opencollective.com/tauri)\n[![lint js](https://img.shields.io/github/actions/workflow/status/tauri-apps/tauri/lint-js.yml?label=lint%20js&logo=github)](https://github.com/tauri-apps/tauri/actions/workflows/lint-js.yml)\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri?ref=badge_shield)\n[![Chat Server](https://img.shields.io/badge/chat-discord-7289da.svg)](https://discord.gg/SpmNs4S)\n[![website](https://img.shields.io/badge/website-tauri.app-purple.svg)](https://tauri.app)\n[![https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg](https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg)](https://good-labs.github.io/greater-good-affirmation)\n[![support](https://img.shields.io/badge/sponsor-Open%20Collective-blue.svg)](https://opencollective.com/tauri)\n\n| Component       | Version                                               |\n| --------------- | ----------------------------------------------------- |\n| @tauri-apps/api | ![](https://img.shields.io/npm/v/@tauri-apps/api.svg) |\n\n## About Tauri\n\nTauri is a polyglot and generic system that is very composable and allows engineers to make a wide variety of applications. It is used for building applications for Desktop Computers using a combination of Rust tools and HTML rendered in a Webview. Apps built with Tauri can ship with any number of pieces of an optional JS API / Rust API so that webviews can control the system via message passing. In fact, developers can extend the default API with their own functionality and bridge the Webview and Rust-based backend easily.\n\nTauri apps can have custom menus and have tray-type interfaces. They can be updated, and are managed by the user's operating system as expected. They are very small, because they use the system's webview. They do not ship a runtime, since the final binary is compiled from rust. This makes the reversing of Tauri apps not a trivial task.\n\n## This module\n\nThis is a typescript library that creates `cjs` and `esm` JavaScript endpoints for you to import into your Frontend framework so that the Webview can call and listen to backend activity. We also ship the pure typescript, because for some frameworks this is more optimal. It uses the message passing of webviews to their hosts.\n\nTo learn more about the details of how all of these pieces fit together, please consult this [ARCHITECTURE.md](https://github.com/tauri-apps/tauri/blob/dev/ARCHITECTURE.md) document.\n\n## Installation\n\nThe preferred method is to install this module locally as a dependency:\n\n```\n$ pnpm add @tauri-apps/api\n$ yarn add @tauri-apps/api\n$ npm add @tauri-apps/api\n```\n\n## Semver\n\n**tauri** is following [Semantic Versioning 2.0](https://semver.org/).\n\n## Licenses\n\nCode: (c) 2019 - 2021 - The Tauri Programme within The Commons Conservancy.\n\nMIT or MIT/Apache 2.0 where applicable.\n\nLogo: CC-BY-NC-ND\n\n- Original Tauri Logo Designs by [Daniel Thompson-Yvetot](https://github.com/nothingismagick) and [Guillaume Chau](https://github.com/akryum)\n","packages/cli/npm/win32-x64-msvc/README.md":"# `@tauri-apps/cli-win32-x64-msvc`\n\nThis is the **x86_64-pc-windows-msvc** binary for `@tauri-apps/cli`\n","packages/cli/npm/win32-x64-msvc/package.json":"{\n  \"name\": \"@tauri-apps/cli-win32-x64-msvc\",\n  \"version\": \"0.0.0\",\n  \"cpu\": [\n    \"x64\"\n  ],\n  \"main\": \"cli.win32-x64-msvc.node\",\n  \"files\": [\n    \"cli.win32-x64-msvc.node\"\n  ],\n  \"description\": \"Command line interface for building Tauri apps\",\n  \"homepage\": \"https://github.com/tauri-apps/tauri#readme\",\n  \"contributors\": [\n    \"Tauri Programme within The Commons Conservancy\"\n  ],\n  \"license\": \"Apache-2.0 OR MIT\",\n  \"engines\": {\n    \"node\": \">= 10\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/tauri-apps/tauri.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/tauri-apps/tauri/issues\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"os\": [\n    \"win32\"\n  ]\n}\n","packages/cli/npm/win32-ia32-msvc/package.json":"# Win32-ia32-msvc Skill\n\nPath: `packages/cli/npm/win32-ia32-msvc/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-ia32-msvc/package.json)","packages/cli/npm/win32-ia32-msvc/README.md":"# win32-ia32-msvc Documentation\n\nPath: `packages/cli/npm/win32-ia32-msvc/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-ia32-msvc/README.md)","packages/cli/npm/win32-arm64-msvc/package.json":"# Win32-arm64-msvc Skill\n\nPath: `packages/cli/npm/win32-arm64-msvc/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-arm64-msvc/package.json)","packages/cli/npm/win32-arm64-msvc/README.md":"# win32-arm64-msvc Documentation\n\nPath: `packages/cli/npm/win32-arm64-msvc/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-arm64-msvc/README.md)","packages/cli/npm/linux-x64-musl/package.json":"# Linux-x64-musl Skill\n\nPath: `packages/cli/npm/linux-x64-musl/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-x64-musl/package.json)","packages/cli/npm/linux-x64-musl/README.md":"# linux-x64-musl Documentation\n\nPath: `packages/cli/npm/linux-x64-musl/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-x64-musl/README.md)","packages/cli/npm/linux-x64-gnu/package.json":"# Linux-x64-gnu Skill\n\nPath: `packages/cli/npm/linux-x64-gnu/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-x64-gnu/package.json)","packages/cli/npm/linux-x64-gnu/README.md":"# linux-x64-gnu Documentation\n\nPath: `packages/cli/npm/linux-x64-gnu/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-x64-gnu/README.md)","packages/cli/npm/linux-riscv64-gnu/package.json":"# Linux-riscv64-gnu Skill\n\nPath: `packages/cli/npm/linux-riscv64-gnu/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-riscv64-gnu/package.json)","packages/cli/npm/linux-riscv64-gnu/README.md":"# linux-riscv64-gnu Documentation\n\nPath: `packages/cli/npm/linux-riscv64-gnu/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-riscv64-gnu/README.md)","packages/cli/npm/linux-arm64-musl/package.json":"# Linux-arm64-musl Skill\n\nPath: `packages/cli/npm/linux-arm64-musl/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm64-musl/package.json)","packages/cli/npm/linux-arm64-musl/README.md":"# linux-arm64-musl Documentation\n\nPath: `packages/cli/npm/linux-arm64-musl/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm64-musl/README.md)","packages/cli/npm/linux-arm64-gnu/package.json":"# Linux-arm64-gnu Skill\n\nPath: `packages/cli/npm/linux-arm64-gnu/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm64-gnu/package.json)","packages/cli/npm/linux-arm64-gnu/README.md":"# linux-arm64-gnu Documentation\n\nPath: `packages/cli/npm/linux-arm64-gnu/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm64-gnu/README.md)","packages/cli/npm/linux-arm-gnueabihf/package.json":"# Linux-arm-gnueabihf Skill\n\nPath: `packages/cli/npm/linux-arm-gnueabihf/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm-gnueabihf/package.json)","packages/cli/npm/linux-arm-gnueabihf/README.md":"# linux-arm-gnueabihf Documentation\n\nPath: `packages/cli/npm/linux-arm-gnueabihf/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm-gnueabihf/README.md)","packages/cli/npm/darwin-x64/package.json":"# Darwin-x64 Skill\n\nPath: `packages/cli/npm/darwin-x64/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/darwin-x64/package.json)","packages/cli/npm/darwin-x64/README.md":"# darwin-x64 Documentation\n\nPath: `packages/cli/npm/darwin-x64/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/darwin-x64/README.md)","packages/cli/npm/darwin-arm64/package.json":"# Darwin-arm64 Skill\n\nPath: `packages/cli/npm/darwin-arm64/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/darwin-arm64/package.json)","packages/cli/npm/darwin-arm64/README.md":"# darwin-arm64 Documentation\n\nPath: `packages/cli/npm/darwin-arm64/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/darwin-arm64/README.md)","packages/cli/__tests__/fixtures/empty/package.json":"# Empty Skill\n\nPath: `packages/cli/__tests__/fixtures/empty/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/__tests__/fixtures/empty/package.json)",".cursorrules (tauri-svelte-typescript-guide-cursorrules-prompt-f.mdc)":"---\ndescription: \"Cursor rules for Tauri development with Svelte and TypeScript guide integration.\"\nglobs: **/*\nalwaysApply: false\n---\nYou are an expert in developing desktop applications using Tauri with Svelte and TypeScript for the frontend.\n\nKey Principles:\n\n- Write clear, technical responses with precise examples for Tauri, Svelte, and TypeScript.\n- Prioritize type safety and utilize TypeScript features effectively.\n- Follow best practices for Tauri application development, including security considerations.\n- Implement responsive and efficient UIs using Svelte's reactive paradigm.\n- Ensure smooth communication between the Tauri frontend and external backend services.\n\nFrontend (Tauri + Svelte + TypeScript):\n\n- Use Svelte's component-based architecture for modular and reusable UI elements.\n- Leverage TypeScript for strong typing and improved code quality.\n- Utilize Tauri's APIs for native desktop integration (file system access, system tray, etc.).\n- Implement proper state management using Svelte stores or other state management solutions if needed.\n- Use Svelte's built-in reactivity for efficient UI updates.\n- Follow Svelte's naming conventions (PascalCase for components, camelCase for variables and functions).\n\nCommunication with Backend:\n\n- Use Axios for HTTP requests from the Tauri frontend to the external backend.\n- Implement proper error handling for network requests and responses.\n- Use TypeScript interfaces to define the structure of data sent and received.\n- Consider implementing a simple API versioning strategy for future-proofing.\n- Handle potential CORS issues when communicating with the backend.\n\nSecurity:\n\n- Follow Tauri's security best practices, especially when dealing with IPC and native API access.\n- Implement proper input validation and sanitization on the frontend.\n- Use HTTPS for all communications with external services.\n- Implement proper authentication and authorization mechanisms if required.\n- Be cautious when using Tauri's allowlist feature, only exposing necessary APIs.\n\nPerformance Optimization:\n\n- Optimize Svelte components for efficient rendering and updates.\n- Use lazy loading for components and routes where appropriate.\n- Implement proper caching strategies for frequently accessed data.\n- Utilize Tauri's performance features, such as resource optimization and app size reduction.\n\nTesting:\n\n- Write unit tests for Svelte components using testing libraries like Jest and Testing Library.\n- Implement end-to-end tests for critical user flows using tools like Playwright or Cypress.\n- Test Tauri-specific features and APIs thoroughly.\n- Implement proper mocking for API calls and external dependencies in tests.\n\nBuild and Deployment:\n\n- Use Vite for fast development and optimized production builds of the Svelte app.\n- Leverage Tauri's built-in updater for seamless application updates.\n- Implement proper environment configuration for development, staging, and production.\n- Use Tauri's CLI tools for building and packaging the application for different platforms.\n\nKey Conventions:\n\n1. Follow a consistent code style across the project (e.g., use Prettier).\n2. Use meaningful and descriptive names for variables, functions, and components.\n3. Write clear and concise comments, focusing on why rather than what.\n4. Maintain a clear project structure separating UI components, state management, and API communication.\n\nDependencies:\n\n- Tauri\n- Svelte\n- TypeScript\n- Vite\n- Axios\n\nRefer to official documentation for Tauri, Svelte, and TypeScript for best practices and up-to-date APIs.\n\nNote on Backend Communication:\n\nWhen working with the external Python backend:\n\n- Ensure proper error handling for potential backend failures or slow responses.\n- Consider implementing retry mechanisms for failed requests.\n- Use appropriate data serialization methods when sending/receiving complex data structures.\n"},"files":{"examples/commands/README.md":"# Commands Example\n\nA simple Tauri Application showcasing the command API.\n\nTo execute run the following on the root directory of the repository: `cargo run --example commands`.\n","examples/commands/tauri.conf.json":"{\n  \"$schema\": \"../../crates/tauri-schema-generator/schemas/config.schema.json\",\n  \"productName\": \"Commands\",\n  \"version\": \"0.1.0\",\n  \"identifier\": \"com.tauri.dev\",\n  \"build\": {\n    \"frontendDist\": [\"index.html\"]\n  },\n  \"app\": {\n    \"withGlobalTauri\": true,\n    \"windows\": [\n      {\n        \"title\": \"Welcome to Tauri!\",\n        \"width\": 800,\n        \"height\": 600,\n        \"resizable\": true,\n        \"fullscreen\": false\n      }\n    ],\n    \"security\": {\n      \"csp\": \"default-src 'self'; connect-src ipc: http://ipc.localhost\"\n    }\n  },\n  \"bundle\": {\n    \"active\": true,\n    \"targets\": \"all\",\n    \"icon\": [\n      \"../.icons/32x32.png\",\n      \"../.icons/128x128.png\",\n      \"../.icons/128x128@2x.png\",\n      \"../.icons/icon.icns\",\n      \"../.icons/icon.ico\"\n    ]\n  }\n}\n","packages/cli/package.json":"{\n  \"name\": \"@tauri-apps/cli\",\n  \"version\": \"2.12.4\",\n  \"description\": \"Command line interface for building Tauri apps\",\n  \"type\": \"commonjs\",\n  \"funding\": {\n    \"type\": \"opencollective\",\n    \"url\": \"https://opencollective.com/tauri\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/tauri-apps/tauri.git\"\n  },\n  \"contributors\": [\n    \"Tauri Programme within The Commons Conservancy\"\n  ],\n  \"license\": \"Apache-2.0 OR MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/tauri-apps/tauri/issues\"\n  },\n  \"homepage\": \"https://github.com/tauri-apps/tauri#readme\",\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"main\": \"main.js\",\n  \"types\": \"main.d.ts\",\n  \"napi\": {\n    \"binaryName\": \"cli\",\n    \"targets\": [\n      \"x86_64-unknown-linux-gnu\",\n      \"x86_64-pc-windows-msvc\",\n      \"x86_64-apple-darwin\",\n      \"aarch64-apple-darwin\",\n      \"aarch64-unknown-linux-gnu\",\n      \"aarch64-unknown-linux-musl\",\n      \"armv7-unknown-linux-gnueabihf\",\n      \"x86_64-unknown-linux-musl\",\n      \"riscv64gc-unknown-linux-gnu\",\n      \"i686-pc-windows-msvc\",\n      \"aarch64-pc-windows-msvc\"\n    ]\n  },\n  \"devDependencies\": {\n    \"@napi-rs/cli\": \"3.10.8\",\n    \"@types/node\": \"^24.11.0\",\n    \"cross-env\": \"10.1.0\",\n    \"vitest\": \"^5.0.0\"\n  },\n  \"engines\": {\n    \"node\": \">= 10\"\n  },\n  \"bin\": {\n    \"tauri\": \"./tauri.js\"\n  },\n  \"scripts\": {\n    \"artifacts\": \"napi artifacts\",\n    \"build\": \"cross-env TARGET=node napi build --platform --profile release-size-optimized\",\n    \"postbuild\": \"node append-headers.js\",\n    \"build:debug\": \"cross-env TARGET=node napi build --platform\",\n    \"postbuild:debug\": \"node append-headers.js\",\n    \"prepublishOnly\": \"napi prepublish -t npm --gh-release-id $RELEASE_ID\",\n    \"prepack\": \"cp ../../crates/tauri-schema-generator/schemas/config.schema.json .\",\n    \"version\": \"napi version\",\n    \"test\": \"vitest run\",\n    \"tauri\": \"node ./tauri.js\"\n  }\n}\n","packages/cli/README.md":"# @tauri-apps/cli\n\n <img align=\"right\" src=\"https://github.com/tauri-apps/tauri/raw/dev/.github/icon.png\" height=\"128\" width=\"128\">\n\n[![status](https://img.shields.io/badge/status-stable-blue.svg)](https://github.com/tauri-apps/tauri/tree/dev)\n[![License](https://img.shields.io/badge/License-MIT%20or%20Apache%202-green.svg)](https://opencollective.com/tauri)\n[![test cli](https://img.shields.io/github/actions/workflow/status/tauri-apps/tauri/test-cli-js.yml?label=test%20cli&logo=github)](https://github.com/tauri-apps/tauri/actions/workflows/test-cli-js.yml)\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri?ref=badge_shield)\n[![Chat Server](https://img.shields.io/badge/chat-discord-7289da.svg)](https://discord.gg/SpmNs4S)\n[![website](https://img.shields.io/badge/website-tauri.app-purple.svg)](https://tauri.app)\n[![https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg](https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg)](https://good-labs.github.io/greater-good-affirmation)\n[![support](https://img.shields.io/badge/sponsor-Open%20Collective-blue.svg)](https://opencollective.com/tauri)\n\n| Component       | Version                                               |\n| --------------- | ----------------------------------------------------- |\n| @tauri-apps/cli | ![](https://img.shields.io/npm/v/@tauri-apps/cli.svg) |\n\n## About Tauri\n\nTauri is a polyglot and generic system that is very composable and allows engineers to make a wide variety of applications. It is used for building applications for Desktop Computers using a combination of Rust tools and HTML rendered in a Webview. Apps built with Tauri can ship with any number of pieces of an optional JS API / Rust API so that webviews can control the system via message passing. In fact, developers can extend the default API with their own functionality and bridge the Webview and Rust-based backend easily.\n\nTauri apps can have custom menus and have tray-type interfaces. They can be updated, and are managed by the user's operating system as expected. They are very small, because they use the system's webview. They do not ship a runtime, since the final binary is compiled from rust. This makes the reversing of Tauri apps not a trivial task.\n\n## This module\n\nWritten in Typescript and packaged such that it can be used with `npm`, `pnpm`, `yarn`, and `bun`, this library provides a node.js runner for common tasks when using Tauri, like `pnpm tauri dev`. For the most part it is a wrapper around [tauri-cli](https://github.com/tauri-apps/tauri/blob/dev/crates/tauri-cli).\n\nTo learn more about the details of how all of these pieces fit together, please consult this [ARCHITECTURE.md](https://github.com/tauri-apps/tauri/blob/dev/ARCHITECTURE.md) document.\n\n## Installation\n\nThe preferred method is to install this module locally as a development dependency:\n\n```\n$ pnpm add -D @tauri-apps/cli\n$ yarn add -D @tauri-apps/cli\n$ npm add -D @tauri-apps/cli\n```\n\n## Semver\n\n**tauri** is following [Semantic Versioning 2.0](https://semver.org/).\n\n## Licenses\n\nCode: (c) 2019 - 2021 - The Tauri Programme within The Commons Conservancy.\n\nMIT or MIT/Apache 2.0 where applicable.\n\nLogo: CC-BY-NC-ND\n\n- Original Tauri Logo Designs by [Daniel Thompson-Yvetot](https://github.com/nothingismagick) and [Guillaume Chau](https://github.com/akryum)\n","ARCHITECTURE.md":"# The Tauri Architecture\n\n<https://tauri.app>\n\n<https://github.com/tauri-apps/tauri>\n\n## Introduction\n\nTauri is a polyglot and generic toolkit that is very composable and allows engineers to make a wide variety of applications. It is used for building applications for Desktop Computers using a combination of Rust tools and HTML rendered in a Webview. Apps built with Tauri can ship with any number of pieces of an optional JS API / Rust API so that webviews can control the system via message passing. In fact, developers can extend the default API with their own functionality and bridge the Webview and Rust-based backend easily.\n\nTauri apps can have custom menus and have tray-type interfaces. They can be updated, and are managed by the user's operating system as expected. They are very small, because they use the OS's webview. They do not ship a runtime, since the final binary is compiled from Rust. This makes the reversing of Tauri apps not a trivial task.\n\n## What Tauri is NOT\n\n- Tauri is not a lightweight kernel wrapper...instead it directly uses [WRY](https://github.com/tauri-apps/wry) and [TAO](https://github.com/tauri-apps/tao) to do the heavy-lifting in making system calls to the OS.\n- Tauri is not a VM or virtualized environment...instead it is an application toolkit that allows making Webview OS applications.\n\n## Major Components\n\nThe following section briefly describes the roles of the various parts of Tauri.\n\n### Tauri Core [STABLE RUST]\n\n#### [tauri](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri)\n\nThis is the major crate that holds everything together. It brings the runtimes, macros, utilities and API into one final product. It reads the `tauri.conf.json` file at compile time in order to bring in features and undertake actual configuration of the app (and even the `Cargo.toml` file in the project's folder). It handles script injection (for polyfills / prototype revision) at runtime, hosts the API for systems interaction, and even manages updating.\n\n#### [tauri-build](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-build)\n\nApply the macros at build-time in order to rig some special features needed by `cargo`.\n\n#### [tauri-codegen](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-codegen)\n\n- Embed, hash, and compress assets, including icons for the app as well as the system-tray.\n- Parse `tauri.conf.json` at compile time and generate the Config struct.\n\n#### [tauri-macros](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-macros)\n\nCreate macros for the context, handler, and commands by leveraging the `tauri-codegen` crate.\n\n#### [tauri-runtime](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-runtime)\n\nThis is the glue layer between tauri itself and lower level webview libraries.\n\n#### [tauri-runtime-wry](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-runtime-wry)\n\nThis crate opens up direct systems-level interactions specifically for WRY, such as printing, monitor detection, and other windowing related tasks. `tauri-runtime` implementation for WRY.\n\n#### [tauri-utils](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-utils)\n\nThis is common code that is reused in many places and offers useful utilities like parsing configuration files, detecting platform triples, injecting the CSP, and managing assets.\n\n### Tauri Tooling\n\n#### [@tauri-apps/api](https://github.com/tauri-apps/tauri/tree/dev/packages/api) [TS -> JS]\n\nA TypeScript library that creates `cjs` and `esm` JavaScript endpoints for you to import into your Frontend framework so that the Webview can call and listen to backend activity. We also ship the pure TypeScript, because for some frameworks this is more optimal. It uses the message passing of webviews to their hosts.\n\n#### [bundler](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-bundler) [RUST / SHELL]\n\nThe bundler is a library that builds a Tauri App for the platform triple it detects / is told. At the moment it currently supports macOS, Windows and Linux - but in the near future will support mobile platforms as well. May be used outside of Tauri projects.\n\n#### [@tauri-apps/cli](https://github.com/tauri-apps/tauri/tree/dev/packages/cli) [JS]\n\nIt is a wrapper around [tauri-cli](https://github.com/tauri-apps/tauri/blob/dev/crates/tauri-cli) using [napi-rs](https://github.com/napi-rs/napi-rs) to produce NPM packages for each platform.\n\n#### [tauri-cli](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-cli) [RUST]\n\nThis rust executable provides the full interface to all of the required activities for which the CLI is required. It will run on macOS, Windows, and Linux.\n\n#### [create-tauri-app](https://github.com/tauri-apps/create-tauri-app) [JS]\n\nThis is a toolkit that will enable engineering teams to rapidly scaffold out a new tauri-apps project using the frontend framework of their choice (as long as it has been configured).\n\n# External Crates\n\nThe Tauri-Apps organisation maintains two \"upstream\" crates from Tauri, namely TAO for creating and managing application windows, and WRY for interfacing with the Webview that lives within the window.\n\n## [TAO](https://github.com/tauri-apps/tao)\n\nCross-platform application window creation library in Rust that supports all major platforms like Windows, macOS, Linux, iOS and Android. Written in Rust, it is a fork of [winit](https://github.com/rust-windowing/winit) that we have extended for our own needs like menu bar and system tray.\n\n## [WRY](https://github.com/tauri-apps/wry)\n\nWRY is a cross-platform WebView rendering library in Rust that supports all major desktop platforms like Windows, macOS, and Linux.\nTauri uses WRY as the abstract layer responsible to determine which webview is used (and how interactions are made).\n\n# Additional tooling\n\n## [tauri-action](https://github.com/tauri-apps/tauri-action)\n\nThis is a github workflow that builds tauri binaries for all platforms. It is not the fastest out there, but it gets the job done and is highly configurable. Even allowing you to create a (very basic) tauri app even if tauri is not setup.\n\n## [create-pull-request](https://github.com/tauri-apps/create-pull-request)\n\nBecause this is a very risky (potentially destructive) github action, we forked it in order to have strong guarantees that the code we think is running is actually the code that is running.\n\n## [vue-cli-plugin-tauri](https://github.com/tauri-apps/vue-cli-plugin-tauri)\n\nThis plugin allows you to very quickly install tauri in a vue-cli project.\n\n## [tauri-vscode](https://github.com/tauri-apps/tauri-vscode)\n\nThis project enhances the VS Code interface with several nice-to-have features.\n\n# Tauri Plugins [documentation](https://v2.tauri.app/develop/plugins/)\n\nGenerally speaking, plugins are authored by third parties (even though there may be official, supported plugins). A plugin generally does 3 things:\n\n1. It provides rust code to do \"something\".\n2. It provides interface glue to make it easy to integrate into an app.\n3. It provides a JS API for interfacing with the rust code.\n\nHere are several examples of Tauri Plugins:\n\n- <https://github.com/tauri-apps/tauri-plugin-sql>\n- <https://github.com/tauri-apps/tauri-plugin-stronghold>\n- <https://github.com/tauri-apps/tauri-plugin-authenticator>\n\n# Workflows\n\n## What does the Development flow look like?\n\nA developer must first install the prerequisite toolchains for creating a Tauri app. At the very least this will entail installing rust & cargo, and most likely also a modern version of node.js and potentially another package manager. Some platforms may also require other tooling and libraries, but this has been documented carefully in the respective platform docs.\n\nBecause of the many ways to build front-ends, we will stick with a common node.js based approach for development. (Note: Tauri does not by default ship a node.js runtime.)\n\nThe easiest way to do this is to run the following:\n\n```\nnpm create tauri-app\n```\n\nWhich will ask you a bunch of questions about the framework you want to install and then create everything you need in a single folder - some via the placement of template files and some through normal installation procedures of your framework.\n\n> If you don't use this process, you will have to manually install the tauri cli, initialise tauri and manually configure the `tauri.conf.json` file.\n\nOnce everything is installed, you can run:\n\n```\npnpm tauri dev\n-or-\nyarn tauri dev\n-or-\nnpm run tauri dev\n```\n\nThis will do several things:\n\n1. start the JS Framework devserver\n2. begin the long process of downloading and compiling the rust libraries\n3. open an application window with devtools enabled\n4. keep a long-lived console alive\n\nIf you change your HTML/CSS/TS/JS, your framework devserver should give you its best shot at instant hot module reloading and you will see the changes instantly.\n\nIf you modify your rust code or anything in the Cargo.toml, the window will close while rust recompiles. When finished it will reload.\n\nIf you need to get deeper insight into your current project, or triage requires investigation of installed components, just run:\n\n```\npnpm tauri info\n```\n\n## What does the Release flow look like?\n\nThe release flow begins with proper configuration in the `tauri.conf.json` file. In this file, the developer can configure not only the basic behaviour of the application (like window size and decoration), they can also provide settings for signing and updating.\n\nDepending upon the operating system that the developer (or CI) is building the application on, there will be an app built for them for that system. (Cross compilation is not currently available, however there is an official [GitHub Action](https://github.com/tauri-apps/tauri-action) that can be used to build for all platforms.)\n\nTo kick off this process, just:\n\n```\npnpm tauri build\n```\n\nAfter some time, the process will end and you can see the results in the `./src-tauri/target/release` folder.\n\n## What does the End-User flow look like?\n\nEnd users will be provided with binaries in ways that are appropriate for their systems. Whether macOS, Linux, or Windows, direct download or store installations - they will be able to follow procedures for installing and removing that they are used to.\n\n## What does the Updating flow look like?\n\nWhen a new version is ready, the developer publishes the new signed artifacts to a server (that they have configured within `tauri.conf.json`).\n\nThe application can poll this server to see if there is a new release. When there is a new release, the user is prompted to update. The application update is downloaded, verified (checksum & signature), updated, closed, and restarted.\n\n## License\n\nTauri itself is licensed under MIT or Apache-2.0. If you repackage it and modify any source code, it is your responsibility to verify that you are complying with all upstream licenses. Tauri is provided AS-IS with no explicit claim for suitability for any purpose.\n\nHere you may peruse our [Software Bill of Materials](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri).\n","packages/api/CHANGELOG.md":"# Changelog\n\n## [2.12.4]\n\n### What's Changed\n\n- [`dc637db65`](https://www.github.com/tauri-apps/tauri/commit/dc637db6573443cc668b06deed1f014c4ac01033) ([#16260](https://www.github.com/tauri-apps/tauri/pull/16260)) Improve menu documentation.\n\n## [2.12.3]\n\n### Bug Fixes\n\n- [`0204f6f3a`](https://www.github.com/tauri-apps/tauri/commit/0204f6f3ae1e8dda195b216b32c3ab1d95d928e0) ([#16244](https://www.github.com/tauri-apps/tauri/pull/16244)) Keep delivering `Channel` messages after the `onmessage` handler throws. The error is rethrown asynchronously so it is still reported as uncaught, instead of leaving every later message queued.\n\n## [2.12.2]\n\n### Bug Fixes\n\n- [`a916205db`](https://www.github.com/tauri-apps/tauri/commit/a916205db2c21a2475502452efa9b70132ae52f3) ([#16195](https://www.github.com/tauri-apps/tauri/pull/16195) by [@alessandrorodi](https://www.github.com/tauri-apps/tauri/../../alessandrorodi)) Return an awaitable cleanup function from `Window.onDragDropEvent`, `Window.onFocusChanged` and `Webview.onDragDropEvent` so rejections from the inner unlisten calls can be handled instead of surfacing as unhandled promise rejections.\n- [`a98038ec7`](https://www.github.com/tauri-apps/tauri/commit/a98038ec78422b821b2e25b26fb71a2805741673) ([#16235](https://www.github.com/tauri-apps/tauri/pull/16235) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix `Menu`/`Submenu` `append`, `prepend`, `insert` not taking `MenuItemOptions` as the typescript type suggests\n\n## [2.12.1]\n\n### Bug Fixes\n\n- [`c9a3cb892`](https://www.github.com/tauri-apps/tauri/commit/c9a3cb892e901e39ca46aad2ff6b14aac21fea0d) ([#16166](https://www.github.com/tauri-apps/tauri/pull/16166) by [@FabianLars](https://www.github.com/tauri-apps/tauri/../../FabianLars)) The `macos-private-api` feature flag / `macOSPrivateAPI` tauri.conf.json value is no longer required to use transparency or fullscreen on macOS.\n\n## [2.12.0]\n\n### New Features\n\n- [`d8d02ba60`](https://www.github.com/tauri-apps/tauri/commit/d8d02ba60c041fb0ab4f5631e8ea21ce7231a95a) ([#14767](https://www.github.com/tauri-apps/tauri/pull/14767)) 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.\n- [`990f77eb2`](https://www.github.com/tauri-apps/tauri/commit/990f77eb2f16b431dd5fd8b1059e6112647cca7a) ([#15961](https://www.github.com/tauri-apps/tauri/pull/15961)) Added `JsImage` type alias and documented its relationship to the Rust `JsImage`\n- [`29265557c`](https://www.github.com/tauri-apps/tauri/commit/29265557c7a42ef6a1f982e0ef738208df1f6dd3) ([#15410](https://www.github.com/tauri-apps/tauri/pull/15410)) Added `noRedirectionBitmap` option to the `Window` and `WebviewWindow` constructors on Windows.\n- [`6edc2f4d4`](https://www.github.com/tauri-apps/tauri/commit/6edc2f4d49d2477649bf170aa2867276c25573da) ([#14926](https://www.github.com/tauri-apps/tauri/pull/14926)) Added `Window::set_fullscreen_on_monitor`, `WebviewWindow::set_fullscreen_on_monitor` and the `setFullscreenOnMonitor` JavaScript API to make a window fullscreen on the monitor containing a given physical position, along with the `core:window:allow-set-fullscreen-on-monitor` permission.\n\n### Enhancements\n\n- [`be019795a`](https://www.github.com/tauri-apps/tauri/commit/be019795abc0316aa53f2519bfbf3e7624b9af2e) ([#14103](https://www.github.com/tauri-apps/tauri/pull/14103)) Add ECMAScript Explicit Resource Management to Resource. You can now use the `using` syntax in supported browsers or with polyfills:\n    \n    ```javascript\n    import { create, BaseDirectory } from \"@tauri-apps/plugin-fs\"\n    ...\n    {\n      await using file = await create(\"foo/bar.txt\", { baseDir: BaseDirectory.AppConfig });\n      await file.write(new TextEncoder().encode(\"Hello world\"));\n      // Before `file` goes out of scope, it is disposed by calling `file[Symbol.asyncDispose]()` and awaited.\n    }\n    ```\n- [`4a5065653`](https://www.github.com/tauri-apps/tauri/commit/4a506565374a6a0b4b595e4cdb6d7db68136d765) ([#14454](https://www.github.com/tauri-apps/tauri/pull/14454)) 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.\n\n### Bug Fixes\n\n- [`4fabe2ff1`](https://www.github.com/tauri-apps/tauri/commit/4fabe2ff1bfe28bbcd3335546caf7db7ff970706) ([#16067](https://www.github.com/tauri-apps/tauri/pull/16067)) 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.\n- [`32efd0232`](https://www.github.com/tauri-apps/tauri/commit/32efd0232d868984ac8de9efebae19e464c7c536) ([#15957](https://www.github.com/tauri-apps/tauri/pull/15957)) `Image.rgba` now returns a more specific type `Promise<Uint8Array<ArrayBuffer>>` instead of the default `Promise<Uint8Array<ArrayBufferLike>`\n\n## \\[2.11.1]\n\n### Enhancements\n\n- [`916782601`](https://www.github.com/tauri-apps/tauri/commit/9167826011cc3d114bf12dfb301968fae479891f) ([#15520](https://www.github.com/tauri-apps/tauri/pull/15520) by [@polw1](https://www.github.com/tauri-apps/tauri/../../polw1)) Document that `Monitor.size`, `Monitor.position` and `Monitor.workArea` are in physical pixels, with examples showing how to convert them to the logical pixels expected by window creation options via `toLogical(monitor.scaleFactor)`.\n\n## \\[2.11.0]\n\n### New Features\n\n- [`074299c08`](https://www.github.com/tauri-apps/tauri/commit/074299c08dd99d2e1c57796f55ab24bc1d3976cc) ([#14307](https://www.github.com/tauri-apps/tauri/pull/14307)) Add Bring All to Front predefined menu item type\n- [`a12142a48`](https://www.github.com/tauri-apps/tauri/commit/a12142a481f7a19b69e88ee36a438b1db71b36f5) ([#14357](https://www.github.com/tauri-apps/tauri/pull/14357)) Add macos support for setting the icon and icon template state in the same step of the main thread, to prevent flickering.\n- [`001c8fe3d`](https://www.github.com/tauri-apps/tauri/commit/001c8fe3d288802de9a8c29cfd2f46f9220d97c5) ([#14722](https://www.github.com/tauri-apps/tauri/pull/14722)) Add a WebView option to control browser-level general autofill behavior. This option does not disable password or credit card autofill. On Windows (WebView2), setting it to true disables the general autofill \"Suggestions\" UI, which may appear even when `autocomplete=\"off\"` is specified on input elements. On Linux, macOS, iOS, and Android, this option is currently unsupported and performs no operation.\n- [`eb0312ea9`](https://www.github.com/tauri-apps/tauri/commit/eb0312ea9e493954298ac0b3fdaae7eafb52750e) ([#15199](https://www.github.com/tauri-apps/tauri/pull/15199)) Propagates the `Event::Suspended` and `Event::Resumed` events from `tao` when they are emitted on mobile targets.\n\n## \\[2.10.1]\n\n### Bug Fixes\n\n- Re-release of `2.10.0` with working assets.\n\n## \\[2.10.0]\n\n### Dependencies\n\n- [`517b81e97`](https://www.github.com/tauri-apps/tauri/commit/517b81e97005d087ca5fc4538d954982fce0f4ac) ([#14876](https://www.github.com/tauri-apps/tauri/pull/14876)) Upgraded to `tauri@2.10`\n\n## \\[2.9.1]\n\n### Bug Fixes\n\n- [`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\n\n## \\[2.9.0]\n\n### New Features\n\n- [`f5851ee00`](https://www.github.com/tauri-apps/tauri/commit/f5851ee00d6d1f4d560a220ca5a728fedd525092) ([#14089](https://www.github.com/tauri-apps/tauri/pull/14089)) Adds the `scrollBarStyle` option to the Webview and WebviewBuilder constructors.\n- [`3397fd9bf`](https://www.github.com/tauri-apps/tauri/commit/3397fd9bfe5f6b1337110149f6c34731b8a44bb3) ([#14133](https://www.github.com/tauri-apps/tauri/pull/14133)) Added `app > onBackButtonPress` for Android back button handling.\n\n### Enhancements\n\n- [`59089723f`](https://www.github.com/tauri-apps/tauri/commit/59089723fc20d66f3f305f2008adeb279bf87462) ([#14091](https://www.github.com/tauri-apps/tauri/pull/14091)) Added a config to set a data_directory relative to the app-specific data dir in JavaScript and `tauri.conf.json`.\n\n### Bug Fixes\n\n- [`08bda64c2`](https://www.github.com/tauri-apps/tauri/commit/08bda64c25008bd45c5b58d06ff14649081a2f5d) ([#14132](https://www.github.com/tauri-apps/tauri/pull/14132)) Fix `core > addPluginListener` failing on command permission check.\n\n## \\[2.8.0]\n\n### New Features\n\n- [`68874c68c`](https://www.github.com/tauri-apps/tauri/commit/68874c68c566638b4c21a3aa67844d1bdaeb6dab) ([#13564](https://www.github.com/tauri-apps/tauri/pull/13564) by [@robertrpf](https://www.github.com/tauri-apps/tauri/../../robertrpf)) Add window focusable attribute and set_focusable API.\n- [`5110a762e`](https://www.github.com/tauri-apps/tauri/commit/5110a762e9db978a28a15400bf76e3c864da2a86) ([#13830](https://www.github.com/tauri-apps/tauri/pull/13830) by [@Sky-walkerX](https://www.github.com/tauri-apps/tauri/../../Sky-walkerX)) Added `Window::setSimpleFullscreen`.\n\n### Enhancements\n\n- [`5ba1c3faa`](https://www.github.com/tauri-apps/tauri/commit/5ba1c3faa468073512bdb5035a01f7f99720fcf0) ([#13722](https://www.github.com/tauri-apps/tauri/pull/13722) by [@s00d](https://www.github.com/tauri-apps/tauri/../../s00d)) Added icon (icon and nativeIcon) support for Submenu:\n\n  - In the Rust API (`tauri`), you can now set an icon for submenus via the builder and dedicated methods.\n  - In the JS/TS API (`@tauri-apps/api`), `SubmenuOptions` now has an `icon` field, and the `Submenu` class provides `setIcon` and `setNativeIcon` methods.\n  - Usage examples are added to the documentation and demo app.\n\n  This is a backwards-compatible feature. Submenus can now display icons just like regular menu items.\n\n## \\[2.7.0]\n\n### New Features\n\n- [`232265c70`](https://www.github.com/tauri-apps/tauri/commit/232265c70e1c213bbb3f84b5541ddc07d330fce1) ([#13209](https://www.github.com/tauri-apps/tauri/pull/13209) by [@kandrelczyk](https://www.github.com/tauri-apps/tauri/../../kandrelczyk)) Added `getBundleType` to the app module.\n\n### Enhancements\n\n- [`96391467e`](https://www.github.com/tauri-apps/tauri/commit/96391467e967c1e3c6475ce75166c58a326116a3) ([#13783](https://www.github.com/tauri-apps/tauri/pull/13783) by [@JosephBrooksbank](https://www.github.com/tauri-apps/tauri/../../JosephBrooksbank)) Allow events emitted with `emit` to be handled correctly by `listen` callbacks when in a mocked environment\n\n### Bug Fixes\n\n- [`152d971bc`](https://www.github.com/tauri-apps/tauri/commit/152d971bcd6c1fdc5716f7d5417dd4df5ce7479f) ([#13744](https://www.github.com/tauri-apps/tauri/pull/13744) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Expose `unregisterCallback`, `runCallback`, `callbacks` in `mockIPC`\n- [`b821796ad`](https://www.github.com/tauri-apps/tauri/commit/b821796add33cca4de72f48882684af487936d02) ([#13810](https://www.github.com/tauri-apps/tauri/pull/13810) by [@asdolo](https://www.github.com/tauri-apps/tauri/../../asdolo)) Add missing `trafficLightPosition` TypeScript type definition\n\n## \\[2.6.0]\n\n### New Features\n\n- [`50ebddaa2`](https://www.github.com/tauri-apps/tauri/commit/50ebddaa2d83033a393a176ba07ef28352b98210) ([#13319](https://www.github.com/tauri-apps/tauri/pull/13319) by [@kingsword09](https://www.github.com/tauri-apps/tauri/../../kingsword09)) Expose the `setAutoResize` API for webviews in `@tauri-apps/api`.\n- [`267368fd4`](https://www.github.com/tauri-apps/tauri/commit/267368fd4f83e0a71dfb1b72a66d56592a2066bc) ([#13276](https://www.github.com/tauri-apps/tauri/pull/13276) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `Monitor.workArea` field.\n\n### Bug Fixes\n\n- [`23b9da75b`](https://www.github.com/tauri-apps/tauri/commit/23b9da75b91379cca9520bc53b10fdf39ebae241) ([#13324](https://www.github.com/tauri-apps/tauri/pull/13324) by [@kingsword09](https://www.github.com/tauri-apps/tauri/../../kingsword09)) Fixed path joining behavior where `path.join('', 'a')` incorrectly returns \"/a\" instead of \"a\".\n- [`b985eaf0a`](https://www.github.com/tauri-apps/tauri/commit/b985eaf0a231ea570e36d686c665cddbc76ab4f6) ([#13306](https://www.github.com/tauri-apps/tauri/pull/13306) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Immediately unregister event listener when the unlisten function is called.\n\n### What's Changed\n\n- [`b5c549d18`](https://www.github.com/tauri-apps/tauri/commit/b5c549d1898ecdb712822c02dc665cc6771fbd07) ([#13325](https://www.github.com/tauri-apps/tauri/pull/13325) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) `transformCallback` now registers the callbacks inside `window.__TAURI_INTERNALS__.callbacks` instead of directly on `window['_{id}']`\n\n## \\[2.5.0]\n\n### New Features\n\n- [`66e6325f4`](https://www.github.com/tauri-apps/tauri/commit/66e6325f43efa49ec2165c45afec911a1a14ecfb) ([#13136](https://www.github.com/tauri-apps/tauri/pull/13136)) Allow passing the callback as the parameter of constructor of `Channel` so you can use it like this `new Channel((message) => console.log(message))`\n- [`ea36294cb`](https://www.github.com/tauri-apps/tauri/commit/ea36294cbca98f7725c91d1464fd92e77c89698a) ([#13208](https://www.github.com/tauri-apps/tauri/pull/13208)) Added `disableInputAccessoryView: bool` config for iOS.\n- [`c1cd0a2dd`](https://www.github.com/tauri-apps/tauri/commit/c1cd0a2ddb5bc3e99451cbe399b5fc9f0035f571) ([#13090](https://www.github.com/tauri-apps/tauri/pull/13090)) macOS/iOS: add option to disable or enable link previews when building a webview (the webkit api has it enabled by default)\n\n  - `WindowOptions::allowLinkPreview`\n  - `WebviewOptions::allowLinkPreview`\n- [`b072e2b29`](https://www.github.com/tauri-apps/tauri/commit/b072e2b2967640ae4fa1af466ae878c156551edd) ([#9687](https://www.github.com/tauri-apps/tauri/pull/9687)) Add `preventOverflow` config option to prevent the window from overflowing the monitor size on creation\n- [`dd4f13ce4`](https://www.github.com/tauri-apps/tauri/commit/dd4f13ce4b3cd89cde2fa3f18a063c272f215621) ([#13185](https://www.github.com/tauri-apps/tauri/pull/13185)) Added `app.setDockVisibility` for macOS.\n\n### Enhancements\n\n- [`b8f86669a`](https://www.github.com/tauri-apps/tauri/commit/b8f86669ab05f7dbdd15839a20999e63dc43bda6) ([#13145](https://www.github.com/tauri-apps/tauri/pull/13145)) `core.isTauri` now leverages `globalThis` instead of `window` in order to be used in unit tests.\n\n### Bug Fixes\n\n- [`66e6325f4`](https://www.github.com/tauri-apps/tauri/commit/66e6325f43efa49ec2165c45afec911a1a14ecfb) ([#13136](https://www.github.com/tauri-apps/tauri/pull/13136)) Fix `Channel`'s callback attached to `window` never cleaned up\n\n## \\[2.4.1]\n\n### Enhancements\n\n- [`dd1372833`](https://www.github.com/tauri-apps/tauri/commit/dd137283341ce0e6aabfd158d07d77c6feeb920e) ([#13066](https://www.github.com/tauri-apps/tauri/pull/13066) by [@ahaoboy](https://www.github.com/tauri-apps/tauri/../../ahaoboy)) Add a generic to `emit` and `emitTo` functions for the `payload` instead of the previously used type (`unknown`).\n\n## \\[2.4.0]\n\n### New Features\n\n- [`d8059bad3`](https://www.github.com/tauri-apps/tauri/commit/d8059bad3cc922dc369c39ca1cfa49aaec31322e) ([#12900](https://www.github.com/tauri-apps/tauri/pull/12900) by [@Simon-Laux](https://www.github.com/tauri-apps/tauri/../../Simon-Laux)) add `AppHandle.fetch_data_store_identifiers` and `AppHandle.remove_data_store` (macOS and iOS only)\n- [`20c190691`](https://www.github.com/tauri-apps/tauri/commit/20c19069125c89b2d45a2127278c9ffc2df35fc2) ([#12821](https://www.github.com/tauri-apps/tauri/pull/12821) by [@Simon-Laux](https://www.github.com/tauri-apps/tauri/../../Simon-Laux)) Added `WindowOptions::javascriptDisabled` and `WebviewOptions::javascriptDisabled`.\n- [`060de5bbd`](https://www.github.com/tauri-apps/tauri/commit/060de5bbdddca384e3965a8938d89840f27c581d) ([#12837](https://www.github.com/tauri-apps/tauri/pull/12837) by [@niladrix719](https://www.github.com/tauri-apps/tauri/../../niladrix719)) Added `getIdentifier()` function to get the application identifier configured in tauri.conf.json\n- [`be2e6b85f`](https://www.github.com/tauri-apps/tauri/commit/be2e6b85fed226732b4a98f68cc5d72b4f8f5a13) ([#12944](https://www.github.com/tauri-apps/tauri/pull/12944) by [@Simon-Laux](https://www.github.com/tauri-apps/tauri/../../Simon-Laux)) Added `Window#isAlwaysOnTop` and `WebviewWindow#isAlwaysOnTop` methods.\n- [`bcdd51025`](https://www.github.com/tauri-apps/tauri/commit/bcdd510254ebe37827e22a5ffeb944321361e97c) ([#13012](https://www.github.com/tauri-apps/tauri/pull/13012) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) The `path` basename and extname APIs now accept Android content URIs, such as the paths returned by the dialog plugin.\n\n### Bug Fixes\n\n- [`3a74dc8f3`](https://www.github.com/tauri-apps/tauri/commit/3a74dc8f3421112b1d0a32b6a432606b1f33cc25) ([#12935](https://www.github.com/tauri-apps/tauri/pull/12935) by [@tk103331](https://www.github.com/tauri-apps/tauri/../../tk103331)) Fix `Webview.close` always fail with command not found\n\n## \\[2.3.0]\n\n### Enhancements\n\n- [`a2d36b8c3`](https://www.github.com/tauri-apps/tauri/commit/a2d36b8c34a8dcfc6736797ca5cd4665faf75e7e) ([#12181](https://www.github.com/tauri-apps/tauri/pull/12181) by [@bastiankistner](https://www.github.com/tauri-apps/tauri/../../bastiankistner)) Add an option to change the default background throttling policy (currently for WebKit only).\n\n## \\[2.2.0]\n\n### New Features\n\n- [`020ea0556`](https://www.github.com/tauri-apps/tauri/commit/020ea05561348dcd6d2a7df358f8a5190f661ba2) ([#11661](https://www.github.com/tauri-apps/tauri/pull/11661) by [@ahqsoftwares](https://www.github.com/tauri-apps/tauri/../../ahqsoftwares)) Add badging APIs:\n\n  - `Window/WebviewWindow::set_badge_count` for Linux, macOS and IOS.\n  - `Window/WebviewWindow::set_overlay_icon` for Windows Only.\n  - `Window/WebviewWindow::set_badge_label`for macOS Only.\n- [`fc30b20be`](https://www.github.com/tauri-apps/tauri/commit/fc30b20bea125f647db00ca824663f8e1da4d61f) ([#11726](https://www.github.com/tauri-apps/tauri/pull/11726) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `TrayIcon.setShowMenuOnLeftClick` method and deprecate `TrayIcon.setMenuOnLeftClick` to match the Rust API.\n- [`fc30b20be`](https://www.github.com/tauri-apps/tauri/commit/fc30b20bea125f647db00ca824663f8e1da4d61f) ([#11726](https://www.github.com/tauri-apps/tauri/pull/11726) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `TrayIconOptions.showMenuOnLeftClick` field and deprecate `TrayIconOptions.menuOnLeftClick` to match the Rust API.\n\n### Enhancements\n\n- [`fc30b20be`](https://www.github.com/tauri-apps/tauri/commit/fc30b20bea125f647db00ca824663f8e1da4d61f) ([#11726](https://www.github.com/tauri-apps/tauri/pull/11726) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add support for `TrayIconOptions.menuOnLeftClick` option and `TrayIcon.setMenuOnLeftClick` on Windows.\n\n### Bug Fixes\n\n- [`a16796a55`](https://www.github.com/tauri-apps/tauri/commit/a16796a55592cf5be80043edfbb630dd2e32efab) ([#12069](https://www.github.com/tauri-apps/tauri/pull/12069) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix `Channel` never calls `onmessage` in some cases\n- [`12a48d1e2`](https://www.github.com/tauri-apps/tauri/commit/12a48d1e26a83c3915eaa0687b196fbc8f2d457a) ([#11741](https://www.github.com/tauri-apps/tauri/pull/11741) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Fix error when calling `PredefinedMenuItem.new` to create an `About` menu item that uses an `Image` instance for the about icon.\n- [`12a48d1e2`](https://www.github.com/tauri-apps/tauri/commit/12a48d1e26a83c3915eaa0687b196fbc8f2d457a) ([#11741](https://www.github.com/tauri-apps/tauri/pull/11741) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Fix error when calling `IconMenuItem.new` using an `Image` instance for the icon.\n- [`b63262cd4`](https://www.github.com/tauri-apps/tauri/commit/b63262cd4d6a3667ca1664607a0a5444ad79fe0e) ([#11724](https://www.github.com/tauri-apps/tauri/pull/11724) by [@FabianLars](https://www.github.com/tauri-apps/tauri/../../FabianLars)) Removed the generic in the type of the callback function argument in `mockIPC` which prevented its proper use in tests using TypeScript.\n- [`a6e84f7d2`](https://www.github.com/tauri-apps/tauri/commit/a6e84f7d2c1d5fdc65901fce683502be3f47833f) ([#11835](https://www.github.com/tauri-apps/tauri/pull/11835) by [@ilittlebig](https://www.github.com/tauri-apps/tauri/../../ilittlebig)) Fix error where using `isAbsolute` would return `Command not found`.\n\n## \\[2.1.1]\n\n### Bug Fixes\n\n- [`7f81f0523`](https://www.github.com/tauri-apps/tauri/commit/7f81f052365675721312aafba297a7b67fb872d2) Fix regression in `toLogical` and `toPhysical` for position types in `dpi` module returning incorrect `y` value.\n- [`e8a50f6d7`](https://www.github.com/tauri-apps/tauri/commit/e8a50f6d760fad4529e7abb400302a1b487f11dd) ([#11645](https://www.github.com/tauri-apps/tauri/pull/11645)) Fix integer values of `BasDirectory.Home` and `BaseDirectory.Font` regression which broke path APIs in JS.\n\n## \\[2.1.0]\n\n### New Features\n\n- [`5c4b83084`](https://www.github.com/tauri-apps/tauri/commit/5c4b830843ab085f8ff9db9e08d832223b027e4e) ([#11191](https://www.github.com/tauri-apps/tauri/pull/11191) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Improved support for `dpi` module types to allow these types to be used without manual conversions with `invoke`:\n\n  - Added `SERIALIZE_TO_IPC_FN` const in `core` module which can be used to implement custom IPC serialization for types passed to `invoke`.\n  - Added `Size` and `Position` classes in `dpi` module.\n  - Implementd `SERIALIZE_TO_IPC_FN` method on `PhysicalSize`, `PhysicalPosition`, `LogicalSize` and `LogicalPosition` to convert it into a valid IPC-compatible value that can be deserialized correctly on the Rust side into its equivalent struct.\n- [`4d545ab3c`](https://www.github.com/tauri-apps/tauri/commit/4d545ab3ca228c8a21b966b709f84a0da2864479) ([#11486](https://www.github.com/tauri-apps/tauri/pull/11486) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Added `Webview::setBackgroundColor`, `WebviewWindow::setBackgroundColor` APIs to set the window background color dynamically\n  and a `backgroundColor` window option to set the background color on window creation.\n- [`cbc095ec5`](https://www.github.com/tauri-apps/tauri/commit/cbc095ec5fe7de29b5c9265576d4e071ec159c1c) ([#11451](https://www.github.com/tauri-apps/tauri/pull/11451) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `app > windows > devtools` config option and when creating the webview from JS, to enable or disable devtools for a specific webview.\n- [`2a75c64b5`](https://www.github.com/tauri-apps/tauri/commit/2a75c64b5431284e7340e8743d4ea56a62c75466) ([#11469](https://www.github.com/tauri-apps/tauri/pull/11469) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Added `windowClassname` option, when constructing a `Webview` or `WebviewWindow`, to specify the name of the window class on Windows.\n\n### Bug Fixes\n\n- [`54cbf59b5`](https://www.github.com/tauri-apps/tauri/commit/54cbf59b5a572570a47237a3b5e6505f2a9e5d5d) ([#11441](https://www.github.com/tauri-apps/tauri/pull/11441) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Fix submenu created as a menu item instead of a submenu when created by using an object in the `items` field in the options object passed to `Menu.new` or `Submenu.new`.\n\n## \\[2.0.3]\n\n### Bug Fixes\n\n- [`fbb45c674`](https://www.github.com/tauri-apps/tauri/commit/fbb45c674ca92fbbe04f1a8360e5f2e477dd4297) ([#11423](https://www.github.com/tauri-apps/tauri/pull/11423) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Fixes `addPluginListener` not working.\n\n### What's Changed\n\n- [`2e88633ba`](https://www.github.com/tauri-apps/tauri/commit/2e88633ba4da8fc289c6d8a29c36f3327f9b576e) ([#11369](https://www.github.com/tauri-apps/tauri/pull/11369) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Remove references to no longer used `__TAURI_INTERNALS__.metadata.windows` and `__TAURI_INTERNALS__.metadata.webviews`.\n\n## \\[2.0.2]\n\n### What's Changed\n\n- [`e968b3d25`](https://www.github.com/tauri-apps/tauri/commit/e968b3d2527b8edf7653e6cf7284dc4a8889b5fe) ([#11219](https://www.github.com/tauri-apps/tauri/pull/11219) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Actually publish package with the latest tag.\n\n## \\[2.0.1]\n\n### What's Changed\n\n- [`be683e2ac`](https://www.github.com/tauri-apps/tauri/commit/be683e2ac36df9c51a5c050d9d500247bd019090) ([#11199](https://www.github.com/tauri-apps/tauri/pull/11199) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Publish package with the latest NPM tag.\n\n## \\[2.0.0]\n\n### What's Changed\n\n- [`637285790`](https://www.github.com/tauri-apps/tauri/commit/6372857905ae9c0aedb7f482ddf6cf9f9836c9f2) Promote to v2 stable!\n\n## \\[2.0.0-rc.6]\n\n### New Features\n\n- [`9014a3f17`](https://www.github.com/tauri-apps/tauri/commit/9014a3f1765ca406ea5c3e5224267a79c52cd53d) ([#11066](https://www.github.com/tauri-apps/tauri/pull/11066) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `WebviewWindow.clearAllBrowsingData` and `Webview.clearAllBrowsingData` to clear the webview browsing data.\n- [`95df53a2e`](https://www.github.com/tauri-apps/tauri/commit/95df53a2ed96873cd35a4b14a5e312d07e4e3004) ([#11143](https://www.github.com/tauri-apps/tauri/pull/11143) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Add the ability to set theme dynamically using `Window.setTheme` or `setTheme` function from the `app` module\n- [`d9d2502b4`](https://www.github.com/tauri-apps/tauri/commit/d9d2502b41e39efde679e30c8955006e2ba9ea64) ([#11140](https://www.github.com/tauri-apps/tauri/pull/11140) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `Webview.hide` and `Webview.show` methods.\n- [`de7414aab`](https://www.github.com/tauri-apps/tauri/commit/de7414aab935e45540594ea930eb60bae4dbc979) ([#11154](https://www.github.com/tauri-apps/tauri/pull/11154) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `Window::setEnabled` and `Window::isEnabled` methods\n\n### Bug Fixes\n\n- [`948772a65`](https://www.github.com/tauri-apps/tauri/commit/948772a657eb3caf20843628abac9109e3b67d41) ([#11114](https://www.github.com/tauri-apps/tauri/pull/11114) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Change the `button_state` tray event field to camelCase `buttonState`.\n\n### Breaking Changes\n\n- [`0b4495996`](https://www.github.com/tauri-apps/tauri/commit/0b4495996d3131a5ee80fbb2c71a28203e491ee7) ([#11121](https://www.github.com/tauri-apps/tauri/pull/11121) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Simplified emitted tray event JS value and updated `TrayIconEvent` type definition to match it.\n\n## \\[2.0.0-rc.5]\n\n### New Features\n\n- [`ddf69157b`](https://www.github.com/tauri-apps/tauri/commit/ddf69157b54249f3321ca72db6703812019f1ab9) ([#11031](https://www.github.com/tauri-apps/tauri/pull/11031) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `toPhysical` method on `LogicalPositon` and `LogicalSize` classes.\n\n## \\[2.0.0-rc.4]\n\n### Enhancements\n\n- [`f81929e25`](https://www.github.com/tauri-apps/tauri/commit/f81929e25104aa1091e464bd012c80649dedf9e5) ([#10799](https://www.github.com/tauri-apps/tauri/pull/10799) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Added `PermissionState`, `checkPermissions` and `requestPermissions` base APIs to the core module, designed for plugin authors to extend.\n\n### Bug Fixes\n\n- [`fbe76a955`](https://www.github.com/tauri-apps/tauri/commit/fbe76a955a63af9fb33f66d5f747caf858cf179b) ([#10797](https://www.github.com/tauri-apps/tauri/pull/10797) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Uint8Arrays and ArrayBuffers are now properly serialized as an array of numbers.\n\n## \\[2.0.0-rc.3]\n\n### What's Changed\n\n- [`f4d5241b3`](https://www.github.com/tauri-apps/tauri/commit/f4d5241b377d0f7a1b58100ee19f7843384634ac) ([#10731](https://www.github.com/tauri-apps/tauri/pull/10731) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Update documentation icon path.\n\n## \\[2.0.0-rc.2]\n\n### Bug Fixes\n\n- [`c689521a7`](https://www.github.com/tauri-apps/tauri/commit/c689521a7674b6562b5dfd4f5cacd12138d99d85) ([#10681](https://www.github.com/tauri-apps/tauri/pull/10681) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Fix tslib path in dist.\n\n## \\[2.0.0-rc.1]\n\n### Breaking Changes\n\n- [`b6dca99ff`](https://www.github.com/tauri-apps/tauri/commit/b6dca99fff73816a39380b288c299b47b493cfdb) ([#10630](https://www.github.com/tauri-apps/tauri/pull/10630) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Changed `WebviewWindow.getAll`, `WebviewWindow.getByLabel`, `getAllWebviewWindows`,\n  `Window.getAll`, `Window.getByLabel`, `getAllWindows`,\n  `Webview.getAll`, `Webview.getByLabel`, `getAllWebviews`\n  to be async so their return value are synchronized with the state from the Rust side,\n  meaning new and destroyed windows are reflected.\n\n## \\[2.0.0-rc.0]\n\n### Changes\n\n- Promoted to RC!\n\n## \\[2.0.0-beta.16]\n\n### New Features\n\n- [`da25f7353`](https://www.github.com/tauri-apps/tauri/commit/da25f7353070477ba969851e974379d7666d6806) ([#10242](https://www.github.com/tauri-apps/tauri/pull/10242) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add APIs to enable setting window size constraints separately:\n\n  - Added `WindowSizeConstraints` interface in `window` and `webviewWindow` modules.\n  - Added `Window.setSizeConstraints` and `WebviewWindow.setSizeConstraints`\n\n### Bug Fixes\n\n- [`3c17fb64f`](https://www.github.com/tauri-apps/tauri/commit/3c17fb64fd822597d5cc16ee7e7b3f9e1023637b) ([#10277](https://www.github.com/tauri-apps/tauri/pull/10277) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix `Webview.reparent` pointing to `set_webview_focus` instead of `reparent` Rust API\n- [`da25f7353`](https://www.github.com/tauri-apps/tauri/commit/da25f7353070477ba969851e974379d7666d6806) ([#10242](https://www.github.com/tauri-apps/tauri/pull/10242) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Apply `minWidth`, `minHieght`, `maxWidth` and `maxHeight` constraints separately, which fixes a long standing bug where these constraints were never applied unless width and height were constrained together.\n\n## \\[2.0.0-beta.15]\n\n### New Features\n\n- [`7bc6a2a1d`](https://www.github.com/tauri-apps/tauri/commit/7bc6a2a1d6d2c5406d91cac94d33bce76443c28f) ([#9788](https://www.github.com/tauri-apps/tauri/pull/9788) by [@pewsheen](https://www.github.com/tauri-apps/tauri/../../pewsheen)) Add a new method to set title bar style dynamically on macOS.\n\n### Enhancements\n\n- [`080b6e127`](https://www.github.com/tauri-apps/tauri/commit/080b6e12720b89d839c686d7067cc94d276ed7e4) ([#10246](https://www.github.com/tauri-apps/tauri/pull/10246) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Use `EventName` on `Window`, `Webview` and `WebviewWindow`'s `once` so you can get auto complete for tauri's built-in events\n\n### Bug Fixes\n\n- [`080b6e127`](https://www.github.com/tauri-apps/tauri/commit/080b6e12720b89d839c686d7067cc94d276ed7e4) ([#10246](https://www.github.com/tauri-apps/tauri/pull/10246) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix `once` doesn't detached after one callback if event handler throws\n\n### Breaking Changes\n\n- [`261c9f942`](https://www.github.com/tauri-apps/tauri/commit/261c9f942de9a598b5c6cc504de6bddd1306113b) ([#10170](https://www.github.com/tauri-apps/tauri/pull/10170) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Renamed drag and drop events in `TauriEvent` enum to better convey when they are triggered:\n\n  - `TauriEvent.DRAG` -> `TauriEvent.DRAG_ENTER`\n  - `TauriEvent.DROP_OVER` -> `TauriEvent.DRAG_OVER`\n  - `TauriEvent.DROP` -> `TauriEvent.DRAG_DROP`\n  - `TauriEvent.DROP_CANCELLED` -> `TauriEvent::DRAG_LEAVE`\n\n  Also the `type` field values in `Window/Webview/WebviewWindow.onDropEvent` and `DragDropEvent` have changed:\n\n  - `dragged` -> `enter`\n  - `dragOver` -> `over`\n  - `dropped` -> `drop`\n  - `cancelled` -> `leave`\n- [`2b1ceb40d`](https://www.github.com/tauri-apps/tauri/commit/2b1ceb40d345aef42dd79438fa69ca7989ee0194) ([#10229](https://www.github.com/tauri-apps/tauri/pull/10229) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Renamed the JS `getCurrent` and `getAll` functions to a clearer name to avoid ambiguity:\n\n  - `getCurrent` in `window` module has been renamed to `getCurrentWindow`\n  - `getCurrent` in `webview` module has been renamed to `getCurrentWebview`\n  - `getCurrent` in `webviewWindow` module has been renamed to `getCurrentWebviewWindow`\n  - `getAll` in `window` module has been renamed to `getAllWindows`\n  - `getAll` in `webview` module has been renamed to `getAllWebviews`\n  - `getAll` in `webviewWindow` module has been renamed to `getAllWebviewWindows`\n\n## \\[2.0.0-beta.14]\n\n### New Features\n\n- [`148f04887`](https://www.github.com/tauri-apps/tauri/commit/148f048871caee21498b236c058b8890f2b66cc7) ([#9979](https://www.github.com/tauri-apps/tauri/pull/9979)) Add `defaultWindowIcon` to the JS `app` module to retrieve the default window icon in JS.\n\n### Bug Fixes\n\n- [`c98f385cb`](https://www.github.com/tauri-apps/tauri/commit/c98f385cb5da4d72968df24b1fc0b58212d59653) ([#10044](https://www.github.com/tauri-apps/tauri/pull/10044)) Export `mocks` module in `@tauri-apps/api` npm package.\n\n## \\[2.0.0-beta.13]\n\n### Breaking Changes\n\n- [`c4410daa8`](https://www.github.com/tauri-apps/tauri/commit/c4410daa85616340e911c8243fdaa69e6906fd49)([#9777](https://www.github.com/tauri-apps/tauri/pull/9777)) This release contains breaking changes to the tray event structure because of newly added events:\n\n  - Changed `TrayIconEvent` to be an enum instead of a struct.\n  - Added `MouseButtonState` and `MouseButton` enums.\n  - Removed `ClickType` enum and replaced it with `MouseButton` enum.\n  - Added `MouseButtonState` enum.\n\n## \\[2.0.0-beta.12]\n\n### New Features\n\n- [`ec0e092ec`](https://www.github.com/tauri-apps/tauri/commit/ec0e092ecd23b547c756c7476f23a0d95be6db80)([#9770](https://www.github.com/tauri-apps/tauri/pull/9770)) Add `monitorFromPoint` function in `window` module to get the monitor from a given point.\n\n## \\[2.0.0-beta.11]\n\n### Bug Fixes\n\n- [`aa080696e`](https://www.github.com/tauri-apps/tauri/commit/aa080696e0952abff416dd9088d519eaf2587a3a)([#9618](https://www.github.com/tauri-apps/tauri/pull/9618)) Fix `isTauri` incorrect return type.\n\n## \\[2.0.0-beta.10]\n\n### New Features\n\n- [`477bb8cd4`](https://www.github.com/tauri-apps/tauri/commit/477bb8cd4ea88ade3f6c1f268ad1701a68150161)([#9297](https://www.github.com/tauri-apps/tauri/pull/9297)) Add `cursorPosition` function in `window` module to get the current cursor position.\n\n## \\[2.0.0-beta.9]\n\n### New Features\n\n- [`70c51371e`](https://www.github.com/tauri-apps/tauri/commit/70c51371e01184223312de3dba8030394a5a9406)([#9539](https://www.github.com/tauri-apps/tauri/pull/9539)) Add `isTauri` function in `core` module to check whether running inside tauri or not.\n\n### Bug Fixes\n\n- [`be7eab209`](https://www.github.com/tauri-apps/tauri/commit/be7eab209c60c45e140f7bcb4bab1037d62d4c03)([#9486](https://www.github.com/tauri-apps/tauri/pull/9486)) Set the `exports > types` package.json field.\n- [`cf615e8e4`](https://www.github.com/tauri-apps/tauri/commit/cf615e8e4d5008ee1ac3f77e530ba26fb91e8977)([#9463](https://www.github.com/tauri-apps/tauri/pull/9463)) Fixes a bug when processing channel messages out of order.\n- [`35b25f7e5`](https://www.github.com/tauri-apps/tauri/commit/35b25f7e5c0fe03af4ed3582e22a626863f035f0)([#9530](https://www.github.com/tauri-apps/tauri/pull/9530)) Do not use JS optional chaining to prevent script errors on older webviews such as macOS 10.14.\n\n## \\[2.0.0-beta.8]\n\n### New Features\n\n- [`58a7a552d`](https://www.github.com/tauri-apps/tauri/commit/58a7a552d739b77b71d61af11c53f7f2dc7a6e7e)([#9378](https://www.github.com/tauri-apps/tauri/pull/9378)) Added the `set_zoom` function to the webview API.\n- [`58a7a552d`](https://www.github.com/tauri-apps/tauri/commit/58a7a552d739b77b71d61af11c53f7f2dc7a6e7e)([#9378](https://www.github.com/tauri-apps/tauri/pull/9378)) Add `zoom_hotkeys_enabled` to enable browser native zoom controls on creating webviews.\n\n### Bug Fixes\n\n- [`48a7a78f8`](https://www.github.com/tauri-apps/tauri/commit/48a7a78f8094d08e5e403e88050391642d29151b)([#9376](https://www.github.com/tauri-apps/tauri/pull/9376)) Fix `Window/Webview/WebviewWindow.setSize`, `Window/Webview/WebviewWindow.setPostion`, `Window/WebviewWindow.setMinSize`, `Window/WebviewWindow.setMaxSize`, `Window/WebviewWindow.setCursorPosition` and `Menu/Submenu.popup` methods failing with invalid args.\n\n## \\[2.0.0-beta.7]\n\n### Bug Fixes\n\n- [`c33f6e6cf`](https://www.github.com/tauri-apps/tauri/commit/c33f6e6cf35a0d34b5598875a2e5b642a01c8b38)([#9211](https://www.github.com/tauri-apps/tauri/pull/9211)) Re-added the `TauriEvent.WINDOW_CREATED` (`tauri://window-created`) event.\n\n### Breaking Changes\n\n- [`06833f4fa`](https://www.github.com/tauri-apps/tauri/commit/06833f4fa8e63ecc55fe3fc874a9e397e77a5709)([#9100](https://www.github.com/tauri-apps/tauri/pull/9100)) Rename `FileDrop` to `DragDrop` on structs, enums and enum variants. Also renamed `file_drop` to `drag_drop` on fields and function names.\n\n## \\[2.0.0-beta.6]\n\n### New Features\n\n- [`acdd76833`](https://www.github.com/tauri-apps/tauri/commit/acdd76833db6d81f4012418133d0042220de100b)([#9155](https://www.github.com/tauri-apps/tauri/pull/9155)) Add `TrayIcon.getById` and `TrayIcon.removeById` static methods.\n\n### Enhancements\n\n- [`ea0242db4`](https://www.github.com/tauri-apps/tauri/commit/ea0242db4aa6c127d2bb4a2e275000ba47c9e68c)([#9179](https://www.github.com/tauri-apps/tauri/pull/9179)) The `Image` constructor is now public (for internal use only).\n\n### Bug Fixes\n\n- [`379cc2b35`](https://www.github.com/tauri-apps/tauri/commit/379cc2b3547395474d4b66b4222679cf4538428d)([#9165](https://www.github.com/tauri-apps/tauri/pull/9165)) Fix `basename(path, 'ext')` JS API when removing all occurances of `ext` where it should only remove the last one.\n\n### Breaking Changes\n\n- [`ea0242db4`](https://www.github.com/tauri-apps/tauri/commit/ea0242db4aa6c127d2bb4a2e275000ba47c9e68c)([#9179](https://www.github.com/tauri-apps/tauri/pull/9179)) `Image::rgba()` now returns `Promise<Uint8Array>`.\n- [`ea0242db4`](https://www.github.com/tauri-apps/tauri/commit/ea0242db4aa6c127d2bb4a2e275000ba47c9e68c)([#9179](https://www.github.com/tauri-apps/tauri/pull/9179)) Removed `width` and `height` methods on the JS `Image` class, use `size` instead.\n\n## \\[2.0.0-beta.5]\n\n### Breaking Changes\n\n- [`db0a24a97`](https://www.github.com/tauri-apps/tauri/commit/db0a24a973191752aeecfbd556faa254b0f17e79)([#9132](https://www.github.com/tauri-apps/tauri/pull/9132)) Remove the `Image.fromPngBytes` and `Image.fromIcoBytes` APIs. Use `Image.fromBytes` instead.\n\n## \\[2.0.0-beta.4]\n\n### New Features\n\n- [`d1e77acd8`](https://www.github.com/tauri-apps/tauri/commit/d1e77acd8dfdf554b90b542513a58a2de1ef2360)([#9011](https://www.github.com/tauri-apps/tauri/pull/9011)) Add a new `Image` type in Rust and JS.\n\n### Enhancements\n\n- [`e62ca4ee9`](https://www.github.com/tauri-apps/tauri/commit/e62ca4ee95f4308a6ad128d0f100c85634e28223)([#9070](https://www.github.com/tauri-apps/tauri/pull/9070)) Added a mechanism to preserve channel message order.\n\n## \\[2.0.0-beta.3]\n\n### New Features\n\n- [`fdcaf935`](https://www.github.com/tauri-apps/tauri/commit/fdcaf935fa75ecfa2806939c4faad4fe9e880386)([#8939](https://www.github.com/tauri-apps/tauri/pull/8939)) Added the `reparent` function to the webview API.\n\n## \\[2.0.0-beta.2]\n\n### Breaking Changes\n\n- [`361ec37f`](https://www.github.com/tauri-apps/tauri/commit/361ec37fd4a5caa5b6630b9563ef079f53c6c336)([#8932](https://www.github.com/tauri-apps/tauri/pull/8932)) Removed the `unityUri` option from the progress bar state, no longer required.\n\n## \\[2.0.0-beta.1]\n\n### New Features\n\n- [`16e550ec`](https://www.github.com/tauri-apps/tauri/commit/16e550ec1503765158cdc3bb2a20e70ec710e981)([#8844](https://www.github.com/tauri-apps/tauri/pull/8844)) Add a new `webviewWindow` module that exports `WebviewWindow` class and related methods such as `getCurrent` and `getAll`.\n- [`16e550ec`](https://www.github.com/tauri-apps/tauri/commit/16e550ec1503765158cdc3bb2a20e70ec710e981)([#8844](https://www.github.com/tauri-apps/tauri/pull/8844)) Add `Window.onFileDropEvent` method.\n\n### Breaking Changes\n\n- [`16e550ec`](https://www.github.com/tauri-apps/tauri/commit/16e550ec1503765158cdc3bb2a20e70ec710e981)([#8844](https://www.github.com/tauri-apps/tauri/pull/8844)) Renamed the following enum variants of `TauriEvent` enum:\n\n  - `TauriEvent.WEBVIEW_FILE_DROP` -> `TauriEvent.FILE_DROP`\n  - `TauriEvent.WEBVIEW_FILE_DROP_HOVER` -> `TauriEvent.FILE_DROP_HOVER`\n  - `TauriEvent.WEBVIEW_FILE_DROP_CANCELLED` -> `TauriEvent.FILE_DROP_CANCELLED`\n- [`16e550ec`](https://www.github.com/tauri-apps/tauri/commit/16e550ec1503765158cdc3bb2a20e70ec710e981)([#8844](https://www.github.com/tauri-apps/tauri/pull/8844)) Move `WebviewWindow` class from `webview` module to a new `webviewWindow` module.\n\n## \\[2.0.0-beta.0]\n\n### New Features\n\n- [`74a2a603`](https://www.github.com/tauri-apps/tauri/commit/74a2a6036a5e57462f161d728cbd8a6f121028ca)([#8661](https://www.github.com/tauri-apps/tauri/pull/8661)) Implement access control list for IPC usage.\n- [`a093682d`](https://www.github.com/tauri-apps/tauri/commit/a093682d2df7169b024bb4f736c7f1fd2ea8b327)([#8621](https://www.github.com/tauri-apps/tauri/pull/8621)) Added `emitTo` api to `event` module which is equivalent to the rust `emit_to` method. Also added `emitTo` method on `Window`, `Webivew` and `WebviewWindow` classes.\n- [`a2fc3a63`](https://www.github.com/tauri-apps/tauri/commit/a2fc3a63579ca739646d696870cbecbb3a169d33)([#8657](https://www.github.com/tauri-apps/tauri/pull/8657)) Add `visibleOnAllWorkspaces` option when creating the window in JS and `Window.setVisibleOnAllWorkspaces` method.\n- [`7f033f6d`](https://www.github.com/tauri-apps/tauri/commit/7f033f6dcd54c69a4193765a5c1584755ba92c61)([#8537](https://www.github.com/tauri-apps/tauri/pull/8537)) Add `Window.startResizeDragging`.\n- [`9eaeb5a8`](https://www.github.com/tauri-apps/tauri/commit/9eaeb5a8cd95ae24b5e66205bdc2763cb7f965ce)([#8622](https://www.github.com/tauri-apps/tauri/pull/8622)) Add `parent` option when creating a window.\n- [`af610232`](https://www.github.com/tauri-apps/tauri/commit/af6102327376884364b2075b468bdf08ee0d02aa)([#8710](https://www.github.com/tauri-apps/tauri/pull/8710)) Added `Window::destroy` to force close a window.\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) Added support to multiwebview via the new `window` and `webview` modules.\n\n### Breaking Changes\n\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) Removed event callback's `windowLabel`.\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) The event target is now an object so you can target either a window or a webview.\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) Moved webview-specific APIs from the `Window` class to the `Webview` class.\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) Renamed `TauriEvent.WINDOW_FILE_DROP` to `TauriEvent.WEBVIEW_FILE_DROP`, `TauriEvent.WINDOW_FILE_DROP_HOVER` to `TauriEvent.WEBVIEW_FILE_DROP_HOVER` and `TauriEvent.WINDOW_FILE_DROP_CANCELLED` to `TauriEvent.WEBVIEW_FILE_DROP_CANCELLED`.\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) Added back the `WebviewWindow` API that exposes functionality of a window that hosts a single webview. The dedicated `Window` and `Webview` types are exposed for multiwebview features.\n- [`af610232`](https://www.github.com/tauri-apps/tauri/commit/af6102327376884364b2075b468bdf08ee0d02aa)([#8710](https://www.github.com/tauri-apps/tauri/pull/8710)) `Window::close` now triggers a close requested event instead of forcing the window to be closed.\n\n## \\[2.0.0-alpha.14]\n\n- [`97e33412`](https://www.github.com/tauri-apps/tauri/commit/97e334129956159bbd60e1c531b6acd3bc6139a6)([#8534](https://www.github.com/tauri-apps/tauri/pull/8534)) `mockIPC` and `mockWindows` no longer crash if `window.__TAURI_INTERNALS__` is undefined.\n\n## \\[2.0.0-alpha.13]\n\n### New Features\n\n- [`428ea652`](https://www.github.com/tauri-apps/tauri/commit/428ea6524c70545be33aac96d7c22b21f25caa4c)([#8370](https://www.github.com/tauri-apps/tauri/pull/8370)) Exposed `Resource` class which should be extended for Rust-backed resources created through `tauri::Manager::resources_table`.\n\n### Bug Fixes\n\n- [`ef21b681`](https://www.github.com/tauri-apps/tauri/commit/ef21b681e237a80592c9118b9c023c1d57231bac)([#8391](https://www.github.com/tauri-apps/tauri/pull/8391)) Fix a regression where typescript could not find types when using `\"moduleResolution\": \"node\"`\n- [`46451aee`](https://www.github.com/tauri-apps/tauri/commit/46451aee1318f63a6cd861a12b63929b38c64eb6)([#8268](https://www.github.com/tauri-apps/tauri/pull/8268)) Add top-level `main`, `module` and `types` fields in `package.json` to be compliant with typescripts's `\"moduleResolution\": \"node\"`\n\n### Breaking Changes\n\n- [`c2ad4d28`](https://www.github.com/tauri-apps/tauri/commit/c2ad4d28c481b2d7ed643458db56210cd44a2e0c)([#8273](https://www.github.com/tauri-apps/tauri/pull/8273)) Changed former `tauri` module from `primitives` to `core`.\n\n## \\[2.0.0-alpha.12]\n\n### New Features\n\n- [`f93148ea`](https://www.github.com/tauri-apps/tauri/commit/f93148eac05a1428e038bd9351a8149b2464ff4c)([#7709](https://www.github.com/tauri-apps/tauri/pull/7709)) Add `tray` and `menu` modules to create and manage tray icons and menus from Javascript.\n\n### Enhancements\n\n- [`b7add750`](https://www.github.com/tauri-apps/tauri/commit/b7add750ef9f32d959de613ab35063ff240281c2)([#8204](https://www.github.com/tauri-apps/tauri/pull/8204)) Added `position` field to the `FileDropEvent` payload.\n\n## \\[2.0.0-alpha.11]\n\n### Bug Fixes\n\n- [`822bf15d`](https://www.github.com/tauri-apps/tauri/commit/822bf15d6b258556b689ca55ac2ac224897e913a)([#8130](https://www.github.com/tauri-apps/tauri/pull/8130)) Fix tslib missing in the distributed api package.\n\n## \\[2.0.0-alpha.10]\n\n### Enhancements\n\n- [`c6c59cf2`](https://www.github.com/tauri-apps/tauri/commit/c6c59cf2373258b626b00a26f4de4331765dd487) Pull changes from Tauri 1.5 release.\n\n### Bug Fixes\n\n- [`287066b2`](https://www.github.com/tauri-apps/tauri/commit/287066b279f503dd09bfd43d5da37d1f471451fb)([#8071](https://www.github.com/tauri-apps/tauri/pull/8071)) No longer crashing in tests without mocks when `clearMocks` is defined in `afterEach` hook.\n\n## \\[2.0.0-alpha.9]\n\n### New Features\n\n- [`c1ec0f15`](https://www.github.com/tauri-apps/tauri/commit/c1ec0f155118527361dd5645d920becbc8afd569)([#7933](https://www.github.com/tauri-apps/tauri/pull/7933)) Added `setAlwaysOnBottom` function on `Window` and the `alwaysOnBottom` option when creating a window.\n- [`fb10b879`](https://www.github.com/tauri-apps/tauri/commit/fb10b87970a43320ef4d14564f45e7579b774eaf)([#8039](https://www.github.com/tauri-apps/tauri/pull/8039)) Add the `app` module back.\n- [`ed32257d`](https://www.github.com/tauri-apps/tauri/commit/ed32257d044f90b5eb15053efd1667125def2d2b)([#7794](https://www.github.com/tauri-apps/tauri/pull/7794)) On Windows, add `Effect.Tabbed`,`Effect.TabbedDark` and `Effect.TabbedLight` effects.\n- [`c9a9246c`](https://www.github.com/tauri-apps/tauri/commit/c9a9246c37bdf190661355c8ee406dac6c427344)([#8007](https://www.github.com/tauri-apps/tauri/pull/8007)) Add the `window` module back.\n- [`c085adda`](https://www.github.com/tauri-apps/tauri/commit/c085addab58ba851398373c6fd13f9cb026d71e8)([#8009](https://www.github.com/tauri-apps/tauri/pull/8009)) Added the `setProgressBar` API on the `Window` class.\n\n### What's Changed\n\n- [`5c0eeb40`](https://www.github.com/tauri-apps/tauri/commit/5c0eeb40c1003583290ff3aebfa02e2b5f5b9c41)([#7638](https://www.github.com/tauri-apps/tauri/pull/7638)) Updated minimum Node.js version to 18.\n\n### Breaking Changes\n\n- [`a63e71f9`](https://www.github.com/","packages/cli/CHANGELOG.md":"# Changelog\n\n## [2.12.4]\n\n### Bug Fixes\n\n- [`136a28eaa`](https://www.github.com/tauri-apps/tauri/commit/136a28eaa879e8aa706f9b2e05a050c46dcc1f4f) ([#16305](https://www.github.com/tauri-apps/tauri/pull/16305) by [@Chaosnico9000](https://www.github.com/tauri-apps/tauri/../../Chaosnico9000)) Skip the `--target` validation when `rustup target list` fails, e.g. when `rustup` is on `PATH` but has no toolchain installed, instead of rejecting every target as missing.\n- [`52081e04a`](https://www.github.com/tauri-apps/tauri/commit/52081e04a0309620d3eb8121e5ca9b66312f9857) ([#16333](https://www.github.com/tauri-apps/tauri/pull/16333) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Rename the misspelled `choowHowToInstall` NSIS language string to `chooseHowToInstall`. A custom language file in `bundle.windows.nsis.customLanguageFiles` that only defines the old name keeps working for now, but users should migrate to the new name.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.12.4`\n- [`4a6f51251`](https://www.github.com/tauri-apps/tauri/commit/4a6f512519286ff9862b2e86c67ef39f4562aee5) ([#16317](https://www.github.com/tauri-apps/tauri/pull/16317) by [@lazerg](https://www.github.com/tauri-apps/tauri/../../lazerg)) Updated `zip` to v9 to fix RUSTSEC-2026-0367, RUSTSEC-2026-0368 and RUSTSEC-2026-0369.\n\n## [2.12.3]\n\n### Bug Fixes\n\n- [`c95be4615`](https://www.github.com/tauri-apps/tauri/commit/c95be4615a432b1d12409d3684c960e8aa718ada) ([#16287](https://www.github.com/tauri-apps/tauri/pull/16287)) Fix `tauri ios xcode-script` failing to find the Tauri project when Xcode inherits package manager environment variables from `tauri ios dev --open`, or when pnpm runs the CLI directly from the `gen/apple` folder.\n- [`d62e5d9c0`](https://www.github.com/tauri-apps/tauri/commit/d62e5d9c0878b6fb327543cc9be50aa1696ee23c) ([#16184](https://www.github.com/tauri-apps/tauri/pull/16184)) Fix NSIS installer leaving `uninstall.exe` and the installation directory behind when uninstalling an existing installation from the installer.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.12.3`\n- [`5a2953e55`](https://www.github.com/tauri-apps/tauri/commit/5a2953e555b4444bed68bd5324ea13ad85a6c06e) ([#16237](https://www.github.com/tauri-apps/tauri/pull/16237)) Updated NSIS to 3.13\n\n## [2.12.2]\n\n### Bug Fixes\n\n- [`c48e1ca89`](https://www.github.com/tauri-apps/tauri/commit/c48e1ca891a3b82770b6b03f87eba740344cf2f1) ([#16246](https://www.github.com/tauri-apps/tauri/pull/16246)) On iOS, mark the Swift `@_cdecl` entry points that Rust links against as `public` (in the iOS API and in the plugin templates), so release builds made with Xcode 27 keep them global and link.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.12.2`\n- [`fd319dd43`](https://www.github.com/tauri-apps/tauri/commit/fd319dd432e36748483ae93e6cdea1c44a66fe79) Update `base64` to 0.23.\n\n## [2.12.1]\n\n### Enhancements\n\n- [`64bfdd909`](https://www.github.com/tauri-apps/tauri/commit/64bfdd909c5c3f0828371e4995b69ad5ed685126) ([#16165](https://www.github.com/tauri-apps/tauri/pull/16165) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Ignore `src-tauri` in `tauri plugin init` example template\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.12.1`\n\n## [2.12.0]\n\n### New Features\n\n- [`f6c1eb253`](https://www.github.com/tauri-apps/tauri/commit/f6c1eb2533a0445e081c334931d67fee3e354c6f) ([#15401](https://www.github.com/tauri-apps/tauri/pull/15401)) 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`.\n- [`f76b1d3ae`](https://www.github.com/tauri-apps/tauri/commit/f76b1d3ae70d0ba0f0eba80b94b867593aa5ca8b) ([#15644](https://www.github.com/tauri-apps/tauri/pull/15644)) 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).\n- [`af465eae1`](https://www.github.com/tauri-apps/tauri/commit/af465eae1ad99d7b16b8fdbf9aa96bf76d6b9a76) ([#15619](https://www.github.com/tauri-apps/tauri/pull/15619)) 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.\n- [`0646cc162`](https://www.github.com/tauri-apps/tauri/commit/0646cc1623608dfdaec8d1adbc08d0159b9c2369) ([#15620](https://www.github.com/tauri-apps/tauri/pull/15620)) 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.\n- [`f6c1eb253`](https://www.github.com/tauri-apps/tauri/commit/f6c1eb2533a0445e081c334931d67fee3e354c6f) ([#15401](https://www.github.com/tauri-apps/tauri/pull/15401)) Added `build.windows.staticVCRuntime` to control MSVC static runtime linking. The `STATIC_VCRUNTIME` environment variable is now deprecated and emits a migration warning when used.\n- [`f45ec0dcf`](https://www.github.com/tauri-apps/tauri/commit/f45ec0dcf83c139c8fdde5e61923a0e82836f756) Record the app version in the trusted comment of updater signatures, so a signed artifact is bound to the version it was released as.\n    \n    An update endpoint response is not signed, and the signature only covers the downloaded artifact, so the announced `version` on its own does not prove which release the `url` and `signature` point at. minisign covers the trusted comment with its global signature, which lets the updater plugin compare the two and reject a response that pairs a version number with a different release. Enable `requireSignedVersion` in the updater plugin configuration to enforce this.\n    \n    `tauri build` fills the version in automatically, and `tauri plugin add updater` now enables `requireSignedVersion` for the project it is adding the plugin to. `tauri signer sign` gains an `--app-version` flag for signing updater artifacts by hand, and warns when it is omitted.\n\n### Enhancements\n\n- [`e19121427`](https://www.github.com/tauri-apps/tauri/commit/e19121427332c8a14165999251cce415707a62fc) ([#15993](https://www.github.com/tauri-apps/tauri/pull/15993)) Don't always rewrite `Cargo.toml` file from CRLF line endings to LF\n- [`aebf38c84`](https://www.github.com/tauri-apps/tauri/commit/aebf38c845b57bc5653eca677e2e2e044528ea73) ([#15694](https://www.github.com/tauri-apps/tauri/pull/15694)) 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.\n    \n    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.\n- [`d89d8fa62`](https://www.github.com/tauri-apps/tauri/commit/d89d8fa62302bd3553b66fd47ecfa046b2fc84ef) ([#15780](https://www.github.com/tauri-apps/tauri/pull/15780)) 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.\n- [`c3d21bd60`](https://www.github.com/tauri-apps/tauri/commit/c3d21bd60c3355b284b23dee1a181c3423231182) ([#15730](https://www.github.com/tauri-apps/tauri/pull/15730)) Use `Theme.Material3.DayNight.NoActionBar` instead of `Theme.MaterialComponents.DayNight.NoActionBar` when running `tauri android init`\n- [`f654f470c`](https://www.github.com/tauri-apps/tauri/commit/f654f470c122e925e425424cea733f13d3306412) ([#15862](https://www.github.com/tauri-apps/tauri/pull/15862)) Update template to use `targetSdk = 37`\n- [`cdaf7eab6`](https://www.github.com/tauri-apps/tauri/commit/cdaf7eab6c5fccc2a4812af18f58fd3530f3eedd) ([#15765](https://www.github.com/tauri-apps/tauri/pull/15765)) Clarify that the `tauri init` frontend commands run before `tauri dev` and `tauri build`, and can be left empty when they are not needed.\n- [`d0f38df06`](https://www.github.com/tauri-apps/tauri/commit/d0f38df06a2f4406b388a336694aa18b3c6bf1a9) ([#15997](https://www.github.com/tauri-apps/tauri/pull/15997)) 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.\n- [`ca160ad48`](https://www.github.com/tauri-apps/tauri/commit/ca160ad4808f477380cb0865a08a8ae781e37f85) ([#15895](https://www.github.com/tauri-apps/tauri/pull/15895)) `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.\n- [`010f06bae`](https://www.github.com/tauri-apps/tauri/commit/010f06baecd499c41321da3130e20147c50025f7) ([#15737](https://www.github.com/tauri-apps/tauri/pull/15737)) Document the `TAURI_SIGNING_PRIVATE_KEY_PATH` environment variable and clarify that `TAURI_SIGNING_PRIVATE_KEY` accepts a string or a path for the `build` and `bundle` command but must be the literal key string for the `signer sign` command, both in `ENVIRONMENT_VARIABLES.md` and in the `signer generate` command output.\n\n### Bug Fixes\n\n- [`9bad06b9f`](https://www.github.com/tauri-apps/tauri/commit/9bad06b9f61996faed1c33709f1b8dd196602793) ([#16096](https://www.github.com/tauri-apps/tauri/pull/16096)) `tauri capability new` and `tauri permission new` now accept an `--out` path to a file that does not exist yet, trim comma-separated prompt answers (so `fs:default, core:default` works), report invalid permissions as errors instead of panicking, and reject identifiers that are not valid file names (such as `../../x`), which previously let them write outside of the capabilities or permissions directory.\n- [`9642b3087`](https://www.github.com/tauri-apps/tauri/commit/9642b30879eda8bde35fa3c7606718ca0d364f2e) ([#16117](https://www.github.com/tauri-apps/tauri/pull/16117)) `tauri add` now honors `--tag`, `--rev` and `--branch` for official plugins instead of silently installing the registry version, and rejects passing more than one of them. With npm, the JS package requirement is now `~<version>` like the other package managers, instead of `>=<version>` which allowed a later major version.\n- [`cada1cd4f`](https://www.github.com/tauri-apps/tauri/commit/cada1cd4f3e59efb48b2c7a176d240846f55ad0d) ([#16105](https://www.github.com/tauri-apps/tauri/pull/16105)) Fix Android dev server port forwarding: `adb reverse --list` is now matched on the exact port (so `tcp:80` no longer matches `tcp:8080`), stale forwards on other connected devices are actually removed, and the forward verification gives up with a warning after a few attempts instead of retrying forever.\n- [`d5bd04658`](https://www.github.com/tauri-apps/tauri/commit/d5bd046583d066024ba073840007f4476e52a5fb) ([#16111](https://www.github.com/tauri-apps/tauri/pull/16111)) Fix `bundle > android > debugApplicationIdSuffix` being written to the `signingConfigs` debug block instead of the `buildTypes` one, and keep the existing content of single-line debug blocks such as `getByName(\"debug\") { isDebuggable = true }` instead of dropping it.\n- [`ba17da2e5`](https://www.github.com/tauri-apps/tauri/commit/ba17da2e55184fe74990db64496b0d02e79cce09) ([#16101](https://www.github.com/tauri-apps/tauri/pull/16101)) `tauri icon` now generates 72x72 Android `hdpi` launcher icons (previously 49x49) and writes the Android launcher background color in `#RRGGBB`/`#AARRGGBB` notation instead of the raw CSS color string, which Android rejected or misread. Invalid SVG sources and `--png 0` now return an error instead of panicking.\n- [`272842a57`](https://www.github.com/tauri-apps/tauri/commit/272842a571a56401649db7aaa93ea400561a1661) ([#16128](https://www.github.com/tauri-apps/tauri/pull/16128)) Fix error messages that printed placeholders such as `{t}` literally instead of the value, e.g. \"Could not find an Android device matching {t}\".\n- [`10ad4e54e`](https://www.github.com/tauri-apps/tauri/commit/10ad4e54e2f1272ee7bb08418dc386058532a5e8) ([#16127](https://www.github.com/tauri-apps/tauri/pull/16127)) The Bash completions generated by `tauri completions` no longer replace the completions of `cargo`, `npm`, `pnpm`, `yarn`, `bun` and `deno`. They now define a `_tauri_cli` function registered only for the `tauri` and `cargo-tauri` commands. Generating completions when running the `cargo-tauri` binary directly no longer panics.\n- [`0e4ded72a`](https://www.github.com/tauri-apps/tauri/commit/0e4ded72a6a617fa16dff196e7fbd3716997e66f) ([#16107](https://www.github.com/tauri-apps/tauri/pull/16107)) Fix binaries in `src/bin` and `src/main.rs` being left out of bundles when `Cargo.toml` declares a `[[bin]]` target without a `path`.\n- [`8e0fa2e2f`](https://www.github.com/tauri-apps/tauri/commit/8e0fa2e2f8859cdd38dc07cfc24a1b012ef29fc3) ([#16097](https://www.github.com/tauri-apps/tauri/pull/16097)) Fix the bundler using the host target triple when `--target` is not passed but `build.target` is set in `.cargo/config.toml`. The CLI now also accepts `build.target` as an array and honors the `CARGO_BUILD_TARGET` environment variable.\n- [`7bb0a5421`](https://www.github.com/tauri-apps/tauri/commit/7bb0a542179bd4ccb17e0baf0dca2c3b2f3f7721) ([#16120](https://www.github.com/tauri-apps/tauri/pull/16120)) Fix the Cargo.toml feature rewrite corrupting a string dependency version that has a trailing comment or uses single quotes (e.g. `tauri = \"2\" # pin` became `\"2#pin\"`). The version value is now kept as-is and the comment is preserved.\n- [`e4630258e`](https://www.github.com/tauri-apps/tauri/commit/e4630258e3184fceb60e6c548a7ec61fb81f885d) ([#16114](https://www.github.com/tauri-apps/tauri/pull/16114)) Fix the CLI's working directory being left changed to the config directory when the Tauri configuration fails to parse, for example when `tauri dev` reloads an invalid config.\n- [`1b91b7b7b`](https://www.github.com/tauri-apps/tauri/commit/1b91b7b7b3dad8b77bcaeadc6653250e04f0cb7b) ([#16102](https://www.github.com/tauri-apps/tauri/pull/16102)) `tauri info` now logs a warning when it cannot check the latest crate version on crates.io instead of silently ignoring the failure, and no longer panics if crates.io returns a version it cannot parse.\n- [`1b91b7b7b`](https://www.github.com/tauri-apps/tauri/commit/1b91b7b7b3dad8b77bcaeadc6653250e04f0cb7b) ([#16102](https://www.github.com/tauri-apps/tauri/pull/16102)) `tauri info` now lists every locked version of a Rust crate when `Cargo.lock` contains more than one, and no longer panics when the crates.io response cannot be parsed.\n- [`6507d0b8b`](https://www.github.com/tauri-apps/tauri/commit/6507d0b8b360a41615139619eb39680e60df7732) ([#16124](https://www.github.com/tauri-apps/tauri/pull/16124)) `tauri dev` now reports an error instead of panicking when the `beforeDevCommand` cannot be spawned or the `devUrl` host cannot be resolved, and no longer risks stopping the `beforeDevCommand` process tree twice when Ctrl+C and the app exit race.\n- [`c1ea96ad6`](https://www.github.com/tauri-apps/tauri/commit/c1ea96ad6b433524c5cb570f55bbbe1fd72cca1e) ([#16110](https://www.github.com/tauri-apps/tauri/pull/16110)) Fix `tauri dev` not reacting to the app exiting when a process spawned by the app kept its stderr open, and stop keeping the whole app stderr output in memory. Also fix command output capture that could return empty output when the command finished before its output was read.\n- [`d61fbdc3e`](https://www.github.com/tauri-apps/tauri/commit/d61fbdc3e825749261c76b7a37454dd3c4483619) ([#16109](https://www.github.com/tauri-apps/tauri/pull/16109)) Fix Cargo.toml feature injection and the v1 migration only updating either `[dependencies]` or `[target.'cfg(..)'.dependencies]`, whichever came first in the file. Both the main and all target-specific dependency tables are now updated.\n- [`5d995ed35`](https://www.github.com/tauri-apps/tauri/commit/5d995ed35b029cecd780fdbe614dc6023a89b81b) ([#16017](https://www.github.com/tauri-apps/tauri/pull/16017)) 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.\n- [`6d943c420`](https://www.github.com/tauri-apps/tauri/commit/6d943c420454e75636af968b435efb9167818d22) ([#16065](https://www.github.com/tauri-apps/tauri/pull/16065)) 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.\n- [`b8be924d3`](https://www.github.com/tauri-apps/tauri/commit/b8be924d39c87eaecb9ba6f893e1a7be94d7bd68) ([#16106](https://www.github.com/tauri-apps/tauri/pull/16106)) `tauri init` no longer panics when the app name, window title, frontend dist, dev URL or before dev/build commands contain quotes or backslashes (e.g. `-D ..\\dist` or `vite --host \"0.0.0.0\"`); the values are now JSON-escaped in the generated `tauri.conf.json`.\n- [`b9b32a259`](https://www.github.com/tauri-apps/tauri/commit/b9b32a259fb00524808e84b4da0f7904a51be06c) ([#16108](https://www.github.com/tauri-apps/tauri/pull/16108)) Fix `PRODUCT_BUNDLE_IDENTIFIER` in the iOS Xcode project being set to the raw `identifier` (with underscores) instead of the sanitized iOS bundle identifier used by the Xcode project template and the export options provisioning profiles.\n- [`4f51a2f06`](https://www.github.com/tauri-apps/tauri/commit/4f51a2f06248f231fc6a9160c95c026634356ba5) ([#16115](https://www.github.com/tauri-apps/tauri/pull/16115)) Fix `tauri ios run --features` being ignored, and `tauri ios dev --release` still building the app in debug mode.\n- [`59e077457`](https://www.github.com/tauri-apps/tauri/commit/59e077457ac87ffd43db4c557ca2987d2fa6d37e) ([#16075](https://www.github.com/tauri-apps/tauri/pull/16075)) `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.\n- [`fe1aa30d2`](https://www.github.com/tauri-apps/tauri/commit/fe1aa30d2b1743325cdd882fe36604daf62c2440) ([#16113](https://www.github.com/tauri-apps/tauri/pull/16113)) Quote the Tauri CLI path and the Xcode variables in the iOS \"Build Rust Code\" build phase, fixing builds when Xcode or the CLI is installed in a path containing spaces (requires regenerating the Xcode project with `tauri ios init`). Also fixes `CXXFLAGS` not being set for iOS targets in `tauri ios xcode-script`.\n- [`aa0a801c3`](https://www.github.com/tauri-apps/tauri/commit/aa0a801c3acb6cc1f9d0afbae6cbfa144a5ea7fb) ([#16116](https://www.github.com/tauri-apps/tauri/pull/16116)) Fix Java version detection for the Android Java/Gradle compatibility warning when `JAVA_HOME` is not set: the `java` binary on `PATH` is now resolved through symlinks (e.g. Linux alternatives and Homebrew), and on macOS the `/usr/bin/java` stub falls back to `/usr/libexec/java_home`.\n- [`1aafaa4e3`](https://www.github.com/tauri-apps/tauri/commit/1aafaa4e3cafc779d4d825c95c3604a7da661092) ([#16103](https://www.github.com/tauri-apps/tauri/pull/16103)) When rewriting a localhost `devUrl` to the network address for mobile development, the query string and fragment are now preserved, and the IPv6 loopback (`[::1]`) and unspecified (`[::]`) addresses are now treated as localhost.\n- [`022932dd5`](https://www.github.com/tauri-apps/tauri/commit/022932dd596e38d27a0bafebf26ea9df2ec2cff3) ([#16123](https://www.github.com/tauri-apps/tauri/pull/16123)) Fix iOS Xcode project synchronization corrupting `project.pbxproj` when several build settings were added to the same configuration, when an added setting was changed again, or when a multi-line setting was overwritten. Product names, signing identities and other values written to the project are now properly escaped.\n- [`a4099d819`](https://www.github.com/tauri-apps/tauri/commit/a4099d819bdc33385adcc11b7830fc5fdda410d2) ([#16098](https://www.github.com/tauri-apps/tauri/pull/16098)) `tauri permission add` (and `tauri add`) no longer overwrites an existing `capabilities/desktop.json` or `capabilities/mobile.json` when adding a desktop-only or mobile-only plugin permission and no platform-restricted capability exists; the new capability now gets an unused file name and identifier (e.g. `desktop-2.json`). An explicitly passed capability is now used even if its platforms do not match the plugin, with a warning, instead of being silently ignored.\n- [`e49d1b474`](https://www.github.com/tauri-apps/tauri/commit/e49d1b47429acaf34de9e9edc251f71163990783) ([#16100](https://www.github.com/tauri-apps/tauri/pull/16100)) `tauri permission rm <plugin>:*` and `tauri remove` no longer strip unrelated permissions whose identifier merely contains the plugin name (e.g. `tauri remove os` removing `positioner:default`). Local permission files are now looked up in the Tauri directory, like `tauri permission new`, and an unparsable permission file is skipped with a warning instead of aborting the command.\n- [`efa82f5ed`](https://www.github.com/tauri-apps/tauri/commit/efa82f5ed989f84b076b6ee6d2f0e1e6dd0aadbf) ([#16125](https://www.github.com/tauri-apps/tauri/pull/16125)) Fix plugin scaffolding for names like `my-plugin`: the default Android package ID now uses a snake_case segment (`com.plugin.my_plugin`) and user-provided IDs are validated, iOS Xcode folders use the same kebab-case name as the project file, and the `plugin ios init`/`plugin android init` code snippets now match the generated bindings and the `setup(|app, api| ..)` API. `plugin init` into a non-empty directory no longer creates a `permissions` folder after skipping the template.\n- [`db6804d80`](https://www.github.com/tauri-apps/tauri/commit/db6804d80223aabc6b338e94d192a5ad6dd6220b) ([#16126](https://www.github.com/tauri-apps/tauri/pull/16126)) Fix `--release` being added to the cargo command when a custom profile is passed as `--profile=<name>`, which made cargo reject the build.\n- [`8310461f6`](https://www.github.com/tauri-apps/tauri/commit/8310461f6453ce478d2092a4744d42e3468e0bb0) ([#16104](https://www.github.com/tauri-apps/tauri/pull/16104)) Fix `tauri init` and `tauri info` detecting SvelteKit projects as plain Svelte; `tauri init` suggested the wrong dev server URL and frontend dist directory.\n- [`eaf96690d`](https://www.github.com/tauri-apps/tauri/commit/eaf96690db2439445fe16da24031bf3294ada605) ([#15804](https://www.github.com/tauri-apps/tauri/pull/15804)) On Linux, do not bundle xdg-open and xdg-utils in the AppImage anymore. This rarely worked and usually requires host system support anyway.\n- [`2b7c1f8b6`](https://www.github.com/tauri-apps/tauri/commit/2b7c1f8b63619c6f4c16380d0c4a3358e694fb11) ([#16003](https://www.github.com/tauri-apps/tauri/pull/16003)) Fix `tauri add` / `tauri remove` installing npm plugin packages into `src-tauri` instead of the frontend directory.\n- [`c735ba32b`](https://www.github.com/tauri-apps/tauri/commit/c735ba32b36d505cbf9eabfb4a33005ca31edbdd) ([#15241](https://www.github.com/tauri-apps/tauri/pull/15241)) Fix broken child window icons in Task Manager, you'll need to re-run `tauri icon` to generate the fixed icons\n- [`adf5acf6f`](https://www.github.com/tauri-apps/tauri/commit/adf5acf6fbc0ef26de6b1eb30c47bb701c256954) ([#15651](https://www.github.com/tauri-apps/tauri/pull/15651)) Fix MSI bundling when an external binary filename starts with a digit.\n- [`11012a13f`](https://www.github.com/tauri-apps/tauri/commit/11012a13f55ab55ec5ed12ca3ac95338ae1731c3) ([#15681](https://www.github.com/tauri-apps/tauri/pull/15681)) Fix WiX bundler doesn't respect the resource's target file name.\n- [`59e077457`](https://www.github.com/tauri-apps/tauri/commit/59e077457ac87ffd43db4c557ca2987d2fa6d37e) ([#16075](https://www.github.com/tauri-apps/tauri/pull/16075)) 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''\".\n- [`6a298ee12`](https://www.github.com/tauri-apps/tauri/commit/6a298ee12e7ffde115175d43ac63a2fdcba51c3e) ([#15713](https://www.github.com/tauri-apps/tauri/pull/15713)) Fix `tauri info` reporting the Rust-only plugins (`localhost`, `persisted-scope` and `single-instance`) as missing their `@tauri-apps/plugin-*` JavaScript package, which is never published for those plugins.\n- [`33b3ea582`](https://www.github.com/tauri-apps/tauri/commit/33b3ea582340ce8fe799929472595789319d0826) The bundled `vswhere.exe` is now written to a new, uniquely named temporary file on each use and removed afterwards, instead of running any existing `%TEMP%\\vswhere.exe`.\n\n### What's Changed\n\n- [`2e6e33c85`](https://www.github.com/tauri-apps/tauri/commit/2e6e33c8501c66c9a49aad861048d39345cfb26f) ([#16029](https://www.github.com/tauri-apps/tauri/pull/16029)) Moved to edition 2024 for the `tauri init`/`tauri plugin init` templates\n- [`ce3f13b91`](https://www.github.com/tauri-apps/tauri/commit/ce3f13b91a75cb723f229f56a3e82eb5f2d3f644) ([#15887](https://www.github.com/tauri-apps/tauri/pull/15887)) Lock unstable tauri crates to minor versions.\n\n### Security fixes\n\n- [`98918df64`](https://www.github.com/tauri-apps/tauri/commit/98918df6416f7ac6849962141a41bbd210131067) ([#16112](https://www.github.com/tauri-apps/tauri/pull/16112)) `tauri add` no longer installs the npm package `tauri-plugin-<name>-api` for community plugins. npm and crates.io are separate namespaces, so that package may be unowned or squatted; the CLI now asks you to install the plugin's JavaScript bindings yourself. `tauri remove` only removes the plugin's JS package when `package.json` lists it, and a failure there no longer skips the capability cleanup.\n- [`cc9d522c6`](https://www.github.com/tauri-apps/tauri/commit/cc9d522c64329b8dab84ecbd38c76928ad31cb43) ([#16095](https://www.github.com/tauri-apps/tauri/pull/16095)) The built-in dev server now rejects requests whose `Host` header is not the address it serves on, which blocks DNS rebinding attacks, and rejects cross-site `Origin`s on its reload WebSocket. The `index.html` fallback now goes through the same path scope check as other files, and the reload WebSocket no longer closes when the client sends a message.\n- [`dacddfe9f`](https://www.github.com/tauri-apps/tauri/commit/dacddfe9ff1f28b53e2c0324498e3a666a8041fa) ([#16094](https://www.github.com/tauri-apps/tauri/pull/16094)) The CLI no longer writes its default ignore rules to shared files in the system temporary directory (`.gitignore` and `.tauri/.gitignore`) and reads them back, which let other local users change which files the project lookup and the dev watcher skip. The rules are now applied in memory. `TAURI_CLI_WATCHER_IGNORE_FILENAME` is now consistently treated as an ignore file name looked up in each directory, as documented.\n- [`fdd56da19`](https://www.github.com/tauri-apps/tauri/commit/fdd56da19e40962cb2db613a0b87a38a21f571e4) ([#16099](https://www.github.com/tauri-apps/tauri/pull/16099)) Secure the local server that `tauri android|ios dev|build` uses to pass options to the Android Studio and Xcode build scripts: requests now need a random per-session token, WebSocket connections from web pages (with an `Origin` header) are rejected, and variables whose name contains `TOKEN`, `PASSWORD`, `SECRET` or `CREDENTIAL` are no longer sent. The connection details are now written with owner-only permissions to `gen/<android|apple>/.tauri/cli-options-server.json` (instead of the shared temp directory) and removed when the command exits. The IDE build scripts now report a clear error when the Tauri CLI command is not running.\n- [`ff7cd8d86`](https://www.github.com/tauri-apps/tauri/commit/ff7cd8d863061aaa1c5932062b071db6b17af36e) ([#16118](https://www.github.com/tauri-apps/tauri/pull/16118)) `tauri signer generate --write-keys` now creates the private key with owner-only permissions (0600) on Unix and refuses to overwrite either the private or the public key file without `--force`. Updater signing now rejects file names containing tabs or newlines (which would corrupt the signature's trusted comment) and assumes an empty password instead of prompting when no password is given and stdin is not a terminal. `tauri signer` reports errors instead of panicking.\n- [`51aa20388`](https://www.github.com/tauri-apps/tauri/commit/51aa20388e01c9d03f33992647b14dcf7800c540) ([#16119](https://www.github.com/tauri-apps/tauri/pull/16119)) On Windows, package manager commands (`npm`, `pnpm`, `yarn`, `bun`, `deno`, `node`) are now executed directly instead of through `cmd /c`, so arguments such as `@tauri-apps/plugin-fs@>=2` are escaped properly and can no longer be interpreted as shell redirections or command separators.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.12.0`\n- [`e2e585ad1`](https://www.github.com/tauri-apps/tauri/commit/e2e585ad1196c9572f86ef39aae01ef4c3b1a762) ([#15828](https://www.github.com/tauri-apps/tauri/pull/15828)) On Android, fix missing `consumer-rules.pro` file in the template.\n    \n    **IMPORTANT**: For plugin authors, update your `build.gradle.kts` file to remove the\n    \n    ```kotlin\n        buildTypes {\n            release {\n                isMinifyEnabled = false\n                proguardFiles(\n                    getDefaultProguardFile(\"proguard-android-optimize.txt\"),\n                    \"proguard-rules.pro\"\n                )\n            }\n        }\n    ```\n    \n    section and rename your `proguard-rules.pro` to `consumer-rules.pro` to match the `consumerProguardFiles(\"consumer-rules.pro\")` in the template.\n- [`e2e585ad1`](https://www.github.com/tauri-apps/tauri/commit/e2e585ad1196c9572f86ef39aae01ef4c3b1a762) ([#15828](https://www.github.com/tauri-apps/tauri/pull/15828)) 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.\n- [`9e9a54dea`](https://www.github.com/tauri-apps/tauri/commit/9e9a54dea26ae66de63800cabbccf980902a1cd3) ([#15890](https://www.github.com/tauri-apps/tauri/pull/15890)) 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`.\n- [`b6660a041`](https://www.github.com/tauri-apps/tauri/commit/b6660a041db44729893dae7991a9be61cf8c2ed5) ([#15954](https://www.github.com/tauri-apps/tauri/pull/15954)) Update typescript to v7 in `tauri plugin init` template. Also fixes the default `rootDir` in the template `tsconfig.json`\n- [`9e9a54dea`](https://www.github.com/tauri-apps/tauri/commit/9e9a54dea26ae66de63800cabbccf980902a1cd3) ([#15890](https://www.github.com/tauri-apps/tauri/pull/15890)) Update cargo-mobile2 and change the default minimum iOS version to 15.0 to support Xcode 27.\n\n## \\[2.11.4]\n\n### Bug Fixes\n\n- [`67ffa192a`](https://www.github.com/tauri-apps/tauri/commit/67ffa192a499131e7e750f164fe61a40ca0fb2e7) ([#15596](https://www.github.com/tauri-apps/tauri/pull/15596) by [@FabianLars](https://www.github.com/tauri-apps/tauri/../../FabianLars)) Fixed an issue in the AppImage bundler that caused the `/.desktop` and `.DirIcon` files to be absolute symlinks instead of relative symlinks which caused problems with AppImage installers like `AppManager`.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.11.4`\n\n## \\[2.11.3]\n\n### Bug Fixes\n\n- [`50b0237ed`](https://www.github.com/tauri-apps/tauri/commit/50b0237edb9ed683979b7954975b98a4d22a9f70) ([#15549](https://www.github.com/tauri-apps/tauri/pull/15549) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Escape special characters in `productName` when generating Android `strings.xml`\n- [`728c8d4a5`](https://www.github.com/tauri-apps/tauri/commit/728c8d4a5d9e3badf4683eb2e493d950d27d6b66) ([#15473](https://www.github.com/tauri-apps/tauri/pull/15473) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Skip building bundles when using `tauri android run`\n- [`be0cb0d43`](https://www.github.com/tauri-apps/tauri/commit/be0cb0d4378ddf26bc33066b3750f2639ade15f5) ([#15344](https://www.github.com/tauri-apps/tauri/pull/15344) by [@raglady](https://www.github.com/tauri-apps/tauri/../../raglady)) Fix NDK_HOME environment variable not honored when set\n- [`ed8fd411f`](https://www.github.com/tauri-apps/tauri/commit/ed8fd411fe10469da33f63ed5bd9d7ae19e77d84) ([#15552](https://www.github.com/tauri-apps/tauri/pull/15552) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Make `ureq_proto` show trace level logs only on `-vvv` instead of `-vv`\n- [`fca4a31f9`](https://www.github.com/tauri-apps/tauri/commit/fca4a31f94f8ba709d1b28e073e69867b8704e6e) ([#15454](https://www.github.com/tauri-apps/tauri/pull/15454) by [@fallintoplace](https://www.github.com/tauri-apps/tauri/../../fallintoplace)) Fix `tauri migrate` generating invalid namespace imports for aliased pluginified imports from `@tauri-apps/api`.\n\n  Inputs like `import { cli as superCli } from \"@tauri-apps/api\"` now migrate to `import * as superCli from \"@tauri-apps/plugin-cli\"` instead of producing invalid ESM syntax. The migration tests also reparse migrated JS, Svelte, and Vue output so syntax regressions are caught directly.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.11.3`\n\n## \\[2.11.2]\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.11.2`\n\n## \\[2.11.1]\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.11.1`\n\n## \\[2.11.0]\n\n### New Features\n\n- [`926a57bb0`](https://www.github.com/tauri-apps/tauri/commit/926a57bb0851e45d47ad1ee68fc96a9c25754c7c) ([#15201](https://www.github.com/tauri-apps/tauri/pull/15201)) Added uninstaller icon and uninstaller header image support for NSIS installer.\n\n  Notes:\n\n  - For `tauri-bundler` lib users, the `NsisSettings` now has 2 new fields `uninstaller_icon` and `uninstaller_header_image` which can be a breaking change\n  - When bundling with NSIS, users can add `uninstallerIcon` and `uninstallerHeaderImage` under `bundle > windows > nsis` to configure them.\n- [`764b9139a`](https://www.github.com/tauri-apps/tauri/commit/764b9139a32de149d8a914a6b5ec6cd1937c64eb) ([#14313](https://www.github.com/tauri-apps/tauri/pull/14313)) Prompt to restart the Android emulator if it is not connected to adb.\n- [`5dc2cee60`](https://www.github.com/tauri-apps/tauri/commit/5dc2cee60370665af88c185684432e425b1c987d) ([#14793](https://www.github.com/tauri-apps/tauri/pull/14793)) Added support for `minimumWebview2Version` option support for the MSI (Wix) installer, the old `bundle > windows > nsis > minimumWebview2Version` is now deprecated in favor of `bundle > windows > minimumWebview2Version`\n\n  Notes:\n\n  - For anyone relying on the `WVRTINSTALLED` `Property` tag in `main.wxs`, it is now renamed to `INSTALLED_WEBVIEW2_VERSION`\n  - For `tauri-bundler` lib users, the `WindowsSettings` now has a new field `minimum_webview2_version` which can be a breaking change\n\n### Enhancements\n\n- [`be0e4bd2d`](https://www.github.com/tauri-apps/tauri/commit/be0e4bd2da02eb6cc75a8dc7c81663277e64c590) ([#15218](https://www.github.com/tauri-apps/tauri/pull/15218)) Added Vietnamese translations for the NSIS installer\n- [`8718d0816`](https://www.github.com/tauri-apps/tauri/commit/8718d08163f074dfc53387ebd1d823f9c28280ee) ([#15033](https://www.github.com/tauri-apps/tauri/pull/15033)) Show the context before prompting for updater signing key password\n\n### Bug Fixes\n\n- [`fcb702ec4`](https://www.github.com/tauri-apps/tauri/commit/fcb702ec4d924e81943efaeebea8d3edb7289c33) ([#14954](https://www.github.com/tauri-apps/tauri/pull/14954)) Fix `build --bundles` to allow `nsis` arg in linux+macOS\n- [`80c1425af`](https://www.github.com/tauri-apps/tauri/commit/80c1425af86058b1fc9489a30f778b6288d79b6b) ([#14921](https://www.github.com/tauri-apps/tauri/pull/14921)) Fix iOS build failure when `Metal Toolchain` is installed by using explicit `$(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain` path instead of `$(TOOLCHAIN_DIR)` for Swift library search paths.\n\n### What's Changed\n\n- [`9979cde1c`](https://www.github.com/tauri-apps/tauri/commit/9979cde1c5534dafb1a07cc4dc2bc280d15d2f66) ([#15175](https://www.github.com/tauri-apps/tauri/pull/15175)) Update NSIS installer Italian translations\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.11.0`\n\n## \\[2.10.1]\n\n### Bug Fixes\n\n- [`35c35f27a`](https://www.github.com/tauri-apps/tauri/commit/35c35f27aedc430b602ec74059b271128c15ad36) ([#14931](https://www.github.com/tauri-apps/tauri/pull/14931) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Support comma-separated list of Cargo features on all commands.\n- [`0d1cb83ba`](https://www.github.com/tauri-apps/tauri/commit/0d1cb83bab2aa482c7d73116893fd7ff6aa56283) ([#14932](https://www.github.com/tauri-apps/tauri/pull/14932) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Fix missing Cargo args when running mobile dev and build commands.\n- [`33754ae5e`](https://www.github.com/tauri-apps/tauri/commit/33754ae5e3740d022483b6164511c5c001a3c24b) ([#15022](https://www.github.com/tauri-apps/tauri/pull/15022) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix updater signing private keys generated using `tauri signer generate` with empty password can't be used (The keys generated during tauri were broken between v2.9.3 and v2.10.0, you'll need to regenerate them)\n\n### What's Changed\n\n- [`7be58a1c6`](https://www.github.com/tauri-apps/tauri/commit/7be58a1c643a7ed6d0f484a7e1134022618eb2b2) ([#14894](https://www.github.com/tauri-apps/tauri/pull/14894) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Log patching bundle type information again\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.10.1`\n\n## \\[2.10.0]\n\n### Enhancements\n\n- [`f82594410`](https://www.github.com/tauri-apps/tauri/commit/f82594410cd57d6f794f58d4afea0ed335aa796f) ([#13253](https://www.github.com/tauri-apps/tauri/pull/13253) by [@Armaldio](https://www.github.com/tauri-apps/tauri/../../Armaldio)) Allow electron to run the CLI directly\n- [`a2abe2e6b`](https://www.github.com/tauri-apps/tauri/commit/a2abe2e6bcb9e1eed8484240dfdb76a5bc28ae58) ([#14607](https://www.github.com/tauri-apps/tauri/pull/14607) by [@sftse](https://www.github.com/tauri-apps/tauri/../../sftse)) Simplified internal representation of `features: Option<Vec<String>>` with `Vec<String>`, no user facing changes\n- [`84b04c4a8`](https://www.github.com/tauri-apps/tauri/commit/84b04c4a8d3310b7a7091d10e36244bf94996e51) ([#14759](https://www.github.com/tauri-apps/tauri/pull/14759) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Added new environment variables for `tauri signer sign` command, to align with existing environment variables used in `tauri build`, `tauri bundle` and `tauri signer generate`\n\n  - `TAURI_SIGNING_PRIVATE_KEY`\n  - `TAURI_SIGNING_PRIVATE_KEY_PATH`\n  - `TAURI_SIGNING_PRIVATE_KEY_PASSWORD`\n\n  The old environment variables are deprecated and will be removed in a future release.\n\n  - `TAURI_PRIVATE_KEY`\n  - `TAURI_PRIVATE_KEY_PATH`\n  - `TAURI_PRIVATE_KEY_PASSWORD`\n\n### Bug Fixes\n\n- [`62aa13a12`](https://www.github.com/tauri-apps/tauri/commit/62aa13a124ef46bb5ce9887a2a574dd35ef86d4f) ([#14629](https://www.github.com/tauri-apps/tauri/pull/14629) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Fix `android build`'s `--aab` and `--apk` flags requiring a value to be provided.\n- [`eccff9758`](https://www.github.com/tauri-apps/tauri/commit/eccff97588232055bd0cafd83e6ee03d11a501fb) ([#14779](https://www.github.com/tauri-apps/tauri/pull/14779) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Fix empty associated-domains entitlements when domains are not configured for deep links.\n- [`ea31b07f1`](https://www.github.com/tauri-apps/tauri/commit/ea31b07f19e0aa467ed0f921f60575cfe09809c8) ([#14789](https://www.github.com/tauri-apps/tauri/pull/14789) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fixed the command description for `tauri inspect`\n- [`7fca58230`](https://www.github.com/tauri-apps/tauri/commit/7fca58230f97c3e6834134419514a0c7dbbe784b) ([#14830](https://www.github.com/tauri-apps/tauri/pull/14830) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Updated `nsis_tauri_utils` to 0.5.3:\n\n  - Use an alternative method `CreateProcessWithTokenW` to run programs as user, this fixed a problem that the program launched with the previous method can't query its own handle\n- [`53611c4d7`](https://www.github.com/tauri-apps/tauri/commit/53611c4d7bdaf89b9a5d7c46a9c4bf4e34216148) ([#14747](https://www.github.com/tauri-apps/tauri/pull/14747) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Only watch dependent workspace members when running `tauri dev` instead of watching on all members\n- [`1b0e335d3`](https://www.github.com/tauri-apps/tauri/commit/1b0e335d3f3445948d6590f7e074275d97cd9859) ([#14713](https://www.github.com/tauri-apps/tauri/pull/14713) by [@wasuaje](https://www.github.com/tauri-apps/tauri/../../wasuaje)) `tauri signer sign` doesn't work for files without an extension\n\n### What's Changed\n\n- [`e3fdcb500`](https://www.github.com/tauri-apps/tauri/commit/e3fdcb5002b362b46cde2a1971e4e7f2a1161208) ([#14836](https://www.github.com/tauri-apps/tauri/pull/14836) by [@sftse](https://www.github.com/tauri-apps/tauri/../../sftse)) Continued refactors of tauri-cli, fix too weak atomics.\n- [`0575dd287`](https://www.github.com/tauri-apps/tauri/commit/0575dd287e021b61d2aedf64d62ae84a2c925fb4) ([#14521](https://www.github.com/tauri-apps/tauri/pull/14521) by [@kandrelczyk](https://www.github.com/tauri-apps/tauri/../../kandrelczyk)) Change the way bundle type information is added to binary files. Instead of looking up the value of a variable we simply look for the default value.\n- [`7f7d9aac2`](https://www.github.com/tauri-apps/tauri/commit/7f7d9aac214e22d9492490543f7a9bcae0a6659e) ([#14668](https://www.github.com/tauri-apps/tauri/pull/14668) by [@sftse](https://www.github.com/tauri-apps/tauri/../../sftse)) Refactored internal use of static on config and directory resolvings, no user facing changes, please report any regressions if you encounter any\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.10.0`\n\n## \\[2.9.6]\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.6`\n\n## \\[2.9.5]\n\n### Bug Fixes\n\n- [`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\n\n### Performance Improvements\n\n- [`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.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.5`\n\n## \\[2.9.4]\n\n### Bug Fixes\n\n- [`b586ecf1f`](https://www.github.com/tauri-apps/tauri/commit/b586ecf1f4b3b087f9aa6c4668c2c18b1b7925f4) ([#14416](https://www.github.com/tauri-apps/tauri/pull/14416) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Premultiply Alpha before Resizing which gets rid of the gray fringe around the icons for svg images.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.4`\n\n## \\[2.9.3]\n\n### Bug Fixes\n\n- [`fd8c30b4f`](https://www.github.com/tauri-apps/tauri/commit/fd8c30b4f1bca8dd7165c5c0ebe7fbfd17662153) ([#14353](https://www.github.com/tauri-apps/tauri/pull/14353) by [@ChaseKnowlden](https://www.github.com/tauri-apps/tauri/../../ChaseKnowlden)) Premultiply Alpha before Resizing which gets rid of the gray fringe around the icons.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.3`\n\n## \\[2.9.2]\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.2`\n\n## \\[2.9.1]\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.1`\n\n## \\[2.9.0]\n\n### New Features\n\n- [`3b4fac201`](https://www.github.com/tauri-apps/tauri/commit/3b4fac2017832d426dd07c5e24e26684eda57f7b) ([#14194](https://www.github.com/tauri-apps/tauri/pull/14194)) Add `tauri.conf.json > bundle > android > autoIncrementVersionCode` config option to automatically increment the Android version code.\n- [`673867aa0`](https://www.github.com/tauri-apps/tauri/commit/673867aa0e1ccd766ee879ffe96aba58c758613c) ([#14094](https://www.github.com/tauri-apps/tauri/pull/14094)) Try to detect ANDROID_HOME and NDK_HOME environment variables from default system locations and install them if needed using the Android Studio command line tools.\n- [`3d6868d09`](https://www.github.com/tauri-apps/tauri/commit/3d6868d09c323d68a152f3c3f8c7256311bd020a) ([#14128](https://www.github.com/tauri-apps/tauri/pull/14128)) Added support to defining the content type of the declared file association on macOS (maps to LSItemContentTypes property).\n- [`3d6868d09`](https://www.github.com/tauri-apps/tauri/commit/3d6868d09c323d68a152f3c3f8c7256311bd020a) ([#14128](https://www.github.com/tauri-apps/tauri/pull/14128)) Added support to defining the metadata for custom types declared in `tauri.conf.json > bundle > fileAssociations > exportedType` via the `UTExportedTypeDeclarations` Info.plist property.\n- [`ed7c9a410`](https://www.github.com/tauri-apps/tauri/commit/ed7c9a4100e08c002212265549d12130d021ad1e) ([#14108](https://www.github.com/tauri-apps/tauri/pull/14108)) Added `bundle > macOS > infoPlist` and `bundle > iOS > infoPlist` configurations to allow defining custom Info.plist extensions.\n- [`75082cc5b`](https://www.github.com/tauri-apps/tauri/commit/75082cc5b340e30e2c4b4cd4bd6a1fe5382164aa) ([#14120](https://www.github.com/tauri-apps/tauri/pull/14120)) Added `ios run` and `android run` commands to run the app in production mode.\n- [`cc8c0b531`](https://www.github.com/tauri-apps/tauri/commit/cc8c0b53171173dbd1d01781a50de1a3ea159031) ([#14031](https://www.github.com/tauri-apps/tauri/pull/14031)) Added support to universal app links on macOS with the `plugins > deep-link > desktop > domains` configuration.\n\n### Enhancements\n\n- [`b5aa01870`](https://www.github.com/tauri-apps/tauri/commit/b5aa018702bf45dc98297698f9b7d238705865a6) ([#14268](https://www.github.com/tauri-apps/tauri/pull/14268)) Update cargo-mobile2 to 0.21, enhancing error messages and opening Xcode when multiple apps are installed.\n- [`55453e845`](https://www.github.com/tauri-apps/tauri/commit/55453e8453d927b8197f1ba9f26fd944482938f7) ([#14262](https://www.github.com/tauri-apps/tauri/pull/14262)) Check mismatched versions in `tauri info`\n- [`1a6627ee7`](https://www.github.com/tauri-apps/tauri/commit/1a6627ee7d085a4e66784e2705254714d68c7244) ([#14122](https://www.github.com/tauri-apps/tauri/pull/14122)) Set a default log level filter when running `tauri add log`.\n- [`b06b3bd09`](https://www.github.com/tauri-apps/tauri/commit/b06b3bd091b0fed26cdcfb23cacb0462a7a9cc2d) ([#14126](https://www.github.com/tauri-apps/tauri/pull/14126)) Improve error messages with more context.\n- [`f6622a3e3`](https://www.github.com/tauri-apps/tauri/commit/f6622a3e342f5dd5fb3cf6e0f79fb309a10e9b3d) ([#14129](https://www.github.com/tauri-apps/tauri/pull/14129)) Prompt to install the iOS platform if it isn't installed yet.\n- [`6bbb530fd`](https://www.github.com/tauri-apps/tauri/commit/6bbb530fd5edfc07b180a4f3782b8566872ca3b1) ([#14105](https://www.github.com/tauri-apps/tauri/pull/14105)) Warn if productName is empty when initializing mobile project.\n\n### Bug Fixes\n\n- [`19fb6f7cb`](https://www.github.com/tauri-apps/tauri/commit/19fb6f7cb0d702cb2f25f6f2d1e11014d9dada5d) ([#14146](https://www.github.com/tauri-apps/tauri/pull/14146)) Strip Windows-only extensions from the binary path so an Android project initialized on Windows can be used on UNIX systems.\n- [`19fb6f7cb`](https://www.github.com/tauri-apps/tauri/commit/19fb6f7cb0d702cb2f25f6f2d1e11014d9dada5d) ([#14146](https://www.github.com/tauri-apps/tauri/pull/14146)) Enhance Android build script usage on Windows by attempting to run cmd, bat and exe formats.\n- [`28a2f9bc5`](https://www.github.com/tauri-apps/tauri/commit/28a2f9bc55f658eb71ef1a970ff9f791346f7682) ([#14101](https://www.github.com/tauri-apps/tauri/pull/14101)) Fix iOS CLI usage after modifying the package name.\n- [`d2938486e`](https://www.github.com/tauri-apps/tauri/commit/d2938486e9d974debd90c15d7160b8a17bf4d763) ([#14261](https://www.github.com/","packages/api/package.json":"{\n  \"name\": \"@tauri-apps/api\",\n  \"version\": \"2.12.4\",\n  \"description\": \"Tauri API definitions\",\n  \"funding\": {\n    \"type\": \"opencollective\",\n    \"url\": \"https://opencollective.com/tauri\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/tauri-apps/tauri.git\"\n  },\n  \"contributors\": [\n    \"Tauri Programme within The Commons Conservancy\"\n  ],\n  \"license\": \"Apache-2.0 OR MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/tauri-apps/tauri/issues\"\n  },\n  \"homepage\": \"https://github.com/tauri-apps/tauri#readme\",\n  \"type\": \"module\",\n  \"main\": \"./index.cjs\",\n  \"module\": \"./index.js\",\n  \"types\": \"./index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": \"./index.js\",\n      \"require\": \"./index.cjs\",\n      \"types\": \"./index.d.ts\"\n    },\n    \"./*\": {\n      \"import\": \"./*.js\",\n      \"require\": \"./*.cjs\",\n      \"types\": \"./*.d.ts\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"scripts\": {\n    \"build\": \"rollup -c --configPlugin typescript\",\n    \"build:debug\": \"rollup -c --configPlugin typescript\",\n    \"npm-pack\": \"pnpm build && cd ./dist && npm pack\",\n    \"npm-publish\": \"pnpm build && cd ./dist && pnpm publish --access public --loglevel debug --no-git-checks\",\n    \"ts:check\": \"tsc --noEmit\",\n    \"eslint:check\": \"eslint src/**/*.ts\",\n    \"eslint:fix\": \"eslint src/**/*.ts --fix\"\n  },\n  \"devDependencies\": {\n    \"@eslint/js\": \"^10.0.1\",\n    \"@rollup/plugin-terser\": \"1.0.0\",\n    \"@rollup/plugin-typescript\": \"12.3.0\",\n    \"@types/eslint\": \"^9.6.1\",\n    \"@types/node\": \"^24.11.0\",\n    \"eslint\": \"^10.0.2\",\n    \"eslint-config-prettier\": \"10.1.8\",\n    \"eslint-plugin-security\": \"4.2.0\",\n    \"globals\": \"^17.4.0\",\n    \"rollup\": \"4.64.10\",\n    \"tslib\": \"^2.8.1\",\n    \"typescript\": \"^6.0.3\",\n    \"typescript-eslint\": \"^8.58.2\"\n  }\n}\n","packages/api/tsconfig.json":"{\n  \"compilerOptions\": {\n    \"target\": \"es2019\",\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noUnusedLocals\": true,\n    \"noImplicitAny\": true,\n    \"noEmit\": true,\n    \"lib\": [\"es2022\", \"esnext.disposable\", \"dom\"],\n    // This is used only for the dev tooling config files. You should not use node APIs inside `./src`.\n    // We need to composite multiple tsconfigs but it didn't work because of https://github.com/rollup/plugins/issues/1755\n    \"types\": [\"node\"]\n  }\n}\n","packages/api/README.md":"# @tauri-apps/api\n\n <img align=\"right\" src=\"https://github.com/tauri-apps/tauri/raw/dev/.github/icon.png\" height=\"128\" width=\"128\">\n\n[![status](https://img.shields.io/badge/status-stable-blue.svg)](https://github.com/tauri-apps/tauri/tree/dev)\n[![License](https://img.shields.io/badge/License-MIT%20or%20Apache%202-green.svg)](https://opencollective.com/tauri)\n[![lint js](https://img.shields.io/github/actions/workflow/status/tauri-apps/tauri/lint-js.yml?label=lint%20js&logo=github)](https://github.com/tauri-apps/tauri/actions/workflows/lint-js.yml)\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri?ref=badge_shield)\n[![Chat Server](https://img.shields.io/badge/chat-discord-7289da.svg)](https://discord.gg/SpmNs4S)\n[![website](https://img.shields.io/badge/website-tauri.app-purple.svg)](https://tauri.app)\n[![https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg](https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg)](https://good-labs.github.io/greater-good-affirmation)\n[![support](https://img.shields.io/badge/sponsor-Open%20Collective-blue.svg)](https://opencollective.com/tauri)\n\n| Component       | Version                                               |\n| --------------- | ----------------------------------------------------- |\n| @tauri-apps/api | ![](https://img.shields.io/npm/v/@tauri-apps/api.svg) |\n\n## About Tauri\n\nTauri is a polyglot and generic system that is very composable and allows engineers to make a wide variety of applications. It is used for building applications for Desktop Computers using a combination of Rust tools and HTML rendered in a Webview. Apps built with Tauri can ship with any number of pieces of an optional JS API / Rust API so that webviews can control the system via message passing. In fact, developers can extend the default API with their own functionality and bridge the Webview and Rust-based backend easily.\n\nTauri apps can have custom menus and have tray-type interfaces. They can be updated, and are managed by the user's operating system as expected. They are very small, because they use the system's webview. They do not ship a runtime, since the final binary is compiled from rust. This makes the reversing of Tauri apps not a trivial task.\n\n## This module\n\nThis is a typescript library that creates `cjs` and `esm` JavaScript endpoints for you to import into your Frontend framework so that the Webview can call and listen to backend activity. We also ship the pure typescript, because for some frameworks this is more optimal. It uses the message passing of webviews to their hosts.\n\nTo learn more about the details of how all of these pieces fit together, please consult this [ARCHITECTURE.md](https://github.com/tauri-apps/tauri/blob/dev/ARCHITECTURE.md) document.\n\n## Installation\n\nThe preferred method is to install this module locally as a dependency:\n\n```\n$ pnpm add @tauri-apps/api\n$ yarn add @tauri-apps/api\n$ npm add @tauri-apps/api\n```\n\n## Semver\n\n**tauri** is following [Semantic Versioning 2.0](https://semver.org/).\n\n## Licenses\n\nCode: (c) 2019 - 2021 - The Tauri Programme within The Commons Conservancy.\n\nMIT or MIT/Apache 2.0 where applicable.\n\nLogo: CC-BY-NC-ND\n\n- Original Tauri Logo Designs by [Daniel Thompson-Yvetot](https://github.com/nothingismagick) and [Guillaume Chau](https://github.com/akryum)\n","packages/cli/npm/win32-x64-msvc/README.md":"# `@tauri-apps/cli-win32-x64-msvc`\n\nThis is the **x86_64-pc-windows-msvc** binary for `@tauri-apps/cli`\n","packages/cli/npm/win32-x64-msvc/package.json":"{\n  \"name\": \"@tauri-apps/cli-win32-x64-msvc\",\n  \"version\": \"0.0.0\",\n  \"cpu\": [\n    \"x64\"\n  ],\n  \"main\": \"cli.win32-x64-msvc.node\",\n  \"files\": [\n    \"cli.win32-x64-msvc.node\"\n  ],\n  \"description\": \"Command line interface for building Tauri apps\",\n  \"homepage\": \"https://github.com/tauri-apps/tauri#readme\",\n  \"contributors\": [\n    \"Tauri Programme within The Commons Conservancy\"\n  ],\n  \"license\": \"Apache-2.0 OR MIT\",\n  \"engines\": {\n    \"node\": \">= 10\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/tauri-apps/tauri.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/tauri-apps/tauri/issues\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"os\": [\n    \"win32\"\n  ]\n}\n","packages/cli/npm/win32-ia32-msvc/package.json":"# Win32-ia32-msvc Skill\n\nPath: `packages/cli/npm/win32-ia32-msvc/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-ia32-msvc/package.json)","packages/cli/npm/win32-ia32-msvc/README.md":"# win32-ia32-msvc Documentation\n\nPath: `packages/cli/npm/win32-ia32-msvc/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-ia32-msvc/README.md)","packages/cli/npm/win32-arm64-msvc/package.json":"# Win32-arm64-msvc Skill\n\nPath: `packages/cli/npm/win32-arm64-msvc/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-arm64-msvc/package.json)","packages/cli/npm/win32-arm64-msvc/README.md":"# win32-arm64-msvc Documentation\n\nPath: `packages/cli/npm/win32-arm64-msvc/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-arm64-msvc/README.md)","packages/cli/npm/linux-x64-musl/package.json":"# Linux-x64-musl Skill\n\nPath: `packages/cli/npm/linux-x64-musl/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-x64-musl/package.json)","packages/cli/npm/linux-x64-musl/README.md":"# linux-x64-musl Documentation\n\nPath: `packages/cli/npm/linux-x64-musl/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-x64-musl/README.md)","packages/cli/npm/linux-x64-gnu/package.json":"# Linux-x64-gnu Skill\n\nPath: `packages/cli/npm/linux-x64-gnu/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-x64-gnu/package.json)","packages/cli/npm/linux-x64-gnu/README.md":"# linux-x64-gnu Documentation\n\nPath: `packages/cli/npm/linux-x64-gnu/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-x64-gnu/README.md)","packages/cli/npm/linux-riscv64-gnu/package.json":"# Linux-riscv64-gnu Skill\n\nPath: `packages/cli/npm/linux-riscv64-gnu/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-riscv64-gnu/package.json)","packages/cli/npm/linux-riscv64-gnu/README.md":"# linux-riscv64-gnu Documentation\n\nPath: `packages/cli/npm/linux-riscv64-gnu/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-riscv64-gnu/README.md)","packages/cli/npm/linux-arm64-musl/package.json":"# Linux-arm64-musl Skill\n\nPath: `packages/cli/npm/linux-arm64-musl/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm64-musl/package.json)","packages/cli/npm/linux-arm64-musl/README.md":"# linux-arm64-musl Documentation\n\nPath: `packages/cli/npm/linux-arm64-musl/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm64-musl/README.md)","packages/cli/npm/linux-arm64-gnu/package.json":"# Linux-arm64-gnu Skill\n\nPath: `packages/cli/npm/linux-arm64-gnu/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm64-gnu/package.json)","packages/cli/npm/linux-arm64-gnu/README.md":"# linux-arm64-gnu Documentation\n\nPath: `packages/cli/npm/linux-arm64-gnu/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm64-gnu/README.md)","packages/cli/npm/linux-arm-gnueabihf/package.json":"# Linux-arm-gnueabihf Skill\n\nPath: `packages/cli/npm/linux-arm-gnueabihf/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm-gnueabihf/package.json)","packages/cli/npm/linux-arm-gnueabihf/README.md":"# linux-arm-gnueabihf Documentation\n\nPath: `packages/cli/npm/linux-arm-gnueabihf/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm-gnueabihf/README.md)","packages/cli/npm/darwin-x64/package.json":"# Darwin-x64 Skill\n\nPath: `packages/cli/npm/darwin-x64/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/darwin-x64/package.json)","packages/cli/npm/darwin-x64/README.md":"# darwin-x64 Documentation\n\nPath: `packages/cli/npm/darwin-x64/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/darwin-x64/README.md)","packages/cli/npm/darwin-arm64/package.json":"# Darwin-arm64 Skill\n\nPath: `packages/cli/npm/darwin-arm64/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/darwin-arm64/package.json)","packages/cli/npm/darwin-arm64/README.md":"# darwin-arm64 Documentation\n\nPath: `packages/cli/npm/darwin-arm64/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/darwin-arm64/README.md)","packages/cli/__tests__/fixtures/empty/package.json":"# Empty Skill\n\nPath: `packages/cli/__tests__/fixtures/empty/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/__tests__/fixtures/empty/package.json)",".cursorrules (tauri-svelte-typescript-guide-cursorrules-prompt-f.mdc)":"---\ndescription: \"Cursor rules for Tauri development with Svelte and TypeScript guide integration.\"\nglobs: **/*\nalwaysApply: false\n---\nYou are an expert in developing desktop applications using Tauri with Svelte and TypeScript for the frontend.\n\nKey Principles:\n\n- Write clear, technical responses with precise examples for Tauri, Svelte, and TypeScript.\n- Prioritize type safety and utilize TypeScript features effectively.\n- Follow best practices for Tauri application development, including security considerations.\n- Implement responsive and efficient UIs using Svelte's reactive paradigm.\n- Ensure smooth communication between the Tauri frontend and external backend services.\n\nFrontend (Tauri + Svelte + TypeScript):\n\n- Use Svelte's component-based architecture for modular and reusable UI elements.\n- Leverage TypeScript for strong typing and improved code quality.\n- Utilize Tauri's APIs for native desktop integration (file system access, system tray, etc.).\n- Implement proper state management using Svelte stores or other state management solutions if needed.\n- Use Svelte's built-in reactivity for efficient UI updates.\n- Follow Svelte's naming conventions (PascalCase for components, camelCase for variables and functions).\n\nCommunication with Backend:\n\n- Use Axios for HTTP requests from the Tauri frontend to the external backend.\n- Implement proper error handling for network requests and responses.\n- Use TypeScript interfaces to define the structure of data sent and received.\n- Consider implementing a simple API versioning strategy for future-proofing.\n- Handle potential CORS issues when communicating with the backend.\n\nSecurity:\n\n- Follow Tauri's security best practices, especially when dealing with IPC and native API access.\n- Implement proper input validation and sanitization on the frontend.\n- Use HTTPS for all communications with external services.\n- Implement proper authentication and authorization mechanisms if required.\n- Be cautious when using Tauri's allowlist feature, only exposing necessary APIs.\n\nPerformance Optimization:\n\n- Optimize Svelte components for efficient rendering and updates.\n- Use lazy loading for components and routes where appropriate.\n- Implement proper caching strategies for frequently accessed data.\n- Utilize Tauri's performance features, such as resource optimization and app size reduction.\n\nTesting:\n\n- Write unit tests for Svelte components using testing libraries like Jest and Testing Library.\n- Implement end-to-end tests for critical user flows using tools like Playwright or Cypress.\n- Test Tauri-specific features and APIs thoroughly.\n- Implement proper mocking for API calls and external dependencies in tests.\n\nBuild and Deployment:\n\n- Use Vite for fast development and optimized production builds of the Svelte app.\n- Leverage Tauri's built-in updater for seamless application updates.\n- Implement proper environment configuration for development, staging, and production.\n- Use Tauri's CLI tools for building and packaging the application for different platforms.\n\nKey Conventions:\n\n1. Follow a consistent code style across the project (e.g., use Prettier).\n2. Use meaningful and descriptive names for variables, functions, and components.\n3. Write clear and concise comments, focusing on why rather than what.\n4. Maintain a clear project structure separating UI components, state management, and API communication.\n\nDependencies:\n\n- Tauri\n- Svelte\n- TypeScript\n- Vite\n- Axios\n\nRefer to official documentation for Tauri, Svelte, and TypeScript for best practices and up-to-date APIs.\n\nNote on Backend Communication:\n\nWhen working with the external Python backend:\n\n- Ensure proper error handling for potential backend failures or slow responses.\n- Consider implementing retry mechanisms for failed requests.\n- Use appropriate data serialization methods when sending/receiving complex data structures.\n"},"items":[{"name":"ARCHITECTURE.md","path":"ARCHITECTURE.md","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/ARCHITECTURE.md","title":"System Architecture & Module Boundaries","category":"project-spec","format":"markdown","content":"# The Tauri Architecture\n\n<https://tauri.app>\n\n<https://github.com/tauri-apps/tauri>\n\n## Introduction\n\nTauri is a polyglot and generic toolkit that is very composable and allows engineers to make a wide variety of applications. It is used for building applications for Desktop Computers using a combination of Rust tools and HTML rendered in a Webview. Apps built with Tauri can ship with any number of pieces of an optional JS API / Rust API so that webviews can control the system via message passing. In fact, developers can extend the default API with their own functionality and bridge the Webview and Rust-based backend easily.\n\nTauri apps can have custom menus and have tray-type interfaces. They can be updated, and are managed by the user's operating system as expected. They are very small, because they use the OS's webview. They do not ship a runtime, since the final binary is compiled from Rust. This makes the reversing of Tauri apps not a trivial task.\n\n## What Tauri is NOT\n\n- Tauri is not a lightweight kernel wrapper...instead it directly uses [WRY](https://github.com/tauri-apps/wry) and [TAO](https://github.com/tauri-apps/tao) to do the heavy-lifting in making system calls to the OS.\n- Tauri is not a VM or virtualized environment...instead it is an application toolkit that allows making Webview OS applications.\n\n## Major Components\n\nThe following section briefly describes the roles of the various parts of Tauri.\n\n### Tauri Core [STABLE RUST]\n\n#### [tauri](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri)\n\nThis is the major crate that holds everything together. It brings the runtimes, macros, utilities and API into one final product. It reads the `tauri.conf.json` file at compile time in order to bring in features and undertake actual configuration of the app (and even the `Cargo.toml` file in the project's folder). It handles script injection (for polyfills / prototype revision) at runtime, hosts the API for systems interaction, and even manages updating.\n\n#### [tauri-build](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-build)\n\nApply the macros at build-time in order to rig some special features needed by `cargo`.\n\n#### [tauri-codegen](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-codegen)\n\n- Embed, hash, and compress assets, including icons for the app as well as the system-tray.\n- Parse `tauri.conf.json` at compile time and generate the Config struct.\n\n#### [tauri-macros](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-macros)\n\nCreate macros for the context, handler, and commands by leveraging the `tauri-codegen` crate.\n\n#### [tauri-runtime](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-runtime)\n\nThis is the glue layer between tauri itself and lower level webview libraries.\n\n#### [tauri-runtime-wry](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-runtime-wry)\n\nThis crate opens up direct systems-level interactions specifically for WRY, such as printing, monitor detection, and other windowing related tasks. `tauri-runtime` implementation for WRY.\n\n#### [tauri-utils](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-utils)\n\nThis is common code that is reused in many places and offers useful utilities like parsing configuration files, detecting platform triples, injecting the CSP, and managing assets.\n\n### Tauri Tooling\n\n#### [@tauri-apps/api](https://github.com/tauri-apps/tauri/tree/dev/packages/api) [TS -> JS]\n\nA TypeScript library that creates `cjs` and `esm` JavaScript endpoints for you to import into your Frontend framework so that the Webview can call and listen to backend activity. We also ship the pure TypeScript, because for some frameworks this is more optimal. It uses the message passing of webviews to their hosts.\n\n#### [bundler](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-bundler) [RUST / SHELL]\n\nThe bundler is a library that builds a Tauri App for the platform triple it detects / is told. At the moment it currently supports macOS, Windows and Linux - but in the near future will support mobile platforms as well. May be used outside of Tauri projects.\n\n#### [@tauri-apps/cli](https://github.com/tauri-apps/tauri/tree/dev/packages/cli) [JS]\n\nIt is a wrapper around [tauri-cli](https://github.com/tauri-apps/tauri/blob/dev/crates/tauri-cli) using [napi-rs](https://github.com/napi-rs/napi-rs) to produce NPM packages for each platform.\n\n#### [tauri-cli](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-cli) [RUST]\n\nThis rust executable provides the full interface to all of the required activities for which the CLI is required. It will run on macOS, Windows, and Linux.\n\n#### [create-tauri-app](https://github.com/tauri-apps/create-tauri-app) [JS]\n\nThis is a toolkit that will enable engineering teams to rapidly scaffold out a new tauri-apps project using the frontend framework of their choice (as long as it has been configured).\n\n# External Crates\n\nThe Tauri-Apps organisation maintains two \"upstream\" crates from Tauri, namely TAO for creating and managing application windows, and WRY for interfacing with the Webview that lives within the window.\n\n## [TAO](https://github.com/tauri-apps/tao)\n\nCross-platform application window creation library in Rust that supports all major platforms like Windows, macOS, Linux, iOS and Android. Written in Rust, it is a fork of [winit](https://github.com/rust-windowing/winit) that we have extended for our own needs like menu bar and system tray.\n\n## [WRY](https://github.com/tauri-apps/wry)\n\nWRY is a cross-platform WebView rendering library in Rust that supports all major desktop platforms like Windows, macOS, and Linux.\nTauri uses WRY as the abstract layer responsible to determine which webview is used (and how interactions are made).\n\n# Additional tooling\n\n## [tauri-action](https://github.com/tauri-apps/tauri-action)\n\nThis is a github workflow that builds tauri binaries for all platforms. It is not the fastest out there, but it gets the job done and is highly configurable. Even allowing you to create a (very basic) tauri app even if tauri is not setup.\n\n## [create-pull-request](https://github.com/tauri-apps/create-pull-request)\n\nBecause this is a very risky (potentially destructive) github action, we forked it in order to have strong guarantees that the code we think is running is actually the code that is running.\n\n## [vue-cli-plugin-tauri](https://github.com/tauri-apps/vue-cli-plugin-tauri)\n\nThis plugin allows you to very quickly install tauri in a vue-cli project.\n\n## [tauri-vscode](https://github.com/tauri-apps/tauri-vscode)\n\nThis project enhances the VS Code interface with several nice-to-have features.\n\n# Tauri Plugins [documentation](https://v2.tauri.app/develop/plugins/)\n\nGenerally speaking, plugins are authored by third parties (even though there may be official, supported plugins). A plugin generally does 3 things:\n\n1. It provides rust code to do \"something\".\n2. It provides interface glue to make it easy to integrate into an app.\n3. It provides a JS API for interfacing with the rust code.\n\nHere are several examples of Tauri Plugins:\n\n- <https://github.com/tauri-apps/tauri-plugin-sql>\n- <https://github.com/tauri-apps/tauri-plugin-stronghold>\n- <https://github.com/tauri-apps/tauri-plugin-authenticator>\n\n# Workflows\n\n## What does the Development flow look like?\n\nA developer must first install the prerequisite toolchains for creating a Tauri app. At the very least this will entail installing rust & cargo, and most likely also a modern version of node.js and potentially another package manager. Some platforms may also require other tooling and libraries, but this has been documented carefully in the respective platform docs.\n\nBecause of the many ways to build front-ends, we will stick with a common node.js based approach for development. (Note: Tauri does not by default ship a node.js runtime.)\n\nThe easiest way to do this is to run the following:\n\n```\nnpm create tauri-app\n```\n\nWhich will ask you a bunch of questions about the framework you want to install and then create everything you need in a single folder - some via the placement of template files and some through normal installation procedures of your framework.\n\n> If you don't use this process, you will have to manually install the tauri cli, initialise tauri and manually configure the `tauri.conf.json` file.\n\nOnce everything is installed, you can run:\n\n```\npnpm tauri dev\n-or-\nyarn tauri dev\n-or-\nnpm run tauri dev\n```\n\nThis will do several things:\n\n1. start the JS Framework devserver\n2. begin the long process of downloading and compiling the rust libraries\n3. open an application window with devtools enabled\n4. keep a long-lived console alive\n\nIf you change your HTML/CSS/TS/JS, your framework devserver should give you its best shot at instant hot module reloading and you will see the changes instantly.\n\nIf you modify your rust code or anything in the Cargo.toml, the window will close while rust recompiles. When finished it will reload.\n\nIf you need to get deeper insight into your current project, or triage requires investigation of installed components, just run:\n\n```\npnpm tauri info\n```\n\n## What does the Release flow look like?\n\nThe release flow begins with proper configuration in the `tauri.conf.json` file. In this file, the developer can configure not only the basic behaviour of the application (like window size and decoration), they can also provide settings for signing and updating.\n\nDepending upon the operating system that the developer (or CI) is building the application on, there will be an app built for them for that system. (Cross compilation is not currently available, however there is an official [GitHub Action](https://github.com/tauri-apps/tauri-action) that can be used to build for all platforms.)\n\nTo kick off this process, just:\n\n```\npnpm tauri build\n```\n\nAfter some time, the process will end and you can see the results in the `./src-tauri/target/release` folder.\n\n## What does the End-User flow look like?\n\nEnd users will be provided with binaries in ways that are appropriate for their systems. Whether macOS, Linux, or Windows, direct download or store installations - they will be able to follow procedures for installing and removing that they are used to.\n\n## What does the Updating flow look like?\n\nWhen a new version is ready, the developer publishes the new signed artifacts to a server (that they have configured within `tauri.conf.json`).\n\nThe application can poll this server to see if there is a new release. When there is a new release, the user is prompted to update. The application update is downloaded, verified (checksum & signature), updated, closed, and restarted.\n\n## License\n\nTauri itself is licensed under MIT or Apache-2.0. If you repackage it and modify any source code, it is your responsibility to verify that you are complying with all upstream licenses. Tauri is provided AS-IS with no explicit claim for suitability for any purpose.\n\nHere you may peruse our [Software Bill of Materials](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri).\n","isInternal":false,"tokens":2608,"sizeBytes":11082},{"name":"tauri.conf.json","path":"examples/commands/tauri.conf.json","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/examples/commands/tauri.conf.json","title":"Commands Skill","category":"anthropic-skill","format":"json","content":"{\n  \"$schema\": \"../../crates/tauri-schema-generator/schemas/config.schema.json\",\n  \"productName\": \"Commands\",\n  \"version\": \"0.1.0\",\n  \"identifier\": \"com.tauri.dev\",\n  \"build\": {\n    \"frontendDist\": [\"index.html\"]\n  },\n  \"app\": {\n    \"withGlobalTauri\": true,\n    \"windows\": [\n      {\n        \"title\": \"Welcome to Tauri!\",\n        \"width\": 800,\n        \"height\": 600,\n        \"resizable\": true,\n        \"fullscreen\": false\n      }\n    ],\n    \"security\": {\n      \"csp\": \"default-src 'self'; connect-src ipc: http://ipc.localhost\"\n    }\n  },\n  \"bundle\": {\n    \"active\": true,\n    \"targets\": \"all\",\n    \"icon\": [\n      \"../.icons/32x32.png\",\n      \"../.icons/128x128.png\",\n      \"../.icons/128x128@2x.png\",\n      \"../.icons/icon.icns\",\n      \"../.icons/icon.ico\"\n    ]\n  }\n}\n","frontmatter":{"$schema":"../../crates/tauri-schema-generator/schemas/config.schema.json","productName":"Commands","version":"0.1.0","identifier":"com.tauri.dev","build":{"frontendDist":["index.html"]},"app":{"withGlobalTauri":true,"windows":[{"title":"Welcome to Tauri!","width":800,"height":600,"resizable":true,"fullscreen":false}],"security":{"csp":"default-src 'self'; connect-src ipc: http://ipc.localhost"}},"bundle":{"active":true,"targets":"all","icon":["../.icons/32x32.png","../.icons/128x128.png","../.icons/128x128@2x.png","../.icons/icon.icns","../.icons/icon.ico"]}},"isInternal":false,"tokens":234,"sizeBytes":770},{"name":"CHANGELOG.md","path":"packages/api/CHANGELOG.md","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/api/CHANGELOG.md","title":"Api Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog\n\n## [2.12.4]\n\n### What's Changed\n\n- [`dc637db65`](https://www.github.com/tauri-apps/tauri/commit/dc637db6573443cc668b06deed1f014c4ac01033) ([#16260](https://www.github.com/tauri-apps/tauri/pull/16260)) Improve menu documentation.\n\n## [2.12.3]\n\n### Bug Fixes\n\n- [`0204f6f3a`](https://www.github.com/tauri-apps/tauri/commit/0204f6f3ae1e8dda195b216b32c3ab1d95d928e0) ([#16244](https://www.github.com/tauri-apps/tauri/pull/16244)) Keep delivering `Channel` messages after the `onmessage` handler throws. The error is rethrown asynchronously so it is still reported as uncaught, instead of leaving every later message queued.\n\n## [2.12.2]\n\n### Bug Fixes\n\n- [`a916205db`](https://www.github.com/tauri-apps/tauri/commit/a916205db2c21a2475502452efa9b70132ae52f3) ([#16195](https://www.github.com/tauri-apps/tauri/pull/16195) by [@alessandrorodi](https://www.github.com/tauri-apps/tauri/../../alessandrorodi)) Return an awaitable cleanup function from `Window.onDragDropEvent`, `Window.onFocusChanged` and `Webview.onDragDropEvent` so rejections from the inner unlisten calls can be handled instead of surfacing as unhandled promise rejections.\n- [`a98038ec7`](https://www.github.com/tauri-apps/tauri/commit/a98038ec78422b821b2e25b26fb71a2805741673) ([#16235](https://www.github.com/tauri-apps/tauri/pull/16235) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix `Menu`/`Submenu` `append`, `prepend`, `insert` not taking `MenuItemOptions` as the typescript type suggests\n\n## [2.12.1]\n\n### Bug Fixes\n\n- [`c9a3cb892`](https://www.github.com/tauri-apps/tauri/commit/c9a3cb892e901e39ca46aad2ff6b14aac21fea0d) ([#16166](https://www.github.com/tauri-apps/tauri/pull/16166) by [@FabianLars](https://www.github.com/tauri-apps/tauri/../../FabianLars)) The `macos-private-api` feature flag / `macOSPrivateAPI` tauri.conf.json value is no longer required to use transparency or fullscreen on macOS.\n\n## [2.12.0]\n\n### New Features\n\n- [`d8d02ba60`](https://www.github.com/tauri-apps/tauri/commit/d8d02ba60c041fb0ab4f5631e8ea21ce7231a95a) ([#14767](https://www.github.com/tauri-apps/tauri/pull/14767)) 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.\n- [`990f77eb2`](https://www.github.com/tauri-apps/tauri/commit/990f77eb2f16b431dd5fd8b1059e6112647cca7a) ([#15961](https://www.github.com/tauri-apps/tauri/pull/15961)) Added `JsImage` type alias and documented its relationship to the Rust `JsImage`\n- [`29265557c`](https://www.github.com/tauri-apps/tauri/commit/29265557c7a42ef6a1f982e0ef738208df1f6dd3) ([#15410](https://www.github.com/tauri-apps/tauri/pull/15410)) Added `noRedirectionBitmap` option to the `Window` and `WebviewWindow` constructors on Windows.\n- [`6edc2f4d4`](https://www.github.com/tauri-apps/tauri/commit/6edc2f4d49d2477649bf170aa2867276c25573da) ([#14926](https://www.github.com/tauri-apps/tauri/pull/14926)) Added `Window::set_fullscreen_on_monitor`, `WebviewWindow::set_fullscreen_on_monitor` and the `setFullscreenOnMonitor` JavaScript API to make a window fullscreen on the monitor containing a given physical position, along with the `core:window:allow-set-fullscreen-on-monitor` permission.\n\n### Enhancements\n\n- [`be019795a`](https://www.github.com/tauri-apps/tauri/commit/be019795abc0316aa53f2519bfbf3e7624b9af2e) ([#14103](https://www.github.com/tauri-apps/tauri/pull/14103)) Add ECMAScript Explicit Resource Management to Resource. You can now use the `using` syntax in supported browsers or with polyfills:\n    \n    ```javascript\n    import { create, BaseDirectory } from \"@tauri-apps/plugin-fs\"\n    ...\n    {\n      await using file = await create(\"foo/bar.txt\", { baseDir: BaseDirectory.AppConfig });\n      await file.write(new TextEncoder().encode(\"Hello world\"));\n      // Before `file` goes out of scope, it is disposed by calling `file[Symbol.asyncDispose]()` and awaited.\n    }\n    ```\n- [`4a5065653`](https://www.github.com/tauri-apps/tauri/commit/4a506565374a6a0b4b595e4cdb6d7db68136d765) ([#14454](https://www.github.com/tauri-apps/tauri/pull/14454)) 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.\n\n### Bug Fixes\n\n- [`4fabe2ff1`](https://www.github.com/tauri-apps/tauri/commit/4fabe2ff1bfe28bbcd3335546caf7db7ff970706) ([#16067](https://www.github.com/tauri-apps/tauri/pull/16067)) 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.\n- [`32efd0232`](https://www.github.com/tauri-apps/tauri/commit/32efd0232d868984ac8de9efebae19e464c7c536) ([#15957](https://www.github.com/tauri-apps/tauri/pull/15957)) `Image.rgba` now returns a more specific type `Promise<Uint8Array<ArrayBuffer>>` instead of the default `Promise<Uint8Array<ArrayBufferLike>`\n\n## \\[2.11.1]\n\n### Enhancements\n\n- [`916782601`](https://www.github.com/tauri-apps/tauri/commit/9167826011cc3d114bf12dfb301968fae479891f) ([#15520](https://www.github.com/tauri-apps/tauri/pull/15520) by [@polw1](https://www.github.com/tauri-apps/tauri/../../polw1)) Document that `Monitor.size`, `Monitor.position` and `Monitor.workArea` are in physical pixels, with examples showing how to convert them to the logical pixels expected by window creation options via `toLogical(monitor.scaleFactor)`.\n\n## \\[2.11.0]\n\n### New Features\n\n- [`074299c08`](https://www.github.com/tauri-apps/tauri/commit/074299c08dd99d2e1c57796f55ab24bc1d3976cc) ([#14307](https://www.github.com/tauri-apps/tauri/pull/14307)) Add Bring All to Front predefined menu item type\n- [`a12142a48`](https://www.github.com/tauri-apps/tauri/commit/a12142a481f7a19b69e88ee36a438b1db71b36f5) ([#14357](https://www.github.com/tauri-apps/tauri/pull/14357)) Add macos support for setting the icon and icon template state in the same step of the main thread, to prevent flickering.\n- [`001c8fe3d`](https://www.github.com/tauri-apps/tauri/commit/001c8fe3d288802de9a8c29cfd2f46f9220d97c5) ([#14722](https://www.github.com/tauri-apps/tauri/pull/14722)) Add a WebView option to control browser-level general autofill behavior. This option does not disable password or credit card autofill. On Windows (WebView2), setting it to true disables the general autofill \"Suggestions\" UI, which may appear even when `autocomplete=\"off\"` is specified on input elements. On Linux, macOS, iOS, and Android, this option is currently unsupported and performs no operation.\n- [`eb0312ea9`](https://www.github.com/tauri-apps/tauri/commit/eb0312ea9e493954298ac0b3fdaae7eafb52750e) ([#15199](https://www.github.com/tauri-apps/tauri/pull/15199)) Propagates the `Event::Suspended` and `Event::Resumed` events from `tao` when they are emitted on mobile targets.\n\n## \\[2.10.1]\n\n### Bug Fixes\n\n- Re-release of `2.10.0` with working assets.\n\n## \\[2.10.0]\n\n### Dependencies\n\n- [`517b81e97`](https://www.github.com/tauri-apps/tauri/commit/517b81e97005d087ca5fc4538d954982fce0f4ac) ([#14876](https://www.github.com/tauri-apps/tauri/pull/14876)) Upgraded to `tauri@2.10`\n\n## \\[2.9.1]\n\n### Bug Fixes\n\n- [`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\n\n## \\[2.9.0]\n\n### New Features\n\n- [`f5851ee00`](https://www.github.com/tauri-apps/tauri/commit/f5851ee00d6d1f4d560a220ca5a728fedd525092) ([#14089](https://www.github.com/tauri-apps/tauri/pull/14089)) Adds the `scrollBarStyle` option to the Webview and WebviewBuilder constructors.\n- [`3397fd9bf`](https://www.github.com/tauri-apps/tauri/commit/3397fd9bfe5f6b1337110149f6c34731b8a44bb3) ([#14133](https://www.github.com/tauri-apps/tauri/pull/14133)) Added `app > onBackButtonPress` for Android back button handling.\n\n### Enhancements\n\n- [`59089723f`](https://www.github.com/tauri-apps/tauri/commit/59089723fc20d66f3f305f2008adeb279bf87462) ([#14091](https://www.github.com/tauri-apps/tauri/pull/14091)) Added a config to set a data_directory relative to the app-specific data dir in JavaScript and `tauri.conf.json`.\n\n### Bug Fixes\n\n- [`08bda64c2`](https://www.github.com/tauri-apps/tauri/commit/08bda64c25008bd45c5b58d06ff14649081a2f5d) ([#14132](https://www.github.com/tauri-apps/tauri/pull/14132)) Fix `core > addPluginListener` failing on command permission check.\n\n## \\[2.8.0]\n\n### New Features\n\n- [`68874c68c`](https://www.github.com/tauri-apps/tauri/commit/68874c68c566638b4c21a3aa67844d1bdaeb6dab) ([#13564](https://www.github.com/tauri-apps/tauri/pull/13564) by [@robertrpf](https://www.github.com/tauri-apps/tauri/../../robertrpf)) Add window focusable attribute and set_focusable API.\n- [`5110a762e`](https://www.github.com/tauri-apps/tauri/commit/5110a762e9db978a28a15400bf76e3c864da2a86) ([#13830](https://www.github.com/tauri-apps/tauri/pull/13830) by [@Sky-walkerX](https://www.github.com/tauri-apps/tauri/../../Sky-walkerX)) Added `Window::setSimpleFullscreen`.\n\n### Enhancements\n\n- [`5ba1c3faa`](https://www.github.com/tauri-apps/tauri/commit/5ba1c3faa468073512bdb5035a01f7f99720fcf0) ([#13722](https://www.github.com/tauri-apps/tauri/pull/13722) by [@s00d](https://www.github.com/tauri-apps/tauri/../../s00d)) Added icon (icon and nativeIcon) support for Submenu:\n\n  - In the Rust API (`tauri`), you can now set an icon for submenus via the builder and dedicated methods.\n  - In the JS/TS API (`@tauri-apps/api`), `SubmenuOptions` now has an `icon` field, and the `Submenu` class provides `setIcon` and `setNativeIcon` methods.\n  - Usage examples are added to the documentation and demo app.\n\n  This is a backwards-compatible feature. Submenus can now display icons just like regular menu items.\n\n## \\[2.7.0]\n\n### New Features\n\n- [`232265c70`](https://www.github.com/tauri-apps/tauri/commit/232265c70e1c213bbb3f84b5541ddc07d330fce1) ([#13209](https://www.github.com/tauri-apps/tauri/pull/13209) by [@kandrelczyk](https://www.github.com/tauri-apps/tauri/../../kandrelczyk)) Added `getBundleType` to the app module.\n\n### Enhancements\n\n- [`96391467e`](https://www.github.com/tauri-apps/tauri/commit/96391467e967c1e3c6475ce75166c58a326116a3) ([#13783](https://www.github.com/tauri-apps/tauri/pull/13783) by [@JosephBrooksbank](https://www.github.com/tauri-apps/tauri/../../JosephBrooksbank)) Allow events emitted with `emit` to be handled correctly by `listen` callbacks when in a mocked environment\n\n### Bug Fixes\n\n- [`152d971bc`](https://www.github.com/tauri-apps/tauri/commit/152d971bcd6c1fdc5716f7d5417dd4df5ce7479f) ([#13744](https://www.github.com/tauri-apps/tauri/pull/13744) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Expose `unregisterCallback`, `runCallback`, `callbacks` in `mockIPC`\n- [`b821796ad`](https://www.github.com/tauri-apps/tauri/commit/b821796add33cca4de72f48882684af487936d02) ([#13810](https://www.github.com/tauri-apps/tauri/pull/13810) by [@asdolo](https://www.github.com/tauri-apps/tauri/../../asdolo)) Add missing `trafficLightPosition` TypeScript type definition\n\n## \\[2.6.0]\n\n### New Features\n\n- [`50ebddaa2`](https://www.github.com/tauri-apps/tauri/commit/50ebddaa2d83033a393a176ba07ef28352b98210) ([#13319](https://www.github.com/tauri-apps/tauri/pull/13319) by [@kingsword09](https://www.github.com/tauri-apps/tauri/../../kingsword09)) Expose the `setAutoResize` API for webviews in `@tauri-apps/api`.\n- [`267368fd4`](https://www.github.com/tauri-apps/tauri/commit/267368fd4f83e0a71dfb1b72a66d56592a2066bc) ([#13276](https://www.github.com/tauri-apps/tauri/pull/13276) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `Monitor.workArea` field.\n\n### Bug Fixes\n\n- [`23b9da75b`](https://www.github.com/tauri-apps/tauri/commit/23b9da75b91379cca9520bc53b10fdf39ebae241) ([#13324](https://www.github.com/tauri-apps/tauri/pull/13324) by [@kingsword09](https://www.github.com/tauri-apps/tauri/../../kingsword09)) Fixed path joining behavior where `path.join('', 'a')` incorrectly returns \"/a\" instead of \"a\".\n- [`b985eaf0a`](https://www.github.com/tauri-apps/tauri/commit/b985eaf0a231ea570e36d686c665cddbc76ab4f6) ([#13306](https://www.github.com/tauri-apps/tauri/pull/13306) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Immediately unregister event listener when the unlisten function is called.\n\n### What's Changed\n\n- [`b5c549d18`](https://www.github.com/tauri-apps/tauri/commit/b5c549d1898ecdb712822c02dc665cc6771fbd07) ([#13325](https://www.github.com/tauri-apps/tauri/pull/13325) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) `transformCallback` now registers the callbacks inside `window.__TAURI_INTERNALS__.callbacks` instead of directly on `window['_{id}']`\n\n## \\[2.5.0]\n\n### New Features\n\n- [`66e6325f4`](https://www.github.com/tauri-apps/tauri/commit/66e6325f43efa49ec2165c45afec911a1a14ecfb) ([#13136](https://www.github.com/tauri-apps/tauri/pull/13136)) Allow passing the callback as the parameter of constructor of `Channel` so you can use it like this `new Channel((message) => console.log(message))`\n- [`ea36294cb`](https://www.github.com/tauri-apps/tauri/commit/ea36294cbca98f7725c91d1464fd92e77c89698a) ([#13208](https://www.github.com/tauri-apps/tauri/pull/13208)) Added `disableInputAccessoryView: bool` config for iOS.\n- [`c1cd0a2dd`](https://www.github.com/tauri-apps/tauri/commit/c1cd0a2ddb5bc3e99451cbe399b5fc9f0035f571) ([#13090](https://www.github.com/tauri-apps/tauri/pull/13090)) macOS/iOS: add option to disable or enable link previews when building a webview (the webkit api has it enabled by default)\n\n  - `WindowOptions::allowLinkPreview`\n  - `WebviewOptions::allowLinkPreview`\n- [`b072e2b29`](https://www.github.com/tauri-apps/tauri/commit/b072e2b2967640ae4fa1af466ae878c156551edd) ([#9687](https://www.github.com/tauri-apps/tauri/pull/9687)) Add `preventOverflow` config option to prevent the window from overflowing the monitor size on creation\n- [`dd4f13ce4`](https://www.github.com/tauri-apps/tauri/commit/dd4f13ce4b3cd89cde2fa3f18a063c272f215621) ([#13185](https://www.github.com/tauri-apps/tauri/pull/13185)) Added `app.setDockVisibility` for macOS.\n\n### Enhancements\n\n- [`b8f86669a`](https://www.github.com/tauri-apps/tauri/commit/b8f86669ab05f7dbdd15839a20999e63dc43bda6) ([#13145](https://www.github.com/tauri-apps/tauri/pull/13145)) `core.isTauri` now leverages `globalThis` instead of `window` in order to be used in unit tests.\n\n### Bug Fixes\n\n- [`66e6325f4`](https://www.github.com/tauri-apps/tauri/commit/66e6325f43efa49ec2165c45afec911a1a14ecfb) ([#13136](https://www.github.com/tauri-apps/tauri/pull/13136)) Fix `Channel`'s callback attached to `window` never cleaned up\n\n## \\[2.4.1]\n\n### Enhancements\n\n- [`dd1372833`](https://www.github.com/tauri-apps/tauri/commit/dd137283341ce0e6aabfd158d07d77c6feeb920e) ([#13066](https://www.github.com/tauri-apps/tauri/pull/13066) by [@ahaoboy](https://www.github.com/tauri-apps/tauri/../../ahaoboy)) Add a generic to `emit` and `emitTo` functions for the `payload` instead of the previously used type (`unknown`).\n\n## \\[2.4.0]\n\n### New Features\n\n- [`d8059bad3`](https://www.github.com/tauri-apps/tauri/commit/d8059bad3cc922dc369c39ca1cfa49aaec31322e) ([#12900](https://www.github.com/tauri-apps/tauri/pull/12900) by [@Simon-Laux](https://www.github.com/tauri-apps/tauri/../../Simon-Laux)) add `AppHandle.fetch_data_store_identifiers` and `AppHandle.remove_data_store` (macOS and iOS only)\n- [`20c190691`](https://www.github.com/tauri-apps/tauri/commit/20c19069125c89b2d45a2127278c9ffc2df35fc2) ([#12821](https://www.github.com/tauri-apps/tauri/pull/12821) by [@Simon-Laux](https://www.github.com/tauri-apps/tauri/../../Simon-Laux)) Added `WindowOptions::javascriptDisabled` and `WebviewOptions::javascriptDisabled`.\n- [`060de5bbd`](https://www.github.com/tauri-apps/tauri/commit/060de5bbdddca384e3965a8938d89840f27c581d) ([#12837](https://www.github.com/tauri-apps/tauri/pull/12837) by [@niladrix719](https://www.github.com/tauri-apps/tauri/../../niladrix719)) Added `getIdentifier()` function to get the application identifier configured in tauri.conf.json\n- [`be2e6b85f`](https://www.github.com/tauri-apps/tauri/commit/be2e6b85fed226732b4a98f68cc5d72b4f8f5a13) ([#12944](https://www.github.com/tauri-apps/tauri/pull/12944) by [@Simon-Laux](https://www.github.com/tauri-apps/tauri/../../Simon-Laux)) Added `Window#isAlwaysOnTop` and `WebviewWindow#isAlwaysOnTop` methods.\n- [`bcdd51025`](https://www.github.com/tauri-apps/tauri/commit/bcdd510254ebe37827e22a5ffeb944321361e97c) ([#13012](https://www.github.com/tauri-apps/tauri/pull/13012) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) The `path` basename and extname APIs now accept Android content URIs, such as the paths returned by the dialog plugin.\n\n### Bug Fixes\n\n- [`3a74dc8f3`](https://www.github.com/tauri-apps/tauri/commit/3a74dc8f3421112b1d0a32b6a432606b1f33cc25) ([#12935](https://www.github.com/tauri-apps/tauri/pull/12935) by [@tk103331](https://www.github.com/tauri-apps/tauri/../../tk103331)) Fix `Webview.close` always fail with command not found\n\n## \\[2.3.0]\n\n### Enhancements\n\n- [`a2d36b8c3`](https://www.github.com/tauri-apps/tauri/commit/a2d36b8c34a8dcfc6736797ca5cd4665faf75e7e) ([#12181](https://www.github.com/tauri-apps/tauri/pull/12181) by [@bastiankistner](https://www.github.com/tauri-apps/tauri/../../bastiankistner)) Add an option to change the default background throttling policy (currently for WebKit only).\n\n## \\[2.2.0]\n\n### New Features\n\n- [`020ea0556`](https://www.github.com/tauri-apps/tauri/commit/020ea05561348dcd6d2a7df358f8a5190f661ba2) ([#11661](https://www.github.com/tauri-apps/tauri/pull/11661) by [@ahqsoftwares](https://www.github.com/tauri-apps/tauri/../../ahqsoftwares)) Add badging APIs:\n\n  - `Window/WebviewWindow::set_badge_count` for Linux, macOS and IOS.\n  - `Window/WebviewWindow::set_overlay_icon` for Windows Only.\n  - `Window/WebviewWindow::set_badge_label`for macOS Only.\n- [`fc30b20be`](https://www.github.com/tauri-apps/tauri/commit/fc30b20bea125f647db00ca824663f8e1da4d61f) ([#11726](https://www.github.com/tauri-apps/tauri/pull/11726) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `TrayIcon.setShowMenuOnLeftClick` method and deprecate `TrayIcon.setMenuOnLeftClick` to match the Rust API.\n- [`fc30b20be`](https://www.github.com/tauri-apps/tauri/commit/fc30b20bea125f647db00ca824663f8e1da4d61f) ([#11726](https://www.github.com/tauri-apps/tauri/pull/11726) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `TrayIconOptions.showMenuOnLeftClick` field and deprecate `TrayIconOptions.menuOnLeftClick` to match the Rust API.\n\n### Enhancements\n\n- [`fc30b20be`](https://www.github.com/tauri-apps/tauri/commit/fc30b20bea125f647db00ca824663f8e1da4d61f) ([#11726](https://www.github.com/tauri-apps/tauri/pull/11726) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add support for `TrayIconOptions.menuOnLeftClick` option and `TrayIcon.setMenuOnLeftClick` on Windows.\n\n### Bug Fixes\n\n- [`a16796a55`](https://www.github.com/tauri-apps/tauri/commit/a16796a55592cf5be80043edfbb630dd2e32efab) ([#12069](https://www.github.com/tauri-apps/tauri/pull/12069) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix `Channel` never calls `onmessage` in some cases\n- [`12a48d1e2`](https://www.github.com/tauri-apps/tauri/commit/12a48d1e26a83c3915eaa0687b196fbc8f2d457a) ([#11741](https://www.github.com/tauri-apps/tauri/pull/11741) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Fix error when calling `PredefinedMenuItem.new` to create an `About` menu item that uses an `Image` instance for the about icon.\n- [`12a48d1e2`](https://www.github.com/tauri-apps/tauri/commit/12a48d1e26a83c3915eaa0687b196fbc8f2d457a) ([#11741](https://www.github.com/tauri-apps/tauri/pull/11741) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Fix error when calling `IconMenuItem.new` using an `Image` instance for the icon.\n- [`b63262cd4`](https://www.github.com/tauri-apps/tauri/commit/b63262cd4d6a3667ca1664607a0a5444ad79fe0e) ([#11724](https://www.github.com/tauri-apps/tauri/pull/11724) by [@FabianLars](https://www.github.com/tauri-apps/tauri/../../FabianLars)) Removed the generic in the type of the callback function argument in `mockIPC` which prevented its proper use in tests using TypeScript.\n- [`a6e84f7d2`](https://www.github.com/tauri-apps/tauri/commit/a6e84f7d2c1d5fdc65901fce683502be3f47833f) ([#11835](https://www.github.com/tauri-apps/tauri/pull/11835) by [@ilittlebig](https://www.github.com/tauri-apps/tauri/../../ilittlebig)) Fix error where using `isAbsolute` would return `Command not found`.\n\n## \\[2.1.1]\n\n### Bug Fixes\n\n- [`7f81f0523`](https://www.github.com/tauri-apps/tauri/commit/7f81f052365675721312aafba297a7b67fb872d2) Fix regression in `toLogical` and `toPhysical` for position types in `dpi` module returning incorrect `y` value.\n- [`e8a50f6d7`](https://www.github.com/tauri-apps/tauri/commit/e8a50f6d760fad4529e7abb400302a1b487f11dd) ([#11645](https://www.github.com/tauri-apps/tauri/pull/11645)) Fix integer values of `BasDirectory.Home` and `BaseDirectory.Font` regression which broke path APIs in JS.\n\n## \\[2.1.0]\n\n### New Features\n\n- [`5c4b83084`](https://www.github.com/tauri-apps/tauri/commit/5c4b830843ab085f8ff9db9e08d832223b027e4e) ([#11191](https://www.github.com/tauri-apps/tauri/pull/11191) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Improved support for `dpi` module types to allow these types to be used without manual conversions with `invoke`:\n\n  - Added `SERIALIZE_TO_IPC_FN` const in `core` module which can be used to implement custom IPC serialization for types passed to `invoke`.\n  - Added `Size` and `Position` classes in `dpi` module.\n  - Implementd `SERIALIZE_TO_IPC_FN` method on `PhysicalSize`, `PhysicalPosition`, `LogicalSize` and `LogicalPosition` to convert it into a valid IPC-compatible value that can be deserialized correctly on the Rust side into its equivalent struct.\n- [`4d545ab3c`](https://www.github.com/tauri-apps/tauri/commit/4d545ab3ca228c8a21b966b709f84a0da2864479) ([#11486](https://www.github.com/tauri-apps/tauri/pull/11486) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Added `Webview::setBackgroundColor`, `WebviewWindow::setBackgroundColor` APIs to set the window background color dynamically\n  and a `backgroundColor` window option to set the background color on window creation.\n- [`cbc095ec5`](https://www.github.com/tauri-apps/tauri/commit/cbc095ec5fe7de29b5c9265576d4e071ec159c1c) ([#11451](https://www.github.com/tauri-apps/tauri/pull/11451) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `app > windows > devtools` config option and when creating the webview from JS, to enable or disable devtools for a specific webview.\n- [`2a75c64b5`](https://www.github.com/tauri-apps/tauri/commit/2a75c64b5431284e7340e8743d4ea56a62c75466) ([#11469](https://www.github.com/tauri-apps/tauri/pull/11469) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Added `windowClassname` option, when constructing a `Webview` or `WebviewWindow`, to specify the name of the window class on Windows.\n\n### Bug Fixes\n\n- [`54cbf59b5`](https://www.github.com/tauri-apps/tauri/commit/54cbf59b5a572570a47237a3b5e6505f2a9e5d5d) ([#11441](https://www.github.com/tauri-apps/tauri/pull/11441) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Fix submenu created as a menu item instead of a submenu when created by using an object in the `items` field in the options object passed to `Menu.new` or `Submenu.new`.\n\n## \\[2.0.3]\n\n### Bug Fixes\n\n- [`fbb45c674`](https://www.github.com/tauri-apps/tauri/commit/fbb45c674ca92fbbe04f1a8360e5f2e477dd4297) ([#11423](https://www.github.com/tauri-apps/tauri/pull/11423) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Fixes `addPluginListener` not working.\n\n### What's Changed\n\n- [`2e88633ba`](https://www.github.com/tauri-apps/tauri/commit/2e88633ba4da8fc289c6d8a29c36f3327f9b576e) ([#11369](https://www.github.com/tauri-apps/tauri/pull/11369) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Remove references to no longer used `__TAURI_INTERNALS__.metadata.windows` and `__TAURI_INTERNALS__.metadata.webviews`.\n\n## \\[2.0.2]\n\n### What's Changed\n\n- [`e968b3d25`](https://www.github.com/tauri-apps/tauri/commit/e968b3d2527b8edf7653e6cf7284dc4a8889b5fe) ([#11219](https://www.github.com/tauri-apps/tauri/pull/11219) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Actually publish package with the latest tag.\n\n## \\[2.0.1]\n\n### What's Changed\n\n- [`be683e2ac`](https://www.github.com/tauri-apps/tauri/commit/be683e2ac36df9c51a5c050d9d500247bd019090) ([#11199](https://www.github.com/tauri-apps/tauri/pull/11199) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Publish package with the latest NPM tag.\n\n## \\[2.0.0]\n\n### What's Changed\n\n- [`637285790`](https://www.github.com/tauri-apps/tauri/commit/6372857905ae9c0aedb7f482ddf6cf9f9836c9f2) Promote to v2 stable!\n\n## \\[2.0.0-rc.6]\n\n### New Features\n\n- [`9014a3f17`](https://www.github.com/tauri-apps/tauri/commit/9014a3f1765ca406ea5c3e5224267a79c52cd53d) ([#11066](https://www.github.com/tauri-apps/tauri/pull/11066) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `WebviewWindow.clearAllBrowsingData` and `Webview.clearAllBrowsingData` to clear the webview browsing data.\n- [`95df53a2e`](https://www.github.com/tauri-apps/tauri/commit/95df53a2ed96873cd35a4b14a5e312d07e4e3004) ([#11143](https://www.github.com/tauri-apps/tauri/pull/11143) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Add the ability to set theme dynamically using `Window.setTheme` or `setTheme` function from the `app` module\n- [`d9d2502b4`](https://www.github.com/tauri-apps/tauri/commit/d9d2502b41e39efde679e30c8955006e2ba9ea64) ([#11140](https://www.github.com/tauri-apps/tauri/pull/11140) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `Webview.hide` and `Webview.show` methods.\n- [`de7414aab`](https://www.github.com/tauri-apps/tauri/commit/de7414aab935e45540594ea930eb60bae4dbc979) ([#11154](https://www.github.com/tauri-apps/tauri/pull/11154) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `Window::setEnabled` and `Window::isEnabled` methods\n\n### Bug Fixes\n\n- [`948772a65`](https://www.github.com/tauri-apps/tauri/commit/948772a657eb3caf20843628abac9109e3b67d41) ([#11114](https://www.github.com/tauri-apps/tauri/pull/11114) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Change the `button_state` tray event field to camelCase `buttonState`.\n\n### Breaking Changes\n\n- [`0b4495996`](https://www.github.com/tauri-apps/tauri/commit/0b4495996d3131a5ee80fbb2c71a28203e491ee7) ([#11121](https://www.github.com/tauri-apps/tauri/pull/11121) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Simplified emitted tray event JS value and updated `TrayIconEvent` type definition to match it.\n\n## \\[2.0.0-rc.5]\n\n### New Features\n\n- [`ddf69157b`](https://www.github.com/tauri-apps/tauri/commit/ddf69157b54249f3321ca72db6703812019f1ab9) ([#11031](https://www.github.com/tauri-apps/tauri/pull/11031) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `toPhysical` method on `LogicalPositon` and `LogicalSize` classes.\n\n## \\[2.0.0-rc.4]\n\n### Enhancements\n\n- [`f81929e25`](https://www.github.com/tauri-apps/tauri/commit/f81929e25104aa1091e464bd012c80649dedf9e5) ([#10799](https://www.github.com/tauri-apps/tauri/pull/10799) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Added `PermissionState`, `checkPermissions` and `requestPermissions` base APIs to the core module, designed for plugin authors to extend.\n\n### Bug Fixes\n\n- [`fbe76a955`](https://www.github.com/tauri-apps/tauri/commit/fbe76a955a63af9fb33f66d5f747caf858cf179b) ([#10797](https://www.github.com/tauri-apps/tauri/pull/10797) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Uint8Arrays and ArrayBuffers are now properly serialized as an array of numbers.\n\n## \\[2.0.0-rc.3]\n\n### What's Changed\n\n- [`f4d5241b3`](https://www.github.com/tauri-apps/tauri/commit/f4d5241b377d0f7a1b58100ee19f7843384634ac) ([#10731](https://www.github.com/tauri-apps/tauri/pull/10731) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Update documentation icon path.\n\n## \\[2.0.0-rc.2]\n\n### Bug Fixes\n\n- [`c689521a7`](https://www.github.com/tauri-apps/tauri/commit/c689521a7674b6562b5dfd4f5cacd12138d99d85) ([#10681](https://www.github.com/tauri-apps/tauri/pull/10681) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Fix tslib path in dist.\n\n## \\[2.0.0-rc.1]\n\n### Breaking Changes\n\n- [`b6dca99ff`](https://www.github.com/tauri-apps/tauri/commit/b6dca99fff73816a39380b288c299b47b493cfdb) ([#10630](https://www.github.com/tauri-apps/tauri/pull/10630) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Changed `WebviewWindow.getAll`, `WebviewWindow.getByLabel`, `getAllWebviewWindows`,\n  `Window.getAll`, `Window.getByLabel`, `getAllWindows`,\n  `Webview.getAll`, `Webview.getByLabel`, `getAllWebviews`\n  to be async so their return value are synchronized with the state from the Rust side,\n  meaning new and destroyed windows are reflected.\n\n## \\[2.0.0-rc.0]\n\n### Changes\n\n- Promoted to RC!\n\n## \\[2.0.0-beta.16]\n\n### New Features\n\n- [`da25f7353`](https://www.github.com/tauri-apps/tauri/commit/da25f7353070477ba969851e974379d7666d6806) ([#10242](https://www.github.com/tauri-apps/tauri/pull/10242) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add APIs to enable setting window size constraints separately:\n\n  - Added `WindowSizeConstraints` interface in `window` and `webviewWindow` modules.\n  - Added `Window.setSizeConstraints` and `WebviewWindow.setSizeConstraints`\n\n### Bug Fixes\n\n- [`3c17fb64f`](https://www.github.com/tauri-apps/tauri/commit/3c17fb64fd822597d5cc16ee7e7b3f9e1023637b) ([#10277](https://www.github.com/tauri-apps/tauri/pull/10277) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix `Webview.reparent` pointing to `set_webview_focus` instead of `reparent` Rust API\n- [`da25f7353`](https://www.github.com/tauri-apps/tauri/commit/da25f7353070477ba969851e974379d7666d6806) ([#10242](https://www.github.com/tauri-apps/tauri/pull/10242) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Apply `minWidth`, `minHieght`, `maxWidth` and `maxHeight` constraints separately, which fixes a long standing bug where these constraints were never applied unless width and height were constrained together.\n\n## \\[2.0.0-beta.15]\n\n### New Features\n\n- [`7bc6a2a1d`](https://www.github.com/tauri-apps/tauri/commit/7bc6a2a1d6d2c5406d91cac94d33bce76443c28f) ([#9788](https://www.github.com/tauri-apps/tauri/pull/9788) by [@pewsheen](https://www.github.com/tauri-apps/tauri/../../pewsheen)) Add a new method to set title bar style dynamically on macOS.\n\n### Enhancements\n\n- [`080b6e127`](https://www.github.com/tauri-apps/tauri/commit/080b6e12720b89d839c686d7067cc94d276ed7e4) ([#10246](https://www.github.com/tauri-apps/tauri/pull/10246) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Use `EventName` on `Window`, `Webview` and `WebviewWindow`'s `once` so you can get auto complete for tauri's built-in events\n\n### Bug Fixes\n\n- [`080b6e127`](https://www.github.com/tauri-apps/tauri/commit/080b6e12720b89d839c686d7067cc94d276ed7e4) ([#10246](https://www.github.com/tauri-apps/tauri/pull/10246) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix `once` doesn't detached after one callback if event handler throws\n\n### Breaking Changes\n\n- [`261c9f942`](https://www.github.com/tauri-apps/tauri/commit/261c9f942de9a598b5c6cc504de6bddd1306113b) ([#10170](https://www.github.com/tauri-apps/tauri/pull/10170) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Renamed drag and drop events in `TauriEvent` enum to better convey when they are triggered:\n\n  - `TauriEvent.DRAG` -> `TauriEvent.DRAG_ENTER`\n  - `TauriEvent.DROP_OVER` -> `TauriEvent.DRAG_OVER`\n  - `TauriEvent.DROP` -> `TauriEvent.DRAG_DROP`\n  - `TauriEvent.DROP_CANCELLED` -> `TauriEvent::DRAG_LEAVE`\n\n  Also the `type` field values in `Window/Webview/WebviewWindow.onDropEvent` and `DragDropEvent` have changed:\n\n  - `dragged` -> `enter`\n  - `dragOver` -> `over`\n  - `dropped` -> `drop`\n  - `cancelled` -> `leave`\n- [`2b1ceb40d`](https://www.github.com/tauri-apps/tauri/commit/2b1ceb40d345aef42dd79438fa69ca7989ee0194) ([#10229](https://www.github.com/tauri-apps/tauri/pull/10229) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Renamed the JS `getCurrent` and `getAll` functions to a clearer name to avoid ambiguity:\n\n  - `getCurrent` in `window` module has been renamed to `getCurrentWindow`\n  - `getCurrent` in `webview` module has been renamed to `getCurrentWebview`\n  - `getCurrent` in `webviewWindow` module has been renamed to `getCurrentWebviewWindow`\n  - `getAll` in `window` module has been renamed to `getAllWindows`\n  - `getAll` in `webview` module has been renamed to `getAllWebviews`\n  - `getAll` in `webviewWindow` module has been renamed to `getAllWebviewWindows`\n\n## \\[2.0.0-beta.14]\n\n### New Features\n\n- [`148f04887`](https://www.github.com/tauri-apps/tauri/commit/148f048871caee21498b236c058b8890f2b66cc7) ([#9979](https://www.github.com/tauri-apps/tauri/pull/9979)) Add `defaultWindowIcon` to the JS `app` module to retrieve the default window icon in JS.\n\n### Bug Fixes\n\n- [`c98f385cb`](https://www.github.com/tauri-apps/tauri/commit/c98f385cb5da4d72968df24b1fc0b58212d59653) ([#10044](https://www.github.com/tauri-apps/tauri/pull/10044)) Export `mocks` module in `@tauri-apps/api` npm package.\n\n## \\[2.0.0-beta.13]\n\n### Breaking Changes\n\n- [`c4410daa8`](https://www.github.com/tauri-apps/tauri/commit/c4410daa85616340e911c8243fdaa69e6906fd49)([#9777](https://www.github.com/tauri-apps/tauri/pull/9777)) This release contains breaking changes to the tray event structure because of newly added events:\n\n  - Changed `TrayIconEvent` to be an enum instead of a struct.\n  - Added `MouseButtonState` and `MouseButton` enums.\n  - Removed `ClickType` enum and replaced it with `MouseButton` enum.\n  - Added `MouseButtonState` enum.\n\n## \\[2.0.0-beta.12]\n\n### New Features\n\n- [`ec0e092ec`](https://www.github.com/tauri-apps/tauri/commit/ec0e092ecd23b547c756c7476f23a0d95be6db80)([#9770](https://www.github.com/tauri-apps/tauri/pull/9770)) Add `monitorFromPoint` function in `window` module to get the monitor from a given point.\n\n## \\[2.0.0-beta.11]\n\n### Bug Fixes\n\n- [`aa080696e`](https://www.github.com/tauri-apps/tauri/commit/aa080696e0952abff416dd9088d519eaf2587a3a)([#9618](https://www.github.com/tauri-apps/tauri/pull/9618)) Fix `isTauri` incorrect return type.\n\n## \\[2.0.0-beta.10]\n\n### New Features\n\n- [`477bb8cd4`](https://www.github.com/tauri-apps/tauri/commit/477bb8cd4ea88ade3f6c1f268ad1701a68150161)([#9297](https://www.github.com/tauri-apps/tauri/pull/9297)) Add `cursorPosition` function in `window` module to get the current cursor position.\n\n## \\[2.0.0-beta.9]\n\n### New Features\n\n- [`70c51371e`](https://www.github.com/tauri-apps/tauri/commit/70c51371e01184223312de3dba8030394a5a9406)([#9539](https://www.github.com/tauri-apps/tauri/pull/9539)) Add `isTauri` function in `core` module to check whether running inside tauri or not.\n\n### Bug Fixes\n\n- [`be7eab209`](https://www.github.com/tauri-apps/tauri/commit/be7eab209c60c45e140f7bcb4bab1037d62d4c03)([#9486](https://www.github.com/tauri-apps/tauri/pull/9486)) Set the `exports > types` package.json field.\n- [`cf615e8e4`](https://www.github.com/tauri-apps/tauri/commit/cf615e8e4d5008ee1ac3f77e530ba26fb91e8977)([#9463](https://www.github.com/tauri-apps/tauri/pull/9463)) Fixes a bug when processing channel messages out of order.\n- [`35b25f7e5`](https://www.github.com/tauri-apps/tauri/commit/35b25f7e5c0fe03af4ed3582e22a626863f035f0)([#9530](https://www.github.com/tauri-apps/tauri/pull/9530)) Do not use JS optional chaining to prevent script errors on older webviews such as macOS 10.14.\n\n## \\[2.0.0-beta.8]\n\n### New Features\n\n- [`58a7a552d`](https://www.github.com/tauri-apps/tauri/commit/58a7a552d739b77b71d61af11c53f7f2dc7a6e7e)([#9378](https://www.github.com/tauri-apps/tauri/pull/9378)) Added the `set_zoom` function to the webview API.\n- [`58a7a552d`](https://www.github.com/tauri-apps/tauri/commit/58a7a552d739b77b71d61af11c53f7f2dc7a6e7e)([#9378](https://www.github.com/tauri-apps/tauri/pull/9378)) Add `zoom_hotkeys_enabled` to enable browser native zoom controls on creating webviews.\n\n### Bug Fixes\n\n- [`48a7a78f8`](https://www.github.com/tauri-apps/tauri/commit/48a7a78f8094d08e5e403e88050391642d29151b)([#9376](https://www.github.com/tauri-apps/tauri/pull/9376)) Fix `Window/Webview/WebviewWindow.setSize`, `Window/Webview/WebviewWindow.setPostion`, `Window/WebviewWindow.setMinSize`, `Window/WebviewWindow.setMaxSize`, `Window/WebviewWindow.setCursorPosition` and `Menu/Submenu.popup` methods failing with invalid args.\n\n## \\[2.0.0-beta.7]\n\n### Bug Fixes\n\n- [`c33f6e6cf`](https://www.github.com/tauri-apps/tauri/commit/c33f6e6cf35a0d34b5598875a2e5b642a01c8b38)([#9211](https://www.github.com/tauri-apps/tauri/pull/9211)) Re-added the `TauriEvent.WINDOW_CREATED` (`tauri://window-created`) event.\n\n### Breaking Changes\n\n- [`06833f4fa`](https://www.github.com/tauri-apps/tauri/commit/06833f4fa8e63ecc55fe3fc874a9e397e77a5709)([#9100](https://www.github.com/tauri-apps/tauri/pull/9100)) Rename `FileDrop` to `DragDrop` on structs, enums and enum variants. Also renamed `file_drop` to `drag_drop` on fields and function names.\n\n## \\[2.0.0-beta.6]\n\n### New Features\n\n- [`acdd76833`](https://www.github.com/tauri-apps/tauri/commit/acdd76833db6d81f4012418133d0042220de100b)([#9155](https://www.github.com/tauri-apps/tauri/pull/9155)) Add `TrayIcon.getById` and `TrayIcon.removeById` static methods.\n\n### Enhancements\n\n- [`ea0242db4`](https://www.github.com/tauri-apps/tauri/commit/ea0242db4aa6c127d2bb4a2e275000ba47c9e68c)([#9179](https://www.github.com/tauri-apps/tauri/pull/9179)) The `Image` constructor is now public (for internal use only).\n\n### Bug Fixes\n\n- [`379cc2b35`](https://www.github.com/tauri-apps/tauri/commit/379cc2b3547395474d4b66b4222679cf4538428d)([#9165](https://www.github.com/tauri-apps/tauri/pull/9165)) Fix `basename(path, 'ext')` JS API when removing all occurances of `ext` where it should only remove the last one.\n\n### Breaking Changes\n\n- [`ea0242db4`](https://www.github.com/tauri-apps/tauri/commit/ea0242db4aa6c127d2bb4a2e275000ba47c9e68c)([#9179](https://www.github.com/tauri-apps/tauri/pull/9179)) `Image::rgba()` now returns `Promise<Uint8Array>`.\n- [`ea0242db4`](https://www.github.com/tauri-apps/tauri/commit/ea0242db4aa6c127d2bb4a2e275000ba47c9e68c)([#9179](https://www.github.com/tauri-apps/tauri/pull/9179)) Removed `width` and `height` methods on the JS `Image` class, use `size` instead.\n\n## \\[2.0.0-beta.5]\n\n### Breaking Changes\n\n- [`db0a24a97`](https://www.github.com/tauri-apps/tauri/commit/db0a24a973191752aeecfbd556faa254b0f17e79)([#9132](https://www.github.com/tauri-apps/tauri/pull/9132)) Remove the `Image.fromPngBytes` and `Image.fromIcoBytes` APIs. Use `Image.fromBytes` instead.\n\n## \\[2.0.0-beta.4]\n\n### New Features\n\n- [`d1e77acd8`](https://www.github.com/tauri-apps/tauri/commit/d1e77acd8dfdf554b90b542513a58a2de1ef2360)([#9011](https://www.github.com/tauri-apps/tauri/pull/9011)) Add a new `Image` type in Rust and JS.\n\n### Enhancements\n\n- [`e62ca4ee9`](https://www.github.com/tauri-apps/tauri/commit/e62ca4ee95f4308a6ad128d0f100c85634e28223)([#9070](https://www.github.com/tauri-apps/tauri/pull/9070)) Added a mechanism to preserve channel message order.\n\n## \\[2.0.0-beta.3]\n\n### New Features\n\n- [`fdcaf935`](https://www.github.com/tauri-apps/tauri/commit/fdcaf935fa75ecfa2806939c4faad4fe9e880386)([#8939](https://www.github.com/tauri-apps/tauri/pull/8939)) Added the `reparent` function to the webview API.\n\n## \\[2.0.0-beta.2]\n\n### Breaking Changes\n\n- [`361ec37f`](https://www.github.com/tauri-apps/tauri/commit/361ec37fd4a5caa5b6630b9563ef079f53c6c336)([#8932](https://www.github.com/tauri-apps/tauri/pull/8932)) Removed the `unityUri` option from the progress bar state, no longer required.\n\n## \\[2.0.0-beta.1]\n\n### New Features\n\n- [`16e550ec`](https://www.github.com/tauri-apps/tauri/commit/16e550ec1503765158cdc3bb2a20e70ec710e981)([#8844](https://www.github.com/tauri-apps/tauri/pull/8844)) Add a new `webviewWindow` module that exports `WebviewWindow` class and related methods such as `getCurrent` and `getAll`.\n- [`16e550ec`](https://www.github.com/tauri-apps/tauri/commit/16e550ec1503765158cdc3bb2a20e70ec710e981)([#8844](https://www.github.com/tauri-apps/tauri/pull/8844)) Add `Window.onFileDropEvent` method.\n\n### Breaking Changes\n\n- [`16e550ec`](https://www.github.com/tauri-apps/tauri/commit/16e550ec1503765158cdc3bb2a20e70ec710e981)([#8844](https://www.github.com/tauri-apps/tauri/pull/8844)) Renamed the following enum variants of `TauriEvent` enum:\n\n  - `TauriEvent.WEBVIEW_FILE_DROP` -> `TauriEvent.FILE_DROP`\n  - `TauriEvent.WEBVIEW_FILE_DROP_HOVER` -> `TauriEvent.FILE_DROP_HOVER`\n  - `TauriEvent.WEBVIEW_FILE_DROP_CANCELLED` -> `TauriEvent.FILE_DROP_CANCELLED`\n- [`16e550ec`](https://www.github.com/tauri-apps/tauri/commit/16e550ec1503765158cdc3bb2a20e70ec710e981)([#8844](https://www.github.com/tauri-apps/tauri/pull/8844)) Move `WebviewWindow` class from `webview` module to a new `webviewWindow` module.\n\n## \\[2.0.0-beta.0]\n\n### New Features\n\n- [`74a2a603`](https://www.github.com/tauri-apps/tauri/commit/74a2a6036a5e57462f161d728cbd8a6f121028ca)([#8661](https://www.github.com/tauri-apps/tauri/pull/8661)) Implement access control list for IPC usage.\n- [`a093682d`](https://www.github.com/tauri-apps/tauri/commit/a093682d2df7169b024bb4f736c7f1fd2ea8b327)([#8621](https://www.github.com/tauri-apps/tauri/pull/8621)) Added `emitTo` api to `event` module which is equivalent to the rust `emit_to` method. Also added `emitTo` method on `Window`, `Webivew` and `WebviewWindow` classes.\n- [`a2fc3a63`](https://www.github.com/tauri-apps/tauri/commit/a2fc3a63579ca739646d696870cbecbb3a169d33)([#8657](https://www.github.com/tauri-apps/tauri/pull/8657)) Add `visibleOnAllWorkspaces` option when creating the window in JS and `Window.setVisibleOnAllWorkspaces` method.\n- [`7f033f6d`](https://www.github.com/tauri-apps/tauri/commit/7f033f6dcd54c69a4193765a5c1584755ba92c61)([#8537](https://www.github.com/tauri-apps/tauri/pull/8537)) Add `Window.startResizeDragging`.\n- [`9eaeb5a8`](https://www.github.com/tauri-apps/tauri/commit/9eaeb5a8cd95ae24b5e66205bdc2763cb7f965ce)([#8622](https://www.github.com/tauri-apps/tauri/pull/8622)) Add `parent` option when creating a window.\n- [`af610232`](https://www.github.com/tauri-apps/tauri/commit/af6102327376884364b2075b468bdf08ee0d02aa)([#8710](https://www.github.com/tauri-apps/tauri/pull/8710)) Added `Window::destroy` to force close a window.\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) Added support to multiwebview via the new `window` and `webview` modules.\n\n### Breaking Changes\n\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) Removed event callback's `windowLabel`.\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) The event target is now an object so you can target either a window or a webview.\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) Moved webview-specific APIs from the `Window` class to the `Webview` class.\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) Renamed `TauriEvent.WINDOW_FILE_DROP` to `TauriEvent.WEBVIEW_FILE_DROP`, `TauriEvent.WINDOW_FILE_DROP_HOVER` to `TauriEvent.WEBVIEW_FILE_DROP_HOVER` and `TauriEvent.WINDOW_FILE_DROP_CANCELLED` to `TauriEvent.WEBVIEW_FILE_DROP_CANCELLED`.\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) Added back the `WebviewWindow` API that exposes functionality of a window that hosts a single webview. The dedicated `Window` and `Webview` types are exposed for multiwebview features.\n- [`af610232`](https://www.github.com/tauri-apps/tauri/commit/af6102327376884364b2075b468bdf08ee0d02aa)([#8710](https://www.github.com/tauri-apps/tauri/pull/8710)) `Window::close` now triggers a close requested event instead of forcing the window to be closed.\n\n## \\[2.0.0-alpha.14]\n\n- [`97e33412`](https://www.github.com/tauri-apps/tauri/commit/97e334129956159bbd60e1c531b6acd3bc6139a6)([#8534](https://www.github.com/tauri-apps/tauri/pull/8534)) `mockIPC` and `mockWindows` no longer crash if `window.__TAURI_INTERNALS__` is undefined.\n\n## \\[2.0.0-alpha.13]\n\n### New Features\n\n- [`428ea652`](https://www.github.com/tauri-apps/tauri/commit/428ea6524c70545be33aac96d7c22b21f25caa4c)([#8370](https://www.github.com/tauri-apps/tauri/pull/8370)) Exposed `Resource` class which should be extended for Rust-backed resources created through `tauri::Manager::resources_table`.\n\n### Bug Fixes\n\n- [`ef21b681`](https://www.github.com/tauri-apps/tauri/commit/ef21b681e237a80592c9118b9c023c1d57231bac)([#8391](https://www.github.com/tauri-apps/tauri/pull/8391)) Fix a regression where typescript could not find types when using `\"moduleResolution\": \"node\"`\n- [`46451aee`](https://www.github.com/tauri-apps/tauri/commit/46451aee1318f63a6cd861a12b63929b38c64eb6)([#8268](https://www.github.com/tauri-apps/tauri/pull/8268)) Add top-level `main`, `module` and `types` fields in `package.json` to be compliant with typescripts's `\"moduleResolution\": \"node\"`\n\n### Breaking Changes\n\n- [`c2ad4d28`](https://www.github.com/tauri-apps/tauri/commit/c2ad4d28c481b2d7ed643458db56210cd44a2e0c)([#8273](https://www.github.com/tauri-apps/tauri/pull/8273)) Changed former `tauri` module from `primitives` to `core`.\n\n## \\[2.0.0-alpha.12]\n\n### New Features\n\n- [`f93148ea`](https://www.github.com/tauri-apps/tauri/commit/f93148eac05a1428e038bd9351a8149b2464ff4c)([#7709](https://www.github.com/tauri-apps/tauri/pull/7709)) Add `tray` and `menu` modules to create and manage tray icons and menus from Javascript.\n\n### Enhancements\n\n- [`b7add750`](https://www.github.com/tauri-apps/tauri/commit/b7add750ef9f32d959de613ab35063ff240281c2)([#8204](https://www.github.com/tauri-apps/tauri/pull/8204)) Added `position` field to the `FileDropEvent` payload.\n\n## \\[2.0.0-alpha.11]\n\n### Bug Fixes\n\n- [`822bf15d`](https://www.github.com/tauri-apps/tauri/commit/822bf15d6b258556b689ca55ac2ac224897e913a)([#8130](https://www.github.com/tauri-apps/tauri/pull/8130)) Fix tslib missing in the distributed api package.\n\n## \\[2.0.0-alpha.10]\n\n### Enhancements\n\n- [`c6c59cf2`](https://www.github.com/tauri-apps/tauri/commit/c6c59cf2373258b626b00a26f4de4331765dd487) Pull changes from Tauri 1.5 release.\n\n### Bug Fixes\n\n- [`287066b2`](https://www.github.com/tauri-apps/tauri/commit/287066b279f503dd09bfd43d5da37d1f471451fb)([#8071](https://www.github.com/tauri-apps/tauri/pull/8071)) No longer crashing in tests without mocks when `clearMocks` is defined in `afterEach` hook.\n\n## \\[2.0.0-alpha.9]\n\n### New Features\n\n- [`c1ec0f15`](https://www.github.com/tauri-apps/tauri/commit/c1ec0f155118527361dd5645d920becbc8afd569)([#7933](https://www.github.com/tauri-apps/tauri/pull/7933)) Added `setAlwaysOnBottom` function on `Window` and the `alwaysOnBottom` option when creating a window.\n- [`fb10b879`](https://www.github.com/tauri-apps/tauri/commit/fb10b87970a43320ef4d14564f45e7579b774eaf)([#8039](https://www.github.com/tauri-apps/tauri/pull/8039)) Add the `app` module back.\n- [`ed32257d`](https://www.github.com/tauri-apps/tauri/commit/ed32257d044f90b5eb15053efd1667125def2d2b)([#7794](https://www.github.com/tauri-apps/tauri/pull/7794)) On Windows, add `Effect.Tabbed`,`Effect.TabbedDark` and `Effect.TabbedLight` effects.\n- [`c9a9246c`](https://www.github.com/tauri-apps/tauri/commit/c9a9246c37bdf190661355c8ee406dac6c427344)([#8007](https://www.github.com/tauri-apps/tauri/pull/8007)) Add the `window` module back.\n- [`c085adda`](https://www.github.com/tauri-apps/tauri/commit/c085addab58ba851398373c6fd13f9cb026d71e8)([#8009](https://www.github.com/tauri-apps/tauri/pull/8009)) Added the `setProgressBar` API on the `Window` class.\n\n### What's Changed\n\n- [`5c0eeb40`](https://www.github.com/tauri-apps/tauri/commit/5c0eeb40c1003583290ff3aebfa02e2b5f5b9c41)([#7638](https://www.github.com/tauri-apps/tauri/pull/7638)) Updated minimum Node.js version to 18.\n\n### Breaking Changes\n\n- [`a63e71f9`](https://www.github.com/","isInternal":false,"tokens":17526,"sizeBytes":50000},{"name":"package.json","path":"packages/api/package.json","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/api/package.json","title":"@tauri-apps/api","category":"anthropic-skill","format":"json","content":"{\n  \"name\": \"@tauri-apps/api\",\n  \"version\": \"2.12.4\",\n  \"description\": \"Tauri API definitions\",\n  \"funding\": {\n    \"type\": \"opencollective\",\n    \"url\": \"https://opencollective.com/tauri\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/tauri-apps/tauri.git\"\n  },\n  \"contributors\": [\n    \"Tauri Programme within The Commons Conservancy\"\n  ],\n  \"license\": \"Apache-2.0 OR MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/tauri-apps/tauri/issues\"\n  },\n  \"homepage\": \"https://github.com/tauri-apps/tauri#readme\",\n  \"type\": \"module\",\n  \"main\": \"./index.cjs\",\n  \"module\": \"./index.js\",\n  \"types\": \"./index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": \"./index.js\",\n      \"require\": \"./index.cjs\",\n      \"types\": \"./index.d.ts\"\n    },\n    \"./*\": {\n      \"import\": \"./*.js\",\n      \"require\": \"./*.cjs\",\n      \"types\": \"./*.d.ts\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"scripts\": {\n    \"build\": \"rollup -c --configPlugin typescript\",\n    \"build:debug\": \"rollup -c --configPlugin typescript\",\n    \"npm-pack\": \"pnpm build && cd ./dist && npm pack\",\n    \"npm-publish\": \"pnpm build && cd ./dist && pnpm publish --access public --loglevel debug --no-git-checks\",\n    \"ts:check\": \"tsc --noEmit\",\n    \"eslint:check\": \"eslint src/**/*.ts\",\n    \"eslint:fix\": \"eslint src/**/*.ts --fix\"\n  },\n  \"devDependencies\": {\n    \"@eslint/js\": \"^10.0.1\",\n    \"@rollup/plugin-terser\": \"1.0.0\",\n    \"@rollup/plugin-typescript\": \"12.3.0\",\n    \"@types/eslint\": \"^9.6.1\",\n    \"@types/node\": \"^24.11.0\",\n    \"eslint\": \"^10.0.2\",\n    \"eslint-config-prettier\": \"10.1.8\",\n    \"eslint-plugin-security\": \"4.2.0\",\n    \"globals\": \"^17.4.0\",\n    \"rollup\": \"4.64.10\",\n    \"tslib\": \"^2.8.1\",\n    \"typescript\": \"^6.0.3\",\n    \"typescript-eslint\": \"^8.58.2\"\n  }\n}\n","frontmatter":{"name":"@tauri-apps/api","version":"2.12.4","description":"Tauri API definitions","funding":{"type":"opencollective","url":"https://opencollective.com/tauri"},"repository":{"type":"git","url":"git+https://github.com/tauri-apps/tauri.git"},"contributors":["Tauri Programme within The Commons Conservancy"],"license":"Apache-2.0 OR MIT","bugs":{"url":"https://github.com/tauri-apps/tauri/issues"},"homepage":"https://github.com/tauri-apps/tauri#readme","type":"module","main":"./index.cjs","module":"./index.js","types":"./index.d.ts","exports":{".":{"import":"./index.js","require":"./index.cjs","types":"./index.d.ts"},"./*":{"import":"./*.js","require":"./*.cjs","types":"./*.d.ts"},"./package.json":"./package.json"},"scripts":{"build":"rollup -c --configPlugin typescript","build:debug":"rollup -c --configPlugin typescript","npm-pack":"pnpm build && cd ./dist && npm pack","npm-publish":"pnpm build && cd ./dist && pnpm publish --access public --loglevel debug --no-git-checks","ts:check":"tsc --noEmit","eslint:check":"eslint src/**/*.ts","eslint:fix":"eslint src/**/*.ts --fix"},"devDependencies":{"@eslint/js":"^10.0.1","@rollup/plugin-terser":"1.0.0","@rollup/plugin-typescript":"12.3.0","@types/eslint":"^9.6.1","@types/node":"^24.11.0","eslint":"^10.0.2","eslint-config-prettier":"10.1.8","eslint-plugin-security":"4.2.0","globals":"^17.4.0","rollup":"4.64.10","tslib":"^2.8.1","typescript":"^6.0.3","typescript-eslint":"^8.58.2"}},"isInternal":false,"tokens":596,"sizeBytes":1760},{"name":"tsconfig.json","path":"packages/api/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/api/tsconfig.json","title":"Api Skill","category":"anthropic-skill","format":"json","content":"{\n  \"compilerOptions\": {\n    \"target\": \"es2019\",\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noUnusedLocals\": true,\n    \"noImplicitAny\": true,\n    \"noEmit\": true,\n    \"lib\": [\"es2022\", \"esnext.disposable\", \"dom\"],\n    // This is used only for the dev tooling config files. You should not use node APIs inside `./src`.\n    // We need to composite multiple tsconfigs but it didn't work because of https://github.com/rollup/plugins/issues/1755\n    \"types\": [\"node\"]\n  }\n}\n","isInternal":false,"tokens":154,"sizeBytes":535},{"name":"package.json","path":"packages/cli/__tests__/fixtures/empty/package.json","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/__tests__/fixtures/empty/package.json","title":"Empty Skill","category":"anthropic-skill","format":"json","content":"# Empty Skill\n\nPath: `packages/cli/__tests__/fixtures/empty/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/__tests__/fixtures/empty/package.json)","tokens":300,"sizeBytes":211},{"name":"CHANGELOG.md","path":"packages/cli/CHANGELOG.md","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/CHANGELOG.md","title":"Cli Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog\n\n## [2.12.4]\n\n### Bug Fixes\n\n- [`136a28eaa`](https://www.github.com/tauri-apps/tauri/commit/136a28eaa879e8aa706f9b2e05a050c46dcc1f4f) ([#16305](https://www.github.com/tauri-apps/tauri/pull/16305) by [@Chaosnico9000](https://www.github.com/tauri-apps/tauri/../../Chaosnico9000)) Skip the `--target` validation when `rustup target list` fails, e.g. when `rustup` is on `PATH` but has no toolchain installed, instead of rejecting every target as missing.\n- [`52081e04a`](https://www.github.com/tauri-apps/tauri/commit/52081e04a0309620d3eb8121e5ca9b66312f9857) ([#16333](https://www.github.com/tauri-apps/tauri/pull/16333) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Rename the misspelled `choowHowToInstall` NSIS language string to `chooseHowToInstall`. A custom language file in `bundle.windows.nsis.customLanguageFiles` that only defines the old name keeps working for now, but users should migrate to the new name.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.12.4`\n- [`4a6f51251`](https://www.github.com/tauri-apps/tauri/commit/4a6f512519286ff9862b2e86c67ef39f4562aee5) ([#16317](https://www.github.com/tauri-apps/tauri/pull/16317) by [@lazerg](https://www.github.com/tauri-apps/tauri/../../lazerg)) Updated `zip` to v9 to fix RUSTSEC-2026-0367, RUSTSEC-2026-0368 and RUSTSEC-2026-0369.\n\n## [2.12.3]\n\n### Bug Fixes\n\n- [`c95be4615`](https://www.github.com/tauri-apps/tauri/commit/c95be4615a432b1d12409d3684c960e8aa718ada) ([#16287](https://www.github.com/tauri-apps/tauri/pull/16287)) Fix `tauri ios xcode-script` failing to find the Tauri project when Xcode inherits package manager environment variables from `tauri ios dev --open`, or when pnpm runs the CLI directly from the `gen/apple` folder.\n- [`d62e5d9c0`](https://www.github.com/tauri-apps/tauri/commit/d62e5d9c0878b6fb327543cc9be50aa1696ee23c) ([#16184](https://www.github.com/tauri-apps/tauri/pull/16184)) Fix NSIS installer leaving `uninstall.exe` and the installation directory behind when uninstalling an existing installation from the installer.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.12.3`\n- [`5a2953e55`](https://www.github.com/tauri-apps/tauri/commit/5a2953e555b4444bed68bd5324ea13ad85a6c06e) ([#16237](https://www.github.com/tauri-apps/tauri/pull/16237)) Updated NSIS to 3.13\n\n## [2.12.2]\n\n### Bug Fixes\n\n- [`c48e1ca89`](https://www.github.com/tauri-apps/tauri/commit/c48e1ca891a3b82770b6b03f87eba740344cf2f1) ([#16246](https://www.github.com/tauri-apps/tauri/pull/16246)) On iOS, mark the Swift `@_cdecl` entry points that Rust links against as `public` (in the iOS API and in the plugin templates), so release builds made with Xcode 27 keep them global and link.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.12.2`\n- [`fd319dd43`](https://www.github.com/tauri-apps/tauri/commit/fd319dd432e36748483ae93e6cdea1c44a66fe79) Update `base64` to 0.23.\n\n## [2.12.1]\n\n### Enhancements\n\n- [`64bfdd909`](https://www.github.com/tauri-apps/tauri/commit/64bfdd909c5c3f0828371e4995b69ad5ed685126) ([#16165](https://www.github.com/tauri-apps/tauri/pull/16165) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Ignore `src-tauri` in `tauri plugin init` example template\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.12.1`\n\n## [2.12.0]\n\n### New Features\n\n- [`f6c1eb253`](https://www.github.com/tauri-apps/tauri/commit/f6c1eb2533a0445e081c334931d67fee3e354c6f) ([#15401](https://www.github.com/tauri-apps/tauri/pull/15401)) 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`.\n- [`f76b1d3ae`](https://www.github.com/tauri-apps/tauri/commit/f76b1d3ae70d0ba0f0eba80b94b867593aa5ca8b) ([#15644](https://www.github.com/tauri-apps/tauri/pull/15644)) 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).\n- [`af465eae1`](https://www.github.com/tauri-apps/tauri/commit/af465eae1ad99d7b16b8fdbf9aa96bf76d6b9a76) ([#15619](https://www.github.com/tauri-apps/tauri/pull/15619)) 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.\n- [`0646cc162`](https://www.github.com/tauri-apps/tauri/commit/0646cc1623608dfdaec8d1adbc08d0159b9c2369) ([#15620](https://www.github.com/tauri-apps/tauri/pull/15620)) 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.\n- [`f6c1eb253`](https://www.github.com/tauri-apps/tauri/commit/f6c1eb2533a0445e081c334931d67fee3e354c6f) ([#15401](https://www.github.com/tauri-apps/tauri/pull/15401)) Added `build.windows.staticVCRuntime` to control MSVC static runtime linking. The `STATIC_VCRUNTIME` environment variable is now deprecated and emits a migration warning when used.\n- [`f45ec0dcf`](https://www.github.com/tauri-apps/tauri/commit/f45ec0dcf83c139c8fdde5e61923a0e82836f756) Record the app version in the trusted comment of updater signatures, so a signed artifact is bound to the version it was released as.\n    \n    An update endpoint response is not signed, and the signature only covers the downloaded artifact, so the announced `version` on its own does not prove which release the `url` and `signature` point at. minisign covers the trusted comment with its global signature, which lets the updater plugin compare the two and reject a response that pairs a version number with a different release. Enable `requireSignedVersion` in the updater plugin configuration to enforce this.\n    \n    `tauri build` fills the version in automatically, and `tauri plugin add updater` now enables `requireSignedVersion` for the project it is adding the plugin to. `tauri signer sign` gains an `--app-version` flag for signing updater artifacts by hand, and warns when it is omitted.\n\n### Enhancements\n\n- [`e19121427`](https://www.github.com/tauri-apps/tauri/commit/e19121427332c8a14165999251cce415707a62fc) ([#15993](https://www.github.com/tauri-apps/tauri/pull/15993)) Don't always rewrite `Cargo.toml` file from CRLF line endings to LF\n- [`aebf38c84`](https://www.github.com/tauri-apps/tauri/commit/aebf38c845b57bc5653eca677e2e2e044528ea73) ([#15694](https://www.github.com/tauri-apps/tauri/pull/15694)) 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.\n    \n    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.\n- [`d89d8fa62`](https://www.github.com/tauri-apps/tauri/commit/d89d8fa62302bd3553b66fd47ecfa046b2fc84ef) ([#15780](https://www.github.com/tauri-apps/tauri/pull/15780)) 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.\n- [`c3d21bd60`](https://www.github.com/tauri-apps/tauri/commit/c3d21bd60c3355b284b23dee1a181c3423231182) ([#15730](https://www.github.com/tauri-apps/tauri/pull/15730)) Use `Theme.Material3.DayNight.NoActionBar` instead of `Theme.MaterialComponents.DayNight.NoActionBar` when running `tauri android init`\n- [`f654f470c`](https://www.github.com/tauri-apps/tauri/commit/f654f470c122e925e425424cea733f13d3306412) ([#15862](https://www.github.com/tauri-apps/tauri/pull/15862)) Update template to use `targetSdk = 37`\n- [`cdaf7eab6`](https://www.github.com/tauri-apps/tauri/commit/cdaf7eab6c5fccc2a4812af18f58fd3530f3eedd) ([#15765](https://www.github.com/tauri-apps/tauri/pull/15765)) Clarify that the `tauri init` frontend commands run before `tauri dev` and `tauri build`, and can be left empty when they are not needed.\n- [`d0f38df06`](https://www.github.com/tauri-apps/tauri/commit/d0f38df06a2f4406b388a336694aa18b3c6bf1a9) ([#15997](https://www.github.com/tauri-apps/tauri/pull/15997)) 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.\n- [`ca160ad48`](https://www.github.com/tauri-apps/tauri/commit/ca160ad4808f477380cb0865a08a8ae781e37f85) ([#15895](https://www.github.com/tauri-apps/tauri/pull/15895)) `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.\n- [`010f06bae`](https://www.github.com/tauri-apps/tauri/commit/010f06baecd499c41321da3130e20147c50025f7) ([#15737](https://www.github.com/tauri-apps/tauri/pull/15737)) Document the `TAURI_SIGNING_PRIVATE_KEY_PATH` environment variable and clarify that `TAURI_SIGNING_PRIVATE_KEY` accepts a string or a path for the `build` and `bundle` command but must be the literal key string for the `signer sign` command, both in `ENVIRONMENT_VARIABLES.md` and in the `signer generate` command output.\n\n### Bug Fixes\n\n- [`9bad06b9f`](https://www.github.com/tauri-apps/tauri/commit/9bad06b9f61996faed1c33709f1b8dd196602793) ([#16096](https://www.github.com/tauri-apps/tauri/pull/16096)) `tauri capability new` and `tauri permission new` now accept an `--out` path to a file that does not exist yet, trim comma-separated prompt answers (so `fs:default, core:default` works), report invalid permissions as errors instead of panicking, and reject identifiers that are not valid file names (such as `../../x`), which previously let them write outside of the capabilities or permissions directory.\n- [`9642b3087`](https://www.github.com/tauri-apps/tauri/commit/9642b30879eda8bde35fa3c7606718ca0d364f2e) ([#16117](https://www.github.com/tauri-apps/tauri/pull/16117)) `tauri add` now honors `--tag`, `--rev` and `--branch` for official plugins instead of silently installing the registry version, and rejects passing more than one of them. With npm, the JS package requirement is now `~<version>` like the other package managers, instead of `>=<version>` which allowed a later major version.\n- [`cada1cd4f`](https://www.github.com/tauri-apps/tauri/commit/cada1cd4f3e59efb48b2c7a176d240846f55ad0d) ([#16105](https://www.github.com/tauri-apps/tauri/pull/16105)) Fix Android dev server port forwarding: `adb reverse --list` is now matched on the exact port (so `tcp:80` no longer matches `tcp:8080`), stale forwards on other connected devices are actually removed, and the forward verification gives up with a warning after a few attempts instead of retrying forever.\n- [`d5bd04658`](https://www.github.com/tauri-apps/tauri/commit/d5bd046583d066024ba073840007f4476e52a5fb) ([#16111](https://www.github.com/tauri-apps/tauri/pull/16111)) Fix `bundle > android > debugApplicationIdSuffix` being written to the `signingConfigs` debug block instead of the `buildTypes` one, and keep the existing content of single-line debug blocks such as `getByName(\"debug\") { isDebuggable = true }` instead of dropping it.\n- [`ba17da2e5`](https://www.github.com/tauri-apps/tauri/commit/ba17da2e55184fe74990db64496b0d02e79cce09) ([#16101](https://www.github.com/tauri-apps/tauri/pull/16101)) `tauri icon` now generates 72x72 Android `hdpi` launcher icons (previously 49x49) and writes the Android launcher background color in `#RRGGBB`/`#AARRGGBB` notation instead of the raw CSS color string, which Android rejected or misread. Invalid SVG sources and `--png 0` now return an error instead of panicking.\n- [`272842a57`](https://www.github.com/tauri-apps/tauri/commit/272842a571a56401649db7aaa93ea400561a1661) ([#16128](https://www.github.com/tauri-apps/tauri/pull/16128)) Fix error messages that printed placeholders such as `{t}` literally instead of the value, e.g. \"Could not find an Android device matching {t}\".\n- [`10ad4e54e`](https://www.github.com/tauri-apps/tauri/commit/10ad4e54e2f1272ee7bb08418dc386058532a5e8) ([#16127](https://www.github.com/tauri-apps/tauri/pull/16127)) The Bash completions generated by `tauri completions` no longer replace the completions of `cargo`, `npm`, `pnpm`, `yarn`, `bun` and `deno`. They now define a `_tauri_cli` function registered only for the `tauri` and `cargo-tauri` commands. Generating completions when running the `cargo-tauri` binary directly no longer panics.\n- [`0e4ded72a`](https://www.github.com/tauri-apps/tauri/commit/0e4ded72a6a617fa16dff196e7fbd3716997e66f) ([#16107](https://www.github.com/tauri-apps/tauri/pull/16107)) Fix binaries in `src/bin` and `src/main.rs` being left out of bundles when `Cargo.toml` declares a `[[bin]]` target without a `path`.\n- [`8e0fa2e2f`](https://www.github.com/tauri-apps/tauri/commit/8e0fa2e2f8859cdd38dc07cfc24a1b012ef29fc3) ([#16097](https://www.github.com/tauri-apps/tauri/pull/16097)) Fix the bundler using the host target triple when `--target` is not passed but `build.target` is set in `.cargo/config.toml`. The CLI now also accepts `build.target` as an array and honors the `CARGO_BUILD_TARGET` environment variable.\n- [`7bb0a5421`](https://www.github.com/tauri-apps/tauri/commit/7bb0a542179bd4ccb17e0baf0dca2c3b2f3f7721) ([#16120](https://www.github.com/tauri-apps/tauri/pull/16120)) Fix the Cargo.toml feature rewrite corrupting a string dependency version that has a trailing comment or uses single quotes (e.g. `tauri = \"2\" # pin` became `\"2#pin\"`). The version value is now kept as-is and the comment is preserved.\n- [`e4630258e`](https://www.github.com/tauri-apps/tauri/commit/e4630258e3184fceb60e6c548a7ec61fb81f885d) ([#16114](https://www.github.com/tauri-apps/tauri/pull/16114)) Fix the CLI's working directory being left changed to the config directory when the Tauri configuration fails to parse, for example when `tauri dev` reloads an invalid config.\n- [`1b91b7b7b`](https://www.github.com/tauri-apps/tauri/commit/1b91b7b7b3dad8b77bcaeadc6653250e04f0cb7b) ([#16102](https://www.github.com/tauri-apps/tauri/pull/16102)) `tauri info` now logs a warning when it cannot check the latest crate version on crates.io instead of silently ignoring the failure, and no longer panics if crates.io returns a version it cannot parse.\n- [`1b91b7b7b`](https://www.github.com/tauri-apps/tauri/commit/1b91b7b7b3dad8b77bcaeadc6653250e04f0cb7b) ([#16102](https://www.github.com/tauri-apps/tauri/pull/16102)) `tauri info` now lists every locked version of a Rust crate when `Cargo.lock` contains more than one, and no longer panics when the crates.io response cannot be parsed.\n- [`6507d0b8b`](https://www.github.com/tauri-apps/tauri/commit/6507d0b8b360a41615139619eb39680e60df7732) ([#16124](https://www.github.com/tauri-apps/tauri/pull/16124)) `tauri dev` now reports an error instead of panicking when the `beforeDevCommand` cannot be spawned or the `devUrl` host cannot be resolved, and no longer risks stopping the `beforeDevCommand` process tree twice when Ctrl+C and the app exit race.\n- [`c1ea96ad6`](https://www.github.com/tauri-apps/tauri/commit/c1ea96ad6b433524c5cb570f55bbbe1fd72cca1e) ([#16110](https://www.github.com/tauri-apps/tauri/pull/16110)) Fix `tauri dev` not reacting to the app exiting when a process spawned by the app kept its stderr open, and stop keeping the whole app stderr output in memory. Also fix command output capture that could return empty output when the command finished before its output was read.\n- [`d61fbdc3e`](https://www.github.com/tauri-apps/tauri/commit/d61fbdc3e825749261c76b7a37454dd3c4483619) ([#16109](https://www.github.com/tauri-apps/tauri/pull/16109)) Fix Cargo.toml feature injection and the v1 migration only updating either `[dependencies]` or `[target.'cfg(..)'.dependencies]`, whichever came first in the file. Both the main and all target-specific dependency tables are now updated.\n- [`5d995ed35`](https://www.github.com/tauri-apps/tauri/commit/5d995ed35b029cecd780fdbe614dc6023a89b81b) ([#16017](https://www.github.com/tauri-apps/tauri/pull/16017)) 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.\n- [`6d943c420`](https://www.github.com/tauri-apps/tauri/commit/6d943c420454e75636af968b435efb9167818d22) ([#16065](https://www.github.com/tauri-apps/tauri/pull/16065)) 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.\n- [`b8be924d3`](https://www.github.com/tauri-apps/tauri/commit/b8be924d39c87eaecb9ba6f893e1a7be94d7bd68) ([#16106](https://www.github.com/tauri-apps/tauri/pull/16106)) `tauri init` no longer panics when the app name, window title, frontend dist, dev URL or before dev/build commands contain quotes or backslashes (e.g. `-D ..\\dist` or `vite --host \"0.0.0.0\"`); the values are now JSON-escaped in the generated `tauri.conf.json`.\n- [`b9b32a259`](https://www.github.com/tauri-apps/tauri/commit/b9b32a259fb00524808e84b4da0f7904a51be06c) ([#16108](https://www.github.com/tauri-apps/tauri/pull/16108)) Fix `PRODUCT_BUNDLE_IDENTIFIER` in the iOS Xcode project being set to the raw `identifier` (with underscores) instead of the sanitized iOS bundle identifier used by the Xcode project template and the export options provisioning profiles.\n- [`4f51a2f06`](https://www.github.com/tauri-apps/tauri/commit/4f51a2f06248f231fc6a9160c95c026634356ba5) ([#16115](https://www.github.com/tauri-apps/tauri/pull/16115)) Fix `tauri ios run --features` being ignored, and `tauri ios dev --release` still building the app in debug mode.\n- [`59e077457`](https://www.github.com/tauri-apps/tauri/commit/59e077457ac87ffd43db4c557ca2987d2fa6d37e) ([#16075](https://www.github.com/tauri-apps/tauri/pull/16075)) `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.\n- [`fe1aa30d2`](https://www.github.com/tauri-apps/tauri/commit/fe1aa30d2b1743325cdd882fe36604daf62c2440) ([#16113](https://www.github.com/tauri-apps/tauri/pull/16113)) Quote the Tauri CLI path and the Xcode variables in the iOS \"Build Rust Code\" build phase, fixing builds when Xcode or the CLI is installed in a path containing spaces (requires regenerating the Xcode project with `tauri ios init`). Also fixes `CXXFLAGS` not being set for iOS targets in `tauri ios xcode-script`.\n- [`aa0a801c3`](https://www.github.com/tauri-apps/tauri/commit/aa0a801c3acb6cc1f9d0afbae6cbfa144a5ea7fb) ([#16116](https://www.github.com/tauri-apps/tauri/pull/16116)) Fix Java version detection for the Android Java/Gradle compatibility warning when `JAVA_HOME` is not set: the `java` binary on `PATH` is now resolved through symlinks (e.g. Linux alternatives and Homebrew), and on macOS the `/usr/bin/java` stub falls back to `/usr/libexec/java_home`.\n- [`1aafaa4e3`](https://www.github.com/tauri-apps/tauri/commit/1aafaa4e3cafc779d4d825c95c3604a7da661092) ([#16103](https://www.github.com/tauri-apps/tauri/pull/16103)) When rewriting a localhost `devUrl` to the network address for mobile development, the query string and fragment are now preserved, and the IPv6 loopback (`[::1]`) and unspecified (`[::]`) addresses are now treated as localhost.\n- [`022932dd5`](https://www.github.com/tauri-apps/tauri/commit/022932dd596e38d27a0bafebf26ea9df2ec2cff3) ([#16123](https://www.github.com/tauri-apps/tauri/pull/16123)) Fix iOS Xcode project synchronization corrupting `project.pbxproj` when several build settings were added to the same configuration, when an added setting was changed again, or when a multi-line setting was overwritten. Product names, signing identities and other values written to the project are now properly escaped.\n- [`a4099d819`](https://www.github.com/tauri-apps/tauri/commit/a4099d819bdc33385adcc11b7830fc5fdda410d2) ([#16098](https://www.github.com/tauri-apps/tauri/pull/16098)) `tauri permission add` (and `tauri add`) no longer overwrites an existing `capabilities/desktop.json` or `capabilities/mobile.json` when adding a desktop-only or mobile-only plugin permission and no platform-restricted capability exists; the new capability now gets an unused file name and identifier (e.g. `desktop-2.json`). An explicitly passed capability is now used even if its platforms do not match the plugin, with a warning, instead of being silently ignored.\n- [`e49d1b474`](https://www.github.com/tauri-apps/tauri/commit/e49d1b47429acaf34de9e9edc251f71163990783) ([#16100](https://www.github.com/tauri-apps/tauri/pull/16100)) `tauri permission rm <plugin>:*` and `tauri remove` no longer strip unrelated permissions whose identifier merely contains the plugin name (e.g. `tauri remove os` removing `positioner:default`). Local permission files are now looked up in the Tauri directory, like `tauri permission new`, and an unparsable permission file is skipped with a warning instead of aborting the command.\n- [`efa82f5ed`](https://www.github.com/tauri-apps/tauri/commit/efa82f5ed989f84b076b6ee6d2f0e1e6dd0aadbf) ([#16125](https://www.github.com/tauri-apps/tauri/pull/16125)) Fix plugin scaffolding for names like `my-plugin`: the default Android package ID now uses a snake_case segment (`com.plugin.my_plugin`) and user-provided IDs are validated, iOS Xcode folders use the same kebab-case name as the project file, and the `plugin ios init`/`plugin android init` code snippets now match the generated bindings and the `setup(|app, api| ..)` API. `plugin init` into a non-empty directory no longer creates a `permissions` folder after skipping the template.\n- [`db6804d80`](https://www.github.com/tauri-apps/tauri/commit/db6804d80223aabc6b338e94d192a5ad6dd6220b) ([#16126](https://www.github.com/tauri-apps/tauri/pull/16126)) Fix `--release` being added to the cargo command when a custom profile is passed as `--profile=<name>`, which made cargo reject the build.\n- [`8310461f6`](https://www.github.com/tauri-apps/tauri/commit/8310461f6453ce478d2092a4744d42e3468e0bb0) ([#16104](https://www.github.com/tauri-apps/tauri/pull/16104)) Fix `tauri init` and `tauri info` detecting SvelteKit projects as plain Svelte; `tauri init` suggested the wrong dev server URL and frontend dist directory.\n- [`eaf96690d`](https://www.github.com/tauri-apps/tauri/commit/eaf96690db2439445fe16da24031bf3294ada605) ([#15804](https://www.github.com/tauri-apps/tauri/pull/15804)) On Linux, do not bundle xdg-open and xdg-utils in the AppImage anymore. This rarely worked and usually requires host system support anyway.\n- [`2b7c1f8b6`](https://www.github.com/tauri-apps/tauri/commit/2b7c1f8b63619c6f4c16380d0c4a3358e694fb11) ([#16003](https://www.github.com/tauri-apps/tauri/pull/16003)) Fix `tauri add` / `tauri remove` installing npm plugin packages into `src-tauri` instead of the frontend directory.\n- [`c735ba32b`](https://www.github.com/tauri-apps/tauri/commit/c735ba32b36d505cbf9eabfb4a33005ca31edbdd) ([#15241](https://www.github.com/tauri-apps/tauri/pull/15241)) Fix broken child window icons in Task Manager, you'll need to re-run `tauri icon` to generate the fixed icons\n- [`adf5acf6f`](https://www.github.com/tauri-apps/tauri/commit/adf5acf6fbc0ef26de6b1eb30c47bb701c256954) ([#15651](https://www.github.com/tauri-apps/tauri/pull/15651)) Fix MSI bundling when an external binary filename starts with a digit.\n- [`11012a13f`](https://www.github.com/tauri-apps/tauri/commit/11012a13f55ab55ec5ed12ca3ac95338ae1731c3) ([#15681](https://www.github.com/tauri-apps/tauri/pull/15681)) Fix WiX bundler doesn't respect the resource's target file name.\n- [`59e077457`](https://www.github.com/tauri-apps/tauri/commit/59e077457ac87ffd43db4c557ca2987d2fa6d37e) ([#16075](https://www.github.com/tauri-apps/tauri/pull/16075)) 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''\".\n- [`6a298ee12`](https://www.github.com/tauri-apps/tauri/commit/6a298ee12e7ffde115175d43ac63a2fdcba51c3e) ([#15713](https://www.github.com/tauri-apps/tauri/pull/15713)) Fix `tauri info` reporting the Rust-only plugins (`localhost`, `persisted-scope` and `single-instance`) as missing their `@tauri-apps/plugin-*` JavaScript package, which is never published for those plugins.\n- [`33b3ea582`](https://www.github.com/tauri-apps/tauri/commit/33b3ea582340ce8fe799929472595789319d0826) The bundled `vswhere.exe` is now written to a new, uniquely named temporary file on each use and removed afterwards, instead of running any existing `%TEMP%\\vswhere.exe`.\n\n### What's Changed\n\n- [`2e6e33c85`](https://www.github.com/tauri-apps/tauri/commit/2e6e33c8501c66c9a49aad861048d39345cfb26f) ([#16029](https://www.github.com/tauri-apps/tauri/pull/16029)) Moved to edition 2024 for the `tauri init`/`tauri plugin init` templates\n- [`ce3f13b91`](https://www.github.com/tauri-apps/tauri/commit/ce3f13b91a75cb723f229f56a3e82eb5f2d3f644) ([#15887](https://www.github.com/tauri-apps/tauri/pull/15887)) Lock unstable tauri crates to minor versions.\n\n### Security fixes\n\n- [`98918df64`](https://www.github.com/tauri-apps/tauri/commit/98918df6416f7ac6849962141a41bbd210131067) ([#16112](https://www.github.com/tauri-apps/tauri/pull/16112)) `tauri add` no longer installs the npm package `tauri-plugin-<name>-api` for community plugins. npm and crates.io are separate namespaces, so that package may be unowned or squatted; the CLI now asks you to install the plugin's JavaScript bindings yourself. `tauri remove` only removes the plugin's JS package when `package.json` lists it, and a failure there no longer skips the capability cleanup.\n- [`cc9d522c6`](https://www.github.com/tauri-apps/tauri/commit/cc9d522c64329b8dab84ecbd38c76928ad31cb43) ([#16095](https://www.github.com/tauri-apps/tauri/pull/16095)) The built-in dev server now rejects requests whose `Host` header is not the address it serves on, which blocks DNS rebinding attacks, and rejects cross-site `Origin`s on its reload WebSocket. The `index.html` fallback now goes through the same path scope check as other files, and the reload WebSocket no longer closes when the client sends a message.\n- [`dacddfe9f`](https://www.github.com/tauri-apps/tauri/commit/dacddfe9ff1f28b53e2c0324498e3a666a8041fa) ([#16094](https://www.github.com/tauri-apps/tauri/pull/16094)) The CLI no longer writes its default ignore rules to shared files in the system temporary directory (`.gitignore` and `.tauri/.gitignore`) and reads them back, which let other local users change which files the project lookup and the dev watcher skip. The rules are now applied in memory. `TAURI_CLI_WATCHER_IGNORE_FILENAME` is now consistently treated as an ignore file name looked up in each directory, as documented.\n- [`fdd56da19`](https://www.github.com/tauri-apps/tauri/commit/fdd56da19e40962cb2db613a0b87a38a21f571e4) ([#16099](https://www.github.com/tauri-apps/tauri/pull/16099)) Secure the local server that `tauri android|ios dev|build` uses to pass options to the Android Studio and Xcode build scripts: requests now need a random per-session token, WebSocket connections from web pages (with an `Origin` header) are rejected, and variables whose name contains `TOKEN`, `PASSWORD`, `SECRET` or `CREDENTIAL` are no longer sent. The connection details are now written with owner-only permissions to `gen/<android|apple>/.tauri/cli-options-server.json` (instead of the shared temp directory) and removed when the command exits. The IDE build scripts now report a clear error when the Tauri CLI command is not running.\n- [`ff7cd8d86`](https://www.github.com/tauri-apps/tauri/commit/ff7cd8d863061aaa1c5932062b071db6b17af36e) ([#16118](https://www.github.com/tauri-apps/tauri/pull/16118)) `tauri signer generate --write-keys` now creates the private key with owner-only permissions (0600) on Unix and refuses to overwrite either the private or the public key file without `--force`. Updater signing now rejects file names containing tabs or newlines (which would corrupt the signature's trusted comment) and assumes an empty password instead of prompting when no password is given and stdin is not a terminal. `tauri signer` reports errors instead of panicking.\n- [`51aa20388`](https://www.github.com/tauri-apps/tauri/commit/51aa20388e01c9d03f33992647b14dcf7800c540) ([#16119](https://www.github.com/tauri-apps/tauri/pull/16119)) On Windows, package manager commands (`npm`, `pnpm`, `yarn`, `bun`, `deno`, `node`) are now executed directly instead of through `cmd /c`, so arguments such as `@tauri-apps/plugin-fs@>=2` are escaped properly and can no longer be interpreted as shell redirections or command separators.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.12.0`\n- [`e2e585ad1`](https://www.github.com/tauri-apps/tauri/commit/e2e585ad1196c9572f86ef39aae01ef4c3b1a762) ([#15828](https://www.github.com/tauri-apps/tauri/pull/15828)) On Android, fix missing `consumer-rules.pro` file in the template.\n    \n    **IMPORTANT**: For plugin authors, update your `build.gradle.kts` file to remove the\n    \n    ```kotlin\n        buildTypes {\n            release {\n                isMinifyEnabled = false\n                proguardFiles(\n                    getDefaultProguardFile(\"proguard-android-optimize.txt\"),\n                    \"proguard-rules.pro\"\n                )\n            }\n        }\n    ```\n    \n    section and rename your `proguard-rules.pro` to `consumer-rules.pro` to match the `consumerProguardFiles(\"consumer-rules.pro\")` in the template.\n- [`e2e585ad1`](https://www.github.com/tauri-apps/tauri/commit/e2e585ad1196c9572f86ef39aae01ef4c3b1a762) ([#15828](https://www.github.com/tauri-apps/tauri/pull/15828)) 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.\n- [`9e9a54dea`](https://www.github.com/tauri-apps/tauri/commit/9e9a54dea26ae66de63800cabbccf980902a1cd3) ([#15890](https://www.github.com/tauri-apps/tauri/pull/15890)) 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`.\n- [`b6660a041`](https://www.github.com/tauri-apps/tauri/commit/b6660a041db44729893dae7991a9be61cf8c2ed5) ([#15954](https://www.github.com/tauri-apps/tauri/pull/15954)) Update typescript to v7 in `tauri plugin init` template. Also fixes the default `rootDir` in the template `tsconfig.json`\n- [`9e9a54dea`](https://www.github.com/tauri-apps/tauri/commit/9e9a54dea26ae66de63800cabbccf980902a1cd3) ([#15890](https://www.github.com/tauri-apps/tauri/pull/15890)) Update cargo-mobile2 and change the default minimum iOS version to 15.0 to support Xcode 27.\n\n## \\[2.11.4]\n\n### Bug Fixes\n\n- [`67ffa192a`](https://www.github.com/tauri-apps/tauri/commit/67ffa192a499131e7e750f164fe61a40ca0fb2e7) ([#15596](https://www.github.com/tauri-apps/tauri/pull/15596) by [@FabianLars](https://www.github.com/tauri-apps/tauri/../../FabianLars)) Fixed an issue in the AppImage bundler that caused the `/.desktop` and `.DirIcon` files to be absolute symlinks instead of relative symlinks which caused problems with AppImage installers like `AppManager`.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.11.4`\n\n## \\[2.11.3]\n\n### Bug Fixes\n\n- [`50b0237ed`](https://www.github.com/tauri-apps/tauri/commit/50b0237edb9ed683979b7954975b98a4d22a9f70) ([#15549](https://www.github.com/tauri-apps/tauri/pull/15549) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Escape special characters in `productName` when generating Android `strings.xml`\n- [`728c8d4a5`](https://www.github.com/tauri-apps/tauri/commit/728c8d4a5d9e3badf4683eb2e493d950d27d6b66) ([#15473](https://www.github.com/tauri-apps/tauri/pull/15473) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Skip building bundles when using `tauri android run`\n- [`be0cb0d43`](https://www.github.com/tauri-apps/tauri/commit/be0cb0d4378ddf26bc33066b3750f2639ade15f5) ([#15344](https://www.github.com/tauri-apps/tauri/pull/15344) by [@raglady](https://www.github.com/tauri-apps/tauri/../../raglady)) Fix NDK_HOME environment variable not honored when set\n- [`ed8fd411f`](https://www.github.com/tauri-apps/tauri/commit/ed8fd411fe10469da33f63ed5bd9d7ae19e77d84) ([#15552](https://www.github.com/tauri-apps/tauri/pull/15552) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Make `ureq_proto` show trace level logs only on `-vvv` instead of `-vv`\n- [`fca4a31f9`](https://www.github.com/tauri-apps/tauri/commit/fca4a31f94f8ba709d1b28e073e69867b8704e6e) ([#15454](https://www.github.com/tauri-apps/tauri/pull/15454) by [@fallintoplace](https://www.github.com/tauri-apps/tauri/../../fallintoplace)) Fix `tauri migrate` generating invalid namespace imports for aliased pluginified imports from `@tauri-apps/api`.\n\n  Inputs like `import { cli as superCli } from \"@tauri-apps/api\"` now migrate to `import * as superCli from \"@tauri-apps/plugin-cli\"` instead of producing invalid ESM syntax. The migration tests also reparse migrated JS, Svelte, and Vue output so syntax regressions are caught directly.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.11.3`\n\n## \\[2.11.2]\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.11.2`\n\n## \\[2.11.1]\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.11.1`\n\n## \\[2.11.0]\n\n### New Features\n\n- [`926a57bb0`](https://www.github.com/tauri-apps/tauri/commit/926a57bb0851e45d47ad1ee68fc96a9c25754c7c) ([#15201](https://www.github.com/tauri-apps/tauri/pull/15201)) Added uninstaller icon and uninstaller header image support for NSIS installer.\n\n  Notes:\n\n  - For `tauri-bundler` lib users, the `NsisSettings` now has 2 new fields `uninstaller_icon` and `uninstaller_header_image` which can be a breaking change\n  - When bundling with NSIS, users can add `uninstallerIcon` and `uninstallerHeaderImage` under `bundle > windows > nsis` to configure them.\n- [`764b9139a`](https://www.github.com/tauri-apps/tauri/commit/764b9139a32de149d8a914a6b5ec6cd1937c64eb) ([#14313](https://www.github.com/tauri-apps/tauri/pull/14313)) Prompt to restart the Android emulator if it is not connected to adb.\n- [`5dc2cee60`](https://www.github.com/tauri-apps/tauri/commit/5dc2cee60370665af88c185684432e425b1c987d) ([#14793](https://www.github.com/tauri-apps/tauri/pull/14793)) Added support for `minimumWebview2Version` option support for the MSI (Wix) installer, the old `bundle > windows > nsis > minimumWebview2Version` is now deprecated in favor of `bundle > windows > minimumWebview2Version`\n\n  Notes:\n\n  - For anyone relying on the `WVRTINSTALLED` `Property` tag in `main.wxs`, it is now renamed to `INSTALLED_WEBVIEW2_VERSION`\n  - For `tauri-bundler` lib users, the `WindowsSettings` now has a new field `minimum_webview2_version` which can be a breaking change\n\n### Enhancements\n\n- [`be0e4bd2d`](https://www.github.com/tauri-apps/tauri/commit/be0e4bd2da02eb6cc75a8dc7c81663277e64c590) ([#15218](https://www.github.com/tauri-apps/tauri/pull/15218)) Added Vietnamese translations for the NSIS installer\n- [`8718d0816`](https://www.github.com/tauri-apps/tauri/commit/8718d08163f074dfc53387ebd1d823f9c28280ee) ([#15033](https://www.github.com/tauri-apps/tauri/pull/15033)) Show the context before prompting for updater signing key password\n\n### Bug Fixes\n\n- [`fcb702ec4`](https://www.github.com/tauri-apps/tauri/commit/fcb702ec4d924e81943efaeebea8d3edb7289c33) ([#14954](https://www.github.com/tauri-apps/tauri/pull/14954)) Fix `build --bundles` to allow `nsis` arg in linux+macOS\n- [`80c1425af`](https://www.github.com/tauri-apps/tauri/commit/80c1425af86058b1fc9489a30f778b6288d79b6b) ([#14921](https://www.github.com/tauri-apps/tauri/pull/14921)) Fix iOS build failure when `Metal Toolchain` is installed by using explicit `$(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain` path instead of `$(TOOLCHAIN_DIR)` for Swift library search paths.\n\n### What's Changed\n\n- [`9979cde1c`](https://www.github.com/tauri-apps/tauri/commit/9979cde1c5534dafb1a07cc4dc2bc280d15d2f66) ([#15175](https://www.github.com/tauri-apps/tauri/pull/15175)) Update NSIS installer Italian translations\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.11.0`\n\n## \\[2.10.1]\n\n### Bug Fixes\n\n- [`35c35f27a`](https://www.github.com/tauri-apps/tauri/commit/35c35f27aedc430b602ec74059b271128c15ad36) ([#14931](https://www.github.com/tauri-apps/tauri/pull/14931) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Support comma-separated list of Cargo features on all commands.\n- [`0d1cb83ba`](https://www.github.com/tauri-apps/tauri/commit/0d1cb83bab2aa482c7d73116893fd7ff6aa56283) ([#14932](https://www.github.com/tauri-apps/tauri/pull/14932) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Fix missing Cargo args when running mobile dev and build commands.\n- [`33754ae5e`](https://www.github.com/tauri-apps/tauri/commit/33754ae5e3740d022483b6164511c5c001a3c24b) ([#15022](https://www.github.com/tauri-apps/tauri/pull/15022) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix updater signing private keys generated using `tauri signer generate` with empty password can't be used (The keys generated during tauri were broken between v2.9.3 and v2.10.0, you'll need to regenerate them)\n\n### What's Changed\n\n- [`7be58a1c6`](https://www.github.com/tauri-apps/tauri/commit/7be58a1c643a7ed6d0f484a7e1134022618eb2b2) ([#14894](https://www.github.com/tauri-apps/tauri/pull/14894) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Log patching bundle type information again\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.10.1`\n\n## \\[2.10.0]\n\n### Enhancements\n\n- [`f82594410`](https://www.github.com/tauri-apps/tauri/commit/f82594410cd57d6f794f58d4afea0ed335aa796f) ([#13253](https://www.github.com/tauri-apps/tauri/pull/13253) by [@Armaldio](https://www.github.com/tauri-apps/tauri/../../Armaldio)) Allow electron to run the CLI directly\n- [`a2abe2e6b`](https://www.github.com/tauri-apps/tauri/commit/a2abe2e6bcb9e1eed8484240dfdb76a5bc28ae58) ([#14607](https://www.github.com/tauri-apps/tauri/pull/14607) by [@sftse](https://www.github.com/tauri-apps/tauri/../../sftse)) Simplified internal representation of `features: Option<Vec<String>>` with `Vec<String>`, no user facing changes\n- [`84b04c4a8`](https://www.github.com/tauri-apps/tauri/commit/84b04c4a8d3310b7a7091d10e36244bf94996e51) ([#14759](https://www.github.com/tauri-apps/tauri/pull/14759) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Added new environment variables for `tauri signer sign` command, to align with existing environment variables used in `tauri build`, `tauri bundle` and `tauri signer generate`\n\n  - `TAURI_SIGNING_PRIVATE_KEY`\n  - `TAURI_SIGNING_PRIVATE_KEY_PATH`\n  - `TAURI_SIGNING_PRIVATE_KEY_PASSWORD`\n\n  The old environment variables are deprecated and will be removed in a future release.\n\n  - `TAURI_PRIVATE_KEY`\n  - `TAURI_PRIVATE_KEY_PATH`\n  - `TAURI_PRIVATE_KEY_PASSWORD`\n\n### Bug Fixes\n\n- [`62aa13a12`](https://www.github.com/tauri-apps/tauri/commit/62aa13a124ef46bb5ce9887a2a574dd35ef86d4f) ([#14629](https://www.github.com/tauri-apps/tauri/pull/14629) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Fix `android build`'s `--aab` and `--apk` flags requiring a value to be provided.\n- [`eccff9758`](https://www.github.com/tauri-apps/tauri/commit/eccff97588232055bd0cafd83e6ee03d11a501fb) ([#14779](https://www.github.com/tauri-apps/tauri/pull/14779) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Fix empty associated-domains entitlements when domains are not configured for deep links.\n- [`ea31b07f1`](https://www.github.com/tauri-apps/tauri/commit/ea31b07f19e0aa467ed0f921f60575cfe09809c8) ([#14789](https://www.github.com/tauri-apps/tauri/pull/14789) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fixed the command description for `tauri inspect`\n- [`7fca58230`](https://www.github.com/tauri-apps/tauri/commit/7fca58230f97c3e6834134419514a0c7dbbe784b) ([#14830](https://www.github.com/tauri-apps/tauri/pull/14830) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Updated `nsis_tauri_utils` to 0.5.3:\n\n  - Use an alternative method `CreateProcessWithTokenW` to run programs as user, this fixed a problem that the program launched with the previous method can't query its own handle\n- [`53611c4d7`](https://www.github.com/tauri-apps/tauri/commit/53611c4d7bdaf89b9a5d7c46a9c4bf4e34216148) ([#14747](https://www.github.com/tauri-apps/tauri/pull/14747) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Only watch dependent workspace members when running `tauri dev` instead of watching on all members\n- [`1b0e335d3`](https://www.github.com/tauri-apps/tauri/commit/1b0e335d3f3445948d6590f7e074275d97cd9859) ([#14713](https://www.github.com/tauri-apps/tauri/pull/14713) by [@wasuaje](https://www.github.com/tauri-apps/tauri/../../wasuaje)) `tauri signer sign` doesn't work for files without an extension\n\n### What's Changed\n\n- [`e3fdcb500`](https://www.github.com/tauri-apps/tauri/commit/e3fdcb5002b362b46cde2a1971e4e7f2a1161208) ([#14836](https://www.github.com/tauri-apps/tauri/pull/14836) by [@sftse](https://www.github.com/tauri-apps/tauri/../../sftse)) Continued refactors of tauri-cli, fix too weak atomics.\n- [`0575dd287`](https://www.github.com/tauri-apps/tauri/commit/0575dd287e021b61d2aedf64d62ae84a2c925fb4) ([#14521](https://www.github.com/tauri-apps/tauri/pull/14521) by [@kandrelczyk](https://www.github.com/tauri-apps/tauri/../../kandrelczyk)) Change the way bundle type information is added to binary files. Instead of looking up the value of a variable we simply look for the default value.\n- [`7f7d9aac2`](https://www.github.com/tauri-apps/tauri/commit/7f7d9aac214e22d9492490543f7a9bcae0a6659e) ([#14668](https://www.github.com/tauri-apps/tauri/pull/14668) by [@sftse](https://www.github.com/tauri-apps/tauri/../../sftse)) Refactored internal use of static on config and directory resolvings, no user facing changes, please report any regressions if you encounter any\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.10.0`\n\n## \\[2.9.6]\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.6`\n\n## \\[2.9.5]\n\n### Bug Fixes\n\n- [`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\n\n### Performance Improvements\n\n- [`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.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.5`\n\n## \\[2.9.4]\n\n### Bug Fixes\n\n- [`b586ecf1f`](https://www.github.com/tauri-apps/tauri/commit/b586ecf1f4b3b087f9aa6c4668c2c18b1b7925f4) ([#14416](https://www.github.com/tauri-apps/tauri/pull/14416) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Premultiply Alpha before Resizing which gets rid of the gray fringe around the icons for svg images.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.4`\n\n## \\[2.9.3]\n\n### Bug Fixes\n\n- [`fd8c30b4f`](https://www.github.com/tauri-apps/tauri/commit/fd8c30b4f1bca8dd7165c5c0ebe7fbfd17662153) ([#14353](https://www.github.com/tauri-apps/tauri/pull/14353) by [@ChaseKnowlden](https://www.github.com/tauri-apps/tauri/../../ChaseKnowlden)) Premultiply Alpha before Resizing which gets rid of the gray fringe around the icons.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.3`\n\n## \\[2.9.2]\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.2`\n\n## \\[2.9.1]\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.1`\n\n## \\[2.9.0]\n\n### New Features\n\n- [`3b4fac201`](https://www.github.com/tauri-apps/tauri/commit/3b4fac2017832d426dd07c5e24e26684eda57f7b) ([#14194](https://www.github.com/tauri-apps/tauri/pull/14194)) Add `tauri.conf.json > bundle > android > autoIncrementVersionCode` config option to automatically increment the Android version code.\n- [`673867aa0`](https://www.github.com/tauri-apps/tauri/commit/673867aa0e1ccd766ee879ffe96aba58c758613c) ([#14094](https://www.github.com/tauri-apps/tauri/pull/14094)) Try to detect ANDROID_HOME and NDK_HOME environment variables from default system locations and install them if needed using the Android Studio command line tools.\n- [`3d6868d09`](https://www.github.com/tauri-apps/tauri/commit/3d6868d09c323d68a152f3c3f8c7256311bd020a) ([#14128](https://www.github.com/tauri-apps/tauri/pull/14128)) Added support to defining the content type of the declared file association on macOS (maps to LSItemContentTypes property).\n- [`3d6868d09`](https://www.github.com/tauri-apps/tauri/commit/3d6868d09c323d68a152f3c3f8c7256311bd020a) ([#14128](https://www.github.com/tauri-apps/tauri/pull/14128)) Added support to defining the metadata for custom types declared in `tauri.conf.json > bundle > fileAssociations > exportedType` via the `UTExportedTypeDeclarations` Info.plist property.\n- [`ed7c9a410`](https://www.github.com/tauri-apps/tauri/commit/ed7c9a4100e08c002212265549d12130d021ad1e) ([#14108](https://www.github.com/tauri-apps/tauri/pull/14108)) Added `bundle > macOS > infoPlist` and `bundle > iOS > infoPlist` configurations to allow defining custom Info.plist extensions.\n- [`75082cc5b`](https://www.github.com/tauri-apps/tauri/commit/75082cc5b340e30e2c4b4cd4bd6a1fe5382164aa) ([#14120](https://www.github.com/tauri-apps/tauri/pull/14120)) Added `ios run` and `android run` commands to run the app in production mode.\n- [`cc8c0b531`](https://www.github.com/tauri-apps/tauri/commit/cc8c0b53171173dbd1d01781a50de1a3ea159031) ([#14031](https://www.github.com/tauri-apps/tauri/pull/14031)) Added support to universal app links on macOS with the `plugins > deep-link > desktop > domains` configuration.\n\n### Enhancements\n\n- [`b5aa01870`](https://www.github.com/tauri-apps/tauri/commit/b5aa018702bf45dc98297698f9b7d238705865a6) ([#14268](https://www.github.com/tauri-apps/tauri/pull/14268)) Update cargo-mobile2 to 0.21, enhancing error messages and opening Xcode when multiple apps are installed.\n- [`55453e845`](https://www.github.com/tauri-apps/tauri/commit/55453e8453d927b8197f1ba9f26fd944482938f7) ([#14262](https://www.github.com/tauri-apps/tauri/pull/14262)) Check mismatched versions in `tauri info`\n- [`1a6627ee7`](https://www.github.com/tauri-apps/tauri/commit/1a6627ee7d085a4e66784e2705254714d68c7244) ([#14122](https://www.github.com/tauri-apps/tauri/pull/14122)) Set a default log level filter when running `tauri add log`.\n- [`b06b3bd09`](https://www.github.com/tauri-apps/tauri/commit/b06b3bd091b0fed26cdcfb23cacb0462a7a9cc2d) ([#14126](https://www.github.com/tauri-apps/tauri/pull/14126)) Improve error messages with more context.\n- [`f6622a3e3`](https://www.github.com/tauri-apps/tauri/commit/f6622a3e342f5dd5fb3cf6e0f79fb309a10e9b3d) ([#14129](https://www.github.com/tauri-apps/tauri/pull/14129)) Prompt to install the iOS platform if it isn't installed yet.\n- [`6bbb530fd`](https://www.github.com/tauri-apps/tauri/commit/6bbb530fd5edfc07b180a4f3782b8566872ca3b1) ([#14105](https://www.github.com/tauri-apps/tauri/pull/14105)) Warn if productName is empty when initializing mobile project.\n\n### Bug Fixes\n\n- [`19fb6f7cb`](https://www.github.com/tauri-apps/tauri/commit/19fb6f7cb0d702cb2f25f6f2d1e11014d9dada5d) ([#14146](https://www.github.com/tauri-apps/tauri/pull/14146)) Strip Windows-only extensions from the binary path so an Android project initialized on Windows can be used on UNIX systems.\n- [`19fb6f7cb`](https://www.github.com/tauri-apps/tauri/commit/19fb6f7cb0d702cb2f25f6f2d1e11014d9dada5d) ([#14146](https://www.github.com/tauri-apps/tauri/pull/14146)) Enhance Android build script usage on Windows by attempting to run cmd, bat and exe formats.\n- [`28a2f9bc5`](https://www.github.com/tauri-apps/tauri/commit/28a2f9bc55f658eb71ef1a970ff9f791346f7682) ([#14101](https://www.github.com/tauri-apps/tauri/pull/14101)) Fix iOS CLI usage after modifying the package name.\n- [`d2938486e`](https://www.github.com/tauri-apps/tauri/commit/d2938486e9d974debd90c15d7160b8a17bf4d763) ([#14261](https://www.github.com/","isInternal":false,"tokens":16163,"sizeBytes":50000},{"name":"package.json","path":"packages/cli/npm/darwin-arm64/package.json","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/darwin-arm64/package.json","title":"Darwin-arm64 Skill","category":"anthropic-skill","format":"json","content":"# Darwin-arm64 Skill\n\nPath: `packages/cli/npm/darwin-arm64/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/darwin-arm64/package.json)","tokens":300,"sizeBytes":202},{"name":"package.json","path":"packages/cli/npm/darwin-x64/package.json","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/darwin-x64/package.json","title":"Darwin-x64 Skill","category":"anthropic-skill","format":"json","content":"# Darwin-x64 Skill\n\nPath: `packages/cli/npm/darwin-x64/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/darwin-x64/package.json)","tokens":300,"sizeBytes":196},{"name":"package.json","path":"packages/cli/npm/linux-arm-gnueabihf/package.json","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm-gnueabihf/package.json","title":"Linux-arm-gnueabihf Skill","category":"anthropic-skill","format":"json","content":"# Linux-arm-gnueabihf Skill\n\nPath: `packages/cli/npm/linux-arm-gnueabihf/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm-gnueabihf/package.json)","tokens":300,"sizeBytes":223},{"name":"package.json","path":"packages/cli/npm/linux-arm64-gnu/package.json","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm64-gnu/package.json","title":"Linux-arm64-gnu Skill","category":"anthropic-skill","format":"json","content":"# Linux-arm64-gnu Skill\n\nPath: `packages/cli/npm/linux-arm64-gnu/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm64-gnu/package.json)","tokens":300,"sizeBytes":211},{"name":"package.json","path":"packages/cli/npm/linux-arm64-musl/package.json","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm64-musl/package.json","title":"Linux-arm64-musl Skill","category":"anthropic-skill","format":"json","content":"# Linux-arm64-musl Skill\n\nPath: `packages/cli/npm/linux-arm64-musl/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm64-musl/package.json)","tokens":300,"sizeBytes":214},{"name":"package.json","path":"packages/cli/npm/linux-riscv64-gnu/package.json","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-riscv64-gnu/package.json","title":"Linux-riscv64-gnu Skill","category":"anthropic-skill","format":"json","content":"# Linux-riscv64-gnu Skill\n\nPath: `packages/cli/npm/linux-riscv64-gnu/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-riscv64-gnu/package.json)","tokens":300,"sizeBytes":217},{"name":"package.json","path":"packages/cli/npm/linux-x64-gnu/package.json","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-x64-gnu/package.json","title":"Linux-x64-gnu Skill","category":"anthropic-skill","format":"json","content":"# Linux-x64-gnu Skill\n\nPath: `packages/cli/npm/linux-x64-gnu/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-x64-gnu/package.json)","tokens":300,"sizeBytes":205},{"name":"package.json","path":"packages/cli/npm/linux-x64-musl/package.json","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-x64-musl/package.json","title":"Linux-x64-musl Skill","category":"anthropic-skill","format":"json","content":"# Linux-x64-musl Skill\n\nPath: `packages/cli/npm/linux-x64-musl/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-x64-musl/package.json)","tokens":300,"sizeBytes":208},{"name":"package.json","path":"packages/cli/npm/win32-arm64-msvc/package.json","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-arm64-msvc/package.json","title":"Win32-arm64-msvc Skill","category":"anthropic-skill","format":"json","content":"# Win32-arm64-msvc Skill\n\nPath: `packages/cli/npm/win32-arm64-msvc/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-arm64-msvc/package.json)","tokens":300,"sizeBytes":214},{"name":"package.json","path":"packages/cli/npm/win32-ia32-msvc/package.json","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-ia32-msvc/package.json","title":"Win32-ia32-msvc Skill","category":"anthropic-skill","format":"json","content":"# Win32-ia32-msvc Skill\n\nPath: `packages/cli/npm/win32-ia32-msvc/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-ia32-msvc/package.json)","tokens":300,"sizeBytes":211},{"name":"package.json","path":"packages/cli/npm/win32-x64-msvc/package.json","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-x64-msvc/package.json","title":"@tauri-apps/cli-win32-x64-msvc","category":"anthropic-skill","format":"json","content":"{\n  \"name\": \"@tauri-apps/cli-win32-x64-msvc\",\n  \"version\": \"0.0.0\",\n  \"cpu\": [\n    \"x64\"\n  ],\n  \"main\": \"cli.win32-x64-msvc.node\",\n  \"files\": [\n    \"cli.win32-x64-msvc.node\"\n  ],\n  \"description\": \"Command line interface for building Tauri apps\",\n  \"homepage\": \"https://github.com/tauri-apps/tauri#readme\",\n  \"contributors\": [\n    \"Tauri Programme within The Commons Conservancy\"\n  ],\n  \"license\": \"Apache-2.0 OR MIT\",\n  \"engines\": {\n    \"node\": \">= 10\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/tauri-apps/tauri.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/tauri-apps/tauri/issues\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"os\": [\n    \"win32\"\n  ]\n}\n","frontmatter":{"name":"@tauri-apps/cli-win32-x64-msvc","version":"0.0.0","cpu":["x64"],"main":"cli.win32-x64-msvc.node","files":["cli.win32-x64-msvc.node"],"description":"Command line interface for building Tauri apps","homepage":"https://github.com/tauri-apps/tauri#readme","contributors":["Tauri Programme within The Commons Conservancy"],"license":"Apache-2.0 OR MIT","engines":{"node":">= 10"},"repository":{"type":"git","url":"git+https://github.com/tauri-apps/tauri.git"},"bugs":{"url":"https://github.com/tauri-apps/tauri/issues"},"publishConfig":{"access":"public"},"os":["win32"]},"isInternal":false,"tokens":247,"sizeBytes":707},{"name":"package.json","path":"packages/cli/package.json","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/package.json","title":"@tauri-apps/cli","category":"anthropic-skill","format":"json","content":"{\n  \"name\": \"@tauri-apps/cli\",\n  \"version\": \"2.12.4\",\n  \"description\": \"Command line interface for building Tauri apps\",\n  \"type\": \"commonjs\",\n  \"funding\": {\n    \"type\": \"opencollective\",\n    \"url\": \"https://opencollective.com/tauri\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/tauri-apps/tauri.git\"\n  },\n  \"contributors\": [\n    \"Tauri Programme within The Commons Conservancy\"\n  ],\n  \"license\": \"Apache-2.0 OR MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/tauri-apps/tauri/issues\"\n  },\n  \"homepage\": \"https://github.com/tauri-apps/tauri#readme\",\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"main\": \"main.js\",\n  \"types\": \"main.d.ts\",\n  \"napi\": {\n    \"binaryName\": \"cli\",\n    \"targets\": [\n      \"x86_64-unknown-linux-gnu\",\n      \"x86_64-pc-windows-msvc\",\n      \"x86_64-apple-darwin\",\n      \"aarch64-apple-darwin\",\n      \"aarch64-unknown-linux-gnu\",\n      \"aarch64-unknown-linux-musl\",\n      \"armv7-unknown-linux-gnueabihf\",\n      \"x86_64-unknown-linux-musl\",\n      \"riscv64gc-unknown-linux-gnu\",\n      \"i686-pc-windows-msvc\",\n      \"aarch64-pc-windows-msvc\"\n    ]\n  },\n  \"devDependencies\": {\n    \"@napi-rs/cli\": \"3.10.8\",\n    \"@types/node\": \"^24.11.0\",\n    \"cross-env\": \"10.1.0\",\n    \"vitest\": \"^5.0.0\"\n  },\n  \"engines\": {\n    \"node\": \">= 10\"\n  },\n  \"bin\": {\n    \"tauri\": \"./tauri.js\"\n  },\n  \"scripts\": {\n    \"artifacts\": \"napi artifacts\",\n    \"build\": \"cross-env TARGET=node napi build --platform --profile release-size-optimized\",\n    \"postbuild\": \"node append-headers.js\",\n    \"build:debug\": \"cross-env TARGET=node napi build --platform\",\n    \"postbuild:debug\": \"node append-headers.js\",\n    \"prepublishOnly\": \"napi prepublish -t npm --gh-release-id $RELEASE_ID\",\n    \"prepack\": \"cp ../../crates/tauri-schema-generator/schemas/config.schema.json .\",\n    \"version\": \"napi version\",\n    \"test\": \"vitest run\",\n    \"tauri\": \"node ./tauri.js\"\n  }\n}\n","frontmatter":{"name":"@tauri-apps/cli","version":"2.12.4","description":"Command line interface for building Tauri apps","type":"commonjs","funding":{"type":"opencollective","url":"https://opencollective.com/tauri"},"repository":{"type":"git","url":"git+https://github.com/tauri-apps/tauri.git"},"contributors":["Tauri Programme within The Commons Conservancy"],"license":"Apache-2.0 OR MIT","bugs":{"url":"https://github.com/tauri-apps/tauri/issues"},"homepage":"https://github.com/tauri-apps/tauri#readme","publishConfig":{"access":"public"},"main":"main.js","types":"main.d.ts","napi":{"binaryName":"cli","targets":["x86_64-unknown-linux-gnu","x86_64-pc-windows-msvc","x86_64-apple-darwin","aarch64-apple-darwin","aarch64-unknown-linux-gnu","aarch64-unknown-linux-musl","armv7-unknown-linux-gnueabihf","x86_64-unknown-linux-musl","riscv64gc-unknown-linux-gnu","i686-pc-windows-msvc","aarch64-pc-windows-msvc"]},"devDependencies":{"@napi-rs/cli":"3.10.8","@types/node":"^24.11.0","cross-env":"10.1.0","vitest":"^5.0.0"},"engines":{"node":">= 10"},"bin":{"tauri":"./tauri.js"},"scripts":{"artifacts":"napi artifacts","build":"cross-env TARGET=node napi build --platform --profile release-size-optimized","postbuild":"node append-headers.js","build:debug":"cross-env TARGET=node napi build --platform","postbuild:debug":"node append-headers.js","prepublishOnly":"napi prepublish -t npm --gh-release-id $RELEASE_ID","prepack":"cp ../../crates/tauri-schema-generator/schemas/config.schema.json .","version":"napi version","test":"vitest run","tauri":"node ./tauri.js"}},"isInternal":false,"tokens":627,"sizeBytes":1889},{"name":"README.md","path":"packages/api/README.md","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/api/README.md","title":"api Documentation","category":"plugin-manifest","format":"markdown","content":"# @tauri-apps/api\n\n <img align=\"right\" src=\"https://github.com/tauri-apps/tauri/raw/dev/.github/icon.png\" height=\"128\" width=\"128\">\n\n[![status](https://img.shields.io/badge/status-stable-blue.svg)](https://github.com/tauri-apps/tauri/tree/dev)\n[![License](https://img.shields.io/badge/License-MIT%20or%20Apache%202-green.svg)](https://opencollective.com/tauri)\n[![lint js](https://img.shields.io/github/actions/workflow/status/tauri-apps/tauri/lint-js.yml?label=lint%20js&logo=github)](https://github.com/tauri-apps/tauri/actions/workflows/lint-js.yml)\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri?ref=badge_shield)\n[![Chat Server](https://img.shields.io/badge/chat-discord-7289da.svg)](https://discord.gg/SpmNs4S)\n[![website](https://img.shields.io/badge/website-tauri.app-purple.svg)](https://tauri.app)\n[![https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg](https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg)](https://good-labs.github.io/greater-good-affirmation)\n[![support](https://img.shields.io/badge/sponsor-Open%20Collective-blue.svg)](https://opencollective.com/tauri)\n\n| Component       | Version                                               |\n| --------------- | ----------------------------------------------------- |\n| @tauri-apps/api | ![](https://img.shields.io/npm/v/@tauri-apps/api.svg) |\n\n## About Tauri\n\nTauri is a polyglot and generic system that is very composable and allows engineers to make a wide variety of applications. It is used for building applications for Desktop Computers using a combination of Rust tools and HTML rendered in a Webview. Apps built with Tauri can ship with any number of pieces of an optional JS API / Rust API so that webviews can control the system via message passing. In fact, developers can extend the default API with their own functionality and bridge the Webview and Rust-based backend easily.\n\nTauri apps can have custom menus and have tray-type interfaces. They can be updated, and are managed by the user's operating system as expected. They are very small, because they use the system's webview. They do not ship a runtime, since the final binary is compiled from rust. This makes the reversing of Tauri apps not a trivial task.\n\n## This module\n\nThis is a typescript library that creates `cjs` and `esm` JavaScript endpoints for you to import into your Frontend framework so that the Webview can call and listen to backend activity. We also ship the pure typescript, because for some frameworks this is more optimal. It uses the message passing of webviews to their hosts.\n\nTo learn more about the details of how all of these pieces fit together, please consult this [ARCHITECTURE.md](https://github.com/tauri-apps/tauri/blob/dev/ARCHITECTURE.md) document.\n\n## Installation\n\nThe preferred method is to install this module locally as a dependency:\n\n```\n$ pnpm add @tauri-apps/api\n$ yarn add @tauri-apps/api\n$ npm add @tauri-apps/api\n```\n\n## Semver\n\n**tauri** is following [Semantic Versioning 2.0](https://semver.org/).\n\n## Licenses\n\nCode: (c) 2019 - 2021 - The Tauri Programme within The Commons Conservancy.\n\nMIT or MIT/Apache 2.0 where applicable.\n\nLogo: CC-BY-NC-ND\n\n- Original Tauri Logo Designs by [Daniel Thompson-Yvetot](https://github.com/nothingismagick) and [Guillaume Chau](https://github.com/akryum)\n","isInternal":false,"tokens":919,"sizeBytes":3462},{"name":"README.md","path":"packages/cli/npm/darwin-arm64/README.md","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/darwin-arm64/README.md","title":"darwin-arm64 Documentation","category":"plugin-manifest","format":"markdown","content":"# darwin-arm64 Documentation\n\nPath: `packages/cli/npm/darwin-arm64/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/darwin-arm64/README.md)","tokens":300,"sizeBytes":204},{"name":"README.md","path":"packages/cli/npm/darwin-x64/README.md","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/darwin-x64/README.md","title":"darwin-x64 Documentation","category":"plugin-manifest","format":"markdown","content":"# darwin-x64 Documentation\n\nPath: `packages/cli/npm/darwin-x64/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/darwin-x64/README.md)","tokens":300,"sizeBytes":198},{"name":"README.md","path":"packages/cli/npm/linux-arm-gnueabihf/README.md","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm-gnueabihf/README.md","title":"linux-arm-gnueabihf Documentation","category":"plugin-manifest","format":"markdown","content":"# linux-arm-gnueabihf Documentation\n\nPath: `packages/cli/npm/linux-arm-gnueabihf/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm-gnueabihf/README.md)","tokens":300,"sizeBytes":225},{"name":"README.md","path":"packages/cli/npm/linux-arm64-gnu/README.md","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm64-gnu/README.md","title":"linux-arm64-gnu Documentation","category":"plugin-manifest","format":"markdown","content":"# linux-arm64-gnu Documentation\n\nPath: `packages/cli/npm/linux-arm64-gnu/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm64-gnu/README.md)","tokens":300,"sizeBytes":213},{"name":"README.md","path":"packages/cli/npm/linux-arm64-musl/README.md","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm64-musl/README.md","title":"linux-arm64-musl Documentation","category":"plugin-manifest","format":"markdown","content":"# linux-arm64-musl Documentation\n\nPath: `packages/cli/npm/linux-arm64-musl/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm64-musl/README.md)","tokens":300,"sizeBytes":216},{"name":"README.md","path":"packages/cli/npm/linux-riscv64-gnu/README.md","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-riscv64-gnu/README.md","title":"linux-riscv64-gnu Documentation","category":"plugin-manifest","format":"markdown","content":"# linux-riscv64-gnu Documentation\n\nPath: `packages/cli/npm/linux-riscv64-gnu/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-riscv64-gnu/README.md)","tokens":300,"sizeBytes":219},{"name":"README.md","path":"packages/cli/npm/linux-x64-gnu/README.md","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-x64-gnu/README.md","title":"linux-x64-gnu Documentation","category":"plugin-manifest","format":"markdown","content":"# linux-x64-gnu Documentation\n\nPath: `packages/cli/npm/linux-x64-gnu/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-x64-gnu/README.md)","tokens":300,"sizeBytes":207},{"name":"README.md","path":"packages/cli/npm/linux-x64-musl/README.md","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-x64-musl/README.md","title":"linux-x64-musl Documentation","category":"plugin-manifest","format":"markdown","content":"# linux-x64-musl Documentation\n\nPath: `packages/cli/npm/linux-x64-musl/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-x64-musl/README.md)","tokens":300,"sizeBytes":210},{"name":"README.md","path":"packages/cli/npm/win32-arm64-msvc/README.md","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-arm64-msvc/README.md","title":"win32-arm64-msvc Documentation","category":"plugin-manifest","format":"markdown","content":"# win32-arm64-msvc Documentation\n\nPath: `packages/cli/npm/win32-arm64-msvc/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-arm64-msvc/README.md)","tokens":300,"sizeBytes":216},{"name":"README.md","path":"packages/cli/npm/win32-ia32-msvc/README.md","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-ia32-msvc/README.md","title":"win32-ia32-msvc Documentation","category":"plugin-manifest","format":"markdown","content":"# win32-ia32-msvc Documentation\n\nPath: `packages/cli/npm/win32-ia32-msvc/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-ia32-msvc/README.md)","tokens":300,"sizeBytes":213},{"name":"README.md","path":"packages/cli/npm/win32-x64-msvc/README.md","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-x64-msvc/README.md","title":"win32-x64-msvc Documentation","category":"plugin-manifest","format":"markdown","content":"# `@tauri-apps/cli-win32-x64-msvc`\n\nThis is the **x86_64-pc-windows-msvc** binary for `@tauri-apps/cli`\n","isInternal":false,"tokens":39,"sizeBytes":104},{"name":"README.md","path":"packages/cli/README.md","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/README.md","title":"cli Documentation","category":"plugin-manifest","format":"markdown","content":"# @tauri-apps/cli\n\n <img align=\"right\" src=\"https://github.com/tauri-apps/tauri/raw/dev/.github/icon.png\" height=\"128\" width=\"128\">\n\n[![status](https://img.shields.io/badge/status-stable-blue.svg)](https://github.com/tauri-apps/tauri/tree/dev)\n[![License](https://img.shields.io/badge/License-MIT%20or%20Apache%202-green.svg)](https://opencollective.com/tauri)\n[![test cli](https://img.shields.io/github/actions/workflow/status/tauri-apps/tauri/test-cli-js.yml?label=test%20cli&logo=github)](https://github.com/tauri-apps/tauri/actions/workflows/test-cli-js.yml)\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri?ref=badge_shield)\n[![Chat Server](https://img.shields.io/badge/chat-discord-7289da.svg)](https://discord.gg/SpmNs4S)\n[![website](https://img.shields.io/badge/website-tauri.app-purple.svg)](https://tauri.app)\n[![https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg](https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg)](https://good-labs.github.io/greater-good-affirmation)\n[![support](https://img.shields.io/badge/sponsor-Open%20Collective-blue.svg)](https://opencollective.com/tauri)\n\n| Component       | Version                                               |\n| --------------- | ----------------------------------------------------- |\n| @tauri-apps/cli | ![](https://img.shields.io/npm/v/@tauri-apps/cli.svg) |\n\n## About Tauri\n\nTauri is a polyglot and generic system that is very composable and allows engineers to make a wide variety of applications. It is used for building applications for Desktop Computers using a combination of Rust tools and HTML rendered in a Webview. Apps built with Tauri can ship with any number of pieces of an optional JS API / Rust API so that webviews can control the system via message passing. In fact, developers can extend the default API with their own functionality and bridge the Webview and Rust-based backend easily.\n\nTauri apps can have custom menus and have tray-type interfaces. They can be updated, and are managed by the user's operating system as expected. They are very small, because they use the system's webview. They do not ship a runtime, since the final binary is compiled from rust. This makes the reversing of Tauri apps not a trivial task.\n\n## This module\n\nWritten in Typescript and packaged such that it can be used with `npm`, `pnpm`, `yarn`, and `bun`, this library provides a node.js runner for common tasks when using Tauri, like `pnpm tauri dev`. For the most part it is a wrapper around [tauri-cli](https://github.com/tauri-apps/tauri/blob/dev/crates/tauri-cli).\n\nTo learn more about the details of how all of these pieces fit together, please consult this [ARCHITECTURE.md](https://github.com/tauri-apps/tauri/blob/dev/ARCHITECTURE.md) document.\n\n## Installation\n\nThe preferred method is to install this module locally as a development dependency:\n\n```\n$ pnpm add -D @tauri-apps/cli\n$ yarn add -D @tauri-apps/cli\n$ npm add -D @tauri-apps/cli\n```\n\n## Semver\n\n**tauri** is following [Semantic Versioning 2.0](https://semver.org/).\n\n## Licenses\n\nCode: (c) 2019 - 2021 - The Tauri Programme within The Commons Conservancy.\n\nMIT or MIT/Apache 2.0 where applicable.\n\nLogo: CC-BY-NC-ND\n\n- Original Tauri Logo Designs by [Daniel Thompson-Yvetot](https://github.com/nothingismagick) and [Guillaume Chau](https://github.com/akryum)\n","isInternal":false,"tokens":944,"sizeBytes":3479},{"name":"README.md","path":"examples/commands/README.md","rawUrl":"https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/examples/commands/README.md","title":"Command: /readme","category":"command-prompt","format":"markdown","content":"# Commands Example\n\nA simple Tauri Application showcasing the command API.\n\nTo execute run the following on the root directory of the repository: `cargo run --example commands`.\n","isInternal":false,"tokens":35,"sizeBytes":178},{"name":".cursorrules","path":".cursorrules (tauri-svelte-typescript-guide-cursorrules-prompt-f.mdc)","rawUrl":"https://raw.githubusercontent.com/PatrickJS/awesome-cursorrules/main/rules/tauri-svelte-typescript-guide-cursorrules-prompt-f.mdc","title":"Awesome Cursorrules: tauri svelte typescript guide cursorrules prompt f","category":"cursor-rule","format":"markdown","content":"---\ndescription: \"Cursor rules for Tauri development with Svelte and TypeScript guide integration.\"\nglobs: **/*\nalwaysApply: false\n---\nYou are an expert in developing desktop applications using Tauri with Svelte and TypeScript for the frontend.\n\nKey Principles:\n\n- Write clear, technical responses with precise examples for Tauri, Svelte, and TypeScript.\n- Prioritize type safety and utilize TypeScript features effectively.\n- Follow best practices for Tauri application development, including security considerations.\n- Implement responsive and efficient UIs using Svelte's reactive paradigm.\n- Ensure smooth communication between the Tauri frontend and external backend services.\n\nFrontend (Tauri + Svelte + TypeScript):\n\n- Use Svelte's component-based architecture for modular and reusable UI elements.\n- Leverage TypeScript for strong typing and improved code quality.\n- Utilize Tauri's APIs for native desktop integration (file system access, system tray, etc.).\n- Implement proper state management using Svelte stores or other state management solutions if needed.\n- Use Svelte's built-in reactivity for efficient UI updates.\n- Follow Svelte's naming conventions (PascalCase for components, camelCase for variables and functions).\n\nCommunication with Backend:\n\n- Use Axios for HTTP requests from the Tauri frontend to the external backend.\n- Implement proper error handling for network requests and responses.\n- Use TypeScript interfaces to define the structure of data sent and received.\n- Consider implementing a simple API versioning strategy for future-proofing.\n- Handle potential CORS issues when communicating with the backend.\n\nSecurity:\n\n- Follow Tauri's security best practices, especially when dealing with IPC and native API access.\n- Implement proper input validation and sanitization on the frontend.\n- Use HTTPS for all communications with external services.\n- Implement proper authentication and authorization mechanisms if required.\n- Be cautious when using Tauri's allowlist feature, only exposing necessary APIs.\n\nPerformance Optimization:\n\n- Optimize Svelte components for efficient rendering and updates.\n- Use lazy loading for components and routes where appropriate.\n- Implement proper caching strategies for frequently accessed data.\n- Utilize Tauri's performance features, such as resource optimization and app size reduction.\n\nTesting:\n\n- Write unit tests for Svelte components using testing libraries like Jest and Testing Library.\n- Implement end-to-end tests for critical user flows using tools like Playwright or Cypress.\n- Test Tauri-specific features and APIs thoroughly.\n- Implement proper mocking for API calls and external dependencies in tests.\n\nBuild and Deployment:\n\n- Use Vite for fast development and optimized production builds of the Svelte app.\n- Leverage Tauri's built-in updater for seamless application updates.\n- Implement proper environment configuration for development, staging, and production.\n- Use Tauri's CLI tools for building and packaging the application for different platforms.\n\nKey Conventions:\n\n1. Follow a consistent code style across the project (e.g., use Prettier).\n2. Use meaningful and descriptive names for variables, functions, and components.\n3. Write clear and concise comments, focusing on why rather than what.\n4. Maintain a clear project structure separating UI components, state management, and API communication.\n\nDependencies:\n\n- Tauri\n- Svelte\n- TypeScript\n- Vite\n- Axios\n\nRefer to official documentation for Tauri, Svelte, and TypeScript for best practices and up-to-date APIs.\n\nNote on Backend Communication:\n\nWhen working with the external Python backend:\n\n- Ensure proper error handling for potential backend failures or slow responses.\n- Consider implementing retry mechanisms for failed requests.\n- Use appropriate data serialization methods when sending/receiving complex data structures.\n","tokens":733,"sizeBytes":3880}],"systemPromptSnippet":"<yakaai_skills repo=\"tauri-apps/tauri\">\n<!-- File: ARCHITECTURE.md (Tokens: ~2608 | Category: project-spec) -->\n# The Tauri Architecture\n\n<https://tauri.app>\n\n<https://github.com/tauri-apps/tauri>\n\n## Introduction\n\nTauri is a polyglot and generic toolkit that is very composable and allows engineers to make a wide variety of applications. It is used for building applications for Desktop Computers using a combination of Rust tools and HTML rendered in a Webview. Apps built with Tauri can ship with any number of pieces of an optional JS API / Rust API so that webviews can control the system via message passing. In fact, developers can extend the default API with their own functionality and bridge the Webview and Rust-based backend easily.\n\nTauri apps can have custom menus and have tray-type interfaces. They can be updated, and are managed by the user's operating system as expected. They are very small, because they use the OS's webview. They do not ship a runtime, since the final binary is compiled from Rust. This makes the reversing of Tauri apps not a trivial task.\n\n## What Tauri is NOT\n\n- Tauri is not a lightweight kernel wrapper...instead it directly uses [WRY](https://github.com/tauri-apps/wry) and [TAO](https://github.com/tauri-apps/tao) to do the heavy-lifting in making system calls to the OS.\n- Tauri is not a VM or virtualized environment...instead it is an application toolkit that allows making Webview OS applications.\n\n## Major Components\n\nThe following section briefly describes the roles of the various parts of Tauri.\n\n### Tauri Core [STABLE RUST]\n\n#### [tauri](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri)\n\nThis is the major crate that holds everything together. It brings the runtimes, macros, utilities and API into one final product. It reads the `tauri.conf.json` file at compile time in order to bring in features and undertake actual configuration of the app (and even the `Cargo.toml` file in the project's folder). It handles script injection (for polyfills / prototype revision) at runtime, hosts the API for systems interaction, and even manages updating.\n\n#### [tauri-build](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-build)\n\nApply the macros at build-time in order to rig some special features needed by `cargo`.\n\n#### [tauri-codegen](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-codegen)\n\n- Embed, hash, and compress assets, including icons for the app as well as the system-tray.\n- Parse `tauri.conf.json` at compile time and generate the Config struct.\n\n#### [tauri-macros](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-macros)\n\nCreate macros for the context, handler, and commands by leveraging the `tauri-codegen` crate.\n\n#### [tauri-runtime](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-runtime)\n\nThis is the glue layer between tauri itself and lower level webview libraries.\n\n#### [tauri-runtime-wry](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-runtime-wry)\n\nThis crate opens up direct systems-level interactions specifically for WRY, such as printing, monitor detection, and other windowing related tasks. `tauri-runtime` implementation for WRY.\n\n#### [tauri-utils](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-utils)\n\nThis is common code that is reused in many places and offers useful utilities like parsing configuration files, detecting platform triples, injecting the CSP, and managing assets.\n\n### Tauri Tooling\n\n#### [@tauri-apps/api](https://github.com/tauri-apps/tauri/tree/dev/packages/api) [TS -> JS]\n\nA TypeScript library that creates `cjs` and `esm` JavaScript endpoints for you to import into your Frontend framework so that the Webview can call and listen to backend activity. We also ship the pure TypeScript, because for some frameworks this is more optimal. It uses the message passing of webviews to their hosts.\n\n#### [bundler](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-bundler) [RUST / SHELL]\n\nThe bundler is a library that builds a Tauri App for the platform triple it detects / is told. At the moment it currently supports macOS, Windows and Linux - but in the near future will support mobile platforms as well. May be used outside of Tauri projects.\n\n#### [@tauri-apps/cli](https://github.com/tauri-apps/tauri/tree/dev/packages/cli) [JS]\n\nIt is a wrapper around [tauri-cli](https://github.com/tauri-apps/tauri/blob/dev/crates/tauri-cli) using [napi-rs](https://github.com/napi-rs/napi-rs) to produce NPM packages for each platform.\n\n#### [tauri-cli](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-cli) [RUST]\n\nThis rust executable provides the full interface to all of the required activities for which the CLI is required. It will run on macOS, Windows, and Linux.\n\n#### [create-tauri-app](https://github.com/tauri-apps/create-tauri-app) [JS]\n\nThis is a toolkit that will enable engineering teams to rapidly scaffold out a new tauri-apps project using the frontend framework of their choice (as long as it has been configured).\n\n# External Crates\n\nThe Tauri-Apps organisation maintains two \"upstream\" crates from Tauri, namely TAO for creating and managing application windows, and WRY for interfacing with the Webview that lives within the window.\n\n## [TAO](https://github.com/tauri-apps/tao)\n\nCross-platform application window creation library in Rust that supports all major platforms like Windows, macOS, Linux, iOS and Android. Written in Rust, it is a fork of [winit](https://github.com/rust-windowing/winit) that we have extended for our own needs like menu bar and system tray.\n\n## [WRY](https://github.com/tauri-apps/wry)\n\nWRY is a cross-platform WebView rendering library in Rust that supports all major desktop platforms like Windows, macOS, and Linux.\nTauri uses WRY as the abstract layer responsible to determine which webview is used (and how interactions are made).\n\n# Additional tooling\n\n## [tauri-action](https://github.com/tauri-apps/tauri-action)\n\nThis is a github workflow that builds tauri binaries for all platforms. It is not the fastest out there, but it gets the job done and is highly configurable. Even allowing you to create a (very basic) tauri app even if tauri is not setup.\n\n## [create-pull-request](https://github.com/tauri-apps/create-pull-request)\n\nBecause this is a very risky (potentially destructive) github action, we forked it in order to have strong guarantees that the code we think is running is actually the code that is running.\n\n## [vue-cli-plugin-tauri](https://github.com/tauri-apps/vue-cli-plugin-tauri)\n\nThis plugin allows you to very quickly install tauri in a vue-cli project.\n\n## [tauri-vscode](https://github.com/tauri-apps/tauri-vscode)\n\nThis project enhances the VS Code interface with several nice-to-have features.\n\n# Tauri Plugins [documentation](https://v2.tauri.app/develop/plugins/)\n\nGenerally speaking, plugins are authored by third parties (even though there may be official, supported plugins). A plugin generally does 3 things:\n\n1. It provides rust code to do \"something\".\n2. It provides interface glue to make it easy to integrate into an app.\n3. It provides a JS API for interfacing with the rust code.\n\nHere are several examples of Tauri Plugins:\n\n- <https://github.com/tauri-apps/tauri-plugin-sql>\n- <https://github.com/tauri-apps/tauri-plugin-stronghold>\n- <https://github.com/tauri-apps/tauri-plugin-authenticator>\n\n# Workflows\n\n## What does the Development flow look like?\n\nA developer must first install the prerequisite toolchains for creating a Tauri app. At the very least this will entail installing rust & cargo, and most likely also a modern version of node.js and potentially another package manager. Some platforms may also require other tooling and libraries, but this has been documented carefully in the respective platform docs.\n\nBecause of the many ways to build front-ends, we will stick with a common node.js based approach for development. (Note: Tauri does not by default ship a node.js runtime.)\n\nThe easiest way to do this is to run the following:\n\n```\nnpm create tauri-app\n```\n\nWhich will ask you a bunch of questions about the framework you want to install and then create everything you need in a single folder - some via the placement of template files and some through normal installation procedures of your framework.\n\n> If you don't use this process, you will have to manually install the tauri cli, initialise tauri and manually configure the `tauri.conf.json` file.\n\nOnce everything is installed, you can run:\n\n```\npnpm tauri dev\n-or-\nyarn tauri dev\n-or-\nnpm run tauri dev\n```\n\nThis will do several things:\n\n1. start the JS Framework devserver\n2. begin the long process of downloading and compiling the rust libraries\n3. open an application window with devtools enabled\n4. keep a long-lived console alive\n\nIf you change your HTML/CSS/TS/JS, your framework devserver should give you its best shot at instant hot module reloading and you will see the changes instantly.\n\nIf you modify your rust code or anything in the Cargo.toml, the window will close while rust recompiles. When finished it will reload.\n\nIf you need to get deeper insight into your current project, or triage requires investigation of installed components, just run:\n\n```\npnpm tauri info\n```\n\n## What does the Release flow look like?\n\nThe release flow begins with proper configuration in the `tauri.conf.json` file. In this file, the developer can configure not only the basic behaviour of the application (like window size and decoration), they can also provide settings for signing and updating.\n\nDepending upon the operating system that the developer (or CI) is building the application on, there will be an app built for them for that system. (Cross compilation is not currently available, however there is an official [GitHub Action](https://github.com/tauri-apps/tauri-action) that can be used to build for all platforms.)\n\nTo kick off this process, just:\n\n```\npnpm tauri build\n```\n\nAfter some time, the process will end and you can see the results in the `./src-tauri/target/release` folder.\n\n## What does the End-User flow look like?\n\nEnd users will be provided with binaries in ways that are appropriate for their systems. Whether macOS, Linux, or Windows, direct download or store installations - they will be able to follow procedures for installing and removing that they are used to.\n\n## What does the Updating flow look like?\n\nWhen a new version is ready, the developer publishes the new signed artifacts to a server (that they have configured within `tauri.conf.json`).\n\nThe application can poll this server to see if there is a new release. When there is a new release, the user is prompted to update. The application update is downloaded, verified (checksum & signature), updated, closed, and restarted.\n\n## License\n\nTauri itself is licensed under MIT or Apache-2.0. If you repackage it and modify any source code, it is your responsibility to verify that you are complying with all upstream licenses. Tauri is provided AS-IS with no explicit claim for suitability for any purpose.\n\nHere you may peruse our [Software Bill of Materials](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri).\n\n<!-- File: examples/commands/tauri.conf.json (Tokens: ~234 | Category: anthropic-skill) -->\n{\n  \"$schema\": \"../../crates/tauri-schema-generator/schemas/config.schema.json\",\n  \"productName\": \"Commands\",\n  \"version\": \"0.1.0\",\n  \"identifier\": \"com.tauri.dev\",\n  \"build\": {\n    \"frontendDist\": [\"index.html\"]\n  },\n  \"app\": {\n    \"withGlobalTauri\": true,\n    \"windows\": [\n      {\n        \"title\": \"Welcome to Tauri!\",\n        \"width\": 800,\n        \"height\": 600,\n        \"resizable\": true,\n        \"fullscreen\": false\n      }\n    ],\n    \"security\": {\n      \"csp\": \"default-src 'self'; connect-src ipc: http://ipc.localhost\"\n    }\n  },\n  \"bundle\": {\n    \"active\": true,\n    \"targets\": \"all\",\n    \"icon\": [\n      \"../.icons/32x32.png\",\n      \"../.icons/128x128.png\",\n      \"../.icons/128x128@2x.png\",\n      \"../.icons/icon.icns\",\n      \"../.icons/icon.ico\"\n    ]\n  }\n}\n\n<!-- File: packages/api/CHANGELOG.md (Tokens: ~17526 | Category: anthropic-skill) -->\n# Changelog\n\n## [2.12.4]\n\n### What's Changed\n\n- [`dc637db65`](https://www.github.com/tauri-apps/tauri/commit/dc637db6573443cc668b06deed1f014c4ac01033) ([#16260](https://www.github.com/tauri-apps/tauri/pull/16260)) Improve menu documentation.\n\n## [2.12.3]\n\n### Bug Fixes\n\n- [`0204f6f3a`](https://www.github.com/tauri-apps/tauri/commit/0204f6f3ae1e8dda195b216b32c3ab1d95d928e0) ([#16244](https://www.github.com/tauri-apps/tauri/pull/16244)) Keep delivering `Channel` messages after the `onmessage` handler throws. The error is rethrown asynchronously so it is still reported as uncaught, instead of leaving every later message queued.\n\n## [2.12.2]\n\n### Bug Fixes\n\n- [`a916205db`](https://www.github.com/tauri-apps/tauri/commit/a916205db2c21a2475502452efa9b70132ae52f3) ([#16195](https://www.github.com/tauri-apps/tauri/pull/16195) by [@alessandrorodi](https://www.github.com/tauri-apps/tauri/../../alessandrorodi)) Return an awaitable cleanup function from `Window.onDragDropEvent`, `Window.onFocusChanged` and `Webview.onDragDropEvent` so rejections from the inner unlisten calls can be handled instead of surfacing as unhandled promise rejections.\n- [`a98038ec7`](https://www.github.com/tauri-apps/tauri/commit/a98038ec78422b821b2e25b26fb71a2805741673) ([#16235](https://www.github.com/tauri-apps/tauri/pull/16235) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix `Menu`/`Submenu` `append`, `prepend`, `insert` not taking `MenuItemOptions` as the typescript type suggests\n\n## [2.12.1]\n\n### Bug Fixes\n\n- [`c9a3cb892`](https://www.github.com/tauri-apps/tauri/commit/c9a3cb892e901e39ca46aad2ff6b14aac21fea0d) ([#16166](https://www.github.com/tauri-apps/tauri/pull/16166) by [@FabianLars](https://www.github.com/tauri-apps/tauri/../../FabianLars)) The `macos-private-api` feature flag / `macOSPrivateAPI` tauri.conf.json value is no longer required to use transparency or fullscreen on macOS.\n\n## [2.12.0]\n\n### New Features\n\n- [`d8d02ba60`](https://www.github.com/tauri-apps/tauri/commit/d8d02ba60c041fb0ab4f5631e8ea21ce7231a95a) ([#14767](https://www.github.com/tauri-apps/tauri/pull/14767)) 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.\n- [`990f77eb2`](https://www.github.com/tauri-apps/tauri/commit/990f77eb2f16b431dd5fd8b1059e6112647cca7a) ([#15961](https://www.github.com/tauri-apps/tauri/pull/15961)) Added `JsImage` type alias and documented its relationship to the Rust `JsImage`\n- [`29265557c`](https://www.github.com/tauri-apps/tauri/commit/29265557c7a42ef6a1f982e0ef738208df1f6dd3) ([#15410](https://www.github.com/tauri-apps/tauri/pull/15410)) Added `noRedirectionBitmap` option to the `Window` and `WebviewWindow` constructors on Windows.\n- [`6edc2f4d4`](https://www.github.com/tauri-apps/tauri/commit/6edc2f4d49d2477649bf170aa2867276c25573da) ([#14926](https://www.github.com/tauri-apps/tauri/pull/14926)) Added `Window::set_fullscreen_on_monitor`, `WebviewWindow::set_fullscreen_on_monitor` and the `setFullscreenOnMonitor` JavaScript API to make a window fullscreen on the monitor containing a given physical position, along with the `core:window:allow-set-fullscreen-on-monitor` permission.\n\n### Enhancements\n\n- [`be019795a`](https://www.github.com/tauri-apps/tauri/commit/be019795abc0316aa53f2519bfbf3e7624b9af2e) ([#14103](https://www.github.com/tauri-apps/tauri/pull/14103)) Add ECMAScript Explicit Resource Management to Resource. You can now use the `using` syntax in supported browsers or with polyfills:\n    \n    ```javascript\n    import { create, BaseDirectory } from \"@tauri-apps/plugin-fs\"\n    ...\n    {\n      await using file = await create(\"foo/bar.txt\", { baseDir: BaseDirectory.AppConfig });\n      await file.write(new TextEncoder().encode(\"Hello world\"));\n      // Before `file` goes out of scope, it is disposed by calling `file[Symbol.asyncDispose]()` and awaited.\n    }\n    ```\n- [`4a5065653`](https://www.github.com/tauri-apps/tauri/commit/4a506565374a6a0b4b595e4cdb6d7db68136d765) ([#14454](https://www.github.com/tauri-apps/tauri/pull/14454)) 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.\n\n### Bug Fixes\n\n- [`4fabe2ff1`](https://www.github.com/tauri-apps/tauri/commit/4fabe2ff1bfe28bbcd3335546caf7db7ff970706) ([#16067](https://www.github.com/tauri-apps/tauri/pull/16067)) 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.\n- [`32efd0232`](https://www.github.com/tauri-apps/tauri/commit/32efd0232d868984ac8de9efebae19e464c7c536) ([#15957](https://www.github.com/tauri-apps/tauri/pull/15957)) `Image.rgba` now returns a more specific type `Promise<Uint8Array<ArrayBuffer>>` instead of the default `Promise<Uint8Array<ArrayBufferLike>`\n\n## \\[2.11.1]\n\n### Enhancements\n\n- [`916782601`](https://www.github.com/tauri-apps/tauri/commit/9167826011cc3d114bf12dfb301968fae479891f) ([#15520](https://www.github.com/tauri-apps/tauri/pull/15520) by [@polw1](https://www.github.com/tauri-apps/tauri/../../polw1)) Document that `Monitor.size`, `Monitor.position` and `Monitor.workArea` are in physical pixels, with examples showing how to convert them to the logical pixels expected by window creation options via `toLogical(monitor.scaleFactor)`.\n\n## \\[2.11.0]\n\n### New Features\n\n- [`074299c08`](https://www.github.com/tauri-apps/tauri/commit/074299c08dd99d2e1c57796f55ab24bc1d3976cc) ([#14307](https://www.github.com/tauri-apps/tauri/pull/14307)) Add Bring All to Front predefined menu item type\n- [`a12142a48`](https://www.github.com/tauri-apps/tauri/commit/a12142a481f7a19b69e88ee36a438b1db71b36f5) ([#14357](https://www.github.com/tauri-apps/tauri/pull/14357)) Add macos support for setting the icon and icon template state in the same step of the main thread, to prevent flickering.\n- [`001c8fe3d`](https://www.github.com/tauri-apps/tauri/commit/001c8fe3d288802de9a8c29cfd2f46f9220d97c5) ([#14722](https://www.github.com/tauri-apps/tauri/pull/14722)) Add a WebView option to control browser-level general autofill behavior. This option does not disable password or credit card autofill. On Windows (WebView2), setting it to true disables the general autofill \"Suggestions\" UI, which may appear even when `autocomplete=\"off\"` is specified on input elements. On Linux, macOS, iOS, and Android, this option is currently unsupported and performs no operation.\n- [`eb0312ea9`](https://www.github.com/tauri-apps/tauri/commit/eb0312ea9e493954298ac0b3fdaae7eafb52750e) ([#15199](https://www.github.com/tauri-apps/tauri/pull/15199)) Propagates the `Event::Suspended` and `Event::Resumed` events from `tao` when they are emitted on mobile targets.\n\n## \\[2.10.1]\n\n### Bug Fixes\n\n- Re-release of `2.10.0` with working assets.\n\n## \\[2.10.0]\n\n### Dependencies\n\n- [`517b81e97`](https://www.github.com/tauri-apps/tauri/commit/517b81e97005d087ca5fc4538d954982fce0f4ac) ([#14876](https://www.github.com/tauri-apps/tauri/pull/14876)) Upgraded to `tauri@2.10`\n\n## \\[2.9.1]\n\n### Bug Fixes\n\n- [`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\n\n## \\[2.9.0]\n\n### New Features\n\n- [`f5851ee00`](https://www.github.com/tauri-apps/tauri/commit/f5851ee00d6d1f4d560a220ca5a728fedd525092) ([#14089](https://www.github.com/tauri-apps/tauri/pull/14089)) Adds the `scrollBarStyle` option to the Webview and WebviewBuilder constructors.\n- [`3397fd9bf`](https://www.github.com/tauri-apps/tauri/commit/3397fd9bfe5f6b1337110149f6c34731b8a44bb3) ([#14133](https://www.github.com/tauri-apps/tauri/pull/14133)) Added `app > onBackButtonPress` for Android back button handling.\n\n### Enhancements\n\n- [`59089723f`](https://www.github.com/tauri-apps/tauri/commit/59089723fc20d66f3f305f2008adeb279bf87462) ([#14091](https://www.github.com/tauri-apps/tauri/pull/14091)) Added a config to set a data_directory relative to the app-specific data dir in JavaScript and `tauri.conf.json`.\n\n### Bug Fixes\n\n- [`08bda64c2`](https://www.github.com/tauri-apps/tauri/commit/08bda64c25008bd45c5b58d06ff14649081a2f5d) ([#14132](https://www.github.com/tauri-apps/tauri/pull/14132)) Fix `core > addPluginListener` failing on command permission check.\n\n## \\[2.8.0]\n\n### New Features\n\n- [`68874c68c`](https://www.github.com/tauri-apps/tauri/commit/68874c68c566638b4c21a3aa67844d1bdaeb6dab) ([#13564](https://www.github.com/tauri-apps/tauri/pull/13564) by [@robertrpf](https://www.github.com/tauri-apps/tauri/../../robertrpf)) Add window focusable attribute and set_focusable API.\n- [`5110a762e`](https://www.github.com/tauri-apps/tauri/commit/5110a762e9db978a28a15400bf76e3c864da2a86) ([#13830](https://www.github.com/tauri-apps/tauri/pull/13830) by [@Sky-walkerX](https://www.github.com/tauri-apps/tauri/../../Sky-walkerX)) Added `Window::setSimpleFullscreen`.\n\n### Enhancements\n\n- [`5ba1c3faa`](https://www.github.com/tauri-apps/tauri/commit/5ba1c3faa468073512bdb5035a01f7f99720fcf0) ([#13722](https://www.github.com/tauri-apps/tauri/pull/13722) by [@s00d](https://www.github.com/tauri-apps/tauri/../../s00d)) Added icon (icon and nativeIcon) support for Submenu:\n\n  - In the Rust API (`tauri`), you can now set an icon for submenus via the builder and dedicated methods.\n  - In the JS/TS API (`@tauri-apps/api`), `SubmenuOptions` now has an `icon` field, and the `Submenu` class provides `setIcon` and `setNativeIcon` methods.\n  - Usage examples are added to the documentation and demo app.\n\n  This is a backwards-compatible feature. Submenus can now display icons just like regular menu items.\n\n## \\[2.7.0]\n\n### New Features\n\n- [`232265c70`](https://www.github.com/tauri-apps/tauri/commit/232265c70e1c213bbb3f84b5541ddc07d330fce1) ([#13209](https://www.github.com/tauri-apps/tauri/pull/13209) by [@kandrelczyk](https://www.github.com/tauri-apps/tauri/../../kandrelczyk)) Added `getBundleType` to the app module.\n\n### Enhancements\n\n- [`96391467e`](https://www.github.com/tauri-apps/tauri/commit/96391467e967c1e3c6475ce75166c58a326116a3) ([#13783](https://www.github.com/tauri-apps/tauri/pull/13783) by [@JosephBrooksbank](https://www.github.com/tauri-apps/tauri/../../JosephBrooksbank)) Allow events emitted with `emit` to be handled correctly by `listen` callbacks when in a mocked environment\n\n### Bug Fixes\n\n- [`152d971bc`](https://www.github.com/tauri-apps/tauri/commit/152d971bcd6c1fdc5716f7d5417dd4df5ce7479f) ([#13744](https://www.github.com/tauri-apps/tauri/pull/13744) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Expose `unregisterCallback`, `runCallback`, `callbacks` in `mockIPC`\n- [`b821796ad`](https://www.github.com/tauri-apps/tauri/commit/b821796add33cca4de72f48882684af487936d02) ([#13810](https://www.github.com/tauri-apps/tauri/pull/13810) by [@asdolo](https://www.github.com/tauri-apps/tauri/../../asdolo)) Add missing `trafficLightPosition` TypeScript type definition\n\n## \\[2.6.0]\n\n### New Features\n\n- [`50ebddaa2`](https://www.github.com/tauri-apps/tauri/commit/50ebddaa2d83033a393a176ba07ef28352b98210) ([#13319](https://www.github.com/tauri-apps/tauri/pull/13319) by [@kingsword09](https://www.github.com/tauri-apps/tauri/../../kingsword09)) Expose the `setAutoResize` API for webviews in `@tauri-apps/api`.\n- [`267368fd4`](https://www.github.com/tauri-apps/tauri/commit/267368fd4f83e0a71dfb1b72a66d56592a2066bc) ([#13276](https://www.github.com/tauri-apps/tauri/pull/13276) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `Monitor.workArea` field.\n\n### Bug Fixes\n\n- [`23b9da75b`](https://www.github.com/tauri-apps/tauri/commit/23b9da75b91379cca9520bc53b10fdf39ebae241) ([#13324](https://www.github.com/tauri-apps/tauri/pull/13324) by [@kingsword09](https://www.github.com/tauri-apps/tauri/../../kingsword09)) Fixed path joining behavior where `path.join('', 'a')` incorrectly returns \"/a\" instead of \"a\".\n- [`b985eaf0a`](https://www.github.com/tauri-apps/tauri/commit/b985eaf0a231ea570e36d686c665cddbc76ab4f6) ([#13306](https://www.github.com/tauri-apps/tauri/pull/13306) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Immediately unregister event listener when the unlisten function is called.\n\n### What's Changed\n\n- [`b5c549d18`](https://www.github.com/tauri-apps/tauri/commit/b5c549d1898ecdb712822c02dc665cc6771fbd07) ([#13325](https://www.github.com/tauri-apps/tauri/pull/13325) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) `transformCallback` now registers the callbacks inside `window.__TAURI_INTERNALS__.callbacks` instead of directly on `window['_{id}']`\n\n## \\[2.5.0]\n\n### New Features\n\n- [`66e6325f4`](https://www.github.com/tauri-apps/tauri/commit/66e6325f43efa49ec2165c45afec911a1a14ecfb) ([#13136](https://www.github.com/tauri-apps/tauri/pull/13136)) Allow passing the callback as the parameter of constructor of `Channel` so you can use it like this `new Channel((message) => console.log(message))`\n- [`ea36294cb`](https://www.github.com/tauri-apps/tauri/commit/ea36294cbca98f7725c91d1464fd92e77c89698a) ([#13208](https://www.github.com/tauri-apps/tauri/pull/13208)) Added `disableInputAccessoryView: bool` config for iOS.\n- [`c1cd0a2dd`](https://www.github.com/tauri-apps/tauri/commit/c1cd0a2ddb5bc3e99451cbe399b5fc9f0035f571) ([#13090](https://www.github.com/tauri-apps/tauri/pull/13090)) macOS/iOS: add option to disable or enable link previews when building a webview (the webkit api has it enabled by default)\n\n  - `WindowOptions::allowLinkPreview`\n  - `WebviewOptions::allowLinkPreview`\n- [`b072e2b29`](https://www.github.com/tauri-apps/tauri/commit/b072e2b2967640ae4fa1af466ae878c156551edd) ([#9687](https://www.github.com/tauri-apps/tauri/pull/9687)) Add `preventOverflow` config option to prevent the window from overflowing the monitor size on creation\n- [`dd4f13ce4`](https://www.github.com/tauri-apps/tauri/commit/dd4f13ce4b3cd89cde2fa3f18a063c272f215621) ([#13185](https://www.github.com/tauri-apps/tauri/pull/13185)) Added `app.setDockVisibility` for macOS.\n\n### Enhancements\n\n- [`b8f86669a`](https://www.github.com/tauri-apps/tauri/commit/b8f86669ab05f7dbdd15839a20999e63dc43bda6) ([#13145](https://www.github.com/tauri-apps/tauri/pull/13145)) `core.isTauri` now leverages `globalThis` instead of `window` in order to be used in unit tests.\n\n### Bug Fixes\n\n- [`66e6325f4`](https://www.github.com/tauri-apps/tauri/commit/66e6325f43efa49ec2165c45afec911a1a14ecfb) ([#13136](https://www.github.com/tauri-apps/tauri/pull/13136)) Fix `Channel`'s callback attached to `window` never cleaned up\n\n## \\[2.4.1]\n\n### Enhancements\n\n- [`dd1372833`](https://www.github.com/tauri-apps/tauri/commit/dd137283341ce0e6aabfd158d07d77c6feeb920e) ([#13066](https://www.github.com/tauri-apps/tauri/pull/13066) by [@ahaoboy](https://www.github.com/tauri-apps/tauri/../../ahaoboy)) Add a generic to `emit` and `emitTo` functions for the `payload` instead of the previously used type (`unknown`).\n\n## \\[2.4.0]\n\n### New Features\n\n- [`d8059bad3`](https://www.github.com/tauri-apps/tauri/commit/d8059bad3cc922dc369c39ca1cfa49aaec31322e) ([#12900](https://www.github.com/tauri-apps/tauri/pull/12900) by [@Simon-Laux](https://www.github.com/tauri-apps/tauri/../../Simon-Laux)) add `AppHandle.fetch_data_store_identifiers` and `AppHandle.remove_data_store` (macOS and iOS only)\n- [`20c190691`](https://www.github.com/tauri-apps/tauri/commit/20c19069125c89b2d45a2127278c9ffc2df35fc2) ([#12821](https://www.github.com/tauri-apps/tauri/pull/12821) by [@Simon-Laux](https://www.github.com/tauri-apps/tauri/../../Simon-Laux)) Added `WindowOptions::javascriptDisabled` and `WebviewOptions::javascriptDisabled`.\n- [`060de5bbd`](https://www.github.com/tauri-apps/tauri/commit/060de5bbdddca384e3965a8938d89840f27c581d) ([#12837](https://www.github.com/tauri-apps/tauri/pull/12837) by [@niladrix719](https://www.github.com/tauri-apps/tauri/../../niladrix719)) Added `getIdentifier()` function to get the application identifier configured in tauri.conf.json\n- [`be2e6b85f`](https://www.github.com/tauri-apps/tauri/commit/be2e6b85fed226732b4a98f68cc5d72b4f8f5a13) ([#12944](https://www.github.com/tauri-apps/tauri/pull/12944) by [@Simon-Laux](https://www.github.com/tauri-apps/tauri/../../Simon-Laux)) Added `Window#isAlwaysOnTop` and `WebviewWindow#isAlwaysOnTop` methods.\n- [`bcdd51025`](https://www.github.com/tauri-apps/tauri/commit/bcdd510254ebe37827e22a5ffeb944321361e97c) ([#13012](https://www.github.com/tauri-apps/tauri/pull/13012) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) The `path` basename and extname APIs now accept Android content URIs, such as the paths returned by the dialog plugin.\n\n### Bug Fixes\n\n- [`3a74dc8f3`](https://www.github.com/tauri-apps/tauri/commit/3a74dc8f3421112b1d0a32b6a432606b1f33cc25) ([#12935](https://www.github.com/tauri-apps/tauri/pull/12935) by [@tk103331](https://www.github.com/tauri-apps/tauri/../../tk103331)) Fix `Webview.close` always fail with command not found\n\n## \\[2.3.0]\n\n### Enhancements\n\n- [`a2d36b8c3`](https://www.github.com/tauri-apps/tauri/commit/a2d36b8c34a8dcfc6736797ca5cd4665faf75e7e) ([#12181](https://www.github.com/tauri-apps/tauri/pull/12181) by [@bastiankistner](https://www.github.com/tauri-apps/tauri/../../bastiankistner)) Add an option to change the default background throttling policy (currently for WebKit only).\n\n## \\[2.2.0]\n\n### New Features\n\n- [`020ea0556`](https://www.github.com/tauri-apps/tauri/commit/020ea05561348dcd6d2a7df358f8a5190f661ba2) ([#11661](https://www.github.com/tauri-apps/tauri/pull/11661) by [@ahqsoftwares](https://www.github.com/tauri-apps/tauri/../../ahqsoftwares)) Add badging APIs:\n\n  - `Window/WebviewWindow::set_badge_count` for Linux, macOS and IOS.\n  - `Window/WebviewWindow::set_overlay_icon` for Windows Only.\n  - `Window/WebviewWindow::set_badge_label`for macOS Only.\n- [`fc30b20be`](https://www.github.com/tauri-apps/tauri/commit/fc30b20bea125f647db00ca824663f8e1da4d61f) ([#11726](https://www.github.com/tauri-apps/tauri/pull/11726) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `TrayIcon.setShowMenuOnLeftClick` method and deprecate `TrayIcon.setMenuOnLeftClick` to match the Rust API.\n- [`fc30b20be`](https://www.github.com/tauri-apps/tauri/commit/fc30b20bea125f647db00ca824663f8e1da4d61f) ([#11726](https://www.github.com/tauri-apps/tauri/pull/11726) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `TrayIconOptions.showMenuOnLeftClick` field and deprecate `TrayIconOptions.menuOnLeftClick` to match the Rust API.\n\n### Enhancements\n\n- [`fc30b20be`](https://www.github.com/tauri-apps/tauri/commit/fc30b20bea125f647db00ca824663f8e1da4d61f) ([#11726](https://www.github.com/tauri-apps/tauri/pull/11726) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add support for `TrayIconOptions.menuOnLeftClick` option and `TrayIcon.setMenuOnLeftClick` on Windows.\n\n### Bug Fixes\n\n- [`a16796a55`](https://www.github.com/tauri-apps/tauri/commit/a16796a55592cf5be80043edfbb630dd2e32efab) ([#12069](https://www.github.com/tauri-apps/tauri/pull/12069) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix `Channel` never calls `onmessage` in some cases\n- [`12a48d1e2`](https://www.github.com/tauri-apps/tauri/commit/12a48d1e26a83c3915eaa0687b196fbc8f2d457a) ([#11741](https://www.github.com/tauri-apps/tauri/pull/11741) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Fix error when calling `PredefinedMenuItem.new` to create an `About` menu item that uses an `Image` instance for the about icon.\n- [`12a48d1e2`](https://www.github.com/tauri-apps/tauri/commit/12a48d1e26a83c3915eaa0687b196fbc8f2d457a) ([#11741](https://www.github.com/tauri-apps/tauri/pull/11741) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Fix error when calling `IconMenuItem.new` using an `Image` instance for the icon.\n- [`b63262cd4`](https://www.github.com/tauri-apps/tauri/commit/b63262cd4d6a3667ca1664607a0a5444ad79fe0e) ([#11724](https://www.github.com/tauri-apps/tauri/pull/11724) by [@FabianLars](https://www.github.com/tauri-apps/tauri/../../FabianLars)) Removed the generic in the type of the callback function argument in `mockIPC` which prevented its proper use in tests using TypeScript.\n- [`a6e84f7d2`](https://www.github.com/tauri-apps/tauri/commit/a6e84f7d2c1d5fdc65901fce683502be3f47833f) ([#11835](https://www.github.com/tauri-apps/tauri/pull/11835) by [@ilittlebig](https://www.github.com/tauri-apps/tauri/../../ilittlebig)) Fix error where using `isAbsolute` would return `Command not found`.\n\n## \\[2.1.1]\n\n### Bug Fixes\n\n- [`7f81f0523`](https://www.github.com/tauri-apps/tauri/commit/7f81f052365675721312aafba297a7b67fb872d2) Fix regression in `toLogical` and `toPhysical` for position types in `dpi` module returning incorrect `y` value.\n- [`e8a50f6d7`](https://www.github.com/tauri-apps/tauri/commit/e8a50f6d760fad4529e7abb400302a1b487f11dd) ([#11645](https://www.github.com/tauri-apps/tauri/pull/11645)) Fix integer values of `BasDirectory.Home` and `BaseDirectory.Font` regression which broke path APIs in JS.\n\n## \\[2.1.0]\n\n### New Features\n\n- [`5c4b83084`](https://www.github.com/tauri-apps/tauri/commit/5c4b830843ab085f8ff9db9e08d832223b027e4e) ([#11191](https://www.github.com/tauri-apps/tauri/pull/11191) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Improved support for `dpi` module types to allow these types to be used without manual conversions with `invoke`:\n\n  - Added `SERIALIZE_TO_IPC_FN` const in `core` module which can be used to implement custom IPC serialization for types passed to `invoke`.\n  - Added `Size` and `Position` classes in `dpi` module.\n  - Implementd `SERIALIZE_TO_IPC_FN` method on `PhysicalSize`, `PhysicalPosition`, `LogicalSize` and `LogicalPosition` to convert it into a valid IPC-compatible value that can be deserialized correctly on the Rust side into its equivalent struct.\n- [`4d545ab3c`](https://www.github.com/tauri-apps/tauri/commit/4d545ab3ca228c8a21b966b709f84a0da2864479) ([#11486](https://www.github.com/tauri-apps/tauri/pull/11486) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Added `Webview::setBackgroundColor`, `WebviewWindow::setBackgroundColor` APIs to set the window background color dynamically\n  and a `backgroundColor` window option to set the background color on window creation.\n- [`cbc095ec5`](https://www.github.com/tauri-apps/tauri/commit/cbc095ec5fe7de29b5c9265576d4e071ec159c1c) ([#11451](https://www.github.com/tauri-apps/tauri/pull/11451) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `app > windows > devtools` config option and when creating the webview from JS, to enable or disable devtools for a specific webview.\n- [`2a75c64b5`](https://www.github.com/tauri-apps/tauri/commit/2a75c64b5431284e7340e8743d4ea56a62c75466) ([#11469](https://www.github.com/tauri-apps/tauri/pull/11469) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Added `windowClassname` option, when constructing a `Webview` or `WebviewWindow`, to specify the name of the window class on Windows.\n\n### Bug Fixes\n\n- [`54cbf59b5`](https://www.github.com/tauri-apps/tauri/commit/54cbf59b5a572570a47237a3b5e6505f2a9e5d5d) ([#11441](https://www.github.com/tauri-apps/tauri/pull/11441) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Fix submenu created as a menu item instead of a submenu when created by using an object in the `items` field in the options object passed to `Menu.new` or `Submenu.new`.\n\n## \\[2.0.3]\n\n### Bug Fixes\n\n- [`fbb45c674`](https://www.github.com/tauri-apps/tauri/commit/fbb45c674ca92fbbe04f1a8360e5f2e477dd4297) ([#11423](https://www.github.com/tauri-apps/tauri/pull/11423) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Fixes `addPluginListener` not working.\n\n### What's Changed\n\n- [`2e88633ba`](https://www.github.com/tauri-apps/tauri/commit/2e88633ba4da8fc289c6d8a29c36f3327f9b576e) ([#11369](https://www.github.com/tauri-apps/tauri/pull/11369) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Remove references to no longer used `__TAURI_INTERNALS__.metadata.windows` and `__TAURI_INTERNALS__.metadata.webviews`.\n\n## \\[2.0.2]\n\n### What's Changed\n\n- [`e968b3d25`](https://www.github.com/tauri-apps/tauri/commit/e968b3d2527b8edf7653e6cf7284dc4a8889b5fe) ([#11219](https://www.github.com/tauri-apps/tauri/pull/11219) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Actually publish package with the latest tag.\n\n## \\[2.0.1]\n\n### What's Changed\n\n- [`be683e2ac`](https://www.github.com/tauri-apps/tauri/commit/be683e2ac36df9c51a5c050d9d500247bd019090) ([#11199](https://www.github.com/tauri-apps/tauri/pull/11199) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Publish package with the latest NPM tag.\n\n## \\[2.0.0]\n\n### What's Changed\n\n- [`637285790`](https://www.github.com/tauri-apps/tauri/commit/6372857905ae9c0aedb7f482ddf6cf9f9836c9f2) Promote to v2 stable!\n\n## \\[2.0.0-rc.6]\n\n### New Features\n\n- [`9014a3f17`](https://www.github.com/tauri-apps/tauri/commit/9014a3f1765ca406ea5c3e5224267a79c52cd53d) ([#11066](https://www.github.com/tauri-apps/tauri/pull/11066) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `WebviewWindow.clearAllBrowsingData` and `Webview.clearAllBrowsingData` to clear the webview browsing data.\n- [`95df53a2e`](https://www.github.com/tauri-apps/tauri/commit/95df53a2ed96873cd35a4b14a5e312d07e4e3004) ([#11143](https://www.github.com/tauri-apps/tauri/pull/11143) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Add the ability to set theme dynamically using `Window.setTheme` or `setTheme` function from the `app` module\n- [`d9d2502b4`](https://www.github.com/tauri-apps/tauri/commit/d9d2502b41e39efde679e30c8955006e2ba9ea64) ([#11140](https://www.github.com/tauri-apps/tauri/pull/11140) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `Webview.hide` and `Webview.show` methods.\n- [`de7414aab`](https://www.github.com/tauri-apps/tauri/commit/de7414aab935e45540594ea930eb60bae4dbc979) ([#11154](https://www.github.com/tauri-apps/tauri/pull/11154) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `Window::setEnabled` and `Window::isEnabled` methods\n\n### Bug Fixes\n\n- [`948772a65`](https://www.github.com/tauri-apps/tauri/commit/948772a657eb3caf20843628abac9109e3b67d41) ([#11114](https://www.github.com/tauri-apps/tauri/pull/11114) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Change the `button_state` tray event field to camelCase `buttonState`.\n\n### Breaking Changes\n\n- [`0b4495996`](https://www.github.com/tauri-apps/tauri/commit/0b4495996d3131a5ee80fbb2c71a28203e491ee7) ([#11121](https://www.github.com/tauri-apps/tauri/pull/11121) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Simplified emitted tray event JS value and updated `TrayIconEvent` type definition to match it.\n\n## \\[2.0.0-rc.5]\n\n### New Features\n\n- [`ddf69157b`](https://www.github.com/tauri-apps/tauri/commit/ddf69157b54249f3321ca72db6703812019f1ab9) ([#11031](https://www.github.com/tauri-apps/tauri/pull/11031) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add `toPhysical` method on `LogicalPositon` and `LogicalSize` classes.\n\n## \\[2.0.0-rc.4]\n\n### Enhancements\n\n- [`f81929e25`](https://www.github.com/tauri-apps/tauri/commit/f81929e25104aa1091e464bd012c80649dedf9e5) ([#10799](https://www.github.com/tauri-apps/tauri/pull/10799) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Added `PermissionState`, `checkPermissions` and `requestPermissions` base APIs to the core module, designed for plugin authors to extend.\n\n### Bug Fixes\n\n- [`fbe76a955`](https://www.github.com/tauri-apps/tauri/commit/fbe76a955a63af9fb33f66d5f747caf858cf179b) ([#10797](https://www.github.com/tauri-apps/tauri/pull/10797) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Uint8Arrays and ArrayBuffers are now properly serialized as an array of numbers.\n\n## \\[2.0.0-rc.3]\n\n### What's Changed\n\n- [`f4d5241b3`](https://www.github.com/tauri-apps/tauri/commit/f4d5241b377d0f7a1b58100ee19f7843384634ac) ([#10731](https://www.github.com/tauri-apps/tauri/pull/10731) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Update documentation icon path.\n\n## \\[2.0.0-rc.2]\n\n### Bug Fixes\n\n- [`c689521a7`](https://www.github.com/tauri-apps/tauri/commit/c689521a7674b6562b5dfd4f5cacd12138d99d85) ([#10681](https://www.github.com/tauri-apps/tauri/pull/10681) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Fix tslib path in dist.\n\n## \\[2.0.0-rc.1]\n\n### Breaking Changes\n\n- [`b6dca99ff`](https://www.github.com/tauri-apps/tauri/commit/b6dca99fff73816a39380b288c299b47b493cfdb) ([#10630](https://www.github.com/tauri-apps/tauri/pull/10630) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Changed `WebviewWindow.getAll`, `WebviewWindow.getByLabel`, `getAllWebviewWindows`,\n  `Window.getAll`, `Window.getByLabel`, `getAllWindows`,\n  `Webview.getAll`, `Webview.getByLabel`, `getAllWebviews`\n  to be async so their return value are synchronized with the state from the Rust side,\n  meaning new and destroyed windows are reflected.\n\n## \\[2.0.0-rc.0]\n\n### Changes\n\n- Promoted to RC!\n\n## \\[2.0.0-beta.16]\n\n### New Features\n\n- [`da25f7353`](https://www.github.com/tauri-apps/tauri/commit/da25f7353070477ba969851e974379d7666d6806) ([#10242](https://www.github.com/tauri-apps/tauri/pull/10242) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Add APIs to enable setting window size constraints separately:\n\n  - Added `WindowSizeConstraints` interface in `window` and `webviewWindow` modules.\n  - Added `Window.setSizeConstraints` and `WebviewWindow.setSizeConstraints`\n\n### Bug Fixes\n\n- [`3c17fb64f`](https://www.github.com/tauri-apps/tauri/commit/3c17fb64fd822597d5cc16ee7e7b3f9e1023637b) ([#10277](https://www.github.com/tauri-apps/tauri/pull/10277) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix `Webview.reparent` pointing to `set_webview_focus` instead of `reparent` Rust API\n- [`da25f7353`](https://www.github.com/tauri-apps/tauri/commit/da25f7353070477ba969851e974379d7666d6806) ([#10242](https://www.github.com/tauri-apps/tauri/pull/10242) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Apply `minWidth`, `minHieght`, `maxWidth` and `maxHeight` constraints separately, which fixes a long standing bug where these constraints were never applied unless width and height were constrained together.\n\n## \\[2.0.0-beta.15]\n\n### New Features\n\n- [`7bc6a2a1d`](https://www.github.com/tauri-apps/tauri/commit/7bc6a2a1d6d2c5406d91cac94d33bce76443c28f) ([#9788](https://www.github.com/tauri-apps/tauri/pull/9788) by [@pewsheen](https://www.github.com/tauri-apps/tauri/../../pewsheen)) Add a new method to set title bar style dynamically on macOS.\n\n### Enhancements\n\n- [`080b6e127`](https://www.github.com/tauri-apps/tauri/commit/080b6e12720b89d839c686d7067cc94d276ed7e4) ([#10246](https://www.github.com/tauri-apps/tauri/pull/10246) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Use `EventName` on `Window`, `Webview` and `WebviewWindow`'s `once` so you can get auto complete for tauri's built-in events\n\n### Bug Fixes\n\n- [`080b6e127`](https://www.github.com/tauri-apps/tauri/commit/080b6e12720b89d839c686d7067cc94d276ed7e4) ([#10246](https://www.github.com/tauri-apps/tauri/pull/10246) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix `once` doesn't detached after one callback if event handler throws\n\n### Breaking Changes\n\n- [`261c9f942`](https://www.github.com/tauri-apps/tauri/commit/261c9f942de9a598b5c6cc504de6bddd1306113b) ([#10170](https://www.github.com/tauri-apps/tauri/pull/10170) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Renamed drag and drop events in `TauriEvent` enum to better convey when they are triggered:\n\n  - `TauriEvent.DRAG` -> `TauriEvent.DRAG_ENTER`\n  - `TauriEvent.DROP_OVER` -> `TauriEvent.DRAG_OVER`\n  - `TauriEvent.DROP` -> `TauriEvent.DRAG_DROP`\n  - `TauriEvent.DROP_CANCELLED` -> `TauriEvent::DRAG_LEAVE`\n\n  Also the `type` field values in `Window/Webview/WebviewWindow.onDropEvent` and `DragDropEvent` have changed:\n\n  - `dragged` -> `enter`\n  - `dragOver` -> `over`\n  - `dropped` -> `drop`\n  - `cancelled` -> `leave`\n- [`2b1ceb40d`](https://www.github.com/tauri-apps/tauri/commit/2b1ceb40d345aef42dd79438fa69ca7989ee0194) ([#10229](https://www.github.com/tauri-apps/tauri/pull/10229) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Renamed the JS `getCurrent` and `getAll` functions to a clearer name to avoid ambiguity:\n\n  - `getCurrent` in `window` module has been renamed to `getCurrentWindow`\n  - `getCurrent` in `webview` module has been renamed to `getCurrentWebview`\n  - `getCurrent` in `webviewWindow` module has been renamed to `getCurrentWebviewWindow`\n  - `getAll` in `window` module has been renamed to `getAllWindows`\n  - `getAll` in `webview` module has been renamed to `getAllWebviews`\n  - `getAll` in `webviewWindow` module has been renamed to `getAllWebviewWindows`\n\n## \\[2.0.0-beta.14]\n\n### New Features\n\n- [`148f04887`](https://www.github.com/tauri-apps/tauri/commit/148f048871caee21498b236c058b8890f2b66cc7) ([#9979](https://www.github.com/tauri-apps/tauri/pull/9979)) Add `defaultWindowIcon` to the JS `app` module to retrieve the default window icon in JS.\n\n### Bug Fixes\n\n- [`c98f385cb`](https://www.github.com/tauri-apps/tauri/commit/c98f385cb5da4d72968df24b1fc0b58212d59653) ([#10044](https://www.github.com/tauri-apps/tauri/pull/10044)) Export `mocks` module in `@tauri-apps/api` npm package.\n\n## \\[2.0.0-beta.13]\n\n### Breaking Changes\n\n- [`c4410daa8`](https://www.github.com/tauri-apps/tauri/commit/c4410daa85616340e911c8243fdaa69e6906fd49)([#9777](https://www.github.com/tauri-apps/tauri/pull/9777)) This release contains breaking changes to the tray event structure because of newly added events:\n\n  - Changed `TrayIconEvent` to be an enum instead of a struct.\n  - Added `MouseButtonState` and `MouseButton` enums.\n  - Removed `ClickType` enum and replaced it with `MouseButton` enum.\n  - Added `MouseButtonState` enum.\n\n## \\[2.0.0-beta.12]\n\n### New Features\n\n- [`ec0e092ec`](https://www.github.com/tauri-apps/tauri/commit/ec0e092ecd23b547c756c7476f23a0d95be6db80)([#9770](https://www.github.com/tauri-apps/tauri/pull/9770)) Add `monitorFromPoint` function in `window` module to get the monitor from a given point.\n\n## \\[2.0.0-beta.11]\n\n### Bug Fixes\n\n- [`aa080696e`](https://www.github.com/tauri-apps/tauri/commit/aa080696e0952abff416dd9088d519eaf2587a3a)([#9618](https://www.github.com/tauri-apps/tauri/pull/9618)) Fix `isTauri` incorrect return type.\n\n## \\[2.0.0-beta.10]\n\n### New Features\n\n- [`477bb8cd4`](https://www.github.com/tauri-apps/tauri/commit/477bb8cd4ea88ade3f6c1f268ad1701a68150161)([#9297](https://www.github.com/tauri-apps/tauri/pull/9297)) Add `cursorPosition` function in `window` module to get the current cursor position.\n\n## \\[2.0.0-beta.9]\n\n### New Features\n\n- [`70c51371e`](https://www.github.com/tauri-apps/tauri/commit/70c51371e01184223312de3dba8030394a5a9406)([#9539](https://www.github.com/tauri-apps/tauri/pull/9539)) Add `isTauri` function in `core` module to check whether running inside tauri or not.\n\n### Bug Fixes\n\n- [`be7eab209`](https://www.github.com/tauri-apps/tauri/commit/be7eab209c60c45e140f7bcb4bab1037d62d4c03)([#9486](https://www.github.com/tauri-apps/tauri/pull/9486)) Set the `exports > types` package.json field.\n- [`cf615e8e4`](https://www.github.com/tauri-apps/tauri/commit/cf615e8e4d5008ee1ac3f77e530ba26fb91e8977)([#9463](https://www.github.com/tauri-apps/tauri/pull/9463)) Fixes a bug when processing channel messages out of order.\n- [`35b25f7e5`](https://www.github.com/tauri-apps/tauri/commit/35b25f7e5c0fe03af4ed3582e22a626863f035f0)([#9530](https://www.github.com/tauri-apps/tauri/pull/9530)) Do not use JS optional chaining to prevent script errors on older webviews such as macOS 10.14.\n\n## \\[2.0.0-beta.8]\n\n### New Features\n\n- [`58a7a552d`](https://www.github.com/tauri-apps/tauri/commit/58a7a552d739b77b71d61af11c53f7f2dc7a6e7e)([#9378](https://www.github.com/tauri-apps/tauri/pull/9378)) Added the `set_zoom` function to the webview API.\n- [`58a7a552d`](https://www.github.com/tauri-apps/tauri/commit/58a7a552d739b77b71d61af11c53f7f2dc7a6e7e)([#9378](https://www.github.com/tauri-apps/tauri/pull/9378)) Add `zoom_hotkeys_enabled` to enable browser native zoom controls on creating webviews.\n\n### Bug Fixes\n\n- [`48a7a78f8`](https://www.github.com/tauri-apps/tauri/commit/48a7a78f8094d08e5e403e88050391642d29151b)([#9376](https://www.github.com/tauri-apps/tauri/pull/9376)) Fix `Window/Webview/WebviewWindow.setSize`, `Window/Webview/WebviewWindow.setPostion`, `Window/WebviewWindow.setMinSize`, `Window/WebviewWindow.setMaxSize`, `Window/WebviewWindow.setCursorPosition` and `Menu/Submenu.popup` methods failing with invalid args.\n\n## \\[2.0.0-beta.7]\n\n### Bug Fixes\n\n- [`c33f6e6cf`](https://www.github.com/tauri-apps/tauri/commit/c33f6e6cf35a0d34b5598875a2e5b642a01c8b38)([#9211](https://www.github.com/tauri-apps/tauri/pull/9211)) Re-added the `TauriEvent.WINDOW_CREATED` (`tauri://window-created`) event.\n\n### Breaking Changes\n\n- [`06833f4fa`](https://www.github.com/tauri-apps/tauri/commit/06833f4fa8e63ecc55fe3fc874a9e397e77a5709)([#9100](https://www.github.com/tauri-apps/tauri/pull/9100)) Rename `FileDrop` to `DragDrop` on structs, enums and enum variants. Also renamed `file_drop` to `drag_drop` on fields and function names.\n\n## \\[2.0.0-beta.6]\n\n### New Features\n\n- [`acdd76833`](https://www.github.com/tauri-apps/tauri/commit/acdd76833db6d81f4012418133d0042220de100b)([#9155](https://www.github.com/tauri-apps/tauri/pull/9155)) Add `TrayIcon.getById` and `TrayIcon.removeById` static methods.\n\n### Enhancements\n\n- [`ea0242db4`](https://www.github.com/tauri-apps/tauri/commit/ea0242db4aa6c127d2bb4a2e275000ba47c9e68c)([#9179](https://www.github.com/tauri-apps/tauri/pull/9179)) The `Image` constructor is now public (for internal use only).\n\n### Bug Fixes\n\n- [`379cc2b35`](https://www.github.com/tauri-apps/tauri/commit/379cc2b3547395474d4b66b4222679cf4538428d)([#9165](https://www.github.com/tauri-apps/tauri/pull/9165)) Fix `basename(path, 'ext')` JS API when removing all occurances of `ext` where it should only remove the last one.\n\n### Breaking Changes\n\n- [`ea0242db4`](https://www.github.com/tauri-apps/tauri/commit/ea0242db4aa6c127d2bb4a2e275000ba47c9e68c)([#9179](https://www.github.com/tauri-apps/tauri/pull/9179)) `Image::rgba()` now returns `Promise<Uint8Array>`.\n- [`ea0242db4`](https://www.github.com/tauri-apps/tauri/commit/ea0242db4aa6c127d2bb4a2e275000ba47c9e68c)([#9179](https://www.github.com/tauri-apps/tauri/pull/9179)) Removed `width` and `height` methods on the JS `Image` class, use `size` instead.\n\n## \\[2.0.0-beta.5]\n\n### Breaking Changes\n\n- [`db0a24a97`](https://www.github.com/tauri-apps/tauri/commit/db0a24a973191752aeecfbd556faa254b0f17e79)([#9132](https://www.github.com/tauri-apps/tauri/pull/9132)) Remove the `Image.fromPngBytes` and `Image.fromIcoBytes` APIs. Use `Image.fromBytes` instead.\n\n## \\[2.0.0-beta.4]\n\n### New Features\n\n- [`d1e77acd8`](https://www.github.com/tauri-apps/tauri/commit/d1e77acd8dfdf554b90b542513a58a2de1ef2360)([#9011](https://www.github.com/tauri-apps/tauri/pull/9011)) Add a new `Image` type in Rust and JS.\n\n### Enhancements\n\n- [`e62ca4ee9`](https://www.github.com/tauri-apps/tauri/commit/e62ca4ee95f4308a6ad128d0f100c85634e28223)([#9070](https://www.github.com/tauri-apps/tauri/pull/9070)) Added a mechanism to preserve channel message order.\n\n## \\[2.0.0-beta.3]\n\n### New Features\n\n- [`fdcaf935`](https://www.github.com/tauri-apps/tauri/commit/fdcaf935fa75ecfa2806939c4faad4fe9e880386)([#8939](https://www.github.com/tauri-apps/tauri/pull/8939)) Added the `reparent` function to the webview API.\n\n## \\[2.0.0-beta.2]\n\n### Breaking Changes\n\n- [`361ec37f`](https://www.github.com/tauri-apps/tauri/commit/361ec37fd4a5caa5b6630b9563ef079f53c6c336)([#8932](https://www.github.com/tauri-apps/tauri/pull/8932)) Removed the `unityUri` option from the progress bar state, no longer required.\n\n## \\[2.0.0-beta.1]\n\n### New Features\n\n- [`16e550ec`](https://www.github.com/tauri-apps/tauri/commit/16e550ec1503765158cdc3bb2a20e70ec710e981)([#8844](https://www.github.com/tauri-apps/tauri/pull/8844)) Add a new `webviewWindow` module that exports `WebviewWindow` class and related methods such as `getCurrent` and `getAll`.\n- [`16e550ec`](https://www.github.com/tauri-apps/tauri/commit/16e550ec1503765158cdc3bb2a20e70ec710e981)([#8844](https://www.github.com/tauri-apps/tauri/pull/8844)) Add `Window.onFileDropEvent` method.\n\n### Breaking Changes\n\n- [`16e550ec`](https://www.github.com/tauri-apps/tauri/commit/16e550ec1503765158cdc3bb2a20e70ec710e981)([#8844](https://www.github.com/tauri-apps/tauri/pull/8844)) Renamed the following enum variants of `TauriEvent` enum:\n\n  - `TauriEvent.WEBVIEW_FILE_DROP` -> `TauriEvent.FILE_DROP`\n  - `TauriEvent.WEBVIEW_FILE_DROP_HOVER` -> `TauriEvent.FILE_DROP_HOVER`\n  - `TauriEvent.WEBVIEW_FILE_DROP_CANCELLED` -> `TauriEvent.FILE_DROP_CANCELLED`\n- [`16e550ec`](https://www.github.com/tauri-apps/tauri/commit/16e550ec1503765158cdc3bb2a20e70ec710e981)([#8844](https://www.github.com/tauri-apps/tauri/pull/8844)) Move `WebviewWindow` class from `webview` module to a new `webviewWindow` module.\n\n## \\[2.0.0-beta.0]\n\n### New Features\n\n- [`74a2a603`](https://www.github.com/tauri-apps/tauri/commit/74a2a6036a5e57462f161d728cbd8a6f121028ca)([#8661](https://www.github.com/tauri-apps/tauri/pull/8661)) Implement access control list for IPC usage.\n- [`a093682d`](https://www.github.com/tauri-apps/tauri/commit/a093682d2df7169b024bb4f736c7f1fd2ea8b327)([#8621](https://www.github.com/tauri-apps/tauri/pull/8621)) Added `emitTo` api to `event` module which is equivalent to the rust `emit_to` method. Also added `emitTo` method on `Window`, `Webivew` and `WebviewWindow` classes.\n- [`a2fc3a63`](https://www.github.com/tauri-apps/tauri/commit/a2fc3a63579ca739646d696870cbecbb3a169d33)([#8657](https://www.github.com/tauri-apps/tauri/pull/8657)) Add `visibleOnAllWorkspaces` option when creating the window in JS and `Window.setVisibleOnAllWorkspaces` method.\n- [`7f033f6d`](https://www.github.com/tauri-apps/tauri/commit/7f033f6dcd54c69a4193765a5c1584755ba92c61)([#8537](https://www.github.com/tauri-apps/tauri/pull/8537)) Add `Window.startResizeDragging`.\n- [`9eaeb5a8`](https://www.github.com/tauri-apps/tauri/commit/9eaeb5a8cd95ae24b5e66205bdc2763cb7f965ce)([#8622](https://www.github.com/tauri-apps/tauri/pull/8622)) Add `parent` option when creating a window.\n- [`af610232`](https://www.github.com/tauri-apps/tauri/commit/af6102327376884364b2075b468bdf08ee0d02aa)([#8710](https://www.github.com/tauri-apps/tauri/pull/8710)) Added `Window::destroy` to force close a window.\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) Added support to multiwebview via the new `window` and `webview` modules.\n\n### Breaking Changes\n\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) Removed event callback's `windowLabel`.\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) The event target is now an object so you can target either a window or a webview.\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) Moved webview-specific APIs from the `Window` class to the `Webview` class.\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) Renamed `TauriEvent.WINDOW_FILE_DROP` to `TauriEvent.WEBVIEW_FILE_DROP`, `TauriEvent.WINDOW_FILE_DROP_HOVER` to `TauriEvent.WEBVIEW_FILE_DROP_HOVER` and `TauriEvent.WINDOW_FILE_DROP_CANCELLED` to `TauriEvent.WEBVIEW_FILE_DROP_CANCELLED`.\n- [`c77b4032`](https://www.github.com/tauri-apps/tauri/commit/c77b40324ea9bf580871fc11aed69ba0c9b6b8cf)([#8280](https://www.github.com/tauri-apps/tauri/pull/8280)) Added back the `WebviewWindow` API that exposes functionality of a window that hosts a single webview. The dedicated `Window` and `Webview` types are exposed for multiwebview features.\n- [`af610232`](https://www.github.com/tauri-apps/tauri/commit/af6102327376884364b2075b468bdf08ee0d02aa)([#8710](https://www.github.com/tauri-apps/tauri/pull/8710)) `Window::close` now triggers a close requested event instead of forcing the window to be closed.\n\n## \\[2.0.0-alpha.14]\n\n- [`97e33412`](https://www.github.com/tauri-apps/tauri/commit/97e334129956159bbd60e1c531b6acd3bc6139a6)([#8534](https://www.github.com/tauri-apps/tauri/pull/8534)) `mockIPC` and `mockWindows` no longer crash if `window.__TAURI_INTERNALS__` is undefined.\n\n## \\[2.0.0-alpha.13]\n\n### New Features\n\n- [`428ea652`](https://www.github.com/tauri-apps/tauri/commit/428ea6524c70545be33aac96d7c22b21f25caa4c)([#8370](https://www.github.com/tauri-apps/tauri/pull/8370)) Exposed `Resource` class which should be extended for Rust-backed resources created through `tauri::Manager::resources_table`.\n\n### Bug Fixes\n\n- [`ef21b681`](https://www.github.com/tauri-apps/tauri/commit/ef21b681e237a80592c9118b9c023c1d57231bac)([#8391](https://www.github.com/tauri-apps/tauri/pull/8391)) Fix a regression where typescript could not find types when using `\"moduleResolution\": \"node\"`\n- [`46451aee`](https://www.github.com/tauri-apps/tauri/commit/46451aee1318f63a6cd861a12b63929b38c64eb6)([#8268](https://www.github.com/tauri-apps/tauri/pull/8268)) Add top-level `main`, `module` and `types` fields in `package.json` to be compliant with typescripts's `\"moduleResolution\": \"node\"`\n\n### Breaking Changes\n\n- [`c2ad4d28`](https://www.github.com/tauri-apps/tauri/commit/c2ad4d28c481b2d7ed643458db56210cd44a2e0c)([#8273](https://www.github.com/tauri-apps/tauri/pull/8273)) Changed former `tauri` module from `primitives` to `core`.\n\n## \\[2.0.0-alpha.12]\n\n### New Features\n\n- [`f93148ea`](https://www.github.com/tauri-apps/tauri/commit/f93148eac05a1428e038bd9351a8149b2464ff4c)([#7709](https://www.github.com/tauri-apps/tauri/pull/7709)) Add `tray` and `menu` modules to create and manage tray icons and menus from Javascript.\n\n### Enhancements\n\n- [`b7add750`](https://www.github.com/tauri-apps/tauri/commit/b7add750ef9f32d959de613ab35063ff240281c2)([#8204](https://www.github.com/tauri-apps/tauri/pull/8204)) Added `position` field to the `FileDropEvent` payload.\n\n## \\[2.0.0-alpha.11]\n\n### Bug Fixes\n\n- [`822bf15d`](https://www.github.com/tauri-apps/tauri/commit/822bf15d6b258556b689ca55ac2ac224897e913a)([#8130](https://www.github.com/tauri-apps/tauri/pull/8130)) Fix tslib missing in the distributed api package.\n\n## \\[2.0.0-alpha.10]\n\n### Enhancements\n\n- [`c6c59cf2`](https://www.github.com/tauri-apps/tauri/commit/c6c59cf2373258b626b00a26f4de4331765dd487) Pull changes from Tauri 1.5 release.\n\n### Bug Fixes\n\n- [`287066b2`](https://www.github.com/tauri-apps/tauri/commit/287066b279f503dd09bfd43d5da37d1f471451fb)([#8071](https://www.github.com/tauri-apps/tauri/pull/8071)) No longer crashing in tests without mocks when `clearMocks` is defined in `afterEach` hook.\n\n## \\[2.0.0-alpha.9]\n\n### New Features\n\n- [`c1ec0f15`](https://www.github.com/tauri-apps/tauri/commit/c1ec0f155118527361dd5645d920becbc8afd569)([#7933](https://www.github.com/tauri-apps/tauri/pull/7933)) Added `setAlwaysOnBottom` function on `Window` and the `alwaysOnBottom` option when creating a window.\n- [`fb10b879`](https://www.github.com/tauri-apps/tauri/commit/fb10b87970a43320ef4d14564f45e7579b774eaf)([#8039](https://www.github.com/tauri-apps/tauri/pull/8039)) Add the `app` module back.\n- [`ed32257d`](https://www.github.com/tauri-apps/tauri/commit/ed32257d044f90b5eb15053efd1667125def2d2b)([#7794](https://www.github.com/tauri-apps/tauri/pull/7794)) On Windows, add `Effect.Tabbed`,`Effect.TabbedDark` and `Effect.TabbedLight` effects.\n- [`c9a9246c`](https://www.github.com/tauri-apps/tauri/commit/c9a9246c37bdf190661355c8ee406dac6c427344)([#8007](https://www.github.com/tauri-apps/tauri/pull/8007)) Add the `window` module back.\n- [`c085adda`](https://www.github.com/tauri-apps/tauri/commit/c085addab58ba851398373c6fd13f9cb026d71e8)([#8009](https://www.github.com/tauri-apps/tauri/pull/8009)) Added the `setProgressBar` API on the `Window` class.\n\n### What's Changed\n\n- [`5c0eeb40`](https://www.github.com/tauri-apps/tauri/commit/5c0eeb40c1003583290ff3aebfa02e2b5f5b9c41)([#7638](https://www.github.com/tauri-apps/tauri/pull/7638)) Updated minimum Node.js version to 18.\n\n### Breaking Changes\n\n- [`a63e71f9`](https://www.github.com/\n\n<!-- File: packages/api/package.json (Tokens: ~596 | Category: anthropic-skill) -->\n{\n  \"name\": \"@tauri-apps/api\",\n  \"version\": \"2.12.4\",\n  \"description\": \"Tauri API definitions\",\n  \"funding\": {\n    \"type\": \"opencollective\",\n    \"url\": \"https://opencollective.com/tauri\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/tauri-apps/tauri.git\"\n  },\n  \"contributors\": [\n    \"Tauri Programme within The Commons Conservancy\"\n  ],\n  \"license\": \"Apache-2.0 OR MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/tauri-apps/tauri/issues\"\n  },\n  \"homepage\": \"https://github.com/tauri-apps/tauri#readme\",\n  \"type\": \"module\",\n  \"main\": \"./index.cjs\",\n  \"module\": \"./index.js\",\n  \"types\": \"./index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": \"./index.js\",\n      \"require\": \"./index.cjs\",\n      \"types\": \"./index.d.ts\"\n    },\n    \"./*\": {\n      \"import\": \"./*.js\",\n      \"require\": \"./*.cjs\",\n      \"types\": \"./*.d.ts\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"scripts\": {\n    \"build\": \"rollup -c --configPlugin typescript\",\n    \"build:debug\": \"rollup -c --configPlugin typescript\",\n    \"npm-pack\": \"pnpm build && cd ./dist && npm pack\",\n    \"npm-publish\": \"pnpm build && cd ./dist && pnpm publish --access public --loglevel debug --no-git-checks\",\n    \"ts:check\": \"tsc --noEmit\",\n    \"eslint:check\": \"eslint src/**/*.ts\",\n    \"eslint:fix\": \"eslint src/**/*.ts --fix\"\n  },\n  \"devDependencies\": {\n    \"@eslint/js\": \"^10.0.1\",\n    \"@rollup/plugin-terser\": \"1.0.0\",\n    \"@rollup/plugin-typescript\": \"12.3.0\",\n    \"@types/eslint\": \"^9.6.1\",\n    \"@types/node\": \"^24.11.0\",\n    \"eslint\": \"^10.0.2\",\n    \"eslint-config-prettier\": \"10.1.8\",\n    \"eslint-plugin-security\": \"4.2.0\",\n    \"globals\": \"^17.4.0\",\n    \"rollup\": \"4.64.10\",\n    \"tslib\": \"^2.8.1\",\n    \"typescript\": \"^6.0.3\",\n    \"typescript-eslint\": \"^8.58.2\"\n  }\n}\n\n<!-- File: packages/api/tsconfig.json (Tokens: ~154 | Category: anthropic-skill) -->\n{\n  \"compilerOptions\": {\n    \"target\": \"es2019\",\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noUnusedLocals\": true,\n    \"noImplicitAny\": true,\n    \"noEmit\": true,\n    \"lib\": [\"es2022\", \"esnext.disposable\", \"dom\"],\n    // This is used only for the dev tooling config files. You should not use node APIs inside `./src`.\n    // We need to composite multiple tsconfigs but it didn't work because of https://github.com/rollup/plugins/issues/1755\n    \"types\": [\"node\"]\n  }\n}\n\n<!-- File: packages/cli/__tests__/fixtures/empty/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Empty Skill\n\nPath: `packages/cli/__tests__/fixtures/empty/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/__tests__/fixtures/empty/package.json)\n\n<!-- File: packages/cli/CHANGELOG.md (Tokens: ~16163 | Category: anthropic-skill) -->\n# Changelog\n\n## [2.12.4]\n\n### Bug Fixes\n\n- [`136a28eaa`](https://www.github.com/tauri-apps/tauri/commit/136a28eaa879e8aa706f9b2e05a050c46dcc1f4f) ([#16305](https://www.github.com/tauri-apps/tauri/pull/16305) by [@Chaosnico9000](https://www.github.com/tauri-apps/tauri/../../Chaosnico9000)) Skip the `--target` validation when `rustup target list` fails, e.g. when `rustup` is on `PATH` but has no toolchain installed, instead of rejecting every target as missing.\n- [`52081e04a`](https://www.github.com/tauri-apps/tauri/commit/52081e04a0309620d3eb8121e5ca9b66312f9857) ([#16333](https://www.github.com/tauri-apps/tauri/pull/16333) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Rename the misspelled `choowHowToInstall` NSIS language string to `chooseHowToInstall`. A custom language file in `bundle.windows.nsis.customLanguageFiles` that only defines the old name keeps working for now, but users should migrate to the new name.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.12.4`\n- [`4a6f51251`](https://www.github.com/tauri-apps/tauri/commit/4a6f512519286ff9862b2e86c67ef39f4562aee5) ([#16317](https://www.github.com/tauri-apps/tauri/pull/16317) by [@lazerg](https://www.github.com/tauri-apps/tauri/../../lazerg)) Updated `zip` to v9 to fix RUSTSEC-2026-0367, RUSTSEC-2026-0368 and RUSTSEC-2026-0369.\n\n## [2.12.3]\n\n### Bug Fixes\n\n- [`c95be4615`](https://www.github.com/tauri-apps/tauri/commit/c95be4615a432b1d12409d3684c960e8aa718ada) ([#16287](https://www.github.com/tauri-apps/tauri/pull/16287)) Fix `tauri ios xcode-script` failing to find the Tauri project when Xcode inherits package manager environment variables from `tauri ios dev --open`, or when pnpm runs the CLI directly from the `gen/apple` folder.\n- [`d62e5d9c0`](https://www.github.com/tauri-apps/tauri/commit/d62e5d9c0878b6fb327543cc9be50aa1696ee23c) ([#16184](https://www.github.com/tauri-apps/tauri/pull/16184)) Fix NSIS installer leaving `uninstall.exe` and the installation directory behind when uninstalling an existing installation from the installer.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.12.3`\n- [`5a2953e55`](https://www.github.com/tauri-apps/tauri/commit/5a2953e555b4444bed68bd5324ea13ad85a6c06e) ([#16237](https://www.github.com/tauri-apps/tauri/pull/16237)) Updated NSIS to 3.13\n\n## [2.12.2]\n\n### Bug Fixes\n\n- [`c48e1ca89`](https://www.github.com/tauri-apps/tauri/commit/c48e1ca891a3b82770b6b03f87eba740344cf2f1) ([#16246](https://www.github.com/tauri-apps/tauri/pull/16246)) On iOS, mark the Swift `@_cdecl` entry points that Rust links against as `public` (in the iOS API and in the plugin templates), so release builds made with Xcode 27 keep them global and link.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.12.2`\n- [`fd319dd43`](https://www.github.com/tauri-apps/tauri/commit/fd319dd432e36748483ae93e6cdea1c44a66fe79) Update `base64` to 0.23.\n\n## [2.12.1]\n\n### Enhancements\n\n- [`64bfdd909`](https://www.github.com/tauri-apps/tauri/commit/64bfdd909c5c3f0828371e4995b69ad5ed685126) ([#16165](https://www.github.com/tauri-apps/tauri/pull/16165) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Ignore `src-tauri` in `tauri plugin init` example template\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.12.1`\n\n## [2.12.0]\n\n### New Features\n\n- [`f6c1eb253`](https://www.github.com/tauri-apps/tauri/commit/f6c1eb2533a0445e081c334931d67fee3e354c6f) ([#15401](https://www.github.com/tauri-apps/tauri/pull/15401)) 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`.\n- [`f76b1d3ae`](https://www.github.com/tauri-apps/tauri/commit/f76b1d3ae70d0ba0f0eba80b94b867593aa5ca8b) ([#15644](https://www.github.com/tauri-apps/tauri/pull/15644)) 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).\n- [`af465eae1`](https://www.github.com/tauri-apps/tauri/commit/af465eae1ad99d7b16b8fdbf9aa96bf76d6b9a76) ([#15619](https://www.github.com/tauri-apps/tauri/pull/15619)) 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.\n- [`0646cc162`](https://www.github.com/tauri-apps/tauri/commit/0646cc1623608dfdaec8d1adbc08d0159b9c2369) ([#15620](https://www.github.com/tauri-apps/tauri/pull/15620)) 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.\n- [`f6c1eb253`](https://www.github.com/tauri-apps/tauri/commit/f6c1eb2533a0445e081c334931d67fee3e354c6f) ([#15401](https://www.github.com/tauri-apps/tauri/pull/15401)) Added `build.windows.staticVCRuntime` to control MSVC static runtime linking. The `STATIC_VCRUNTIME` environment variable is now deprecated and emits a migration warning when used.\n- [`f45ec0dcf`](https://www.github.com/tauri-apps/tauri/commit/f45ec0dcf83c139c8fdde5e61923a0e82836f756) Record the app version in the trusted comment of updater signatures, so a signed artifact is bound to the version it was released as.\n    \n    An update endpoint response is not signed, and the signature only covers the downloaded artifact, so the announced `version` on its own does not prove which release the `url` and `signature` point at. minisign covers the trusted comment with its global signature, which lets the updater plugin compare the two and reject a response that pairs a version number with a different release. Enable `requireSignedVersion` in the updater plugin configuration to enforce this.\n    \n    `tauri build` fills the version in automatically, and `tauri plugin add updater` now enables `requireSignedVersion` for the project it is adding the plugin to. `tauri signer sign` gains an `--app-version` flag for signing updater artifacts by hand, and warns when it is omitted.\n\n### Enhancements\n\n- [`e19121427`](https://www.github.com/tauri-apps/tauri/commit/e19121427332c8a14165999251cce415707a62fc) ([#15993](https://www.github.com/tauri-apps/tauri/pull/15993)) Don't always rewrite `Cargo.toml` file from CRLF line endings to LF\n- [`aebf38c84`](https://www.github.com/tauri-apps/tauri/commit/aebf38c845b57bc5653eca677e2e2e044528ea73) ([#15694](https://www.github.com/tauri-apps/tauri/pull/15694)) 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.\n    \n    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.\n- [`d89d8fa62`](https://www.github.com/tauri-apps/tauri/commit/d89d8fa62302bd3553b66fd47ecfa046b2fc84ef) ([#15780](https://www.github.com/tauri-apps/tauri/pull/15780)) 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.\n- [`c3d21bd60`](https://www.github.com/tauri-apps/tauri/commit/c3d21bd60c3355b284b23dee1a181c3423231182) ([#15730](https://www.github.com/tauri-apps/tauri/pull/15730)) Use `Theme.Material3.DayNight.NoActionBar` instead of `Theme.MaterialComponents.DayNight.NoActionBar` when running `tauri android init`\n- [`f654f470c`](https://www.github.com/tauri-apps/tauri/commit/f654f470c122e925e425424cea733f13d3306412) ([#15862](https://www.github.com/tauri-apps/tauri/pull/15862)) Update template to use `targetSdk = 37`\n- [`cdaf7eab6`](https://www.github.com/tauri-apps/tauri/commit/cdaf7eab6c5fccc2a4812af18f58fd3530f3eedd) ([#15765](https://www.github.com/tauri-apps/tauri/pull/15765)) Clarify that the `tauri init` frontend commands run before `tauri dev` and `tauri build`, and can be left empty when they are not needed.\n- [`d0f38df06`](https://www.github.com/tauri-apps/tauri/commit/d0f38df06a2f4406b388a336694aa18b3c6bf1a9) ([#15997](https://www.github.com/tauri-apps/tauri/pull/15997)) 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.\n- [`ca160ad48`](https://www.github.com/tauri-apps/tauri/commit/ca160ad4808f477380cb0865a08a8ae781e37f85) ([#15895](https://www.github.com/tauri-apps/tauri/pull/15895)) `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.\n- [`010f06bae`](https://www.github.com/tauri-apps/tauri/commit/010f06baecd499c41321da3130e20147c50025f7) ([#15737](https://www.github.com/tauri-apps/tauri/pull/15737)) Document the `TAURI_SIGNING_PRIVATE_KEY_PATH` environment variable and clarify that `TAURI_SIGNING_PRIVATE_KEY` accepts a string or a path for the `build` and `bundle` command but must be the literal key string for the `signer sign` command, both in `ENVIRONMENT_VARIABLES.md` and in the `signer generate` command output.\n\n### Bug Fixes\n\n- [`9bad06b9f`](https://www.github.com/tauri-apps/tauri/commit/9bad06b9f61996faed1c33709f1b8dd196602793) ([#16096](https://www.github.com/tauri-apps/tauri/pull/16096)) `tauri capability new` and `tauri permission new` now accept an `--out` path to a file that does not exist yet, trim comma-separated prompt answers (so `fs:default, core:default` works), report invalid permissions as errors instead of panicking, and reject identifiers that are not valid file names (such as `../../x`), which previously let them write outside of the capabilities or permissions directory.\n- [`9642b3087`](https://www.github.com/tauri-apps/tauri/commit/9642b30879eda8bde35fa3c7606718ca0d364f2e) ([#16117](https://www.github.com/tauri-apps/tauri/pull/16117)) `tauri add` now honors `--tag`, `--rev` and `--branch` for official plugins instead of silently installing the registry version, and rejects passing more than one of them. With npm, the JS package requirement is now `~<version>` like the other package managers, instead of `>=<version>` which allowed a later major version.\n- [`cada1cd4f`](https://www.github.com/tauri-apps/tauri/commit/cada1cd4f3e59efb48b2c7a176d240846f55ad0d) ([#16105](https://www.github.com/tauri-apps/tauri/pull/16105)) Fix Android dev server port forwarding: `adb reverse --list` is now matched on the exact port (so `tcp:80` no longer matches `tcp:8080`), stale forwards on other connected devices are actually removed, and the forward verification gives up with a warning after a few attempts instead of retrying forever.\n- [`d5bd04658`](https://www.github.com/tauri-apps/tauri/commit/d5bd046583d066024ba073840007f4476e52a5fb) ([#16111](https://www.github.com/tauri-apps/tauri/pull/16111)) Fix `bundle > android > debugApplicationIdSuffix` being written to the `signingConfigs` debug block instead of the `buildTypes` one, and keep the existing content of single-line debug blocks such as `getByName(\"debug\") { isDebuggable = true }` instead of dropping it.\n- [`ba17da2e5`](https://www.github.com/tauri-apps/tauri/commit/ba17da2e55184fe74990db64496b0d02e79cce09) ([#16101](https://www.github.com/tauri-apps/tauri/pull/16101)) `tauri icon` now generates 72x72 Android `hdpi` launcher icons (previously 49x49) and writes the Android launcher background color in `#RRGGBB`/`#AARRGGBB` notation instead of the raw CSS color string, which Android rejected or misread. Invalid SVG sources and `--png 0` now return an error instead of panicking.\n- [`272842a57`](https://www.github.com/tauri-apps/tauri/commit/272842a571a56401649db7aaa93ea400561a1661) ([#16128](https://www.github.com/tauri-apps/tauri/pull/16128)) Fix error messages that printed placeholders such as `{t}` literally instead of the value, e.g. \"Could not find an Android device matching {t}\".\n- [`10ad4e54e`](https://www.github.com/tauri-apps/tauri/commit/10ad4e54e2f1272ee7bb08418dc386058532a5e8) ([#16127](https://www.github.com/tauri-apps/tauri/pull/16127)) The Bash completions generated by `tauri completions` no longer replace the completions of `cargo`, `npm`, `pnpm`, `yarn`, `bun` and `deno`. They now define a `_tauri_cli` function registered only for the `tauri` and `cargo-tauri` commands. Generating completions when running the `cargo-tauri` binary directly no longer panics.\n- [`0e4ded72a`](https://www.github.com/tauri-apps/tauri/commit/0e4ded72a6a617fa16dff196e7fbd3716997e66f) ([#16107](https://www.github.com/tauri-apps/tauri/pull/16107)) Fix binaries in `src/bin` and `src/main.rs` being left out of bundles when `Cargo.toml` declares a `[[bin]]` target without a `path`.\n- [`8e0fa2e2f`](https://www.github.com/tauri-apps/tauri/commit/8e0fa2e2f8859cdd38dc07cfc24a1b012ef29fc3) ([#16097](https://www.github.com/tauri-apps/tauri/pull/16097)) Fix the bundler using the host target triple when `--target` is not passed but `build.target` is set in `.cargo/config.toml`. The CLI now also accepts `build.target` as an array and honors the `CARGO_BUILD_TARGET` environment variable.\n- [`7bb0a5421`](https://www.github.com/tauri-apps/tauri/commit/7bb0a542179bd4ccb17e0baf0dca2c3b2f3f7721) ([#16120](https://www.github.com/tauri-apps/tauri/pull/16120)) Fix the Cargo.toml feature rewrite corrupting a string dependency version that has a trailing comment or uses single quotes (e.g. `tauri = \"2\" # pin` became `\"2#pin\"`). The version value is now kept as-is and the comment is preserved.\n- [`e4630258e`](https://www.github.com/tauri-apps/tauri/commit/e4630258e3184fceb60e6c548a7ec61fb81f885d) ([#16114](https://www.github.com/tauri-apps/tauri/pull/16114)) Fix the CLI's working directory being left changed to the config directory when the Tauri configuration fails to parse, for example when `tauri dev` reloads an invalid config.\n- [`1b91b7b7b`](https://www.github.com/tauri-apps/tauri/commit/1b91b7b7b3dad8b77bcaeadc6653250e04f0cb7b) ([#16102](https://www.github.com/tauri-apps/tauri/pull/16102)) `tauri info` now logs a warning when it cannot check the latest crate version on crates.io instead of silently ignoring the failure, and no longer panics if crates.io returns a version it cannot parse.\n- [`1b91b7b7b`](https://www.github.com/tauri-apps/tauri/commit/1b91b7b7b3dad8b77bcaeadc6653250e04f0cb7b) ([#16102](https://www.github.com/tauri-apps/tauri/pull/16102)) `tauri info` now lists every locked version of a Rust crate when `Cargo.lock` contains more than one, and no longer panics when the crates.io response cannot be parsed.\n- [`6507d0b8b`](https://www.github.com/tauri-apps/tauri/commit/6507d0b8b360a41615139619eb39680e60df7732) ([#16124](https://www.github.com/tauri-apps/tauri/pull/16124)) `tauri dev` now reports an error instead of panicking when the `beforeDevCommand` cannot be spawned or the `devUrl` host cannot be resolved, and no longer risks stopping the `beforeDevCommand` process tree twice when Ctrl+C and the app exit race.\n- [`c1ea96ad6`](https://www.github.com/tauri-apps/tauri/commit/c1ea96ad6b433524c5cb570f55bbbe1fd72cca1e) ([#16110](https://www.github.com/tauri-apps/tauri/pull/16110)) Fix `tauri dev` not reacting to the app exiting when a process spawned by the app kept its stderr open, and stop keeping the whole app stderr output in memory. Also fix command output capture that could return empty output when the command finished before its output was read.\n- [`d61fbdc3e`](https://www.github.com/tauri-apps/tauri/commit/d61fbdc3e825749261c76b7a37454dd3c4483619) ([#16109](https://www.github.com/tauri-apps/tauri/pull/16109)) Fix Cargo.toml feature injection and the v1 migration only updating either `[dependencies]` or `[target.'cfg(..)'.dependencies]`, whichever came first in the file. Both the main and all target-specific dependency tables are now updated.\n- [`5d995ed35`](https://www.github.com/tauri-apps/tauri/commit/5d995ed35b029cecd780fdbe614dc6023a89b81b) ([#16017](https://www.github.com/tauri-apps/tauri/pull/16017)) 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.\n- [`6d943c420`](https://www.github.com/tauri-apps/tauri/commit/6d943c420454e75636af968b435efb9167818d22) ([#16065](https://www.github.com/tauri-apps/tauri/pull/16065)) 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.\n- [`b8be924d3`](https://www.github.com/tauri-apps/tauri/commit/b8be924d39c87eaecb9ba6f893e1a7be94d7bd68) ([#16106](https://www.github.com/tauri-apps/tauri/pull/16106)) `tauri init` no longer panics when the app name, window title, frontend dist, dev URL or before dev/build commands contain quotes or backslashes (e.g. `-D ..\\dist` or `vite --host \"0.0.0.0\"`); the values are now JSON-escaped in the generated `tauri.conf.json`.\n- [`b9b32a259`](https://www.github.com/tauri-apps/tauri/commit/b9b32a259fb00524808e84b4da0f7904a51be06c) ([#16108](https://www.github.com/tauri-apps/tauri/pull/16108)) Fix `PRODUCT_BUNDLE_IDENTIFIER` in the iOS Xcode project being set to the raw `identifier` (with underscores) instead of the sanitized iOS bundle identifier used by the Xcode project template and the export options provisioning profiles.\n- [`4f51a2f06`](https://www.github.com/tauri-apps/tauri/commit/4f51a2f06248f231fc6a9160c95c026634356ba5) ([#16115](https://www.github.com/tauri-apps/tauri/pull/16115)) Fix `tauri ios run --features` being ignored, and `tauri ios dev --release` still building the app in debug mode.\n- [`59e077457`](https://www.github.com/tauri-apps/tauri/commit/59e077457ac87ffd43db4c557ca2987d2fa6d37e) ([#16075](https://www.github.com/tauri-apps/tauri/pull/16075)) `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.\n- [`fe1aa30d2`](https://www.github.com/tauri-apps/tauri/commit/fe1aa30d2b1743325cdd882fe36604daf62c2440) ([#16113](https://www.github.com/tauri-apps/tauri/pull/16113)) Quote the Tauri CLI path and the Xcode variables in the iOS \"Build Rust Code\" build phase, fixing builds when Xcode or the CLI is installed in a path containing spaces (requires regenerating the Xcode project with `tauri ios init`). Also fixes `CXXFLAGS` not being set for iOS targets in `tauri ios xcode-script`.\n- [`aa0a801c3`](https://www.github.com/tauri-apps/tauri/commit/aa0a801c3acb6cc1f9d0afbae6cbfa144a5ea7fb) ([#16116](https://www.github.com/tauri-apps/tauri/pull/16116)) Fix Java version detection for the Android Java/Gradle compatibility warning when `JAVA_HOME` is not set: the `java` binary on `PATH` is now resolved through symlinks (e.g. Linux alternatives and Homebrew), and on macOS the `/usr/bin/java` stub falls back to `/usr/libexec/java_home`.\n- [`1aafaa4e3`](https://www.github.com/tauri-apps/tauri/commit/1aafaa4e3cafc779d4d825c95c3604a7da661092) ([#16103](https://www.github.com/tauri-apps/tauri/pull/16103)) When rewriting a localhost `devUrl` to the network address for mobile development, the query string and fragment are now preserved, and the IPv6 loopback (`[::1]`) and unspecified (`[::]`) addresses are now treated as localhost.\n- [`022932dd5`](https://www.github.com/tauri-apps/tauri/commit/022932dd596e38d27a0bafebf26ea9df2ec2cff3) ([#16123](https://www.github.com/tauri-apps/tauri/pull/16123)) Fix iOS Xcode project synchronization corrupting `project.pbxproj` when several build settings were added to the same configuration, when an added setting was changed again, or when a multi-line setting was overwritten. Product names, signing identities and other values written to the project are now properly escaped.\n- [`a4099d819`](https://www.github.com/tauri-apps/tauri/commit/a4099d819bdc33385adcc11b7830fc5fdda410d2) ([#16098](https://www.github.com/tauri-apps/tauri/pull/16098)) `tauri permission add` (and `tauri add`) no longer overwrites an existing `capabilities/desktop.json` or `capabilities/mobile.json` when adding a desktop-only or mobile-only plugin permission and no platform-restricted capability exists; the new capability now gets an unused file name and identifier (e.g. `desktop-2.json`). An explicitly passed capability is now used even if its platforms do not match the plugin, with a warning, instead of being silently ignored.\n- [`e49d1b474`](https://www.github.com/tauri-apps/tauri/commit/e49d1b47429acaf34de9e9edc251f71163990783) ([#16100](https://www.github.com/tauri-apps/tauri/pull/16100)) `tauri permission rm <plugin>:*` and `tauri remove` no longer strip unrelated permissions whose identifier merely contains the plugin name (e.g. `tauri remove os` removing `positioner:default`). Local permission files are now looked up in the Tauri directory, like `tauri permission new`, and an unparsable permission file is skipped with a warning instead of aborting the command.\n- [`efa82f5ed`](https://www.github.com/tauri-apps/tauri/commit/efa82f5ed989f84b076b6ee6d2f0e1e6dd0aadbf) ([#16125](https://www.github.com/tauri-apps/tauri/pull/16125)) Fix plugin scaffolding for names like `my-plugin`: the default Android package ID now uses a snake_case segment (`com.plugin.my_plugin`) and user-provided IDs are validated, iOS Xcode folders use the same kebab-case name as the project file, and the `plugin ios init`/`plugin android init` code snippets now match the generated bindings and the `setup(|app, api| ..)` API. `plugin init` into a non-empty directory no longer creates a `permissions` folder after skipping the template.\n- [`db6804d80`](https://www.github.com/tauri-apps/tauri/commit/db6804d80223aabc6b338e94d192a5ad6dd6220b) ([#16126](https://www.github.com/tauri-apps/tauri/pull/16126)) Fix `--release` being added to the cargo command when a custom profile is passed as `--profile=<name>`, which made cargo reject the build.\n- [`8310461f6`](https://www.github.com/tauri-apps/tauri/commit/8310461f6453ce478d2092a4744d42e3468e0bb0) ([#16104](https://www.github.com/tauri-apps/tauri/pull/16104)) Fix `tauri init` and `tauri info` detecting SvelteKit projects as plain Svelte; `tauri init` suggested the wrong dev server URL and frontend dist directory.\n- [`eaf96690d`](https://www.github.com/tauri-apps/tauri/commit/eaf96690db2439445fe16da24031bf3294ada605) ([#15804](https://www.github.com/tauri-apps/tauri/pull/15804)) On Linux, do not bundle xdg-open and xdg-utils in the AppImage anymore. This rarely worked and usually requires host system support anyway.\n- [`2b7c1f8b6`](https://www.github.com/tauri-apps/tauri/commit/2b7c1f8b63619c6f4c16380d0c4a3358e694fb11) ([#16003](https://www.github.com/tauri-apps/tauri/pull/16003)) Fix `tauri add` / `tauri remove` installing npm plugin packages into `src-tauri` instead of the frontend directory.\n- [`c735ba32b`](https://www.github.com/tauri-apps/tauri/commit/c735ba32b36d505cbf9eabfb4a33005ca31edbdd) ([#15241](https://www.github.com/tauri-apps/tauri/pull/15241)) Fix broken child window icons in Task Manager, you'll need to re-run `tauri icon` to generate the fixed icons\n- [`adf5acf6f`](https://www.github.com/tauri-apps/tauri/commit/adf5acf6fbc0ef26de6b1eb30c47bb701c256954) ([#15651](https://www.github.com/tauri-apps/tauri/pull/15651)) Fix MSI bundling when an external binary filename starts with a digit.\n- [`11012a13f`](https://www.github.com/tauri-apps/tauri/commit/11012a13f55ab55ec5ed12ca3ac95338ae1731c3) ([#15681](https://www.github.com/tauri-apps/tauri/pull/15681)) Fix WiX bundler doesn't respect the resource's target file name.\n- [`59e077457`](https://www.github.com/tauri-apps/tauri/commit/59e077457ac87ffd43db4c557ca2987d2fa6d37e) ([#16075](https://www.github.com/tauri-apps/tauri/pull/16075)) 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''\".\n- [`6a298ee12`](https://www.github.com/tauri-apps/tauri/commit/6a298ee12e7ffde115175d43ac63a2fdcba51c3e) ([#15713](https://www.github.com/tauri-apps/tauri/pull/15713)) Fix `tauri info` reporting the Rust-only plugins (`localhost`, `persisted-scope` and `single-instance`) as missing their `@tauri-apps/plugin-*` JavaScript package, which is never published for those plugins.\n- [`33b3ea582`](https://www.github.com/tauri-apps/tauri/commit/33b3ea582340ce8fe799929472595789319d0826) The bundled `vswhere.exe` is now written to a new, uniquely named temporary file on each use and removed afterwards, instead of running any existing `%TEMP%\\vswhere.exe`.\n\n### What's Changed\n\n- [`2e6e33c85`](https://www.github.com/tauri-apps/tauri/commit/2e6e33c8501c66c9a49aad861048d39345cfb26f) ([#16029](https://www.github.com/tauri-apps/tauri/pull/16029)) Moved to edition 2024 for the `tauri init`/`tauri plugin init` templates\n- [`ce3f13b91`](https://www.github.com/tauri-apps/tauri/commit/ce3f13b91a75cb723f229f56a3e82eb5f2d3f644) ([#15887](https://www.github.com/tauri-apps/tauri/pull/15887)) Lock unstable tauri crates to minor versions.\n\n### Security fixes\n\n- [`98918df64`](https://www.github.com/tauri-apps/tauri/commit/98918df6416f7ac6849962141a41bbd210131067) ([#16112](https://www.github.com/tauri-apps/tauri/pull/16112)) `tauri add` no longer installs the npm package `tauri-plugin-<name>-api` for community plugins. npm and crates.io are separate namespaces, so that package may be unowned or squatted; the CLI now asks you to install the plugin's JavaScript bindings yourself. `tauri remove` only removes the plugin's JS package when `package.json` lists it, and a failure there no longer skips the capability cleanup.\n- [`cc9d522c6`](https://www.github.com/tauri-apps/tauri/commit/cc9d522c64329b8dab84ecbd38c76928ad31cb43) ([#16095](https://www.github.com/tauri-apps/tauri/pull/16095)) The built-in dev server now rejects requests whose `Host` header is not the address it serves on, which blocks DNS rebinding attacks, and rejects cross-site `Origin`s on its reload WebSocket. The `index.html` fallback now goes through the same path scope check as other files, and the reload WebSocket no longer closes when the client sends a message.\n- [`dacddfe9f`](https://www.github.com/tauri-apps/tauri/commit/dacddfe9ff1f28b53e2c0324498e3a666a8041fa) ([#16094](https://www.github.com/tauri-apps/tauri/pull/16094)) The CLI no longer writes its default ignore rules to shared files in the system temporary directory (`.gitignore` and `.tauri/.gitignore`) and reads them back, which let other local users change which files the project lookup and the dev watcher skip. The rules are now applied in memory. `TAURI_CLI_WATCHER_IGNORE_FILENAME` is now consistently treated as an ignore file name looked up in each directory, as documented.\n- [`fdd56da19`](https://www.github.com/tauri-apps/tauri/commit/fdd56da19e40962cb2db613a0b87a38a21f571e4) ([#16099](https://www.github.com/tauri-apps/tauri/pull/16099)) Secure the local server that `tauri android|ios dev|build` uses to pass options to the Android Studio and Xcode build scripts: requests now need a random per-session token, WebSocket connections from web pages (with an `Origin` header) are rejected, and variables whose name contains `TOKEN`, `PASSWORD`, `SECRET` or `CREDENTIAL` are no longer sent. The connection details are now written with owner-only permissions to `gen/<android|apple>/.tauri/cli-options-server.json` (instead of the shared temp directory) and removed when the command exits. The IDE build scripts now report a clear error when the Tauri CLI command is not running.\n- [`ff7cd8d86`](https://www.github.com/tauri-apps/tauri/commit/ff7cd8d863061aaa1c5932062b071db6b17af36e) ([#16118](https://www.github.com/tauri-apps/tauri/pull/16118)) `tauri signer generate --write-keys` now creates the private key with owner-only permissions (0600) on Unix and refuses to overwrite either the private or the public key file without `--force`. Updater signing now rejects file names containing tabs or newlines (which would corrupt the signature's trusted comment) and assumes an empty password instead of prompting when no password is given and stdin is not a terminal. `tauri signer` reports errors instead of panicking.\n- [`51aa20388`](https://www.github.com/tauri-apps/tauri/commit/51aa20388e01c9d03f33992647b14dcf7800c540) ([#16119](https://www.github.com/tauri-apps/tauri/pull/16119)) On Windows, package manager commands (`npm`, `pnpm`, `yarn`, `bun`, `deno`, `node`) are now executed directly instead of through `cmd /c`, so arguments such as `@tauri-apps/plugin-fs@>=2` are escaped properly and can no longer be interpreted as shell redirections or command separators.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.12.0`\n- [`e2e585ad1`](https://www.github.com/tauri-apps/tauri/commit/e2e585ad1196c9572f86ef39aae01ef4c3b1a762) ([#15828](https://www.github.com/tauri-apps/tauri/pull/15828)) On Android, fix missing `consumer-rules.pro` file in the template.\n    \n    **IMPORTANT**: For plugin authors, update your `build.gradle.kts` file to remove the\n    \n    ```kotlin\n        buildTypes {\n            release {\n                isMinifyEnabled = false\n                proguardFiles(\n                    getDefaultProguardFile(\"proguard-android-optimize.txt\"),\n                    \"proguard-rules.pro\"\n                )\n            }\n        }\n    ```\n    \n    section and rename your `proguard-rules.pro` to `consumer-rules.pro` to match the `consumerProguardFiles(\"consumer-rules.pro\")` in the template.\n- [`e2e585ad1`](https://www.github.com/tauri-apps/tauri/commit/e2e585ad1196c9572f86ef39aae01ef4c3b1a762) ([#15828](https://www.github.com/tauri-apps/tauri/pull/15828)) 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.\n- [`9e9a54dea`](https://www.github.com/tauri-apps/tauri/commit/9e9a54dea26ae66de63800cabbccf980902a1cd3) ([#15890](https://www.github.com/tauri-apps/tauri/pull/15890)) 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`.\n- [`b6660a041`](https://www.github.com/tauri-apps/tauri/commit/b6660a041db44729893dae7991a9be61cf8c2ed5) ([#15954](https://www.github.com/tauri-apps/tauri/pull/15954)) Update typescript to v7 in `tauri plugin init` template. Also fixes the default `rootDir` in the template `tsconfig.json`\n- [`9e9a54dea`](https://www.github.com/tauri-apps/tauri/commit/9e9a54dea26ae66de63800cabbccf980902a1cd3) ([#15890](https://www.github.com/tauri-apps/tauri/pull/15890)) Update cargo-mobile2 and change the default minimum iOS version to 15.0 to support Xcode 27.\n\n## \\[2.11.4]\n\n### Bug Fixes\n\n- [`67ffa192a`](https://www.github.com/tauri-apps/tauri/commit/67ffa192a499131e7e750f164fe61a40ca0fb2e7) ([#15596](https://www.github.com/tauri-apps/tauri/pull/15596) by [@FabianLars](https://www.github.com/tauri-apps/tauri/../../FabianLars)) Fixed an issue in the AppImage bundler that caused the `/.desktop` and `.DirIcon` files to be absolute symlinks instead of relative symlinks which caused problems with AppImage installers like `AppManager`.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.11.4`\n\n## \\[2.11.3]\n\n### Bug Fixes\n\n- [`50b0237ed`](https://www.github.com/tauri-apps/tauri/commit/50b0237edb9ed683979b7954975b98a4d22a9f70) ([#15549](https://www.github.com/tauri-apps/tauri/pull/15549) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Escape special characters in `productName` when generating Android `strings.xml`\n- [`728c8d4a5`](https://www.github.com/tauri-apps/tauri/commit/728c8d4a5d9e3badf4683eb2e493d950d27d6b66) ([#15473](https://www.github.com/tauri-apps/tauri/pull/15473) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Skip building bundles when using `tauri android run`\n- [`be0cb0d43`](https://www.github.com/tauri-apps/tauri/commit/be0cb0d4378ddf26bc33066b3750f2639ade15f5) ([#15344](https://www.github.com/tauri-apps/tauri/pull/15344) by [@raglady](https://www.github.com/tauri-apps/tauri/../../raglady)) Fix NDK_HOME environment variable not honored when set\n- [`ed8fd411f`](https://www.github.com/tauri-apps/tauri/commit/ed8fd411fe10469da33f63ed5bd9d7ae19e77d84) ([#15552](https://www.github.com/tauri-apps/tauri/pull/15552) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Make `ureq_proto` show trace level logs only on `-vvv` instead of `-vv`\n- [`fca4a31f9`](https://www.github.com/tauri-apps/tauri/commit/fca4a31f94f8ba709d1b28e073e69867b8704e6e) ([#15454](https://www.github.com/tauri-apps/tauri/pull/15454) by [@fallintoplace](https://www.github.com/tauri-apps/tauri/../../fallintoplace)) Fix `tauri migrate` generating invalid namespace imports for aliased pluginified imports from `@tauri-apps/api`.\n\n  Inputs like `import { cli as superCli } from \"@tauri-apps/api\"` now migrate to `import * as superCli from \"@tauri-apps/plugin-cli\"` instead of producing invalid ESM syntax. The migration tests also reparse migrated JS, Svelte, and Vue output so syntax regressions are caught directly.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.11.3`\n\n## \\[2.11.2]\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.11.2`\n\n## \\[2.11.1]\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.11.1`\n\n## \\[2.11.0]\n\n### New Features\n\n- [`926a57bb0`](https://www.github.com/tauri-apps/tauri/commit/926a57bb0851e45d47ad1ee68fc96a9c25754c7c) ([#15201](https://www.github.com/tauri-apps/tauri/pull/15201)) Added uninstaller icon and uninstaller header image support for NSIS installer.\n\n  Notes:\n\n  - For `tauri-bundler` lib users, the `NsisSettings` now has 2 new fields `uninstaller_icon` and `uninstaller_header_image` which can be a breaking change\n  - When bundling with NSIS, users can add `uninstallerIcon` and `uninstallerHeaderImage` under `bundle > windows > nsis` to configure them.\n- [`764b9139a`](https://www.github.com/tauri-apps/tauri/commit/764b9139a32de149d8a914a6b5ec6cd1937c64eb) ([#14313](https://www.github.com/tauri-apps/tauri/pull/14313)) Prompt to restart the Android emulator if it is not connected to adb.\n- [`5dc2cee60`](https://www.github.com/tauri-apps/tauri/commit/5dc2cee60370665af88c185684432e425b1c987d) ([#14793](https://www.github.com/tauri-apps/tauri/pull/14793)) Added support for `minimumWebview2Version` option support for the MSI (Wix) installer, the old `bundle > windows > nsis > minimumWebview2Version` is now deprecated in favor of `bundle > windows > minimumWebview2Version`\n\n  Notes:\n\n  - For anyone relying on the `WVRTINSTALLED` `Property` tag in `main.wxs`, it is now renamed to `INSTALLED_WEBVIEW2_VERSION`\n  - For `tauri-bundler` lib users, the `WindowsSettings` now has a new field `minimum_webview2_version` which can be a breaking change\n\n### Enhancements\n\n- [`be0e4bd2d`](https://www.github.com/tauri-apps/tauri/commit/be0e4bd2da02eb6cc75a8dc7c81663277e64c590) ([#15218](https://www.github.com/tauri-apps/tauri/pull/15218)) Added Vietnamese translations for the NSIS installer\n- [`8718d0816`](https://www.github.com/tauri-apps/tauri/commit/8718d08163f074dfc53387ebd1d823f9c28280ee) ([#15033](https://www.github.com/tauri-apps/tauri/pull/15033)) Show the context before prompting for updater signing key password\n\n### Bug Fixes\n\n- [`fcb702ec4`](https://www.github.com/tauri-apps/tauri/commit/fcb702ec4d924e81943efaeebea8d3edb7289c33) ([#14954](https://www.github.com/tauri-apps/tauri/pull/14954)) Fix `build --bundles` to allow `nsis` arg in linux+macOS\n- [`80c1425af`](https://www.github.com/tauri-apps/tauri/commit/80c1425af86058b1fc9489a30f778b6288d79b6b) ([#14921](https://www.github.com/tauri-apps/tauri/pull/14921)) Fix iOS build failure when `Metal Toolchain` is installed by using explicit `$(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain` path instead of `$(TOOLCHAIN_DIR)` for Swift library search paths.\n\n### What's Changed\n\n- [`9979cde1c`](https://www.github.com/tauri-apps/tauri/commit/9979cde1c5534dafb1a07cc4dc2bc280d15d2f66) ([#15175](https://www.github.com/tauri-apps/tauri/pull/15175)) Update NSIS installer Italian translations\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.11.0`\n\n## \\[2.10.1]\n\n### Bug Fixes\n\n- [`35c35f27a`](https://www.github.com/tauri-apps/tauri/commit/35c35f27aedc430b602ec74059b271128c15ad36) ([#14931](https://www.github.com/tauri-apps/tauri/pull/14931) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Support comma-separated list of Cargo features on all commands.\n- [`0d1cb83ba`](https://www.github.com/tauri-apps/tauri/commit/0d1cb83bab2aa482c7d73116893fd7ff6aa56283) ([#14932](https://www.github.com/tauri-apps/tauri/pull/14932) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Fix missing Cargo args when running mobile dev and build commands.\n- [`33754ae5e`](https://www.github.com/tauri-apps/tauri/commit/33754ae5e3740d022483b6164511c5c001a3c24b) ([#15022](https://www.github.com/tauri-apps/tauri/pull/15022) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fix updater signing private keys generated using `tauri signer generate` with empty password can't be used (The keys generated during tauri were broken between v2.9.3 and v2.10.0, you'll need to regenerate them)\n\n### What's Changed\n\n- [`7be58a1c6`](https://www.github.com/tauri-apps/tauri/commit/7be58a1c643a7ed6d0f484a7e1134022618eb2b2) ([#14894](https://www.github.com/tauri-apps/tauri/pull/14894) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Log patching bundle type information again\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.10.1`\n\n## \\[2.10.0]\n\n### Enhancements\n\n- [`f82594410`](https://www.github.com/tauri-apps/tauri/commit/f82594410cd57d6f794f58d4afea0ed335aa796f) ([#13253](https://www.github.com/tauri-apps/tauri/pull/13253) by [@Armaldio](https://www.github.com/tauri-apps/tauri/../../Armaldio)) Allow electron to run the CLI directly\n- [`a2abe2e6b`](https://www.github.com/tauri-apps/tauri/commit/a2abe2e6bcb9e1eed8484240dfdb76a5bc28ae58) ([#14607](https://www.github.com/tauri-apps/tauri/pull/14607) by [@sftse](https://www.github.com/tauri-apps/tauri/../../sftse)) Simplified internal representation of `features: Option<Vec<String>>` with `Vec<String>`, no user facing changes\n- [`84b04c4a8`](https://www.github.com/tauri-apps/tauri/commit/84b04c4a8d3310b7a7091d10e36244bf94996e51) ([#14759](https://www.github.com/tauri-apps/tauri/pull/14759) by [@amrbashir](https://www.github.com/tauri-apps/tauri/../../amrbashir)) Added new environment variables for `tauri signer sign` command, to align with existing environment variables used in `tauri build`, `tauri bundle` and `tauri signer generate`\n\n  - `TAURI_SIGNING_PRIVATE_KEY`\n  - `TAURI_SIGNING_PRIVATE_KEY_PATH`\n  - `TAURI_SIGNING_PRIVATE_KEY_PASSWORD`\n\n  The old environment variables are deprecated and will be removed in a future release.\n\n  - `TAURI_PRIVATE_KEY`\n  - `TAURI_PRIVATE_KEY_PATH`\n  - `TAURI_PRIVATE_KEY_PASSWORD`\n\n### Bug Fixes\n\n- [`62aa13a12`](https://www.github.com/tauri-apps/tauri/commit/62aa13a124ef46bb5ce9887a2a574dd35ef86d4f) ([#14629](https://www.github.com/tauri-apps/tauri/pull/14629) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Fix `android build`'s `--aab` and `--apk` flags requiring a value to be provided.\n- [`eccff9758`](https://www.github.com/tauri-apps/tauri/commit/eccff97588232055bd0cafd83e6ee03d11a501fb) ([#14779](https://www.github.com/tauri-apps/tauri/pull/14779) by [@lucasfernog](https://www.github.com/tauri-apps/tauri/../../lucasfernog)) Fix empty associated-domains entitlements when domains are not configured for deep links.\n- [`ea31b07f1`](https://www.github.com/tauri-apps/tauri/commit/ea31b07f19e0aa467ed0f921f60575cfe09809c8) ([#14789](https://www.github.com/tauri-apps/tauri/pull/14789) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Fixed the command description for `tauri inspect`\n- [`7fca58230`](https://www.github.com/tauri-apps/tauri/commit/7fca58230f97c3e6834134419514a0c7dbbe784b) ([#14830](https://www.github.com/tauri-apps/tauri/pull/14830) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Updated `nsis_tauri_utils` to 0.5.3:\n\n  - Use an alternative method `CreateProcessWithTokenW` to run programs as user, this fixed a problem that the program launched with the previous method can't query its own handle\n- [`53611c4d7`](https://www.github.com/tauri-apps/tauri/commit/53611c4d7bdaf89b9a5d7c46a9c4bf4e34216148) ([#14747](https://www.github.com/tauri-apps/tauri/pull/14747) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Only watch dependent workspace members when running `tauri dev` instead of watching on all members\n- [`1b0e335d3`](https://www.github.com/tauri-apps/tauri/commit/1b0e335d3f3445948d6590f7e074275d97cd9859) ([#14713](https://www.github.com/tauri-apps/tauri/pull/14713) by [@wasuaje](https://www.github.com/tauri-apps/tauri/../../wasuaje)) `tauri signer sign` doesn't work for files without an extension\n\n### What's Changed\n\n- [`e3fdcb500`](https://www.github.com/tauri-apps/tauri/commit/e3fdcb5002b362b46cde2a1971e4e7f2a1161208) ([#14836](https://www.github.com/tauri-apps/tauri/pull/14836) by [@sftse](https://www.github.com/tauri-apps/tauri/../../sftse)) Continued refactors of tauri-cli, fix too weak atomics.\n- [`0575dd287`](https://www.github.com/tauri-apps/tauri/commit/0575dd287e021b61d2aedf64d62ae84a2c925fb4) ([#14521](https://www.github.com/tauri-apps/tauri/pull/14521) by [@kandrelczyk](https://www.github.com/tauri-apps/tauri/../../kandrelczyk)) Change the way bundle type information is added to binary files. Instead of looking up the value of a variable we simply look for the default value.\n- [`7f7d9aac2`](https://www.github.com/tauri-apps/tauri/commit/7f7d9aac214e22d9492490543f7a9bcae0a6659e) ([#14668](https://www.github.com/tauri-apps/tauri/pull/14668) by [@sftse](https://www.github.com/tauri-apps/tauri/../../sftse)) Refactored internal use of static on config and directory resolvings, no user facing changes, please report any regressions if you encounter any\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.10.0`\n\n## \\[2.9.6]\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.6`\n\n## \\[2.9.5]\n\n### Bug Fixes\n\n- [`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\n\n### Performance Improvements\n\n- [`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.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.5`\n\n## \\[2.9.4]\n\n### Bug Fixes\n\n- [`b586ecf1f`](https://www.github.com/tauri-apps/tauri/commit/b586ecf1f4b3b087f9aa6c4668c2c18b1b7925f4) ([#14416](https://www.github.com/tauri-apps/tauri/pull/14416) by [@Legend-Master](https://www.github.com/tauri-apps/tauri/../../Legend-Master)) Premultiply Alpha before Resizing which gets rid of the gray fringe around the icons for svg images.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.4`\n\n## \\[2.9.3]\n\n### Bug Fixes\n\n- [`fd8c30b4f`](https://www.github.com/tauri-apps/tauri/commit/fd8c30b4f1bca8dd7165c5c0ebe7fbfd17662153) ([#14353](https://www.github.com/tauri-apps/tauri/pull/14353) by [@ChaseKnowlden](https://www.github.com/tauri-apps/tauri/../../ChaseKnowlden)) Premultiply Alpha before Resizing which gets rid of the gray fringe around the icons.\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.3`\n\n## \\[2.9.2]\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.2`\n\n## \\[2.9.1]\n\n### Dependencies\n\n- Upgraded to `tauri-cli@2.9.1`\n\n## \\[2.9.0]\n\n### New Features\n\n- [`3b4fac201`](https://www.github.com/tauri-apps/tauri/commit/3b4fac2017832d426dd07c5e24e26684eda57f7b) ([#14194](https://www.github.com/tauri-apps/tauri/pull/14194)) Add `tauri.conf.json > bundle > android > autoIncrementVersionCode` config option to automatically increment the Android version code.\n- [`673867aa0`](https://www.github.com/tauri-apps/tauri/commit/673867aa0e1ccd766ee879ffe96aba58c758613c) ([#14094](https://www.github.com/tauri-apps/tauri/pull/14094)) Try to detect ANDROID_HOME and NDK_HOME environment variables from default system locations and install them if needed using the Android Studio command line tools.\n- [`3d6868d09`](https://www.github.com/tauri-apps/tauri/commit/3d6868d09c323d68a152f3c3f8c7256311bd020a) ([#14128](https://www.github.com/tauri-apps/tauri/pull/14128)) Added support to defining the content type of the declared file association on macOS (maps to LSItemContentTypes property).\n- [`3d6868d09`](https://www.github.com/tauri-apps/tauri/commit/3d6868d09c323d68a152f3c3f8c7256311bd020a) ([#14128](https://www.github.com/tauri-apps/tauri/pull/14128)) Added support to defining the metadata for custom types declared in `tauri.conf.json > bundle > fileAssociations > exportedType` via the `UTExportedTypeDeclarations` Info.plist property.\n- [`ed7c9a410`](https://www.github.com/tauri-apps/tauri/commit/ed7c9a4100e08c002212265549d12130d021ad1e) ([#14108](https://www.github.com/tauri-apps/tauri/pull/14108)) Added `bundle > macOS > infoPlist` and `bundle > iOS > infoPlist` configurations to allow defining custom Info.plist extensions.\n- [`75082cc5b`](https://www.github.com/tauri-apps/tauri/commit/75082cc5b340e30e2c4b4cd4bd6a1fe5382164aa) ([#14120](https://www.github.com/tauri-apps/tauri/pull/14120)) Added `ios run` and `android run` commands to run the app in production mode.\n- [`cc8c0b531`](https://www.github.com/tauri-apps/tauri/commit/cc8c0b53171173dbd1d01781a50de1a3ea159031) ([#14031](https://www.github.com/tauri-apps/tauri/pull/14031)) Added support to universal app links on macOS with the `plugins > deep-link > desktop > domains` configuration.\n\n### Enhancements\n\n- [`b5aa01870`](https://www.github.com/tauri-apps/tauri/commit/b5aa018702bf45dc98297698f9b7d238705865a6) ([#14268](https://www.github.com/tauri-apps/tauri/pull/14268)) Update cargo-mobile2 to 0.21, enhancing error messages and opening Xcode when multiple apps are installed.\n- [`55453e845`](https://www.github.com/tauri-apps/tauri/commit/55453e8453d927b8197f1ba9f26fd944482938f7) ([#14262](https://www.github.com/tauri-apps/tauri/pull/14262)) Check mismatched versions in `tauri info`\n- [`1a6627ee7`](https://www.github.com/tauri-apps/tauri/commit/1a6627ee7d085a4e66784e2705254714d68c7244) ([#14122](https://www.github.com/tauri-apps/tauri/pull/14122)) Set a default log level filter when running `tauri add log`.\n- [`b06b3bd09`](https://www.github.com/tauri-apps/tauri/commit/b06b3bd091b0fed26cdcfb23cacb0462a7a9cc2d) ([#14126](https://www.github.com/tauri-apps/tauri/pull/14126)) Improve error messages with more context.\n- [`f6622a3e3`](https://www.github.com/tauri-apps/tauri/commit/f6622a3e342f5dd5fb3cf6e0f79fb309a10e9b3d) ([#14129](https://www.github.com/tauri-apps/tauri/pull/14129)) Prompt to install the iOS platform if it isn't installed yet.\n- [`6bbb530fd`](https://www.github.com/tauri-apps/tauri/commit/6bbb530fd5edfc07b180a4f3782b8566872ca3b1) ([#14105](https://www.github.com/tauri-apps/tauri/pull/14105)) Warn if productName is empty when initializing mobile project.\n\n### Bug Fixes\n\n- [`19fb6f7cb`](https://www.github.com/tauri-apps/tauri/commit/19fb6f7cb0d702cb2f25f6f2d1e11014d9dada5d) ([#14146](https://www.github.com/tauri-apps/tauri/pull/14146)) Strip Windows-only extensions from the binary path so an Android project initialized on Windows can be used on UNIX systems.\n- [`19fb6f7cb`](https://www.github.com/tauri-apps/tauri/commit/19fb6f7cb0d702cb2f25f6f2d1e11014d9dada5d) ([#14146](https://www.github.com/tauri-apps/tauri/pull/14146)) Enhance Android build script usage on Windows by attempting to run cmd, bat and exe formats.\n- [`28a2f9bc5`](https://www.github.com/tauri-apps/tauri/commit/28a2f9bc55f658eb71ef1a970ff9f791346f7682) ([#14101](https://www.github.com/tauri-apps/tauri/pull/14101)) Fix iOS CLI usage after modifying the package name.\n- [`d2938486e`](https://www.github.com/tauri-apps/tauri/commit/d2938486e9d974debd90c15d7160b8a17bf4d763) ([#14261](https://www.github.com/\n\n<!-- File: packages/cli/npm/darwin-arm64/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Darwin-arm64 Skill\n\nPath: `packages/cli/npm/darwin-arm64/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/darwin-arm64/package.json)\n\n<!-- File: packages/cli/npm/darwin-x64/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Darwin-x64 Skill\n\nPath: `packages/cli/npm/darwin-x64/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/darwin-x64/package.json)\n\n<!-- File: packages/cli/npm/linux-arm-gnueabihf/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Linux-arm-gnueabihf Skill\n\nPath: `packages/cli/npm/linux-arm-gnueabihf/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm-gnueabihf/package.json)\n\n<!-- File: packages/cli/npm/linux-arm64-gnu/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Linux-arm64-gnu Skill\n\nPath: `packages/cli/npm/linux-arm64-gnu/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm64-gnu/package.json)\n\n<!-- File: packages/cli/npm/linux-arm64-musl/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Linux-arm64-musl Skill\n\nPath: `packages/cli/npm/linux-arm64-musl/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm64-musl/package.json)\n\n<!-- File: packages/cli/npm/linux-riscv64-gnu/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Linux-riscv64-gnu Skill\n\nPath: `packages/cli/npm/linux-riscv64-gnu/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-riscv64-gnu/package.json)\n\n<!-- File: packages/cli/npm/linux-x64-gnu/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Linux-x64-gnu Skill\n\nPath: `packages/cli/npm/linux-x64-gnu/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-x64-gnu/package.json)\n\n<!-- File: packages/cli/npm/linux-x64-musl/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Linux-x64-musl Skill\n\nPath: `packages/cli/npm/linux-x64-musl/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-x64-musl/package.json)\n\n<!-- File: packages/cli/npm/win32-arm64-msvc/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Win32-arm64-msvc Skill\n\nPath: `packages/cli/npm/win32-arm64-msvc/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-arm64-msvc/package.json)\n\n<!-- File: packages/cli/npm/win32-ia32-msvc/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Win32-ia32-msvc Skill\n\nPath: `packages/cli/npm/win32-ia32-msvc/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-ia32-msvc/package.json)\n\n<!-- File: packages/cli/npm/win32-x64-msvc/package.json (Tokens: ~247 | Category: anthropic-skill) -->\n{\n  \"name\": \"@tauri-apps/cli-win32-x64-msvc\",\n  \"version\": \"0.0.0\",\n  \"cpu\": [\n    \"x64\"\n  ],\n  \"main\": \"cli.win32-x64-msvc.node\",\n  \"files\": [\n    \"cli.win32-x64-msvc.node\"\n  ],\n  \"description\": \"Command line interface for building Tauri apps\",\n  \"homepage\": \"https://github.com/tauri-apps/tauri#readme\",\n  \"contributors\": [\n    \"Tauri Programme within The Commons Conservancy\"\n  ],\n  \"license\": \"Apache-2.0 OR MIT\",\n  \"engines\": {\n    \"node\": \">= 10\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/tauri-apps/tauri.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/tauri-apps/tauri/issues\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"os\": [\n    \"win32\"\n  ]\n}\n\n<!-- File: packages/cli/package.json (Tokens: ~627 | Category: anthropic-skill) -->\n{\n  \"name\": \"@tauri-apps/cli\",\n  \"version\": \"2.12.4\",\n  \"description\": \"Command line interface for building Tauri apps\",\n  \"type\": \"commonjs\",\n  \"funding\": {\n    \"type\": \"opencollective\",\n    \"url\": \"https://opencollective.com/tauri\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/tauri-apps/tauri.git\"\n  },\n  \"contributors\": [\n    \"Tauri Programme within The Commons Conservancy\"\n  ],\n  \"license\": \"Apache-2.0 OR MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/tauri-apps/tauri/issues\"\n  },\n  \"homepage\": \"https://github.com/tauri-apps/tauri#readme\",\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"main\": \"main.js\",\n  \"types\": \"main.d.ts\",\n  \"napi\": {\n    \"binaryName\": \"cli\",\n    \"targets\": [\n      \"x86_64-unknown-linux-gnu\",\n      \"x86_64-pc-windows-msvc\",\n      \"x86_64-apple-darwin\",\n      \"aarch64-apple-darwin\",\n      \"aarch64-unknown-linux-gnu\",\n      \"aarch64-unknown-linux-musl\",\n      \"armv7-unknown-linux-gnueabihf\",\n      \"x86_64-unknown-linux-musl\",\n      \"riscv64gc-unknown-linux-gnu\",\n      \"i686-pc-windows-msvc\",\n      \"aarch64-pc-windows-msvc\"\n    ]\n  },\n  \"devDependencies\": {\n    \"@napi-rs/cli\": \"3.10.8\",\n    \"@types/node\": \"^24.11.0\",\n    \"cross-env\": \"10.1.0\",\n    \"vitest\": \"^5.0.0\"\n  },\n  \"engines\": {\n    \"node\": \">= 10\"\n  },\n  \"bin\": {\n    \"tauri\": \"./tauri.js\"\n  },\n  \"scripts\": {\n    \"artifacts\": \"napi artifacts\",\n    \"build\": \"cross-env TARGET=node napi build --platform --profile release-size-optimized\",\n    \"postbuild\": \"node append-headers.js\",\n    \"build:debug\": \"cross-env TARGET=node napi build --platform\",\n    \"postbuild:debug\": \"node append-headers.js\",\n    \"prepublishOnly\": \"napi prepublish -t npm --gh-release-id $RELEASE_ID\",\n    \"prepack\": \"cp ../../crates/tauri-schema-generator/schemas/config.schema.json .\",\n    \"version\": \"napi version\",\n    \"test\": \"vitest run\",\n    \"tauri\": \"node ./tauri.js\"\n  }\n}\n\n<!-- File: packages/api/README.md (Tokens: ~919 | Category: plugin-manifest) -->\n# @tauri-apps/api\n\n <img align=\"right\" src=\"https://github.com/tauri-apps/tauri/raw/dev/.github/icon.png\" height=\"128\" width=\"128\">\n\n[![status](https://img.shields.io/badge/status-stable-blue.svg)](https://github.com/tauri-apps/tauri/tree/dev)\n[![License](https://img.shields.io/badge/License-MIT%20or%20Apache%202-green.svg)](https://opencollective.com/tauri)\n[![lint js](https://img.shields.io/github/actions/workflow/status/tauri-apps/tauri/lint-js.yml?label=lint%20js&logo=github)](https://github.com/tauri-apps/tauri/actions/workflows/lint-js.yml)\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri?ref=badge_shield)\n[![Chat Server](https://img.shields.io/badge/chat-discord-7289da.svg)](https://discord.gg/SpmNs4S)\n[![website](https://img.shields.io/badge/website-tauri.app-purple.svg)](https://tauri.app)\n[![https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg](https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg)](https://good-labs.github.io/greater-good-affirmation)\n[![support](https://img.shields.io/badge/sponsor-Open%20Collective-blue.svg)](https://opencollective.com/tauri)\n\n| Component       | Version                                               |\n| --------------- | ----------------------------------------------------- |\n| @tauri-apps/api | ![](https://img.shields.io/npm/v/@tauri-apps/api.svg) |\n\n## About Tauri\n\nTauri is a polyglot and generic system that is very composable and allows engineers to make a wide variety of applications. It is used for building applications for Desktop Computers using a combination of Rust tools and HTML rendered in a Webview. Apps built with Tauri can ship with any number of pieces of an optional JS API / Rust API so that webviews can control the system via message passing. In fact, developers can extend the default API with their own functionality and bridge the Webview and Rust-based backend easily.\n\nTauri apps can have custom menus and have tray-type interfaces. They can be updated, and are managed by the user's operating system as expected. They are very small, because they use the system's webview. They do not ship a runtime, since the final binary is compiled from rust. This makes the reversing of Tauri apps not a trivial task.\n\n## This module\n\nThis is a typescript library that creates `cjs` and `esm` JavaScript endpoints for you to import into your Frontend framework so that the Webview can call and listen to backend activity. We also ship the pure typescript, because for some frameworks this is more optimal. It uses the message passing of webviews to their hosts.\n\nTo learn more about the details of how all of these pieces fit together, please consult this [ARCHITECTURE.md](https://github.com/tauri-apps/tauri/blob/dev/ARCHITECTURE.md) document.\n\n## Installation\n\nThe preferred method is to install this module locally as a dependency:\n\n```\n$ pnpm add @tauri-apps/api\n$ yarn add @tauri-apps/api\n$ npm add @tauri-apps/api\n```\n\n## Semver\n\n**tauri** is following [Semantic Versioning 2.0](https://semver.org/).\n\n## Licenses\n\nCode: (c) 2019 - 2021 - The Tauri Programme within The Commons Conservancy.\n\nMIT or MIT/Apache 2.0 where applicable.\n\nLogo: CC-BY-NC-ND\n\n- Original Tauri Logo Designs by [Daniel Thompson-Yvetot](https://github.com/nothingismagick) and [Guillaume Chau](https://github.com/akryum)\n\n<!-- File: packages/cli/npm/darwin-arm64/README.md (Tokens: ~300 | Category: plugin-manifest) -->\n# darwin-arm64 Documentation\n\nPath: `packages/cli/npm/darwin-arm64/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/darwin-arm64/README.md)\n\n<!-- File: packages/cli/npm/darwin-x64/README.md (Tokens: ~300 | Category: plugin-manifest) -->\n# darwin-x64 Documentation\n\nPath: `packages/cli/npm/darwin-x64/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/darwin-x64/README.md)\n\n<!-- File: packages/cli/npm/linux-arm-gnueabihf/README.md (Tokens: ~300 | Category: plugin-manifest) -->\n# linux-arm-gnueabihf Documentation\n\nPath: `packages/cli/npm/linux-arm-gnueabihf/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm-gnueabihf/README.md)\n\n<!-- File: packages/cli/npm/linux-arm64-gnu/README.md (Tokens: ~300 | Category: plugin-manifest) -->\n# linux-arm64-gnu Documentation\n\nPath: `packages/cli/npm/linux-arm64-gnu/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm64-gnu/README.md)\n\n<!-- File: packages/cli/npm/linux-arm64-musl/README.md (Tokens: ~300 | Category: plugin-manifest) -->\n# linux-arm64-musl Documentation\n\nPath: `packages/cli/npm/linux-arm64-musl/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-arm64-musl/README.md)\n\n<!-- File: packages/cli/npm/linux-riscv64-gnu/README.md (Tokens: ~300 | Category: plugin-manifest) -->\n# linux-riscv64-gnu Documentation\n\nPath: `packages/cli/npm/linux-riscv64-gnu/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-riscv64-gnu/README.md)\n\n<!-- File: packages/cli/npm/linux-x64-gnu/README.md (Tokens: ~300 | Category: plugin-manifest) -->\n# linux-x64-gnu Documentation\n\nPath: `packages/cli/npm/linux-x64-gnu/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-x64-gnu/README.md)\n\n<!-- File: packages/cli/npm/linux-x64-musl/README.md (Tokens: ~300 | Category: plugin-manifest) -->\n# linux-x64-musl Documentation\n\nPath: `packages/cli/npm/linux-x64-musl/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/linux-x64-musl/README.md)\n\n<!-- File: packages/cli/npm/win32-arm64-msvc/README.md (Tokens: ~300 | Category: plugin-manifest) -->\n# win32-arm64-msvc Documentation\n\nPath: `packages/cli/npm/win32-arm64-msvc/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-arm64-msvc/README.md)\n\n<!-- File: packages/cli/npm/win32-ia32-msvc/README.md (Tokens: ~300 | Category: plugin-manifest) -->\n# win32-ia32-msvc Documentation\n\nPath: `packages/cli/npm/win32-ia32-msvc/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/tauri-apps/tauri/HEAD/packages/cli/npm/win32-ia32-msvc/README.md)\n\n<!-- ... +4 more modular skills available via /api/skills/tauri-apps/tauri?path={path} -->\n</yakaai_skills>"}