@tauri-apps/cli 2.11.4 → 3.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,9 @@
1
1
  {
2
+ "$id": "https://schema.tauri.app/config/3.0.0-alpha.0",
2
3
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "https://schema.tauri.app/config/2.11.3",
4
4
  "title": "Config",
5
- "description": "The Tauri configuration object.\n It is read from a file where you can define your frontend assets,\n configure the bundler and define a tray icon.\n\n The configuration file is generated by the\n [`tauri init`](https://v2.tauri.app/reference/cli/#init) command that lives in\n your Tauri application source directory (src-tauri).\n\n Once generated, you may modify it at will to customize your Tauri application.\n\n ## File Formats\n\n By default, the configuration is defined as a JSON file named `tauri.conf.json`.\n\n Tauri also supports JSON5 and TOML files via the `config-json5` and `config-toml` Cargo features, respectively.\n The JSON5 file name must be either `tauri.conf.json` or `tauri.conf.json5`.\n The TOML file name is `Tauri.toml`.\n\n ## Platform-Specific Configuration\n\n In addition to the default configuration file, Tauri can\n read a platform-specific configuration from `tauri.linux.conf.json`,\n `tauri.windows.conf.json`, `tauri.macos.conf.json`, `tauri.android.conf.json` and `tauri.ios.conf.json`\n (or `Tauri.linux.toml`, `Tauri.windows.toml`, `Tauri.macos.toml`, `Tauri.android.toml` and `Tauri.ios.toml` if the `Tauri.toml` format is used),\n which gets merged with the main configuration object.\n\n ## Configuration Structure\n\n The configuration is composed of the following objects:\n\n - [`app`](#appconfig): The Tauri configuration\n - [`build`](#buildconfig): The build configuration\n - [`bundle`](#bundleconfig): The bundle configurations\n - [`plugins`](#pluginconfig): The plugins configuration\n\n Example tauri.config.json file:\n\n ```json\n {\n \"productName\": \"tauri-app\",\n \"version\": \"0.1.0\",\n \"build\": {\n \"beforeBuildCommand\": \"\",\n \"beforeDevCommand\": \"\",\n \"devUrl\": \"http://localhost:3000\",\n \"frontendDist\": \"../dist\"\n },\n \"app\": {\n \"security\": {\n \"csp\": null\n },\n \"windows\": [\n {\n \"fullscreen\": false,\n \"height\": 600,\n \"resizable\": true,\n \"title\": \"Tauri App\",\n \"width\": 800\n }\n ]\n },\n \"bundle\": {},\n \"plugins\": {}\n }\n ```",
5
+ "description": "The Tauri configuration object.\nIt is read from a file where you can define your frontend assets,\nconfigure the bundler and define a tray icon.\n\nThe configuration file is generated by the\n[`tauri init`](https://v2.tauri.app/reference/cli/#init) command that lives in\nyour Tauri application source directory (src-tauri).\n\nOnce generated, you may modify it at will to customize your Tauri application.\n\n## File Formats\n\nBy default, the configuration is defined as a JSON file named `tauri.conf.json`.\n\nTauri also supports JSON5 and TOML files via the `config-json5` and `config-toml` Cargo features, respectively.\nThe JSON5 file name must be either `tauri.conf.json` or `tauri.conf.json5`.\nThe TOML file name is `Tauri.toml`.\n\n## Platform-Specific Configuration\n\nIn addition to the default configuration file, Tauri can\nread a platform-specific configuration from `tauri.linux.conf.json`,\n`tauri.windows.conf.json`, `tauri.macos.conf.json`, `tauri.android.conf.json` and `tauri.ios.conf.json`\n(or `Tauri.linux.toml`, `Tauri.windows.toml`, `Tauri.macos.toml`, `Tauri.android.toml` and `Tauri.ios.toml` if the `Tauri.toml` format is used),\nwhich gets merged with the main configuration object.\n\n## Configuration Structure\n\nThe configuration is composed of the following objects:\n\n- [`app`](#appconfig): The Tauri configuration\n- [`build`](#buildconfig): The build configuration\n- [`bundle`](#bundleconfig): The bundle configurations\n- [`plugins`](#pluginconfig): The plugins configuration\n\nExample tauri.config.json file:\n\n```json\n{\n \"productName\": \"tauri-app\",\n \"version\": \"0.1.0\",\n \"build\": {\n \"beforeBuildCommand\": \"\",\n \"beforeDevCommand\": \"\",\n \"devUrl\": \"http://localhost:3000\",\n \"frontendDist\": \"../dist\"\n },\n \"app\": {\n \"security\": {\n \"csp\": null\n },\n \"windows\": [\n {\n \"fullscreen\": false,\n \"height\": 600,\n \"resizable\": true,\n \"title\": \"Tauri App\",\n \"width\": 800\n }\n ]\n },\n \"bundle\": {},\n \"plugins\": {}\n}\n```",
6
6
  "type": "object",
7
- "required": [
8
- "identifier"
9
- ],
10
7
  "properties": {
11
8
  "$schema": {
12
9
  "description": "The JSON schema for the Tauri config.",
@@ -16,7 +13,7 @@
16
13
  ]
17
14
  },
18
15
  "productName": {
19
- "description": "App name.",
16
+ "description": "App name.\n\nThis is the name your app is known by on the user's system, so it must be changed from the\ndefault before publishing. Besides naming the generated bundles, it is written into platform\nmetadata and install paths that are expected to be unique to your application.\n\n## Platform-specific\n\n- **macOS**: Names the `.app` bundle and the `.dmg`, and sets the bundle's\n `CFBundleDisplayName` and `CFBundleName` properties. `CFBundleName` can be overridden with\n [`bundle > macOS > bundleName`](MacConfig::bundle_name).\n- **Linux**: Kebab-cased for the Debian and RPM package names, used as the `Name` entry of\n the desktop file and as the resource directory name under `/usr/lib`.\n- **Windows**: Names the installers, the installation directory, the Start Menu folder and\n the `HKCU\\Software\\<publisher>\\<product name>` registry key. It also derives the default\n WiX upgrade code, which must be unique across applications and can be set explicitly with\n [`bundle > windows > wix > upgradeCode`](WixConfig::upgrade_code).",
20
17
  "type": [
21
18
  "string",
22
19
  "null"
@@ -24,42 +21,42 @@
24
21
  "pattern": "^[^/\\:*?\"<>|]+$"
25
22
  },
26
23
  "mainBinaryName": {
27
- "description": "Overrides app's main binary filename.\n\n By default, Tauri uses the output binary from `cargo`, by setting this, we will rename that binary in `tauri-cli`'s\n `tauri build` command, and target `tauri bundle` to it\n\n If possible, change the [`package name`] or set the [`name field`] instead,\n and if that's not enough and you're using nightly, consider using the [`different-binary-name`] feature instead\n\n Note: this config should not include the binary extension (e.g. `.exe`), we'll add that for you\n\n [`package name`]: https://doc.rust-lang.org/cargo/reference/manifest.html#the-name-field\n [`name field`]: https://doc.rust-lang.org/cargo/reference/cargo-targets.html#the-name-field\n [`different-binary-name`]: https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#different-binary-name",
24
+ "description": "Overrides app's main binary filename.\n\nBy default, Tauri uses the output binary from `cargo`, by setting this, we will rename that binary in `tauri-cli`'s\n`tauri build` command, and target `tauri bundle` to it\n\nIf possible, change the [`package name`] or set the [`name field`] instead,\nand if that's not enough and you're using nightly, consider using the [`different-binary-name`] feature instead\n\nNote: this config should not include the binary extension (e.g. `.exe`), we'll add that for you\n\n[`package name`]: https://doc.rust-lang.org/cargo/reference/manifest.html#the-name-field\n[`name field`]: https://doc.rust-lang.org/cargo/reference/cargo-targets.html#the-name-field\n[`different-binary-name`]: https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#different-binary-name",
28
25
  "type": [
29
26
  "string",
30
27
  "null"
31
28
  ]
32
29
  },
33
30
  "version": {
34
- "description": "App version. It is a semver version number or a path to a `package.json` file containing the `version` field.\n\n If removed the version number from `Cargo.toml` is used.\n It's recommended to manage the app versioning in the Tauri config.\n\n ## Platform-specific\n\n - **macOS**: Translates to the bundle's CFBundleShortVersionString property and is used as the default CFBundleVersion.\n You can set an specific bundle version using [`bundle > macOS > bundleVersion`](MacConfig::bundle_version).\n - **iOS**: Translates to the bundle's CFBundleShortVersionString property and is used as the default CFBundleVersion.\n You can set an specific bundle version using [`bundle > iOS > bundleVersion`](IosConfig::bundle_version).\n The `tauri ios build` CLI command has a `--build-number <number>` option that lets you append a build number to the app version.\n - **Android**: By default version 1.0 is used. You can set a version code using [`bundle > android > versionCode`](AndroidConfig::version_code).\n\n By default version 1.0 is used on Android.",
31
+ "description": "App version. It is a semver version number or a path to a `package.json` file containing the `version` field.\n\nIf removed the version number from `Cargo.toml` is used.\nIt's recommended to manage the app versioning in the Tauri config.\n\n## Platform-specific\n\n- **macOS**: Translates to the bundle's CFBundleShortVersionString property and is used as the default CFBundleVersion.\n You can set an specific bundle version using [`bundle > macOS > bundleVersion`](MacConfig::bundle_version).\n- **iOS**: Translates to the bundle's CFBundleShortVersionString property and is used as the default CFBundleVersion.\n You can set an specific bundle version using [`bundle > iOS > bundleVersion`](IosConfig::bundle_version).\n The `tauri ios build` CLI command has a `--build-number <number>` option that lets you append a build number to the app version.\n- **Android**: By default version 1.0 is used. You can set a version code using [`bundle > android > versionCode`](AndroidConfig::version_code).\n\nBy default version 1.0 is used on Android.",
35
32
  "type": [
36
33
  "string",
37
34
  "null"
38
35
  ]
39
36
  },
40
37
  "identifier": {
41
- "description": "The application identifier in reverse domain name notation (e.g. `com.tauri.example`).\n This string must be unique across applications since it is used in system configurations like\n the bundle ID and path to the webview data directory.\n This string must contain only alphanumeric characters (A-Z, a-z, and 0-9), hyphens (-),\n and periods (.).",
38
+ "description": "The application identifier in reverse domain name notation (e.g. `com.tauri.example`).\nThis string must be unique across applications since it is used in system configurations like\nthe bundle ID and path to the webview data directory.\nThis string must contain only alphanumeric characters (A-Z, a-z, and 0-9), hyphens (-),\nand periods (.).\nThe default value `com.tauri.dev` is rejected by `tauri build` and must be changed before\nbuilding your application.",
42
39
  "type": "string"
43
40
  },
44
41
  "app": {
45
42
  "description": "The App configuration.",
46
43
  "default": {
47
- "enableGTKAppId": false,
48
- "macOSPrivateApi": false,
44
+ "windows": [],
49
45
  "security": {
46
+ "freezePrototype": false,
47
+ "dangerousDisableAssetCspModification": false,
50
48
  "assetProtocol": {
51
- "enable": false,
52
- "scope": []
49
+ "scope": [],
50
+ "enable": false
53
51
  },
54
- "capabilities": [],
55
- "dangerousDisableAssetCspModification": false,
56
- "freezePrototype": false,
57
52
  "pattern": {
58
53
  "use": "brownfield"
59
- }
54
+ },
55
+ "capabilities": []
60
56
  },
61
- "windows": [],
62
- "withGlobalTauri": false
57
+ "macOSPrivateApi": false,
58
+ "withGlobalTauri": false,
59
+ "enableGTKAppId": false
63
60
  },
64
61
  "allOf": [
65
62
  {
@@ -70,8 +67,11 @@
70
67
  "build": {
71
68
  "description": "The build configuration.",
72
69
  "default": {
70
+ "removeUnusedCommands": false,
73
71
  "additionalWatchFolders": [],
74
- "removeUnusedCommands": false
72
+ "windows": {
73
+ "staticVCRuntime": true
74
+ }
75
75
  },
76
76
  "allOf": [
77
77
  {
@@ -83,15 +83,26 @@
83
83
  "description": "The bundler configuration.",
84
84
  "default": {
85
85
  "active": false,
86
- "android": {
87
- "autoIncrementVersionCode": false,
88
- "minSdkVersion": 24
89
- },
86
+ "targets": "all",
90
87
  "createUpdaterArtifacts": false,
91
- "iOS": {
92
- "minimumSystemVersion": "14.0"
93
- },
94
88
  "icon": [],
89
+ "useLocalToolsDir": false,
90
+ "windows": {
91
+ "digestAlgorithm": null,
92
+ "certificateThumbprint": null,
93
+ "timestampUrl": null,
94
+ "tsp": false,
95
+ "webviewInstallMode": {
96
+ "type": "downloadBootstrapper",
97
+ "silent": true
98
+ },
99
+ "allowDowngrades": true,
100
+ "minimumWebview2Version": null,
101
+ "wix": null,
102
+ "nsis": null,
103
+ "signCommand": null,
104
+ "bundleVCRuntime": false
105
+ },
95
106
  "linux": {
96
107
  "appimage": {
97
108
  "bundleMediaFramework": false,
@@ -101,13 +112,20 @@
101
112
  "files": {}
102
113
  },
103
114
  "rpm": {
115
+ "release": "1",
104
116
  "epoch": 0,
105
- "files": {},
106
- "release": "1"
117
+ "files": {}
107
118
  }
108
119
  },
109
120
  "macOS": {
121
+ "files": {},
122
+ "minimumSystemVersion": "10.13",
123
+ "hardenedRuntime": true,
110
124
  "dmg": {
125
+ "windowSize": {
126
+ "width": 660,
127
+ "height": 400
128
+ },
111
129
  "appPosition": {
112
130
  "x": 180,
113
131
  "y": 170
@@ -115,32 +133,18 @@
115
133
  "applicationFolderPosition": {
116
134
  "x": 480,
117
135
  "y": 170
118
- },
119
- "windowSize": {
120
- "height": 400,
121
- "width": 660
122
136
  }
123
- },
124
- "files": {},
125
- "hardenedRuntime": true,
126
- "minimumSystemVersion": "10.13"
137
+ }
127
138
  },
128
- "targets": "all",
129
- "useLocalToolsDir": false,
130
- "windows": {
131
- "allowDowngrades": true,
132
- "certificateThumbprint": null,
133
- "digestAlgorithm": null,
134
- "minimumWebview2Version": null,
135
- "nsis": null,
136
- "signCommand": null,
137
- "timestampUrl": null,
138
- "tsp": false,
139
- "webviewInstallMode": {
140
- "silent": true,
141
- "type": "downloadBootstrapper"
142
- },
143
- "wix": null
139
+ "iOS": {
140
+ "minimumSystemVersion": "15.0"
141
+ },
142
+ "android": {
143
+ "minSdkVersion": 24,
144
+ "autoIncrementVersionCode": false
145
+ },
146
+ "cef": {
147
+ "embed": true
144
148
  }
145
149
  },
146
150
  "allOf": [
@@ -160,32 +164,35 @@
160
164
  }
161
165
  },
162
166
  "additionalProperties": false,
167
+ "required": [
168
+ "identifier"
169
+ ],
163
170
  "definitions": {
164
171
  "AppConfig": {
165
- "description": "The App configuration object.\n\n See more: <https://v2.tauri.app/reference/config/#appconfig>",
172
+ "description": "The App configuration object.\n\nSee more: <https://v2.tauri.app/reference/config/#appconfig>",
166
173
  "type": "object",
167
174
  "properties": {
168
175
  "windows": {
169
- "description": "The app windows configuration.\n\n ## Example:\n\n To create a window at app startup\n\n ```json\n {\n \"app\": {\n \"windows\": [\n { \"width\": 800, \"height\": 600 }\n ]\n }\n }\n ```\n\n If not specified, the window's label (its identifier) defaults to \"main\",\n you can use this label to get the window through\n `app.get_webview_window` in Rust or `WebviewWindow.getByLabel` in JavaScript\n\n When working with multiple windows, each window will need an unique label\n\n ```json\n {\n \"app\": {\n \"windows\": [\n { \"label\": \"main\", \"width\": 800, \"height\": 600 },\n { \"label\": \"secondary\", \"width\": 800, \"height\": 600 }\n ]\n }\n }\n ```\n\n You can also set `create` to false and use this config through the Rust APIs\n\n ```json\n {\n \"app\": {\n \"windows\": [\n { \"create\": false, \"width\": 800, \"height\": 600 }\n ]\n }\n }\n ```\n\n and use it like this\n\n ```rust\n tauri::Builder::default()\n .setup(|app| {\n tauri::WebviewWindowBuilder::from_config(app.handle(), &app.config().app.windows[0])?.build()?;\n Ok(())\n });\n ```",
170
- "default": [],
176
+ "description": "The app windows configuration.\n\n## Example:\n\nTo create a window at app startup\n\n```json\n{\n \"app\": {\n \"windows\": [\n { \"width\": 800, \"height\": 600 }\n ]\n }\n}\n```\n\nIf not specified, the window's label (its identifier) defaults to \"main\",\nyou can use this label to get the window through\n`app.get_webview_window` in Rust or `WebviewWindow.getByLabel` in JavaScript\n\nWhen working with multiple windows, each window will need an unique label\n\n```json\n{\n \"app\": {\n \"windows\": [\n { \"label\": \"main\", \"width\": 800, \"height\": 600 },\n { \"label\": \"secondary\", \"width\": 800, \"height\": 600 }\n ]\n }\n}\n```\n\nYou can also set `create` to false and use this config through the Rust APIs\n\n```json\n{\n \"app\": {\n \"windows\": [\n { \"create\": false, \"width\": 800, \"height\": 600 }\n ]\n }\n}\n```\n\nand use it like this\n\n```rust\ntauri::Builder::default()\n .setup(|app| {\n tauri::WebviewWindowBuilder::from_config(app.handle(), &app.config().app.windows[0])?.build()?;\n Ok(())\n });\n```",
171
177
  "type": "array",
172
178
  "items": {
173
179
  "$ref": "#/definitions/WindowConfig"
174
- }
180
+ },
181
+ "default": []
175
182
  },
176
183
  "security": {
177
184
  "description": "Security configuration.",
178
185
  "default": {
186
+ "freezePrototype": false,
187
+ "dangerousDisableAssetCspModification": false,
179
188
  "assetProtocol": {
180
- "enable": false,
181
- "scope": []
189
+ "scope": [],
190
+ "enable": false
182
191
  },
183
- "capabilities": [],
184
- "dangerousDisableAssetCspModification": false,
185
- "freezePrototype": false,
186
192
  "pattern": {
187
193
  "use": "brownfield"
188
- }
194
+ },
195
+ "capabilities": []
189
196
  },
190
197
  "allOf": [
191
198
  {
@@ -206,35 +213,35 @@
206
213
  },
207
214
  "macOSPrivateApi": {
208
215
  "description": "MacOS private API configuration. Enables the transparent background API and sets the `fullScreenEnabled` preference to `true`.",
209
- "default": false,
210
- "type": "boolean"
216
+ "type": "boolean",
217
+ "default": false
211
218
  },
212
219
  "withGlobalTauri": {
213
220
  "description": "Whether we should inject the Tauri API on `window.__TAURI__` or not.",
214
- "default": false,
215
- "type": "boolean"
221
+ "type": "boolean",
222
+ "default": false
216
223
  },
217
224
  "enableGTKAppId": {
218
225
  "description": "If set to true \"identifier\" will be set as GTK app ID (on systems that use GTK).",
219
- "default": false,
220
- "type": "boolean"
226
+ "type": "boolean",
227
+ "default": false
221
228
  }
222
229
  },
223
230
  "additionalProperties": false
224
231
  },
225
232
  "WindowConfig": {
226
- "description": "The window configuration object.\n\n See more: <https://v2.tauri.app/reference/config/#windowconfig>",
233
+ "description": "The window configuration object.\n\nSee more: <https://v2.tauri.app/reference/config/#windowconfig>",
227
234
  "type": "object",
228
235
  "properties": {
229
236
  "label": {
230
237
  "description": "The window identifier. It must be alphanumeric.",
231
- "default": "main",
232
- "type": "string"
238
+ "type": "string",
239
+ "default": "main"
233
240
  },
234
241
  "create": {
235
- "description": "Whether Tauri should create this window at app startup or not.\n\n When this is set to `false` you must manually grab the config object via `app.config().app.windows`\n and create it with [`WebviewWindowBuilder::from_config`](https://docs.rs/tauri/2/tauri/webview/struct.WebviewWindowBuilder.html#method.from_config).\n\n ## Example:\n\n ```rust\n tauri::Builder::default()\n .setup(|app| {\n tauri::WebviewWindowBuilder::from_config(app.handle(), &app.config().app.windows[0])?.build()?;\n Ok(())\n });\n ```",
236
- "default": true,
237
- "type": "boolean"
242
+ "description": "Whether Tauri should create this window at app startup or not.\n\nWhen this is set to `false` you must manually grab the config object via `app.config().app.windows`\nand create it with [`WebviewWindowBuilder::from_config`](https://docs.rs/tauri/2/tauri/webview/struct.WebviewWindowBuilder.html#method.from_config).\n\n## Example:\n\n```rust\ntauri::Builder::default()\n .setup(|app| {\n tauri::WebviewWindowBuilder::from_config(app.handle(), &app.config().app.windows[0])?.build()?;\n Ok(())\n });\n```",
243
+ "type": "boolean",
244
+ "default": true
238
245
  },
239
246
  "url": {
240
247
  "description": "The window webview URL.",
@@ -253,14 +260,14 @@
253
260
  ]
254
261
  },
255
262
  "dragDropEnabled": {
256
- "description": "Whether the drag and drop is enabled or not on the webview. By default it is enabled.\n\n Disabling it is required to use HTML5 drag and drop on the frontend on Windows.",
257
- "default": true,
258
- "type": "boolean"
263
+ "description": "Whether the drag and drop handlers used internally to generate [`DragDropEvent`]s are enabled on the webview. By default it is enabled.\n\nDisabling it is required to use HTML5 drag and drop on the frontend on Windows since we replace the drag drop handler of WebView2.\n\nNote: this setting maps to [`WebviewBuilder::disable_drag_drop_handler`], not [`WindowBuilder::drag_and_drop`].\n\n[`DragDropEvent`]: https://docs.rs/tauri/latest/tauri/enum.DragDropEvent.html\n[`WebviewBuilder::disable_drag_drop_handler`]: https://docs.rs/tauri/latest/tauri/webview/struct.WebviewBuilder.html#method.disable_drag_drop_handler\n[`WindowBuilder::drag_and_drop`]: https://docs.rs/tauri/latest/x86_64-pc-windows-msvc/tauri/window/struct.WindowBuilder.html#method.drag_and_drop",
264
+ "type": "boolean",
265
+ "default": true
259
266
  },
260
267
  "center": {
261
268
  "description": "Whether or not the window starts centered or not.",
262
- "default": false,
263
- "type": "boolean"
269
+ "type": "boolean",
270
+ "default": false
264
271
  },
265
272
  "x": {
266
273
  "description": "The horizontal position of the window's top left corner in logical pixels",
@@ -280,15 +287,15 @@
280
287
  },
281
288
  "width": {
282
289
  "description": "The window width in logical pixels.",
283
- "default": 800.0,
284
290
  "type": "number",
285
- "format": "double"
291
+ "format": "double",
292
+ "default": 800.0
286
293
  },
287
294
  "height": {
288
295
  "description": "The window height in logical pixels.",
289
- "default": 600.0,
290
296
  "type": "number",
291
- "format": "double"
297
+ "format": "double",
298
+ "default": 600.0
292
299
  },
293
300
  "minWidth": {
294
301
  "description": "The min window width in logical pixels.",
@@ -323,7 +330,7 @@
323
330
  "format": "double"
324
331
  },
325
332
  "preventOverflow": {
326
- "description": "Whether or not to prevent the window from overflowing the workarea\n\n ## Platform-specific\n\n - **iOS / Android:** Unsupported.",
333
+ "description": "Whether or not to prevent the window from overflowing the workarea\n\n## Platform-specific\n\n- **iOS / Android:** Unsupported.",
327
334
  "anyOf": [
328
335
  {
329
336
  "$ref": "#/definitions/PreventOverflowConfig"
@@ -335,88 +342,88 @@
335
342
  },
336
343
  "resizable": {
337
344
  "description": "Whether the window is resizable or not. When resizable is set to false, native window's maximize button is automatically disabled.",
338
- "default": true,
339
- "type": "boolean"
345
+ "type": "boolean",
346
+ "default": true
340
347
  },
341
348
  "maximizable": {
342
- "description": "Whether the window's native maximize button is enabled or not.\n If resizable is set to false, this setting is ignored.\n\n ## Platform-specific\n\n - **macOS:** Disables the \"zoom\" button in the window titlebar, which is also used to enter fullscreen mode.\n - **Linux / iOS / Android:** Unsupported.",
343
- "default": true,
344
- "type": "boolean"
349
+ "description": "Whether the window's native maximize button is enabled or not.\nIf resizable is set to false, this setting is ignored.\n\n## Platform-specific\n\n- **macOS:** Disables the \"zoom\" button in the window titlebar, which is also used to enter fullscreen mode.\n- **Linux / iOS / Android:** Unsupported.",
350
+ "type": "boolean",
351
+ "default": true
345
352
  },
346
353
  "minimizable": {
347
- "description": "Whether the window's native minimize button is enabled or not.\n\n ## Platform-specific\n\n - **Linux / iOS / Android:** Unsupported.",
348
- "default": true,
349
- "type": "boolean"
354
+ "description": "Whether the window's native minimize button is enabled or not.\n\n## Platform-specific\n\n- **Linux / iOS / Android:** Unsupported.",
355
+ "type": "boolean",
356
+ "default": true
350
357
  },
351
358
  "closable": {
352
- "description": "Whether the window's native close button is enabled or not.\n\n ## Platform-specific\n\n - **Linux:** \"GTK+ will do its best to convince the window manager not to show a close button.\n Depending on the system, this function may not have any effect when called on a window that is already visible\"\n - **iOS / Android:** Unsupported.",
353
- "default": true,
354
- "type": "boolean"
359
+ "description": "Whether the window's native close button is enabled or not.\n\n## Platform-specific\n\n- **Linux:** \"GTK+ will do its best to convince the window manager not to show a close button.\n Depending on the system, this function may not have any effect when called on a window that is already visible\"\n- **iOS / Android:** Unsupported.",
360
+ "type": "boolean",
361
+ "default": true
355
362
  },
356
363
  "title": {
357
364
  "description": "The window title.",
358
- "default": "Tauri App",
359
- "type": "string"
365
+ "type": "string",
366
+ "default": "Tauri App"
360
367
  },
361
368
  "fullscreen": {
362
369
  "description": "Whether the window starts as fullscreen or not.",
363
- "default": false,
364
- "type": "boolean"
370
+ "type": "boolean",
371
+ "default": false
365
372
  },
366
373
  "focus": {
367
374
  "description": "Whether the window will be initially focused or not.",
368
- "default": true,
369
- "type": "boolean"
375
+ "type": "boolean",
376
+ "default": true
370
377
  },
371
378
  "focusable": {
372
379
  "description": "Whether the window will be focusable or not.",
373
- "default": true,
374
- "type": "boolean"
380
+ "type": "boolean",
381
+ "default": true
375
382
  },
376
383
  "transparent": {
377
- "description": "Whether the window is transparent or not.\n\n Note that on `macOS` this requires the `macos-private-api` feature flag, enabled under `tauri > macOSPrivateApi`.\n WARNING: Using private APIs on `macOS` prevents your application from being accepted to the `App Store`.",
378
- "default": false,
379
- "type": "boolean"
384
+ "description": "Whether the window is transparent or not.\n\nNote that on `macOS` this requires the `macos-private-api` feature flag, enabled under `tauri > macOSPrivateApi`.\nWARNING: Using private APIs on `macOS` prevents your application from being accepted to the `App Store`.\n\nOn Windows, using `noRedirectionBitmap` can help avoid a white flash when creating a transparent window.",
385
+ "type": "boolean",
386
+ "default": false
380
387
  },
381
388
  "maximized": {
382
389
  "description": "Whether the window is maximized or not.",
383
- "default": false,
384
- "type": "boolean"
390
+ "type": "boolean",
391
+ "default": false
385
392
  },
386
393
  "visible": {
387
394
  "description": "Whether the window is visible or not.",
388
- "default": true,
389
- "type": "boolean"
395
+ "type": "boolean",
396
+ "default": true
390
397
  },
391
398
  "decorations": {
392
399
  "description": "Whether the window should have borders and bars.",
393
- "default": true,
394
- "type": "boolean"
400
+ "type": "boolean",
401
+ "default": true
395
402
  },
396
403
  "alwaysOnBottom": {
397
404
  "description": "Whether the window should always be below other windows.",
398
- "default": false,
399
- "type": "boolean"
405
+ "type": "boolean",
406
+ "default": false
400
407
  },
401
408
  "alwaysOnTop": {
402
409
  "description": "Whether the window should always be on top of other windows.",
403
- "default": false,
404
- "type": "boolean"
410
+ "type": "boolean",
411
+ "default": false
405
412
  },
406
413
  "visibleOnAllWorkspaces": {
407
- "description": "Whether the window should be visible on all workspaces or virtual desktops.\n\n ## Platform-specific\n\n - **Windows / iOS / Android:** Unsupported.",
408
- "default": false,
409
- "type": "boolean"
414
+ "description": "Whether the window should be visible on all workspaces or virtual desktops.\n\n## Platform-specific\n\n- **Windows / iOS / Android:** Unsupported.",
415
+ "type": "boolean",
416
+ "default": false
410
417
  },
411
418
  "contentProtected": {
412
419
  "description": "Prevents the window contents from being captured by other apps.",
413
- "default": false,
414
- "type": "boolean"
420
+ "type": "boolean",
421
+ "default": false
415
422
  },
416
423
  "skipTaskbar": {
417
424
  "description": "If `true`, hides the window icon from the taskbar on Windows and Linux.",
418
- "default": false,
419
- "type": "boolean"
425
+ "type": "boolean",
426
+ "default": false
420
427
  },
421
428
  "windowClassname": {
422
429
  "description": "The name of the window class created on Windows to create the window. **Windows only**.",
@@ -425,6 +432,11 @@
425
432
  "null"
426
433
  ]
427
434
  },
435
+ "noRedirectionBitmap": {
436
+ "description": "This sets `WS_EX_NOREDIRECTIONBITMAP`.\n\nThis can avoid the white flash that may appear before the webview content is rendered\nwhen using a transparent window. **Windows only**.",
437
+ "type": "boolean",
438
+ "default": false
439
+ },
428
440
  "theme": {
429
441
  "description": "The initial window theme. Defaults to the system theme. Only implemented on Windows and macOS 10.14+.",
430
442
  "anyOf": [
@@ -446,7 +458,7 @@
446
458
  ]
447
459
  },
448
460
  "trafficLightPosition": {
449
- "description": "The position of the window controls on macOS.\n\n Requires titleBarStyle: Overlay and decorations: true.",
461
+ "description": "The position of the window controls on macOS.\n\nRequires titleBarStyle: Overlay and decorations: true.",
450
462
  "anyOf": [
451
463
  {
452
464
  "$ref": "#/definitions/LogicalPosition"
@@ -458,35 +470,35 @@
458
470
  },
459
471
  "hiddenTitle": {
460
472
  "description": "If `true`, sets the window title to be hidden on macOS.",
461
- "default": false,
462
- "type": "boolean"
473
+ "type": "boolean",
474
+ "default": false
463
475
  },
464
476
  "acceptFirstMouse": {
465
- "description": "Whether clicking an inactive window also clicks through to the webview on macOS.",
466
- "default": false,
467
- "type": "boolean"
477
+ "description": "Whether clicking an inactive window also clicks through to the webview on macOS.\n\n## Platform-specific\n\n- **CEF runtime:** Unsupported. Chromium decides on its own whether the click that activates\n the window reaches the page: it is swallowed on regular windows and only clicks through on\n always-on-top windows or while a DevTools debugger is attached.",
478
+ "type": "boolean",
479
+ "default": false
468
480
  },
469
481
  "tabbingIdentifier": {
470
- "description": "Defines the window [tabbing identifier] for macOS.\n\n Windows with matching tabbing identifiers will be grouped together.\n If the tabbing identifier is not set, automatic tabbing will be disabled.\n\n [tabbing identifier]: <https://developer.apple.com/documentation/appkit/nswindow/1644704-tabbingidentifier>",
482
+ "description": "Defines the window [tabbing identifier] for macOS.\n\nWindows with matching tabbing identifiers will be grouped together.\nIf the tabbing identifier is not set, automatic tabbing will be disabled.\n\n[tabbing identifier]: <https://developer.apple.com/documentation/appkit/nswindow/1644704-tabbingidentifier>",
471
483
  "type": [
472
484
  "string",
473
485
  "null"
474
486
  ]
475
487
  },
476
488
  "additionalBrowserArgs": {
477
- "description": "Defines additional browser arguments on Windows. By default wry passes `--disable-features=msWebOOUI,msPdfOOUI,msSmartScreenProtection`\n so if you use this method, you also need to disable these components by yourself if you want.",
489
+ "description": "Defines additional browser arguments on Windows.\n\n## Warning\n\nWebview instances with different browser arguments must also have different [data directories](Self::data_directory).\n\nBy default wry passes `--disable-features=msWebOOUI,msPdfOOUI,msSmartScreenProtection`\nso if you set this, you also need to disable these components by yourself if you want.",
478
490
  "type": [
479
491
  "string",
480
492
  "null"
481
493
  ]
482
494
  },
483
495
  "shadow": {
484
- "description": "Whether or not the window has shadow.\n\n ## Platform-specific\n\n - **Windows:**\n - `false` has no effect on decorated window, shadow are always ON.\n - `true` will make undecorated window have a 1px white border,\n and on Windows 11, it will have a rounded corners.\n - **Linux:** Unsupported.",
485
- "default": true,
486
- "type": "boolean"
496
+ "description": "Whether or not the window has shadow.\n\n## Platform-specific\n\n- **Windows:**\n - `false` has no effect on decorated window, shadow are always ON.\n - `true` will make undecorated window have a 1px white border,\nand on Windows 11, it will have a rounded corners.\n- **Linux:** Unsupported.",
497
+ "type": "boolean",
498
+ "default": true
487
499
  },
488
500
  "windowEffects": {
489
- "description": "Window effects.\n\n Requires the window to be transparent.\n\n ## Platform-specific:\n\n - **Windows**: If using decorations or shadows, you may want to try this workaround <https://github.com/tauri-apps/tao/issues/72#issuecomment-975607891>\n - **Linux**: Unsupported",
501
+ "description": "Window effects.\n\nRequires the window to be transparent.\n\n## Platform-specific:\n\n- **Windows**: If using decorations or shadows, you may want to try this workaround <https://github.com/tauri-apps/tao/issues/72#issuecomment-975607891>\n- **Linux**: Unsupported",
490
502
  "anyOf": [
491
503
  {
492
504
  "$ref": "#/definitions/WindowEffectsConfig"
@@ -497,19 +509,19 @@
497
509
  ]
498
510
  },
499
511
  "incognito": {
500
- "description": "Whether or not the webview should be launched in incognito mode.\n\n ## Platform-specific:\n\n - **Android**: Unsupported.",
501
- "default": false,
502
- "type": "boolean"
512
+ "description": "Whether or not the webview should be launched in incognito mode.\n\n## Platform-specific:\n\n- **Android**: Unsupported.",
513
+ "type": "boolean",
514
+ "default": false
503
515
  },
504
516
  "parent": {
505
- "description": "Sets the window associated with this label to be the parent of the window to be created.\n\n ## Platform-specific\n\n - **Windows**: This sets the passed parent as an owner window to the window to be created.\n From [MSDN owned windows docs](https://docs.microsoft.com/en-us/windows/win32/winmsg/window-features#owned-windows):\n - An owned window is always above its owner in the z-order.\n - The system automatically destroys an owned window when its owner is destroyed.\n - An owned window is hidden when its owner is minimized.\n - **Linux**: This makes the new window transient for parent, see <https://docs.gtk.org/gtk3/method.Window.set_transient_for.html>\n - **macOS**: This adds the window as a child of parent, see <https://developer.apple.com/documentation/appkit/nswindow/1419152-addchildwindow?language=objc>",
517
+ "description": "Sets the window associated with this label to be the parent of the window to be created.\n\n## Platform-specific\n\n- **Windows**: This sets the passed parent as an owner window to the window to be created.\n From [MSDN owned windows docs](https://docs.microsoft.com/en-us/windows/win32/winmsg/window-features#owned-windows):\n - An owned window is always above its owner in the z-order.\n - The system automatically destroys an owned window when its owner is destroyed.\n - An owned window is hidden when its owner is minimized.\n- **Linux**: This makes the new window transient for parent, see <https://docs.gtk.org/gtk3/method.Window.set_transient_for.html>\n- **macOS**: This adds the window as a child of parent, see <https://developer.apple.com/documentation/appkit/nswindow/1419152-addchildwindow?language=objc>",
506
518
  "type": [
507
519
  "string",
508
520
  "null"
509
521
  ]
510
522
  },
511
523
  "proxyUrl": {
512
- "description": "The proxy URL for the WebView for all network requests.\n\n Must be either a `http://` or a `socks5://` URL.\n\n ## Platform-specific\n\n - **macOS**: Requires the `macos-proxy` feature flag and only compiles for macOS 14+.",
524
+ "description": "The proxy URL for the WebView for all network requests.\n\nMust be either a `http://` or a `socks5://` URL.\n\n## Platform-specific\n\n- **macOS**: Requires the `macos-proxy` feature flag and only compiles for macOS 14+.",
513
525
  "type": [
514
526
  "string",
515
527
  "null"
@@ -517,29 +529,29 @@
517
529
  "format": "uri"
518
530
  },
519
531
  "zoomHotkeysEnabled": {
520
- "description": "Whether page zooming by hotkeys is enabled\n\n ## Platform-specific:\n\n - **Windows**: Controls WebView2's [`IsZoomControlEnabled`](https://learn.microsoft.com/en-us/microsoft-edge/webview2/reference/winrt/microsoft_web_webview2_core/corewebview2settings?view=webview2-winrt-1.0.2420.47#iszoomcontrolenabled) setting.\n - **MacOS / Linux**: Injects a polyfill that zooms in and out with `ctrl/command` + `-/=`,\n 20% in each step, ranging from 20% to 1000%. Requires `webview:allow-set-webview-zoom` permission\n\n - **Android / iOS**: Unsupported.",
521
- "default": false,
522
- "type": "boolean"
532
+ "description": "Whether page zooming by hotkeys is enabled\n\n## Platform-specific:\n\n- **Windows**: Controls WebView2's [`IsZoomControlEnabled`](https://learn.microsoft.com/en-us/microsoft-edge/webview2/reference/winrt/microsoft_web_webview2_core/corewebview2settings?view=webview2-winrt-1.0.2420.47#iszoomcontrolenabled) setting.\n- **MacOS / Linux**: Injects a polyfill that zooms in and out with `ctrl/command` + `-/=`,\n20% in each step, ranging from 20% to 1000%. Requires `webview:allow-set-webview-zoom` permission\n\n- **Android / iOS**: Unsupported.",
533
+ "type": "boolean",
534
+ "default": false
523
535
  },
524
536
  "browserExtensionsEnabled": {
525
- "description": "Whether browser extensions can be installed for the webview process\n\n ## Platform-specific:\n\n - **Windows**: Enables the WebView2 environment's [`AreBrowserExtensionsEnabled`](https://learn.microsoft.com/en-us/microsoft-edge/webview2/reference/winrt/microsoft_web_webview2_core/corewebview2environmentoptions?view=webview2-winrt-1.0.2739.15#arebrowserextensionsenabled)\n - **MacOS / Linux / iOS / Android** - Unsupported.",
526
- "default": false,
527
- "type": "boolean"
537
+ "description": "Whether browser extensions can be installed for the webview process\n\n## Platform-specific:\n\n- **Windows**: Enables the WebView2 environment's [`AreBrowserExtensionsEnabled`](https://learn.microsoft.com/en-us/microsoft-edge/webview2/reference/winrt/microsoft_web_webview2_core/corewebview2environmentoptions?view=webview2-winrt-1.0.2739.15#arebrowserextensionsenabled)\n- **MacOS / Linux / iOS / Android** - Unsupported.",
538
+ "type": "boolean",
539
+ "default": false
528
540
  },
529
541
  "useHttpsScheme": {
530
- "description": "Sets whether the custom protocols should use `https://<scheme>.localhost` instead of the default `http://<scheme>.localhost` on Windows and Android. Defaults to `false`.\n\n ## Note\n\n Using a `https` scheme will NOT allow mixed content when trying to fetch `http` endpoints and therefore will not match the behavior of the `<scheme>://localhost` protocols used on macOS and Linux.\n\n ## Warning\n\n Changing this value between releases will change the IndexedDB, cookies and localstorage location and your app will not be able to access the old data.",
531
- "default": false,
532
- "type": "boolean"
542
+ "description": "Sets whether the custom protocols should use `https://<scheme>.localhost` instead of the default `http://<scheme>.localhost` on Windows and Android. Defaults to `false`.\n\n## Note\n\nUsing a `https` scheme will NOT allow mixed content when trying to fetch `http` endpoints and therefore will not match the behavior of the `<scheme>://localhost` protocols used on macOS and Linux.\n\n## Warning\n\nChanging this value between releases will change the IndexedDB, cookies and localstorage location and your app will not be able to access the old data.",
543
+ "type": "boolean",
544
+ "default": false
533
545
  },
534
546
  "devtools": {
535
- "description": "Enable web inspector which is usually called browser devtools. Enabled by default.\n\n This API works in **debug** builds, but requires `devtools` feature flag to enable it in **release** builds.\n\n ## Platform-specific\n\n - macOS: This will call private functions on **macOS**.\n - Android: Open `chrome://inspect/#devices` in Chrome to get the devtools window. Wry's `WebView` devtools API isn't supported on Android.\n - iOS: Open Safari > Develop > [Your Device Name] > [Your WebView] to get the devtools window.",
547
+ "description": "Enable web inspector which is usually called browser devtools. Enabled by default.\n\nThis API works in **debug** builds, but requires `devtools` feature flag to enable it in **release** builds.\n\n## Platform-specific\n\n- macOS: This will call private functions on **macOS**.\n- Android: Open `chrome://inspect/#devices` in Chrome to get the devtools window. Wry's `WebView` devtools API isn't supported on Android.\n- iOS: Open Safari > Develop > [Your Device Name] > [Your WebView] to get the devtools window.",
536
548
  "type": [
537
549
  "boolean",
538
550
  "null"
539
551
  ]
540
552
  },
541
553
  "backgroundColor": {
542
- "description": "Set the window and webview background color.\n\n ## Platform-specific:\n\n - **Windows**: alpha channel is ignored for the window layer.\n - **Windows**: On Windows 7, alpha channel is ignored for the webview layer.\n - **Windows**: On Windows 8 and newer, if alpha channel is not `0`, it will be ignored for the webview layer.",
554
+ "description": "Set the window and webview background color.\n\n## Platform-specific:\n\n- **Windows**: alpha channel is ignored for the window layer.\n- **Windows**: On Windows 7, alpha channel is ignored for the webview layer.\n- **Windows**: On Windows 8 and newer, if alpha channel is not `0`, it will be ignored for the webview layer.",
543
555
  "anyOf": [
544
556
  {
545
557
  "$ref": "#/definitions/Color"
@@ -550,7 +562,7 @@
550
562
  ]
551
563
  },
552
564
  "backgroundThrottling": {
553
- "description": "Change the default background throttling behaviour.\n\n By default, browsers use a suspend policy that will throttle timers and even unload\n the whole tab (view) to free resources after roughly 5 minutes when a view became\n minimized or hidden. This will pause all tasks until the documents visibility state\n changes back from hidden to visible by bringing the view back to the foreground.\n\n ## Platform-specific\n\n - **Linux / Windows / Android**: Unsupported. Workarounds like a pending WebLock transaction might suffice.\n - **iOS**: Supported since version 17.0+.\n - **macOS**: Supported since version 14.0+.\n\n see <https://github.com/tauri-apps/tauri/issues/5250#issuecomment-2569380578>",
565
+ "description": "Change the default background throttling behaviour.\n\nBy default, browsers use a suspend policy that will throttle timers and even unload\nthe whole tab (view) to free resources after roughly 5 minutes when a view became\nminimized or hidden. This will pause all tasks until the documents visibility state\nchanges back from hidden to visible by bringing the view back to the foreground.\n\n## Platform-specific\n\n- **Linux / Windows / Android**: Unsupported. Workarounds like a pending WebLock transaction might suffice.\n- **iOS**: Supported since version 17.0+.\n- **macOS**: Supported since version 14.0+.\n\nsee <https://github.com/tauri-apps/tauri/issues/5250#issuecomment-2569380578>",
554
566
  "anyOf": [
555
567
  {
556
568
  "$ref": "#/definitions/BackgroundThrottlingPolicy"
@@ -562,28 +574,28 @@
562
574
  },
563
575
  "javascriptDisabled": {
564
576
  "description": "Whether we should disable JavaScript code execution on the webview or not.",
565
- "default": false,
566
- "type": "boolean"
577
+ "type": "boolean",
578
+ "default": false
567
579
  },
568
580
  "allowLinkPreview": {
569
- "description": "on macOS and iOS there is a link preview on long pressing links, this is enabled by default.\n see https://docs.rs/objc2-web-kit/latest/objc2_web_kit/struct.WKWebView.html#method.allowsLinkPreview",
570
- "default": true,
571
- "type": "boolean"
581
+ "description": "on macOS and iOS there is a link preview on long pressing links, this is enabled by default.\nsee https://docs.rs/objc2-web-kit/latest/objc2_web_kit/struct.WKWebView.html#method.allowsLinkPreview",
582
+ "type": "boolean",
583
+ "default": true
572
584
  },
573
585
  "disableInputAccessoryView": {
574
- "description": "Allows disabling the input accessory view on iOS.\n\n The accessory view is the view that appears above the keyboard when a text input element is focused.\n It usually displays a view with \"Done\", \"Next\" buttons.",
575
- "default": false,
576
- "type": "boolean"
586
+ "description": "Allows disabling the input accessory view on iOS.\n\nThe accessory view is the view that appears above the keyboard when a text input element is focused.\nIt usually displays a view with \"Done\", \"Next\" buttons.",
587
+ "type": "boolean",
588
+ "default": false
577
589
  },
578
590
  "dataDirectory": {
579
- "description": "Set a custom path for the webview's data directory (localStorage, cache, etc.) **relative to [`appDataDir()`]/${label}**.\n\n To set absolute paths, use [`WebviewWindowBuilder::data_directory`](https://docs.rs/tauri/2/tauri/webview/struct.WebviewWindowBuilder.html#method.data_directory)\n\n #### Platform-specific:\n\n - **Windows**: WebViews with different values for settings like `additionalBrowserArgs`, `browserExtensionsEnabled` or `scrollBarStyle` must have different data directories.\n - **macOS / iOS**: Unsupported, use `dataStoreIdentifier` instead.\n - **Android**: Unsupported.",
591
+ "description": "Set a custom path for the webview's data directory (localStorage, cache, etc.) **relative to [`appDataDir()`]/${label}**.\n\nTo set absolute paths, use [`WebviewWindowBuilder::data_directory`](https://docs.rs/tauri/2/tauri/webview/struct.WebviewWindowBuilder.html#method.data_directory)\n\n#### Platform-specific:\n\n- **Windows**: WebViews with different values for settings like `additionalBrowserArgs`, `browserExtensionsEnabled` or `scrollBarStyle` must have different data directories.\n- **macOS / iOS**: Unsupported, use `dataStoreIdentifier` instead.\n- **Android**: Unsupported.",
580
592
  "type": [
581
593
  "string",
582
594
  "null"
583
595
  ]
584
596
  },
585
597
  "dataStoreIdentifier": {
586
- "description": "Initialize the WebView with a custom data store identifier. This can be seen as a replacement for `dataDirectory` which is unavailable in WKWebView.\n See https://developer.apple.com/documentation/webkit/wkwebsitedatastore/init(foridentifier:)?language=objc\n\n The array must contain 16 u8 numbers.\n\n #### Platform-specific:\n\n - **iOS**: Supported since version 17.0+.\n - **macOS**: Supported since version 14.0+.\n - **Windows / Linux / Android**: Unsupported.",
598
+ "description": "Initialize the WebView with a custom data store identifier. This can be seen as a replacement for `dataDirectory` which is unavailable in WKWebView.\nSee https://developer.apple.com/documentation/webkit/wkwebsitedatastore/init(foridentifier:)?language=objc\n\nThe array must contain 16 u8 numbers.\n\n#### Platform-specific:\n\n- **iOS**: Supported since version 17.0+.\n- **macOS**: Supported since version 14.0+.\n- **Windows / Linux / Android**: Unsupported.",
587
599
  "type": [
588
600
  "array",
589
601
  "null"
@@ -591,13 +603,14 @@
591
603
  "items": {
592
604
  "type": "integer",
593
605
  "format": "uint8",
594
- "minimum": 0.0
606
+ "minimum": 0,
607
+ "maximum": 255
595
608
  },
596
- "maxItems": 16,
597
- "minItems": 16
609
+ "minItems": 16,
610
+ "maxItems": 16
598
611
  },
599
612
  "scrollBarStyle": {
600
- "description": "Specifies the native scrollbar style to use with the webview.\n CSS styles that modify the scrollbar are applied on top of the native appearance configured here.\n\n Defaults to `default`, which is the browser default.\n\n ## Platform-specific\n\n - **Windows**:\n - `fluentOverlay` requires WebView2 Runtime version 125.0.2535.41 or higher,\n and does nothing on older versions.\n - This option must be given the same value for all webviews that target the same data directory.\n - **Linux / Android / iOS / macOS**: Unsupported. Only supports `Default` and performs no operation.",
613
+ "description": "Specifies the native scrollbar style to use with the webview.\nCSS styles that modify the scrollbar are applied on top of the native appearance configured here.\n\nDefaults to `default`, which is the browser default.\n\n## Platform-specific\n\n- **Windows**:\n - `fluentOverlay` requires WebView2 Runtime version 125.0.2535.41 or higher,\n and does nothing on older versions.\n - This option must be given the same value for all webviews that target the same data directory.\n- **Linux / Android / iOS / macOS**: Unsupported. Only supports `Default` and performs no operation.",
601
614
  "default": "default",
602
615
  "allOf": [
603
616
  {
@@ -605,6 +618,11 @@
605
618
  }
606
619
  ]
607
620
  },
621
+ "limitNavigationsToAppBoundDomains": {
622
+ "description": "Whether to limit navigations to App-Bound Domains. This is necessary to\nenable Service Workers on iOS according to\n[StackOverflow](https://stackoverflow.com/questions/49673399/service-workers-unavailable-in-wkwebview-in-ios-11-3/64155509#64155509).\n\nDefault is false.\n\nNote: If you set this to `true` make sure to add localhost and any [`registrable\ndomains`](https://developer.mozilla.org/en-US/docs/Glossary/Registrable_domain)\nused in this webview to tauri-src/Info.ios.plist:\n\n```xml\n<plist>\n<dict>\n <key>WKAppBoundDomains</key>\n <array>\n <string>localhost</string>\n <string>aregistrabledomain.example</string>\n </array>\n</dict>\n</plist>\n```\n\nYou must add `localhost` if any webview with this set to true opens a\nlocal webpage, makes any localhost calls, or uses the isolation pattern\nbecause Tauri uses the `localhost` domain for hosting the application\nwebpage, the IPC protocol, and the isolation pattern's iframe.\n\nRequests served through custom uri schemes are allowed so long as they use\na registrable domain specified in the `WKAppBoundDomains` array for all the\nrequests from the app, including requests for the `localhost` domain.\n\nIn theory, you can whitelist an entire uri scheme by including the\nprotocol name followed by a colon. For example, to allow all requests\nusing a custom \"stream\" uri scheme (see [this tauri\nexample](https://github.com/tauri-apps/tauri/blob/dev/examples/streaming/main.rs)),\nyou could add `stream:` to the AppBoundDomains array. That said, I'm not\nsure whether Apple would let your app through app review if you do\nwhitelist an entire protocol because this feature is not mentioned in\n[their blog post on App-Bound\nDomains](https://webkit.org/blog/10882/app-bound-domains/).\n\nSee https://webkit.org/blog/10882/app-bound-domains/ and\nhttps://developer.apple.com/documentation/webkit/wkwebviewconfiguration/limitsnavigationstoappbounddomains\nfor the official documentation on App-Bound Domains.\n\n## Platform-specific\n\n- **iOS**: Supported since version 14.0+.\n- **Linux / Windows / Android / MacOS:** Unsupported.",
623
+ "type": "boolean",
624
+ "default": false
625
+ },
608
626
  "activityName": {
609
627
  "description": "The name of the Android activity to create for this window.",
610
628
  "type": [
@@ -613,23 +631,23 @@
613
631
  ]
614
632
  },
615
633
  "createdByActivityName": {
616
- "description": "The name of the Android activity that is creating this webview window.\n\n This is important to determine which stack the activity will belong to.",
634
+ "description": "The name of the Android activity that is creating this webview window.\n\nThis is important to determine which stack the activity will belong to.",
617
635
  "type": [
618
636
  "string",
619
637
  "null"
620
638
  ]
621
639
  },
622
640
  "requestedBySceneIdentifier": {
623
- "description": "Sets the identifier of the scene that is requesting the new scene,\n establishing a relationship between the two scenes.\n\n By default the system uses the foreground scene.",
641
+ "description": "Sets the identifier of the scene that is requesting the new scene,\nestablishing a relationship between the two scenes.\n\nBy default the system uses the foreground scene.",
624
642
  "type": [
625
643
  "string",
626
644
  "null"
627
645
  ]
628
646
  },
629
647
  "generalAutofillEnabled": {
630
- "description": "Controls the WebView's browser-level general autofill behavior.\n\n **This option does not disable password or credit card autofill.**\n\n When set to `false`, the WebView will not automatically populate\n general form fields using previously stored data such as addresses\n or contact information.\n\n If not specified, this is `true` by default.\n\n ## Platform-specific\n\n - **Windows**: Supported. WebView2's autofill feature (called\n \"Suggestions\") may not honor `autocomplete=\"off\"` on input\n elements in some cases.\n - **Linux / Android / iOS / macOS**: Unsupported and performs no\n operation.",
631
- "default": true,
632
- "type": "boolean"
648
+ "description": "Controls the WebView's browser-level general autofill behavior.\n\n**This option does not disable password or credit card autofill.**\n\nWhen set to `false`, the WebView will not automatically populate\ngeneral form fields using previously stored data such as addresses\nor contact information.\n\nIf not specified, this is `true` by default.\n\n## Platform-specific\n\n- **Windows**: Supported. WebView2's autofill feature (called\n \"Suggestions\") may not honor `autocomplete=\"off\"` on input\n elements in some cases.\n- **Linux / Android / iOS / macOS**: Unsupported and performs no\n operation.",
649
+ "type": "boolean",
650
+ "default": true
633
651
  }
634
652
  },
635
653
  "additionalProperties": false
@@ -643,7 +661,7 @@
643
661
  "format": "uri"
644
662
  },
645
663
  {
646
- "description": "The path portion of an app URL.\n For instance, to load `tauri://localhost/users/john`,\n you can simply provide `users/john` in this configuration.",
664
+ "description": "The path portion of an app URL.\nFor instance, to load `tauri://localhost/users/john`,\nyou can simply provide `users/john` in this configuration.",
647
665
  "type": "string"
648
666
  },
649
667
  {
@@ -661,7 +679,7 @@
661
679
  "type": "boolean"
662
680
  },
663
681
  {
664
- "description": "Enable prevent overflow with a margin\n so that the window's size + this margin won't overflow the workarea",
682
+ "description": "Enable prevent overflow with a margin\nso that the window's size + this margin won't overflow the workarea",
665
683
  "allOf": [
666
684
  {
667
685
  "$ref": "#/definitions/PreventOverflowMargin"
@@ -671,27 +689,27 @@
671
689
  ]
672
690
  },
673
691
  "PreventOverflowMargin": {
674
- "description": "Enable prevent overflow with a margin\n so that the window's size + this margin won't overflow the workarea",
692
+ "description": "Enable prevent overflow with a margin\nso that the window's size + this margin won't overflow the workarea",
675
693
  "type": "object",
676
- "required": [
677
- "height",
678
- "width"
679
- ],
680
694
  "properties": {
681
695
  "width": {
682
696
  "description": "Horizontal margin in physical pixels",
683
697
  "type": "integer",
684
698
  "format": "uint32",
685
- "minimum": 0.0
699
+ "minimum": 0
686
700
  },
687
701
  "height": {
688
702
  "description": "Vertical margin in physical pixels",
689
703
  "type": "integer",
690
704
  "format": "uint32",
691
- "minimum": 0.0
705
+ "minimum": 0
692
706
  }
693
707
  },
694
- "additionalProperties": false
708
+ "additionalProperties": false,
709
+ "required": [
710
+ "width",
711
+ "height"
712
+ ]
695
713
  },
696
714
  "Theme": {
697
715
  "description": "System theme.",
@@ -699,16 +717,12 @@
699
717
  {
700
718
  "description": "Light theme.",
701
719
  "type": "string",
702
- "enum": [
703
- "Light"
704
- ]
720
+ "const": "Light"
705
721
  },
706
722
  {
707
723
  "description": "Dark theme.",
708
724
  "type": "string",
709
- "enum": [
710
- "Dark"
711
- ]
725
+ "const": "Dark"
712
726
  }
713
727
  ]
714
728
  },
@@ -718,33 +732,23 @@
718
732
  {
719
733
  "description": "A normal title bar.",
720
734
  "type": "string",
721
- "enum": [
722
- "Visible"
723
- ]
735
+ "const": "Visible"
724
736
  },
725
737
  {
726
- "description": "Makes the title bar transparent, so the window background color is shown instead.\n\n Useful if you don't need to have actual HTML under the title bar. This lets you avoid the caveats of using `TitleBarStyle::Overlay`. Will be more useful when Tauri lets you set a custom window background color.",
738
+ "description": "Makes the title bar transparent, so the window background color is shown instead.\n\nUseful if you don't need to have actual HTML under the title bar. This lets you avoid the caveats of using `TitleBarStyle::Overlay`. Will be more useful when Tauri lets you set a custom window background color.",
727
739
  "type": "string",
728
- "enum": [
729
- "Transparent"
730
- ]
740
+ "const": "Transparent"
731
741
  },
732
742
  {
733
- "description": "Shows the title bar as a transparent overlay over the window's content.\n\n Keep in mind:\n - The height of the title bar is different on different OS versions, which can lead to window the controls and title not being where you don't expect.\n - You need to define a custom drag region to make your window draggable, however due to a limitation you can't drag the window when it's not in focus <https://github.com/tauri-apps/tauri/issues/4316>.\n - The color of the window title depends on the system theme.",
743
+ "description": "Shows the title bar as a transparent overlay over the window's content.\n\nKeep in mind:\n- The height of the title bar is different on different OS versions, which can lead to window the controls and title not being where you don't expect.\n- You need to define a custom drag region to make your window draggable, however due to a limitation you can't drag the window when it's not in focus <https://github.com/tauri-apps/tauri/issues/4316>.\n- The color of the window title depends on the system theme.",
734
744
  "type": "string",
735
- "enum": [
736
- "Overlay"
737
- ]
745
+ "const": "Overlay"
738
746
  }
739
747
  ]
740
748
  },
741
749
  "LogicalPosition": {
742
750
  "description": "Position coordinates struct.",
743
751
  "type": "object",
744
- "required": [
745
- "x",
746
- "y"
747
- ],
748
752
  "properties": {
749
753
  "x": {
750
754
  "description": "X coordinate.",
@@ -757,17 +761,18 @@
757
761
  "format": "double"
758
762
  }
759
763
  },
760
- "additionalProperties": false
764
+ "additionalProperties": false,
765
+ "required": [
766
+ "x",
767
+ "y"
768
+ ]
761
769
  },
762
770
  "WindowEffectsConfig": {
763
771
  "description": "The window effects configuration object",
764
772
  "type": "object",
765
- "required": [
766
- "effects"
767
- ],
768
773
  "properties": {
769
774
  "effects": {
770
- "description": "List of Window effects to apply to the Window.\n Conflicting effects will apply the first one and ignore the rest.",
775
+ "description": "List of Window effects to apply to the Window.\nConflicting effects will apply the first one and ignore the rest.",
771
776
  "type": "array",
772
777
  "items": {
773
778
  "$ref": "#/definitions/WindowEffect"
@@ -793,7 +798,7 @@
793
798
  "format": "double"
794
799
  },
795
800
  "color": {
796
- "description": "Window effect color. Affects [`WindowEffect::Blur`] and [`WindowEffect::Acrylic`] only\n on Windows 10 v1903+. Doesn't have any effect on Windows 7 or Windows 11.",
801
+ "description": "Window effect color. Affects [`WindowEffect::Blur`] and [`WindowEffect::Acrylic`] only\non Windows 10 v1903+. Doesn't have any effect on Windows 7 or Windows 11.",
797
802
  "anyOf": [
798
803
  {
799
804
  "$ref": "#/definitions/Color"
@@ -804,234 +809,178 @@
804
809
  ]
805
810
  }
806
811
  },
807
- "additionalProperties": false
812
+ "additionalProperties": false,
813
+ "required": [
814
+ "effects"
815
+ ]
808
816
  },
809
817
  "WindowEffect": {
810
818
  "description": "Platform-specific window effects",
811
819
  "oneOf": [
812
820
  {
813
821
  "description": "A default material appropriate for the view's effectiveAppearance. **macOS 10.14-**",
814
- "deprecated": true,
815
822
  "type": "string",
816
- "enum": [
817
- "appearanceBased"
818
- ]
823
+ "const": "appearanceBased",
824
+ "deprecated": true
819
825
  },
820
826
  {
821
827
  "description": "**macOS 10.14-**",
822
- "deprecated": true,
823
828
  "type": "string",
824
- "enum": [
825
- "light"
826
- ]
829
+ "const": "light",
830
+ "deprecated": true
827
831
  },
828
832
  {
829
833
  "description": "**macOS 10.14-**",
830
- "deprecated": true,
831
834
  "type": "string",
832
- "enum": [
833
- "dark"
834
- ]
835
+ "const": "dark",
836
+ "deprecated": true
835
837
  },
836
838
  {
837
839
  "description": "**macOS 10.14-**",
838
- "deprecated": true,
839
840
  "type": "string",
840
- "enum": [
841
- "mediumLight"
842
- ]
841
+ "const": "mediumLight",
842
+ "deprecated": true
843
843
  },
844
844
  {
845
845
  "description": "**macOS 10.14-**",
846
- "deprecated": true,
847
846
  "type": "string",
848
- "enum": [
849
- "ultraDark"
850
- ]
847
+ "const": "ultraDark",
848
+ "deprecated": true
851
849
  },
852
850
  {
853
851
  "description": "**macOS 10.10+**",
854
852
  "type": "string",
855
- "enum": [
856
- "titlebar"
857
- ]
853
+ "const": "titlebar"
858
854
  },
859
855
  {
860
856
  "description": "**macOS 10.10+**",
861
857
  "type": "string",
862
- "enum": [
863
- "selection"
864
- ]
858
+ "const": "selection"
865
859
  },
866
860
  {
867
861
  "description": "**macOS 10.11+**",
868
862
  "type": "string",
869
- "enum": [
870
- "menu"
871
- ]
863
+ "const": "menu"
872
864
  },
873
865
  {
874
866
  "description": "**macOS 10.11+**",
875
867
  "type": "string",
876
- "enum": [
877
- "popover"
878
- ]
868
+ "const": "popover"
879
869
  },
880
870
  {
881
871
  "description": "**macOS 10.11+**",
882
872
  "type": "string",
883
- "enum": [
884
- "sidebar"
885
- ]
873
+ "const": "sidebar"
886
874
  },
887
875
  {
888
876
  "description": "**macOS 10.14+**",
889
877
  "type": "string",
890
- "enum": [
891
- "headerView"
892
- ]
878
+ "const": "headerView"
893
879
  },
894
880
  {
895
881
  "description": "**macOS 10.14+**",
896
882
  "type": "string",
897
- "enum": [
898
- "sheet"
899
- ]
883
+ "const": "sheet"
900
884
  },
901
885
  {
902
886
  "description": "**macOS 10.14+**",
903
887
  "type": "string",
904
- "enum": [
905
- "windowBackground"
906
- ]
888
+ "const": "windowBackground"
907
889
  },
908
890
  {
909
891
  "description": "**macOS 10.14+**",
910
892
  "type": "string",
911
- "enum": [
912
- "hudWindow"
913
- ]
893
+ "const": "hudWindow"
914
894
  },
915
895
  {
916
896
  "description": "**macOS 10.14+**",
917
897
  "type": "string",
918
- "enum": [
919
- "fullScreenUI"
920
- ]
898
+ "const": "fullScreenUI"
921
899
  },
922
900
  {
923
901
  "description": "**macOS 10.14+**",
924
902
  "type": "string",
925
- "enum": [
926
- "tooltip"
927
- ]
903
+ "const": "tooltip"
928
904
  },
929
905
  {
930
906
  "description": "**macOS 10.14+**",
931
907
  "type": "string",
932
- "enum": [
933
- "contentBackground"
934
- ]
908
+ "const": "contentBackground"
935
909
  },
936
910
  {
937
911
  "description": "**macOS 10.14+**",
938
912
  "type": "string",
939
- "enum": [
940
- "underWindowBackground"
941
- ]
913
+ "const": "underWindowBackground"
942
914
  },
943
915
  {
944
916
  "description": "**macOS 10.14+**",
945
917
  "type": "string",
946
- "enum": [
947
- "underPageBackground"
948
- ]
918
+ "const": "underPageBackground"
949
919
  },
950
920
  {
951
921
  "description": "Mica effect that matches the system dark preference **Windows 11 Only**",
952
922
  "type": "string",
953
- "enum": [
954
- "mica"
955
- ]
923
+ "const": "mica"
956
924
  },
957
925
  {
958
926
  "description": "Mica effect with dark mode but only if dark mode is enabled on the system **Windows 11 Only**",
959
927
  "type": "string",
960
- "enum": [
961
- "micaDark"
962
- ]
928
+ "const": "micaDark"
963
929
  },
964
930
  {
965
931
  "description": "Mica effect with light mode **Windows 11 Only**",
966
932
  "type": "string",
967
- "enum": [
968
- "micaLight"
969
- ]
933
+ "const": "micaLight"
970
934
  },
971
935
  {
972
936
  "description": "Tabbed effect that matches the system dark preference **Windows 11 Only**",
973
937
  "type": "string",
974
- "enum": [
975
- "tabbed"
976
- ]
938
+ "const": "tabbed"
977
939
  },
978
940
  {
979
941
  "description": "Tabbed effect with dark mode but only if dark mode is enabled on the system **Windows 11 Only**",
980
942
  "type": "string",
981
- "enum": [
982
- "tabbedDark"
983
- ]
943
+ "const": "tabbedDark"
984
944
  },
985
945
  {
986
946
  "description": "Tabbed effect with light mode **Windows 11 Only**",
987
947
  "type": "string",
988
- "enum": [
989
- "tabbedLight"
990
- ]
948
+ "const": "tabbedLight"
991
949
  },
992
950
  {
993
- "description": "**Windows 7/10/11(22H1) Only**\n\n ## Notes\n\n This effect has bad performance when resizing/dragging the window on Windows 11 build 22621.",
951
+ "description": "**Windows 7/10/11(22H1) Only**\n\n## Notes\n\nThis effect has bad performance when resizing/dragging the window on Windows 11 build 22621.",
994
952
  "type": "string",
995
- "enum": [
996
- "blur"
997
- ]
953
+ "const": "blur"
998
954
  },
999
955
  {
1000
- "description": "**Windows 10/11 Only**\n\n ## Notes\n\n This effect has bad performance when resizing/dragging the window on Windows 10 v1903+ and Windows 11 build 22000.",
956
+ "description": "**Windows 10/11 Only**\n\n## Notes\n\nThis effect has bad performance when resizing/dragging the window on Windows 10 v1903+ and Windows 11 build 22000.",
1001
957
  "type": "string",
1002
- "enum": [
1003
- "acrylic"
1004
- ]
958
+ "const": "acrylic"
1005
959
  }
1006
960
  ]
1007
961
  },
1008
962
  "WindowEffectState": {
1009
- "description": "Window effect state **macOS only**\n\n <https://developer.apple.com/documentation/appkit/nsvisualeffectview/state>",
963
+ "description": "Window effect state **macOS only**\n\n<https://developer.apple.com/documentation/appkit/nsvisualeffectview/state>",
1010
964
  "oneOf": [
1011
965
  {
1012
966
  "description": "Make window effect state follow the window's active state",
1013
967
  "type": "string",
1014
- "enum": [
1015
- "followsWindowActiveState"
1016
- ]
968
+ "const": "followsWindowActiveState"
1017
969
  },
1018
970
  {
1019
971
  "description": "Make window effect state always active",
1020
972
  "type": "string",
1021
- "enum": [
1022
- "active"
1023
- ]
973
+ "const": "active"
1024
974
  },
1025
975
  {
1026
976
  "description": "Make window effect state always inactive",
1027
977
  "type": "string",
1028
- "enum": [
1029
- "inactive"
1030
- ]
978
+ "const": "inactive"
1031
979
  }
1032
980
  ]
1033
981
  },
1034
982
  "Color": {
983
+ "description": "A tuple struct of RGBA colors. Each value has minimum of 0 and maximum of 255.",
1035
984
  "anyOf": [
1036
985
  {
1037
986
  "description": "Color hex string, for example: #fff, #ffffff, or #ffffffff.",
@@ -1041,85 +990,96 @@
1041
990
  {
1042
991
  "description": "Array of RGB colors. Each value has minimum of 0 and maximum of 255.",
1043
992
  "type": "array",
993
+ "minItems": 3,
994
+ "maxItems": 3,
1044
995
  "items": [
1045
996
  {
1046
997
  "type": "integer",
1047
998
  "format": "uint8",
1048
- "minimum": 0.0
999
+ "minimum": 0,
1000
+ "maximum": 255
1049
1001
  },
1050
1002
  {
1051
1003
  "type": "integer",
1052
1004
  "format": "uint8",
1053
- "minimum": 0.0
1005
+ "minimum": 0,
1006
+ "maximum": 255
1054
1007
  },
1055
1008
  {
1056
1009
  "type": "integer",
1057
1010
  "format": "uint8",
1058
- "minimum": 0.0
1011
+ "minimum": 0,
1012
+ "maximum": 255
1059
1013
  }
1060
- ],
1061
- "maxItems": 3,
1062
- "minItems": 3
1014
+ ]
1063
1015
  },
1064
1016
  {
1065
1017
  "description": "Array of RGBA colors. Each value has minimum of 0 and maximum of 255.",
1066
1018
  "type": "array",
1019
+ "minItems": 4,
1020
+ "maxItems": 4,
1067
1021
  "items": [
1068
1022
  {
1069
1023
  "type": "integer",
1070
1024
  "format": "uint8",
1071
- "minimum": 0.0
1025
+ "minimum": 0,
1026
+ "maximum": 255
1072
1027
  },
1073
1028
  {
1074
1029
  "type": "integer",
1075
1030
  "format": "uint8",
1076
- "minimum": 0.0
1031
+ "minimum": 0,
1032
+ "maximum": 255
1077
1033
  },
1078
1034
  {
1079
1035
  "type": "integer",
1080
1036
  "format": "uint8",
1081
- "minimum": 0.0
1037
+ "minimum": 0,
1038
+ "maximum": 255
1082
1039
  },
1083
1040
  {
1084
1041
  "type": "integer",
1085
1042
  "format": "uint8",
1086
- "minimum": 0.0
1043
+ "minimum": 0,
1044
+ "maximum": 255
1087
1045
  }
1088
- ],
1089
- "maxItems": 4,
1090
- "minItems": 4
1046
+ ]
1091
1047
  },
1092
1048
  {
1093
1049
  "description": "Object of red, green, blue, alpha color values. Each value has minimum of 0 and maximum of 255.",
1094
1050
  "type": "object",
1095
- "required": [
1096
- "blue",
1097
- "green",
1098
- "red"
1099
- ],
1100
1051
  "properties": {
1101
1052
  "red": {
1102
1053
  "type": "integer",
1103
1054
  "format": "uint8",
1104
- "minimum": 0.0
1055
+ "minimum": 0,
1056
+ "maximum": 255
1105
1057
  },
1106
1058
  "green": {
1107
1059
  "type": "integer",
1108
1060
  "format": "uint8",
1109
- "minimum": 0.0
1061
+ "minimum": 0,
1062
+ "maximum": 255
1110
1063
  },
1111
1064
  "blue": {
1112
1065
  "type": "integer",
1113
1066
  "format": "uint8",
1114
- "minimum": 0.0
1067
+ "minimum": 0,
1068
+ "maximum": 255
1115
1069
  },
1116
1070
  "alpha": {
1117
- "default": 255,
1118
1071
  "type": "integer",
1119
1072
  "format": "uint8",
1120
- "minimum": 0.0
1073
+ "minimum": 0,
1074
+ "maximum": 255,
1075
+ "default": 255
1121
1076
  }
1122
- }
1077
+ },
1078
+ "required": [
1079
+ "red",
1080
+ "green",
1081
+ "blue"
1082
+ ]
1123
1083
  }
1124
1084
  ]
1125
1085
  },
@@ -1129,51 +1089,41 @@
1129
1089
  {
1130
1090
  "description": "A policy where background throttling is disabled",
1131
1091
  "type": "string",
1132
- "enum": [
1133
- "disabled"
1134
- ]
1092
+ "const": "disabled"
1135
1093
  },
1136
1094
  {
1137
1095
  "description": "A policy where a web view that's not in a window fully suspends tasks. This is usually the default behavior in case no policy is set.",
1138
1096
  "type": "string",
1139
- "enum": [
1140
- "suspend"
1141
- ]
1097
+ "const": "suspend"
1142
1098
  },
1143
1099
  {
1144
1100
  "description": "A policy where a web view that's not in a window limits processing, but does not fully suspend tasks.",
1145
1101
  "type": "string",
1146
- "enum": [
1147
- "throttle"
1148
- ]
1102
+ "const": "throttle"
1149
1103
  }
1150
1104
  ]
1151
1105
  },
1152
1106
  "ScrollBarStyle": {
1153
- "description": "The scrollbar style to use in the webview.\n\n ## Platform-specific\n\n - **Windows**: This option must be given the same value for all webviews that target the same data directory.",
1107
+ "description": "The scrollbar style to use in the webview.\n\n## Platform-specific\n\n- **Windows**: This option must be given the same value for all webviews that target the same data directory.",
1154
1108
  "oneOf": [
1155
1109
  {
1156
1110
  "description": "The scrollbar style to use in the webview.",
1157
1111
  "type": "string",
1158
- "enum": [
1159
- "default"
1160
- ]
1112
+ "const": "default"
1161
1113
  },
1162
1114
  {
1163
- "description": "Fluent UI style overlay scrollbars. **Windows Only**\n\n Requires WebView2 Runtime version 125.0.2535.41 or higher, does nothing on older versions,\n see <https://learn.microsoft.com/en-us/microsoft-edge/webview2/release-notes/?tabs=dotnetcsharp#10253541>",
1115
+ "description": "Fluent UI style overlay scrollbars. **Windows Only**\n\nRequires WebView2 Runtime version 125.0.2535.41 or higher, does nothing on older versions,\nsee <https://learn.microsoft.com/en-us/microsoft-edge/webview2/release-notes/?tabs=dotnetcsharp#10253541>",
1164
1116
  "type": "string",
1165
- "enum": [
1166
- "fluentOverlay"
1167
- ]
1117
+ "const": "fluentOverlay"
1168
1118
  }
1169
1119
  ]
1170
1120
  },
1171
1121
  "SecurityConfig": {
1172
- "description": "Security configuration.\n\n See more: <https://v2.tauri.app/reference/config/#securityconfig>",
1122
+ "description": "Security configuration.\n\nSee more: <https://v2.tauri.app/reference/config/#securityconfig>",
1173
1123
  "type": "object",
1174
1124
  "properties": {
1175
1125
  "csp": {
1176
- "description": "The Content Security Policy that will be injected on all HTML files on the built application.\n If [`dev_csp`](#SecurityConfig.devCsp) is not specified, this value is also injected on dev.\n\n This is a really important part of the configuration since it helps you ensure your WebView is secured.\n See <https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP>.",
1126
+ "description": "The Content Security Policy that will be injected on all HTML files on the built application.\nIf [`dev_csp`](#SecurityConfig.devCsp) is not specified, this value is also injected on dev.\n\nThis is a really important part of the configuration since it helps you ensure your WebView is secured.\nSee <https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP>.",
1177
1127
  "anyOf": [
1178
1128
  {
1179
1129
  "$ref": "#/definitions/Csp"
@@ -1184,7 +1134,7 @@
1184
1134
  ]
1185
1135
  },
1186
1136
  "devCsp": {
1187
- "description": "The Content Security Policy that will be injected on all HTML files on development.\n\n This is a really important part of the configuration since it helps you ensure your WebView is secured.\n See <https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP>.",
1137
+ "description": "The Content Security Policy that will be injected on all HTML files on development.\n\nThis is a really important part of the configuration since it helps you ensure your WebView is secured.\nSee <https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP>.",
1188
1138
  "anyOf": [
1189
1139
  {
1190
1140
  "$ref": "#/definitions/Csp"
@@ -1196,11 +1146,11 @@
1196
1146
  },
1197
1147
  "freezePrototype": {
1198
1148
  "description": "Freeze the `Object.prototype` when using the custom protocol.",
1199
- "default": false,
1200
- "type": "boolean"
1149
+ "type": "boolean",
1150
+ "default": false
1201
1151
  },
1202
1152
  "dangerousDisableAssetCspModification": {
1203
- "description": "Disables the Tauri-injected CSP sources.\n\n At compile time, Tauri parses all the frontend assets and changes the Content-Security-Policy\n to only allow loading of your own scripts and styles by injecting nonce and hash sources.\n This stricts your CSP, which may introduce issues when using along with other flexing sources.\n\n This configuration option allows both a boolean and a list of strings as value.\n A boolean instructs Tauri to disable the injection for all CSP injections,\n and a list of strings indicates the CSP directives that Tauri cannot inject.\n\n **WARNING:** Only disable this if you know what you are doing and have properly configured the CSP.\n Your application might be vulnerable to XSS attacks without this Tauri protection.",
1153
+ "description": "Disables the Tauri-injected CSP sources.\n\nAt compile time, Tauri parses all the frontend assets and changes the Content-Security-Policy\nto only allow loading of your own scripts and styles by injecting nonce and hash sources.\nThis stricts your CSP, which may introduce issues when using along with other flexing sources.\n\nThis configuration option allows both a boolean and a list of strings as value.\nA boolean instructs Tauri to disable the injection for all CSP injections,\nand a list of strings indicates the CSP directives that Tauri cannot inject.\n\n**WARNING:** Only disable this if you know what you are doing and have properly configured the CSP.\nYour application might be vulnerable to XSS attacks without this Tauri protection.",
1204
1154
  "default": false,
1205
1155
  "allOf": [
1206
1156
  {
@@ -1211,8 +1161,8 @@
1211
1161
  "assetProtocol": {
1212
1162
  "description": "Custom protocol config.",
1213
1163
  "default": {
1214
- "enable": false,
1215
- "scope": []
1164
+ "scope": [],
1165
+ "enable": false
1216
1166
  },
1217
1167
  "allOf": [
1218
1168
  {
@@ -1232,15 +1182,15 @@
1232
1182
  ]
1233
1183
  },
1234
1184
  "capabilities": {
1235
- "description": "List of capabilities that are enabled on the application.\n\n By default (not set or empty list), all capability files from `./capabilities/` are included,\n by setting values in this entry, you have fine grained control over which capabilities are included\n\n You can either reference a capability file defined in `./capabilities/` with its identifier or inline a [`Capability`]\n\n ### Example\n\n ```json\n {\n \"app\": {\n \"capabilities\": [\n \"main-window\",\n {\n \"identifier\": \"drag-window\",\n \"permissions\": [\"core:window:allow-start-dragging\"]\n }\n ]\n }\n }\n ```",
1236
- "default": [],
1185
+ "description": "List of capabilities that are enabled on the application.\n\nBy default (not set or empty list), all capability files from `./capabilities/` are included,\nby setting values in this entry, you have fine grained control over which capabilities are included\n\nYou can either reference a capability file defined in `./capabilities/` with its identifier or inline a [`Capability`]\n\n### Example\n\n```json\n{\n \"app\": {\n \"capabilities\": [\n \"main-window\",\n {\n \"identifier\": \"drag-window\",\n \"permissions\": [\"core:window:allow-start-dragging\"]\n }\n ]\n }\n}\n```",
1237
1186
  "type": "array",
1238
1187
  "items": {
1239
1188
  "$ref": "#/definitions/CapabilityEntry"
1240
- }
1189
+ },
1190
+ "default": []
1241
1191
  },
1242
1192
  "headers": {
1243
- "description": "The headers, which are added to every http response from tauri to the web view\n This doesn't include IPC Messages and error responses",
1193
+ "description": "The headers, which are added to every http response from tauri to the web view\nThis doesn't include IPC Messages and error responses",
1244
1194
  "anyOf": [
1245
1195
  {
1246
1196
  "$ref": "#/definitions/HeaderConfig"
@@ -1254,7 +1204,7 @@
1254
1204
  "additionalProperties": false
1255
1205
  },
1256
1206
  "Csp": {
1257
- "description": "A Content-Security-Policy definition.\n See <https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP>.",
1207
+ "description": "A Content-Security-Policy definition.\nSee <https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP>.",
1258
1208
  "anyOf": [
1259
1209
  {
1260
1210
  "description": "The entire CSP policy in a single text string.",
@@ -1270,7 +1220,7 @@
1270
1220
  ]
1271
1221
  },
1272
1222
  "CspDirectiveSources": {
1273
- "description": "A Content-Security-Policy directive source list.\n See <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/Sources#sources>.",
1223
+ "description": "A Content-Security-Policy directive source list.\nSee <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/Sources#sources>.",
1274
1224
  "anyOf": [
1275
1225
  {
1276
1226
  "description": "An inline list of CSP sources. Same as [`Self::List`], but concatenated with a space separator.",
@@ -1289,7 +1239,7 @@
1289
1239
  "description": "The possible values for the `dangerous_disable_asset_csp_modification` config option.",
1290
1240
  "anyOf": [
1291
1241
  {
1292
- "description": "If `true`, disables all CSP modification.\n `false` is the default value and it configures Tauri to control the CSP.",
1242
+ "description": "If `true`, disables all CSP modification.\n`false` is the default value and it configures Tauri to control the CSP.",
1293
1243
  "type": "boolean"
1294
1244
  },
1295
1245
  {
@@ -1302,7 +1252,7 @@
1302
1252
  ]
1303
1253
  },
1304
1254
  "AssetProtocolConfig": {
1305
- "description": "Config for the asset custom protocol.\n\n See more: <https://v2.tauri.app/reference/config/#assetprotocolconfig>",
1255
+ "description": "Config for the asset custom protocol.\n\nSee more: <https://v2.tauri.app/reference/config/#assetprotocolconfig>",
1306
1256
  "type": "object",
1307
1257
  "properties": {
1308
1258
  "scope": {
@@ -1316,14 +1266,14 @@
1316
1266
  },
1317
1267
  "enable": {
1318
1268
  "description": "Enables the asset protocol.",
1319
- "default": false,
1320
- "type": "boolean"
1269
+ "type": "boolean",
1270
+ "default": false
1321
1271
  }
1322
1272
  },
1323
1273
  "additionalProperties": false
1324
1274
  },
1325
1275
  "FsScope": {
1326
- "description": "Protocol scope definition.\n It is a list of glob patterns that restrict the API access from the webview.\n\n Each pattern can start with a variable that resolves to a system base directory.\n The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`,\n `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`,\n `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$TEMP`,\n `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
1276
+ "description": "Protocol scope definition.\nIt is a list of glob patterns that restrict the API access from the webview.\n\nEach pattern can start with a variable that resolves to a system base directory.\nThe variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`,\n`$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`,\n`$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$TEMP`,\n`$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
1327
1277
  "anyOf": [
1328
1278
  {
1329
1279
  "description": "A list of paths that are allowed by this scope.",
@@ -1338,22 +1288,22 @@
1338
1288
  "properties": {
1339
1289
  "allow": {
1340
1290
  "description": "A list of paths that are allowed by this scope.",
1341
- "default": [],
1342
1291
  "type": "array",
1343
1292
  "items": {
1344
1293
  "type": "string"
1345
- }
1294
+ },
1295
+ "default": []
1346
1296
  },
1347
1297
  "deny": {
1348
- "description": "A list of paths that are not allowed by this scope.\n This gets precedence over the [`Self::Scope::allow`] list.",
1349
- "default": [],
1298
+ "description": "A list of paths that are not allowed by this scope.\nThis gets precedence over the [`Self::Scope::allow`] list.",
1350
1299
  "type": "array",
1351
1300
  "items": {
1352
1301
  "type": "string"
1353
- }
1302
+ },
1303
+ "default": []
1354
1304
  },
1355
1305
  "requireLiteralLeadingDot": {
1356
- "description": "Whether or not paths that contain components that start with a `.`\n will require that `.` appears literally in the pattern; `*`, `?`, `**`,\n or `[...]` will not match. This is useful because such files are\n conventionally considered hidden on Unix systems and it might be\n desirable to skip them when listing files.\n\n Defaults to `true` on Unix systems and `false` on Windows",
1306
+ "description": "Whether or not paths that contain components that start with a `.`\nwill require that `.` appears literally in the pattern; `*`, `?`, `**`,\nor `[...]` will not match. This is useful because such files are\nconventionally considered hidden on Unix systems and it might be\ndesirable to skip them when listing files.\n\nDefaults to `true` on Unix systems and `false` on Windows",
1357
1307
  "type": [
1358
1308
  "boolean",
1359
1309
  "null"
@@ -1369,45 +1319,41 @@
1369
1319
  {
1370
1320
  "description": "Brownfield pattern.",
1371
1321
  "type": "object",
1372
- "required": [
1373
- "use"
1374
- ],
1375
1322
  "properties": {
1376
1323
  "use": {
1377
1324
  "type": "string",
1378
- "enum": [
1379
- "brownfield"
1380
- ]
1325
+ "const": "brownfield"
1381
1326
  }
1382
- }
1327
+ },
1328
+ "required": [
1329
+ "use"
1330
+ ]
1383
1331
  },
1384
1332
  {
1385
1333
  "description": "Isolation pattern. Recommended for security purposes.",
1386
1334
  "type": "object",
1387
- "required": [
1388
- "options",
1389
- "use"
1390
- ],
1391
1335
  "properties": {
1392
1336
  "use": {
1393
1337
  "type": "string",
1394
- "enum": [
1395
- "isolation"
1396
- ]
1338
+ "const": "isolation"
1397
1339
  },
1398
1340
  "options": {
1399
1341
  "type": "object",
1400
- "required": [
1401
- "dir"
1402
- ],
1403
1342
  "properties": {
1404
1343
  "dir": {
1405
1344
  "description": "The dir containing the index.html file that contains the secure isolation application.",
1406
1345
  "type": "string"
1407
1346
  }
1408
- }
1347
+ },
1348
+ "required": [
1349
+ "dir"
1350
+ ]
1409
1351
  }
1410
- }
1352
+ },
1353
+ "required": [
1354
+ "use",
1355
+ "options"
1356
+ ]
1411
1357
  }
1412
1358
  ]
1413
1359
  },
@@ -1429,24 +1375,20 @@
1429
1375
  ]
1430
1376
  },
1431
1377
  "Capability": {
1432
- "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\n It controls application windows' and webviews' fine grained access\n to the Tauri core, application, or plugin commands.\n If a webview or its window is not matching any capability then it has no access to the IPC layer at all.\n\n This can be done to create groups of windows, based on their required system access, which can reduce\n impact of frontend vulnerabilities in less privileged windows.\n Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`.\n A Window can have none, one, or multiple associated capabilities.\n\n ## Example\n\n ```json\n {\n \"identifier\": \"main-user-files-write\",\n \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.\",\n \"windows\": [\n \"main\"\n ],\n \"permissions\": [\n \"core:default\",\n \"dialog:open\",\n {\n \"identifier\": \"fs:allow-write-text-file\",\n \"allow\": [{ \"path\": \"$HOME/test.txt\" }]\n },\n ],\n \"platforms\": [\"macOS\",\"windows\"]\n }\n ```",
1378
+ "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows' and webviews' fine grained access\nto the Tauri core, application, or plugin commands.\nIf a webview or its window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce\nimpact of frontend vulnerabilities in less privileged windows.\nWindows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`.\nA Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json\n{\n \"identifier\": \"main-user-files-write\",\n \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.\",\n \"windows\": [\n \"main\"\n ],\n \"permissions\": [\n \"core:default\",\n \"dialog:open\",\n {\n \"identifier\": \"fs:allow-write-text-file\",\n \"allow\": [{ \"path\": \"$HOME/test.txt\" }]\n },\n ],\n \"platforms\": [\"macOS\",\"windows\"]\n}\n```",
1433
1379
  "type": "object",
1434
- "required": [
1435
- "identifier",
1436
- "permissions"
1437
- ],
1438
1380
  "properties": {
1439
1381
  "identifier": {
1440
- "description": "Identifier of the capability.\n\n ## Example\n\n `main-user-files-write`",
1382
+ "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`",
1441
1383
  "type": "string"
1442
1384
  },
1443
1385
  "description": {
1444
- "description": "Description of what the capability is intended to allow on associated windows.\n\n It should contain a description of what the grouped permissions should allow.\n\n ## Example\n\n This capability allows the `main` window access to `filesystem` write related\n commands and `dialog` commands to enable programmatic access to files selected by the user.",
1445
- "default": "",
1446
- "type": "string"
1386
+ "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related\ncommands and `dialog` commands to enable programmatic access to files selected by the user.",
1387
+ "type": "string",
1388
+ "default": ""
1447
1389
  },
1448
1390
  "remote": {
1449
- "description": "Configure remote URLs that can use the capability permissions.\n\n This setting is optional and defaults to not being set, as our\n default use case is that the content is served from our local application.\n\n :::caution\n Make sure you understand the security implications of providing remote\n sources with local system access.\n :::\n\n ## Example\n\n ```json\n {\n \"urls\": [\"https://*.mydomain.dev\"]\n }\n ```",
1391
+ "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our\ndefault use case is that the content is served from our local application.\n\n:::caution\nMake sure you understand the security implications of providing remote\nsources with local system access.\n:::\n\n## Example\n\n```json\n{\n \"urls\": [\"https://*.mydomain.dev\"]\n}\n```",
1450
1392
  "anyOf": [
1451
1393
  {
1452
1394
  "$ref": "#/definitions/CapabilityRemote"
@@ -1458,33 +1400,33 @@
1458
1400
  },
1459
1401
  "local": {
1460
1402
  "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.",
1461
- "default": true,
1462
- "type": "boolean"
1403
+ "type": "boolean",
1404
+ "default": true
1463
1405
  },
1464
1406
  "windows": {
1465
- "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\n If a window label matches any of the patterns in this list,\n the capability will be enabled on all the webviews of that window,\n regardless of the value of [`Self::webviews`].\n\n On multiwebview windows, prefer specifying [`Self::webviews`] and omitting [`Self::windows`]\n for a fine grained access control.\n\n ## Example\n\n `[\"main\"]`",
1407
+ "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nIf a window label matches any of the patterns in this list,\nthe capability will be enabled on all the webviews of that window,\nregardless of the value of [`Self::webviews`].\n\nOn multiwebview windows, prefer specifying [`Self::webviews`] and omitting [`Self::windows`]\nfor a fine grained access control.\n\n## Example\n\n`[\"main\"]`",
1466
1408
  "type": "array",
1467
1409
  "items": {
1468
1410
  "type": "string"
1469
1411
  }
1470
1412
  },
1471
1413
  "webviews": {
1472
- "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\n The capability will be enabled on all the webviews\n whose label matches any of the patterns in this list,\n regardless of whether the webview's window label matches a pattern in [`Self::windows`].\n\n ## Example\n\n `[\"sub-webview-one\", \"sub-webview-two\"]`",
1414
+ "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThe capability will be enabled on all the webviews\nwhose label matches any of the patterns in this list,\nregardless of whether the webview's window label matches a pattern in [`Self::windows`].\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`",
1473
1415
  "type": "array",
1474
1416
  "items": {
1475
1417
  "type": "string"
1476
1418
  }
1477
1419
  },
1478
1420
  "permissions": {
1479
- "description": "List of permissions attached to this capability.\n\n Must include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`.\n For commands directly implemented in the application itself only `${permission-name}`\n is required.\n\n ## Example\n\n ```json\n [\n \"core:default\",\n \"shell:allow-open\",\n \"dialog:open\",\n {\n \"identifier\": \"fs:allow-write-text-file\",\n \"allow\": [{ \"path\": \"$HOME/test.txt\" }]\n }\n ]\n ```",
1421
+ "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`.\nFor commands directly implemented in the application itself only `${permission-name}`\nis required.\n\n## Example\n\n```json\n[\n \"core:default\",\n \"shell:allow-open\",\n \"dialog:open\",\n {\n \"identifier\": \"fs:allow-write-text-file\",\n \"allow\": [{ \"path\": \"$HOME/test.txt\" }]\n }\n]\n```",
1480
1422
  "type": "array",
1423
+ "uniqueItems": true,
1481
1424
  "items": {
1482
1425
  "$ref": "#/definitions/PermissionEntry"
1483
- },
1484
- "uniqueItems": true
1426
+ }
1485
1427
  },
1486
1428
  "platforms": {
1487
- "description": "Limit which target platforms this capability applies to.\n\n By default all platforms are targeted.\n\n ## Example\n\n `[\"macOS\",\"windows\"]`",
1429
+ "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`",
1488
1430
  "type": [
1489
1431
  "array",
1490
1432
  "null"
@@ -1493,26 +1435,30 @@
1493
1435
  "$ref": "#/definitions/Target"
1494
1436
  }
1495
1437
  }
1496
- }
1438
+ },
1439
+ "required": [
1440
+ "identifier",
1441
+ "permissions"
1442
+ ]
1497
1443
  },
1498
1444
  "CapabilityRemote": {
1499
1445
  "description": "Configuration for remote URLs that are associated with the capability.",
1500
1446
  "type": "object",
1501
- "required": [
1502
- "urls"
1503
- ],
1504
1447
  "properties": {
1505
1448
  "urls": {
1506
- "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n ## Examples\n\n - \"https://*.mydomain.dev\": allows subdomains of mydomain.dev\n - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api",
1449
+ "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev\n- \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api",
1507
1450
  "type": "array",
1508
1451
  "items": {
1509
1452
  "type": "string"
1510
1453
  }
1511
1454
  }
1512
- }
1455
+ },
1456
+ "required": [
1457
+ "urls"
1458
+ ]
1513
1459
  },
1514
1460
  "PermissionEntry": {
1515
- "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`]\n or an object that references a permission and extends its scope.",
1461
+ "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`]\nor an object that references a permission and extends its scope.",
1516
1462
  "anyOf": [
1517
1463
  {
1518
1464
  "description": "Reference a permission or permission set by identifier.",
@@ -1525,9 +1471,6 @@
1525
1471
  {
1526
1472
  "description": "Reference a permission or permission set by identifier and extends its scope.",
1527
1473
  "type": "object",
1528
- "required": [
1529
- "identifier"
1530
- ],
1531
1474
  "properties": {
1532
1475
  "identifier": {
1533
1476
  "description": "Identifier of the permission or permission set.",
@@ -1557,7 +1500,10 @@
1557
1500
  "$ref": "#/definitions/Value"
1558
1501
  }
1559
1502
  }
1560
- }
1503
+ },
1504
+ "required": [
1505
+ "identifier"
1506
+ ]
1561
1507
  }
1562
1508
  ]
1563
1509
  },
@@ -1624,46 +1570,36 @@
1624
1570
  {
1625
1571
  "description": "MacOS.",
1626
1572
  "type": "string",
1627
- "enum": [
1628
- "macOS"
1629
- ]
1573
+ "const": "macOS"
1630
1574
  },
1631
1575
  {
1632
1576
  "description": "Windows.",
1633
1577
  "type": "string",
1634
- "enum": [
1635
- "windows"
1636
- ]
1578
+ "const": "windows"
1637
1579
  },
1638
1580
  {
1639
1581
  "description": "Linux.",
1640
1582
  "type": "string",
1641
- "enum": [
1642
- "linux"
1643
- ]
1583
+ "const": "linux"
1644
1584
  },
1645
1585
  {
1646
1586
  "description": "Android.",
1647
1587
  "type": "string",
1648
- "enum": [
1649
- "android"
1650
- ]
1588
+ "const": "android"
1651
1589
  },
1652
1590
  {
1653
1591
  "description": "iOS.",
1654
1592
  "type": "string",
1655
- "enum": [
1656
- "iOS"
1657
- ]
1593
+ "const": "iOS"
1658
1594
  }
1659
1595
  ]
1660
1596
  },
1661
1597
  "HeaderConfig": {
1662
- "description": "A struct, where the keys are some specific http header names.\n\n If the values to those keys are defined, then they will be send as part of a response message.\n This does not include error messages and ipc messages\n\n ## Example configuration\n ```javascript\n {\n //..\n app:{\n //..\n security: {\n headers: {\n \"Cross-Origin-Opener-Policy\": \"same-origin\",\n \"Cross-Origin-Embedder-Policy\": \"require-corp\",\n \"Timing-Allow-Origin\": [\n \"https://developer.mozilla.org\",\n \"https://example.com\",\n ],\n \"Access-Control-Expose-Headers\": \"Tauri-Custom-Header\",\n \"Tauri-Custom-Header\": {\n \"key1\": \"'value1' 'value2'\",\n \"key2\": \"'value3'\"\n }\n },\n csp: \"default-src 'self'; connect-src ipc: http://ipc.localhost\",\n }\n //..\n }\n //..\n }\n ```\n In this example `Cross-Origin-Opener-Policy` and `Cross-Origin-Embedder-Policy` are set to allow for the use of [`SharedArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer).\n The result is, that those headers are then set on every response sent via the `get_response` function in crates/tauri/src/protocol/tauri.rs.\n The Content-Security-Policy header is defined separately, because it is also handled separately.\n\n For the helloworld example, this config translates into those response headers:\n ```http\n access-control-allow-origin: http://tauri.localhost\n access-control-expose-headers: Tauri-Custom-Header\n content-security-policy: default-src 'self'; connect-src ipc: http://ipc.localhost; script-src 'self' 'sha256-Wjjrs6qinmnr+tOry8x8PPwI77eGpUFR3EEGZktjJNs='\n content-type: text/html\n cross-origin-embedder-policy: require-corp\n cross-origin-opener-policy: same-origin\n tauri-custom-header: key1 'value1' 'value2'; key2 'value3'\n timing-allow-origin: https://developer.mozilla.org, https://example.com\n ```\n Since the resulting header values are always 'string-like'. So depending on the what data type the HeaderSource is, they need to be converted.\n - `String`(JS/Rust): stay the same for the resulting header value\n - `Array`(JS)/`Vec\\<String\\>`(Rust): Item are joined by \", \" for the resulting header value\n - `Object`(JS)/ `Hashmap\\<String,String\\>`(Rust): Items are composed from: key + space + value. Item are then joined by \"; \" for the resulting header value",
1598
+ "description": "A struct, where the keys are some specific http header names.\n\nIf the values to those keys are defined, then they will be send as part of a response message.\nThis does not include error messages and ipc messages\n\n## Example configuration\n```javascript\n{\n //..\n app:{\n //..\n security: {\n headers: {\n \"Cross-Origin-Opener-Policy\": \"same-origin\",\n \"Cross-Origin-Embedder-Policy\": \"require-corp\",\n \"Timing-Allow-Origin\": [\n \"https://developer.mozilla.org\",\n \"https://example.com\",\n ],\n \"Access-Control-Expose-Headers\": \"Tauri-Custom-Header\",\n \"Tauri-Custom-Header\": {\n \"key1\": \"'value1' 'value2'\",\n \"key2\": \"'value3'\"\n }\n },\n csp: \"default-src 'self'; connect-src ipc: http://ipc.localhost\",\n }\n //..\n }\n //..\n}\n```\nIn this example `Cross-Origin-Opener-Policy` and `Cross-Origin-Embedder-Policy` are set to allow for the use of [`SharedArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer).\nThe result is, that those headers are then set on every response sent via the `get_response` function in crates/tauri/src/protocol/tauri.rs.\nThe Content-Security-Policy header is defined separately, because it is also handled separately.\n\nFor the helloworld example, this config translates into those response headers:\n```http\naccess-control-allow-origin: http://tauri.localhost\naccess-control-expose-headers: Tauri-Custom-Header\ncontent-security-policy: default-src 'self'; connect-src ipc: http://ipc.localhost; script-src 'self' 'sha256-Wjjrs6qinmnr+tOry8x8PPwI77eGpUFR3EEGZktjJNs='\ncontent-type: text/html\ncross-origin-embedder-policy: require-corp\ncross-origin-opener-policy: same-origin\ntauri-custom-header: key1 'value1' 'value2'; key2 'value3'\ntiming-allow-origin: https://developer.mozilla.org, https://example.com\n```\nSince the resulting header values are always 'string-like'. So depending on the what data type the HeaderSource is, they need to be converted.\n - `String`(JS/Rust): stay the same for the resulting header value\n - `Array`(JS)/`Vec\\<String\\>`(Rust): Item are joined by \", \" for the resulting header value\n - `Object`(JS)/ `Hashmap\\<String,String\\>`(Rust): Items are composed from: key + space + value. Item are then joined by \"; \" for the resulting header value",
1663
1599
  "type": "object",
1664
1600
  "properties": {
1665
1601
  "Access-Control-Allow-Credentials": {
1666
- "description": "The Access-Control-Allow-Credentials response header tells browsers whether the\n server allows cross-origin HTTP requests to include credentials.\n\n See <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials>",
1602
+ "description": "The Access-Control-Allow-Credentials response header tells browsers whether the\nserver allows cross-origin HTTP requests to include credentials.\n\nSee <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials>",
1667
1603
  "anyOf": [
1668
1604
  {
1669
1605
  "$ref": "#/definitions/HeaderSource"
@@ -1674,7 +1610,7 @@
1674
1610
  ]
1675
1611
  },
1676
1612
  "Access-Control-Allow-Headers": {
1677
- "description": "The Access-Control-Allow-Headers response header is used in response\n to a preflight request which includes the Access-Control-Request-Headers\n to indicate which HTTP headers can be used during the actual request.\n\n This header is required if the request has an Access-Control-Request-Headers header.\n\n See <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers>",
1613
+ "description": "The Access-Control-Allow-Headers response header is used in response\nto a preflight request which includes the Access-Control-Request-Headers\nto indicate which HTTP headers can be used during the actual request.\n\nThis header is required if the request has an Access-Control-Request-Headers header.\n\nSee <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers>",
1678
1614
  "anyOf": [
1679
1615
  {
1680
1616
  "$ref": "#/definitions/HeaderSource"
@@ -1685,7 +1621,7 @@
1685
1621
  ]
1686
1622
  },
1687
1623
  "Access-Control-Allow-Methods": {
1688
- "description": "The Access-Control-Allow-Methods response header specifies one or more methods\n allowed when accessing a resource in response to a preflight request.\n\n See <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Methods>",
1624
+ "description": "The Access-Control-Allow-Methods response header specifies one or more methods\nallowed when accessing a resource in response to a preflight request.\n\nSee <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Methods>",
1689
1625
  "anyOf": [
1690
1626
  {
1691
1627
  "$ref": "#/definitions/HeaderSource"
@@ -1696,7 +1632,7 @@
1696
1632
  ]
1697
1633
  },
1698
1634
  "Access-Control-Expose-Headers": {
1699
- "description": "The Access-Control-Expose-Headers response header allows a server to indicate\n which response headers should be made available to scripts running in the browser,\n in response to a cross-origin request.\n\n See <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers>",
1635
+ "description": "The Access-Control-Expose-Headers response header allows a server to indicate\nwhich response headers should be made available to scripts running in the browser,\nin response to a cross-origin request.\n\nSee <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers>",
1700
1636
  "anyOf": [
1701
1637
  {
1702
1638
  "$ref": "#/definitions/HeaderSource"
@@ -1707,7 +1643,7 @@
1707
1643
  ]
1708
1644
  },
1709
1645
  "Access-Control-Max-Age": {
1710
- "description": "The Access-Control-Max-Age response header indicates how long the results of a\n preflight request (that is the information contained in the\n Access-Control-Allow-Methods and Access-Control-Allow-Headers headers) can\n be cached.\n\n See <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Max-Age>",
1646
+ "description": "The Access-Control-Max-Age response header indicates how long the results of a\npreflight request (that is the information contained in the\nAccess-Control-Allow-Methods and Access-Control-Allow-Headers headers) can\nbe cached.\n\nSee <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Max-Age>",
1711
1647
  "anyOf": [
1712
1648
  {
1713
1649
  "$ref": "#/definitions/HeaderSource"
@@ -1718,7 +1654,7 @@
1718
1654
  ]
1719
1655
  },
1720
1656
  "Cross-Origin-Embedder-Policy": {
1721
- "description": "The HTTP Cross-Origin-Embedder-Policy (COEP) response header configures embedding\n cross-origin resources into the document.\n\n See <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Embedder-Policy>",
1657
+ "description": "The HTTP Cross-Origin-Embedder-Policy (COEP) response header configures embedding\ncross-origin resources into the document.\n\nSee <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Embedder-Policy>",
1722
1658
  "anyOf": [
1723
1659
  {
1724
1660
  "$ref": "#/definitions/HeaderSource"
@@ -1729,7 +1665,7 @@
1729
1665
  ]
1730
1666
  },
1731
1667
  "Cross-Origin-Opener-Policy": {
1732
- "description": "The HTTP Cross-Origin-Opener-Policy (COOP) response header allows you to ensure a\n top-level document does not share a browsing context group with cross-origin documents.\n COOP will process-isolate your document and potential attackers can't access your global\n object if they were to open it in a popup, preventing a set of cross-origin attacks dubbed XS-Leaks.\n\n See <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Opener-Policy>",
1668
+ "description": "The HTTP Cross-Origin-Opener-Policy (COOP) response header allows you to ensure a\ntop-level document does not share a browsing context group with cross-origin documents.\nCOOP will process-isolate your document and potential attackers can't access your global\nobject if they were to open it in a popup, preventing a set of cross-origin attacks dubbed XS-Leaks.\n\nSee <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Opener-Policy>",
1733
1669
  "anyOf": [
1734
1670
  {
1735
1671
  "$ref": "#/definitions/HeaderSource"
@@ -1740,7 +1676,7 @@
1740
1676
  ]
1741
1677
  },
1742
1678
  "Cross-Origin-Resource-Policy": {
1743
- "description": "The HTTP Cross-Origin-Resource-Policy response header conveys a desire that the\n browser blocks no-cors cross-origin/cross-site requests to the given resource.\n\n See <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Resource-Policy>",
1679
+ "description": "The HTTP Cross-Origin-Resource-Policy response header conveys a desire that the\nbrowser blocks no-cors cross-origin/cross-site requests to the given resource.\n\nSee <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Resource-Policy>",
1744
1680
  "anyOf": [
1745
1681
  {
1746
1682
  "$ref": "#/definitions/HeaderSource"
@@ -1751,7 +1687,7 @@
1751
1687
  ]
1752
1688
  },
1753
1689
  "Permissions-Policy": {
1754
- "description": "The HTTP Permissions-Policy header provides a mechanism to allow and deny the\n use of browser features in a document or within any \\<iframe\\> elements in the document.\n\n See <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Permissions-Policy>",
1690
+ "description": "The HTTP Permissions-Policy header provides a mechanism to allow and deny the\nuse of browser features in a document or within any \\<iframe\\> elements in the document.\n\nSee <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Permissions-Policy>",
1755
1691
  "anyOf": [
1756
1692
  {
1757
1693
  "$ref": "#/definitions/HeaderSource"
@@ -1762,7 +1698,7 @@
1762
1698
  ]
1763
1699
  },
1764
1700
  "Service-Worker-Allowed": {
1765
- "description": "The HTTP Service-Worker-Allowed response header is used to broaden the path restriction for a\n service worker's default scope.\n\n By default, the scope for a service worker registration is the directory where the service\n worker script is located. For example, if the script `sw.js` is located in `/js/sw.js`,\n it can only control URLs under `/js/` by default. Servers can use the `Service-Worker-Allowed`\n header to allow a service worker to control URLs outside of its own directory.\n\n See <https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Service-Worker-Allowed>",
1701
+ "description": "The HTTP Service-Worker-Allowed response header is used to broaden the path restriction for a\nservice worker's default scope.\n\nBy default, the scope for a service worker registration is the directory where the service\nworker script is located. For example, if the script `sw.js` is located in `/js/sw.js`,\nit can only control URLs under `/js/` by default. Servers can use the `Service-Worker-Allowed`\nheader to allow a service worker to control URLs outside of its own directory.\n\nSee <https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Service-Worker-Allowed>",
1766
1702
  "anyOf": [
1767
1703
  {
1768
1704
  "$ref": "#/definitions/HeaderSource"
@@ -1773,7 +1709,7 @@
1773
1709
  ]
1774
1710
  },
1775
1711
  "Timing-Allow-Origin": {
1776
- "description": "The Timing-Allow-Origin response header specifies origins that are allowed to see values\n of attributes retrieved via features of the Resource Timing API, which would otherwise be\n reported as zero due to cross-origin restrictions.\n\n See <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Timing-Allow-Origin>",
1712
+ "description": "The Timing-Allow-Origin response header specifies origins that are allowed to see values\nof attributes retrieved via features of the Resource Timing API, which would otherwise be\nreported as zero due to cross-origin restrictions.\n\nSee <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Timing-Allow-Origin>",
1777
1713
  "anyOf": [
1778
1714
  {
1779
1715
  "$ref": "#/definitions/HeaderSource"
@@ -1784,7 +1720,7 @@
1784
1720
  ]
1785
1721
  },
1786
1722
  "X-Content-Type-Options": {
1787
- "description": "The X-Content-Type-Options response HTTP header is a marker used by the server to indicate\n that the MIME types advertised in the Content-Type headers should be followed and not be\n changed. The header allows you to avoid MIME type sniffing by saying that the MIME types\n are deliberately configured.\n\n See <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options>",
1723
+ "description": "The X-Content-Type-Options response HTTP header is a marker used by the server to indicate\nthat the MIME types advertised in the Content-Type headers should be followed and not be\nchanged. The header allows you to avoid MIME type sniffing by saying that the MIME types\nare deliberately configured.\n\nSee <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options>",
1788
1724
  "anyOf": [
1789
1725
  {
1790
1726
  "$ref": "#/definitions/HeaderSource"
@@ -1795,7 +1731,7 @@
1795
1731
  ]
1796
1732
  },
1797
1733
  "Tauri-Custom-Header": {
1798
- "description": "A custom header field Tauri-Custom-Header, don't use it.\n Remember to set Access-Control-Expose-Headers accordingly\n\n **NOT INTENDED FOR PRODUCTION USE**",
1734
+ "description": "A custom header field Tauri-Custom-Header, don't use it.\nRemember to set Access-Control-Expose-Headers accordingly\n\n**NOT INTENDED FOR PRODUCTION USE**",
1799
1735
  "anyOf": [
1800
1736
  {
1801
1737
  "$ref": "#/definitions/HeaderSource"
@@ -1809,7 +1745,7 @@
1809
1745
  "additionalProperties": false
1810
1746
  },
1811
1747
  "HeaderSource": {
1812
- "description": "definition of a header source\n\n The header value to a header name",
1748
+ "description": "definition of a header source\n\nThe header value to a header name",
1813
1749
  "anyOf": [
1814
1750
  {
1815
1751
  "description": "string version of the header Value",
@@ -1832,11 +1768,8 @@
1832
1768
  ]
1833
1769
  },
1834
1770
  "TrayIconConfig": {
1835
- "description": "Configuration for application tray icon.\n\n See more: <https://v2.tauri.app/reference/config/#trayiconconfig>",
1771
+ "description": "Configuration for application tray icon.\n\nSee more: <https://v2.tauri.app/reference/config/#trayiconconfig>",
1836
1772
  "type": "object",
1837
- "required": [
1838
- "iconPath"
1839
- ],
1840
1773
  "properties": {
1841
1774
  "id": {
1842
1775
  "description": "Set an id for this tray icon so you can reference it later, defaults to `main`.",
@@ -1846,24 +1779,24 @@
1846
1779
  ]
1847
1780
  },
1848
1781
  "iconPath": {
1849
- "description": "Path to the default icon to use for the tray icon.\n\n Note: this stores the image in raw pixels to the final binary,\n so keep the icon size (width and height) small\n or else it's going to bloat your final executable",
1782
+ "description": "Path to the default icon to use for the tray icon.\n\nNote: this stores the image in raw pixels to the final binary,\nso keep the icon size (width and height) small\nor else it's going to bloat your final executable",
1850
1783
  "type": "string"
1851
1784
  },
1852
1785
  "iconAsTemplate": {
1853
1786
  "description": "A Boolean value that determines whether the image represents a [template](https://developer.apple.com/documentation/appkit/nsimage/1520017-template?language=objc) image on macOS.",
1854
- "default": false,
1855
- "type": "boolean"
1787
+ "type": "boolean",
1788
+ "default": false
1856
1789
  },
1857
1790
  "menuOnLeftClick": {
1858
- "description": "A Boolean value that determines whether the menu should appear when the tray icon receives a left click.\n\n ## Platform-specific:\n\n - **Linux**: Unsupported.",
1859
- "default": true,
1791
+ "description": "**No longer works since v2.2, use [`Self::show_menu_on_left_click`] instead**\n\nA Boolean value that determines whether the menu should appear when the tray icon receives a left click.\n\n## Platform-specific:\n\n- **Linux**: Unsupported.",
1792
+ "type": "boolean",
1860
1793
  "deprecated": true,
1861
- "type": "boolean"
1794
+ "default": true
1862
1795
  },
1863
1796
  "showMenuOnLeftClick": {
1864
- "description": "A Boolean value that determines whether the menu should appear when the tray icon receives a left click.\n\n ## Platform-specific:\n\n - **Linux**: Unsupported.",
1865
- "default": true,
1866
- "type": "boolean"
1797
+ "description": "A Boolean value that determines whether the menu should appear when the tray icon receives a left click.\n\n## Platform-specific:\n\n- **Linux**: Unsupported.",
1798
+ "type": "boolean",
1799
+ "default": true
1867
1800
  },
1868
1801
  "title": {
1869
1802
  "description": "Title for MacOS tray",
@@ -1880,10 +1813,13 @@
1880
1813
  ]
1881
1814
  }
1882
1815
  },
1883
- "additionalProperties": false
1816
+ "additionalProperties": false,
1817
+ "required": [
1818
+ "iconPath"
1819
+ ]
1884
1820
  },
1885
1821
  "BuildConfig": {
1886
- "description": "The Build configuration object.\n\n See more: <https://v2.tauri.app/reference/config/#buildconfig>",
1822
+ "description": "The Build configuration object.\n\nSee more: <https://v2.tauri.app/reference/config/#buildconfig>",
1887
1823
  "type": "object",
1888
1824
  "properties": {
1889
1825
  "runner": {
@@ -1898,7 +1834,7 @@
1898
1834
  ]
1899
1835
  },
1900
1836
  "devUrl": {
1901
- "description": "The URL to load in development.\n\n This is usually an URL to a dev server, which serves your application assets with hot-reload and HMR.\n Most modern JavaScript bundlers like [Vite](https://vite.dev/guide/) provides a way to start a dev server by default.\n\n If you don't have a dev server or don't want to use one, ignore this option and use [`frontendDist`](BuildConfig::frontend_dist)\n and point to a web assets directory, and Tauri CLI will run its built-in dev server and provide a simple hot-reload experience.",
1837
+ "description": "The URL to load in development.\n\nThis is usually an URL to a dev server, which serves your application assets with hot-reload and HMR.\nMost modern JavaScript bundlers like [Vite](https://vite.dev/guide/) provides a way to start a dev server by default.\n\nIf you don't have a dev server or don't want to use one, ignore this option and use [`frontendDist`](BuildConfig::frontend_dist)\nand point to a web assets directory, and Tauri CLI will run its built-in dev server and provide a simple hot-reload experience.",
1902
1838
  "type": [
1903
1839
  "string",
1904
1840
  "null"
@@ -1906,7 +1842,7 @@
1906
1842
  "format": "uri"
1907
1843
  },
1908
1844
  "frontendDist": {
1909
- "description": "The path to the application assets (usually the `dist` folder of your javascript bundler)\n or a URL that could be either a custom protocol registered in the tauri app (for example: `myprotocol://`)\n or a remote URL (for example: `https://site.com/app`).\n\n When a path relative to the configuration file is provided,\n it is read recursively and all files are embedded in the application binary.\n Tauri then looks for an `index.html` and serves it as the default entry point for your application.\n\n You can also provide a list of paths to be embedded, which allows granular control over what files are added to the binary.\n In this case, all files are added to the root and you must reference it that way in your HTML files.\n\n When a URL is provided, the application won't have bundled assets\n and the application will load that URL by default.",
1845
+ "description": "The path to the application assets (usually the `dist` folder of your javascript bundler)\nor a URL that could be either a custom protocol registered in the tauri app (for example: `myprotocol://`)\nor a remote URL (for example: `https://site.com/app`).\n\nWhen a path relative to the configuration file is provided,\nit is read recursively and all files are embedded in the application binary.\nTauri then looks for an `index.html` and serves it as the default entry point for your application.\n\nYou can also provide a list of paths to be embedded, which allows granular control over what files are added to the binary.\nIn this case, all files are added to the root and you must reference it that way in your HTML files.\n\nWhen a URL is provided, the application won't have bundled assets\nand the application will load that URL by default.",
1910
1846
  "anyOf": [
1911
1847
  {
1912
1848
  "$ref": "#/definitions/FrontendDist"
@@ -1917,7 +1853,7 @@
1917
1853
  ]
1918
1854
  },
1919
1855
  "beforeDevCommand": {
1920
- "description": "A shell command to run before `tauri dev` kicks in.\n\n The TAURI_ENV_PLATFORM, TAURI_ENV_ARCH, TAURI_ENV_FAMILY, TAURI_ENV_PLATFORM_VERSION, TAURI_ENV_PLATFORM_TYPE and TAURI_ENV_DEBUG environment variables are set if you perform conditional compilation.",
1856
+ "description": "A shell command to run before `tauri dev` kicks in.\n\nThe TAURI_ENV_PLATFORM, TAURI_ENV_ARCH, TAURI_ENV_FAMILY, TAURI_ENV_PLATFORM_VERSION, TAURI_ENV_PLATFORM_TYPE and TAURI_ENV_DEBUG environment variables are set if you perform conditional compilation.",
1921
1857
  "anyOf": [
1922
1858
  {
1923
1859
  "$ref": "#/definitions/BeforeDevCommand"
@@ -1928,7 +1864,7 @@
1928
1864
  ]
1929
1865
  },
1930
1866
  "beforeBuildCommand": {
1931
- "description": "A shell command to run before `tauri build` kicks in.\n\n The TAURI_ENV_PLATFORM, TAURI_ENV_ARCH, TAURI_ENV_FAMILY, TAURI_ENV_PLATFORM_VERSION, TAURI_ENV_PLATFORM_TYPE and TAURI_ENV_DEBUG environment variables are set if you perform conditional compilation.",
1867
+ "description": "A shell command to run before `tauri build` kicks in.\n\nThe TAURI_ENV_PLATFORM, TAURI_ENV_ARCH, TAURI_ENV_FAMILY, TAURI_ENV_PLATFORM_VERSION, TAURI_ENV_PLATFORM_TYPE and TAURI_ENV_DEBUG environment variables are set if you perform conditional compilation.",
1932
1868
  "anyOf": [
1933
1869
  {
1934
1870
  "$ref": "#/definitions/HookCommand"
@@ -1939,7 +1875,7 @@
1939
1875
  ]
1940
1876
  },
1941
1877
  "beforeBundleCommand": {
1942
- "description": "A shell command to run before the bundling phase in `tauri build` kicks in.\n\n The TAURI_ENV_PLATFORM, TAURI_ENV_ARCH, TAURI_ENV_FAMILY, TAURI_ENV_PLATFORM_VERSION, TAURI_ENV_PLATFORM_TYPE and TAURI_ENV_DEBUG environment variables are set if you perform conditional compilation.",
1878
+ "description": "A shell command to run before the bundling phase in `tauri build` kicks in.\n\nThe TAURI_ENV_PLATFORM, TAURI_ENV_ARCH, TAURI_ENV_FAMILY, TAURI_ENV_PLATFORM_VERSION, TAURI_ENV_PLATFORM_TYPE and TAURI_ENV_DEBUG environment variables are set if you perform conditional compilation.",
1943
1879
  "anyOf": [
1944
1880
  {
1945
1881
  "$ref": "#/definitions/HookCommand"
@@ -1960,17 +1896,28 @@
1960
1896
  }
1961
1897
  },
1962
1898
  "removeUnusedCommands": {
1963
- "description": "Try to remove unused commands registered from plugins base on the ACL list during `tauri build`,\n the way it works is that tauri-cli will read this and set the environment variables for the build script and macros,\n and they'll try to get all the allowed commands and remove the rest\n\n Note:\n - This won't be accounting for dynamically added ACLs when you use features from the `dynamic-acl` (currently enabled by default) feature flag, so make sure to check it when using this\n - This feature requires tauri-plugin 2.1 and tauri 2.4",
1964
- "default": false,
1965
- "type": "boolean"
1899
+ "description": "Try to remove unused commands registered from plugins base on the ACL list during `tauri build`,\nthe way it works is that tauri-cli will read this and set the environment variables for the build script and macros,\nand they'll try to get all the allowed commands and remove the rest\n\nNote:\n - This won't be accounting for dynamically added ACLs when you use features from the `dynamic-acl` (currently enabled by default) feature flag, so make sure to check it when using this\n - This feature requires tauri-plugin 2.1 and tauri 2.4",
1900
+ "type": "boolean",
1901
+ "default": false
1966
1902
  },
1967
1903
  "additionalWatchFolders": {
1968
1904
  "description": "Additional paths to watch for changes when running `tauri dev`.",
1969
- "default": [],
1970
1905
  "type": "array",
1971
1906
  "items": {
1972
1907
  "type": "string"
1973
- }
1908
+ },
1909
+ "default": []
1910
+ },
1911
+ "windows": {
1912
+ "description": "Windows-specific build configuration.",
1913
+ "default": {
1914
+ "staticVCRuntime": true
1915
+ },
1916
+ "allOf": [
1917
+ {
1918
+ "$ref": "#/definitions/WindowsBuildConfig"
1919
+ }
1920
+ ]
1974
1921
  }
1975
1922
  },
1976
1923
  "additionalProperties": false
@@ -1985,9 +1932,6 @@
1985
1932
  {
1986
1933
  "description": "An object with advanced configuration options.",
1987
1934
  "type": "object",
1988
- "required": [
1989
- "cmd"
1990
- ],
1991
1935
  "properties": {
1992
1936
  "cmd": {
1993
1937
  "description": "The binary to run.",
@@ -2010,7 +1954,10 @@
2010
1954
  "type": "string"
2011
1955
  }
2012
1956
  }
2013
- }
1957
+ },
1958
+ "required": [
1959
+ "cmd"
1960
+ ]
2014
1961
  }
2015
1962
  ]
2016
1963
  },
@@ -2045,9 +1992,6 @@
2045
1992
  {
2046
1993
  "description": "Run the given script with custom options.",
2047
1994
  "type": "object",
2048
- "required": [
2049
- "script"
2050
- ],
2051
1995
  "properties": {
2052
1996
  "script": {
2053
1997
  "description": "The script to execute.",
@@ -2062,10 +2006,13 @@
2062
2006
  },
2063
2007
  "wait": {
2064
2008
  "description": "Whether `tauri dev` should wait for the command to finish or not. Defaults to `false`.",
2065
- "default": false,
2066
- "type": "boolean"
2009
+ "type": "boolean",
2010
+ "default": false
2067
2011
  }
2068
- }
2012
+ },
2013
+ "required": [
2014
+ "script"
2015
+ ]
2069
2016
  }
2070
2017
  ]
2071
2018
  },
@@ -2079,9 +2026,6 @@
2079
2026
  {
2080
2027
  "description": "Run the given script with custom options.",
2081
2028
  "type": "object",
2082
- "required": [
2083
- "script"
2084
- ],
2085
2029
  "properties": {
2086
2030
  "script": {
2087
2031
  "description": "The script to execute.",
@@ -2094,18 +2038,33 @@
2094
2038
  "null"
2095
2039
  ]
2096
2040
  }
2097
- }
2041
+ },
2042
+ "required": [
2043
+ "script"
2044
+ ]
2098
2045
  }
2099
2046
  ]
2100
2047
  },
2048
+ "WindowsBuildConfig": {
2049
+ "description": "Windows-specific build configuration.",
2050
+ "type": "object",
2051
+ "properties": {
2052
+ "staticVCRuntime": {
2053
+ "description": "Whether to statically link the Visual C++ runtime into the application binary on Windows MSVC targets.",
2054
+ "type": "boolean",
2055
+ "default": true
2056
+ }
2057
+ },
2058
+ "additionalProperties": false
2059
+ },
2101
2060
  "BundleConfig": {
2102
- "description": "Configuration for tauri-bundler.\n\n See more: <https://v2.tauri.app/reference/config/#bundleconfig>",
2061
+ "description": "Configuration for tauri-bundler.\n\nSee more: <https://v2.tauri.app/reference/config/#bundleconfig>",
2103
2062
  "type": "object",
2104
2063
  "properties": {
2105
2064
  "active": {
2106
2065
  "description": "Whether Tauri should bundle your application or just output the executable.",
2107
- "default": false,
2108
- "type": "boolean"
2066
+ "type": "boolean",
2067
+ "default": false
2109
2068
  },
2110
2069
  "targets": {
2111
2070
  "description": "The bundle targets, currently supports [\"deb\", \"rpm\", \"appimage\", \"nsis\", \"msi\", \"app\", \"dmg\"] or \"all\".",
@@ -2126,14 +2085,14 @@
2126
2085
  ]
2127
2086
  },
2128
2087
  "publisher": {
2129
- "description": "The application's publisher. Defaults to the second element in the identifier string.\n\n Currently maps to the Manufacturer property of the Windows Installer\n and the Maintainer field of debian packages if the Cargo.toml does not have the authors field.",
2088
+ "description": "The application's publisher. Defaults to the second element in the identifier string.\n\nCurrently maps to the Manufacturer property of the Windows Installer\nand the Maintainer field of debian packages if the Cargo.toml does not have the authors field.",
2130
2089
  "type": [
2131
2090
  "string",
2132
2091
  "null"
2133
2092
  ]
2134
2093
  },
2135
2094
  "homepage": {
2136
- "description": "A url to the home page of your application. If unset, will\n fallback to `homepage` defined in `Cargo.toml`.\n\n Supported bundle targets: `deb`, `rpm`, `nsis` and `msi`.",
2095
+ "description": "A url to the home page of your application. If unset, will\nfallback to `homepage` defined in `Cargo.toml`.\n\nSupported bundle targets: `deb`, `rpm`, `nsis` and `msi`.",
2137
2096
  "type": [
2138
2097
  "string",
2139
2098
  "null"
@@ -2141,14 +2100,14 @@
2141
2100
  },
2142
2101
  "icon": {
2143
2102
  "description": "The app's icons",
2144
- "default": [],
2145
2103
  "type": "array",
2146
2104
  "items": {
2147
2105
  "type": "string"
2148
- }
2106
+ },
2107
+ "default": []
2149
2108
  },
2150
2109
  "resources": {
2151
- "description": "App resources to bundle.\n Each resource is a path to a file or directory.\n Glob patterns are supported.\n\n ## Examples\n\n To include a list of files:\n\n ```json\n {\n \"bundle\": {\n \"resources\": [\n \"./path/to/some-file.txt\",\n \"/absolute/path/to/textfile.txt\",\n \"../relative/path/to/jsonfile.json\",\n \"some-folder/\",\n \"resources/**/*.md\"\n ]\n }\n }\n ```\n\n The bundled files will be in `$RESOURCES/` with the original directory structure preserved,\n for example: `./path/to/some-file.txt` -> `$RESOURCE/path/to/some-file.txt`\n\n To fine control where the files will get copied to, use a map instead\n\n ```json\n {\n \"bundle\": {\n \"resources\": {\n \"/absolute/path/to/textfile.txt\": \"resources/textfile.txt\",\n \"relative/path/to/jsonfile.json\": \"resources/jsonfile.json\",\n \"resources/\": \"\",\n \"docs/**/*md\": \"website-docs/\"\n }\n }\n }\n ```\n\n Note that when using glob pattern in this case, the original directory structure is not preserved,\n everything gets copied to the target directory directly\n\n See more: <https://v2.tauri.app/develop/resources/>",
2110
+ "description": "App resources to bundle.\nEach resource is a path to a file or directory.\nGlob patterns are supported.\n\n## Examples\n\nTo include a list of files:\n\n```json\n{\n \"bundle\": {\n \"resources\": [\n \"./path/to/some-file.txt\",\n \"/absolute/path/to/textfile.txt\",\n \"../relative/path/to/jsonfile.json\",\n \"some-folder/\",\n \"resources/**/*.md\"\n ]\n }\n}\n```\n\nThe bundled files will be in `$RESOURCES/` with the original directory structure preserved,\nfor example: `./path/to/some-file.txt` -> `$RESOURCE/path/to/some-file.txt`\n\nTo fine control where the files will get copied to, use a map instead\n\n```json\n{\n \"bundle\": {\n \"resources\": {\n \"/absolute/path/to/textfile.txt\": \"resources/textfile.txt\",\n \"relative/path/to/jsonfile.json\": \"resources/jsonfile.json\",\n \"resources/\": \"\",\n \"docs/**/*md\": \"website-docs/\"\n }\n }\n}\n```\n\nNote that when using glob pattern in this case, the original directory structure is not preserved,\neverything gets copied to the target directory directly\n\nSee more: <https://v2.tauri.app/develop/resources/>",
2152
2111
  "anyOf": [
2153
2112
  {
2154
2113
  "$ref": "#/definitions/BundleResources"
@@ -2166,7 +2125,7 @@
2166
2125
  ]
2167
2126
  },
2168
2127
  "license": {
2169
- "description": "The package's license identifier to be included in the appropriate bundles.\n If not set, defaults to the license from the Cargo.toml file.",
2128
+ "description": "The package's license identifier to be included in the appropriate bundles.\nIf not set, defaults to the license from the Cargo.toml file.",
2170
2129
  "type": [
2171
2130
  "string",
2172
2131
  "null"
@@ -2180,7 +2139,7 @@
2180
2139
  ]
2181
2140
  },
2182
2141
  "category": {
2183
- "description": "The application kind.\n\n Should be one of the following:\n Business, DeveloperTool, Education, Entertainment, Finance, Game, ActionGame, AdventureGame, ArcadeGame, BoardGame, CardGame, CasinoGame, DiceGame, EducationalGame, FamilyGame, KidsGame, MusicGame, PuzzleGame, RacingGame, RolePlayingGame, SimulationGame, SportsGame, StrategyGame, TriviaGame, WordGame, GraphicsAndDesign, HealthcareAndFitness, Lifestyle, Medical, Music, News, Photography, Productivity, Reference, SocialNetworking, Sports, Travel, Utility, Video, Weather.",
2142
+ "description": "The application kind.\n\nShould be one of the following:\nBusiness, DeveloperTool, Education, Entertainment, Finance, Game, ActionGame, AdventureGame, ArcadeGame, BoardGame, CardGame, CasinoGame, DiceGame, EducationalGame, FamilyGame, KidsGame, MusicGame, PuzzleGame, RacingGame, RolePlayingGame, SimulationGame, SportsGame, StrategyGame, TriviaGame, WordGame, GraphicsAndDesign, HealthcareAndFitness, Lifestyle, Medical, Music, News, Photography, Productivity, Reference, SocialNetworking, Sports, Travel, Utility, Video, Weather.",
2184
2143
  "type": [
2185
2144
  "string",
2186
2145
  "null"
@@ -2211,12 +2170,12 @@
2211
2170
  ]
2212
2171
  },
2213
2172
  "useLocalToolsDir": {
2214
- "description": "Whether to use the project's `target` directory, for caching build tools (e.g., Wix and NSIS) when building this application. Defaults to `false`.\n\n If true, tools will be cached in `target/.tauri/`.\n If false, tools will be cached in the current user's platform-specific cache directory.\n\n An example where it can be appropriate to set this to `true` is when building this application as a Windows System user (e.g., AWS EC2 workloads),\n because the Window system's app data directory is restricted.",
2215
- "default": false,
2216
- "type": "boolean"
2173
+ "description": "Whether to use the project's `target` directory, for caching build tools (e.g., Wix and NSIS) when building this application. Defaults to `false`.\n\nIf true, tools will be cached in `target/.tauri/`.\nIf false, tools will be cached in the current user's platform-specific cache directory.\n\nAn example where it can be appropriate to set this to `true` is when building this application as a Windows System user (e.g., AWS EC2 workloads),\nbecause the Window system's app data directory is restricted.",
2174
+ "type": "boolean",
2175
+ "default": false
2217
2176
  },
2218
2177
  "externalBin": {
2219
- "description": "A list of—either absolute or relative—paths to binaries to embed with your application.\n\n Note that Tauri will look for system-specific binaries following the pattern \"binary-name{-target-triple}{.system-extension}\".\n\n E.g. for the external binary \"my-binary\", Tauri looks for:\n\n - \"my-binary-x86_64-pc-windows-msvc.exe\" for Windows\n - \"my-binary-x86_64-apple-darwin\" for macOS\n - \"my-binary-x86_64-unknown-linux-gnu\" for Linux\n\n so don't forget to provide binaries for all targeted platforms.",
2178
+ "description": "A list of—either absolute or relative—paths to binaries to embed with your application.\n\nNote that Tauri will look for system-specific binaries following the pattern \"binary-name{-target-triple}{.system-extension}\".\n\nE.g. for the external binary \"my-binary\", Tauri looks for:\n\n- \"my-binary-x86_64-pc-windows-msvc.exe\" for Windows\n- \"my-binary-x86_64-apple-darwin\" for macOS\n- \"my-binary-x86_64-unknown-linux-gnu\" for Linux\n\nso don't forget to provide binaries for all targeted platforms.",
2220
2179
  "type": [
2221
2180
  "array",
2222
2181
  "null"
@@ -2228,19 +2187,20 @@
2228
2187
  "windows": {
2229
2188
  "description": "Configuration for the Windows bundles.",
2230
2189
  "default": {
2231
- "allowDowngrades": true,
2232
- "certificateThumbprint": null,
2233
2190
  "digestAlgorithm": null,
2234
- "minimumWebview2Version": null,
2235
- "nsis": null,
2236
- "signCommand": null,
2191
+ "certificateThumbprint": null,
2237
2192
  "timestampUrl": null,
2238
2193
  "tsp": false,
2239
2194
  "webviewInstallMode": {
2240
- "silent": true,
2241
- "type": "downloadBootstrapper"
2195
+ "type": "downloadBootstrapper",
2196
+ "silent": true
2242
2197
  },
2243
- "wix": null
2198
+ "allowDowngrades": true,
2199
+ "minimumWebview2Version": null,
2200
+ "wix": null,
2201
+ "nsis": null,
2202
+ "signCommand": null,
2203
+ "bundleVCRuntime": false
2244
2204
  },
2245
2205
  "allOf": [
2246
2206
  {
@@ -2259,9 +2219,9 @@
2259
2219
  "files": {}
2260
2220
  },
2261
2221
  "rpm": {
2222
+ "release": "1",
2262
2223
  "epoch": 0,
2263
- "files": {},
2264
- "release": "1"
2224
+ "files": {}
2265
2225
  }
2266
2226
  },
2267
2227
  "allOf": [
@@ -2273,7 +2233,14 @@
2273
2233
  "macOS": {
2274
2234
  "description": "Configuration for the macOS bundles.",
2275
2235
  "default": {
2236
+ "files": {},
2237
+ "minimumSystemVersion": "10.13",
2238
+ "hardenedRuntime": true,
2276
2239
  "dmg": {
2240
+ "windowSize": {
2241
+ "width": 660,
2242
+ "height": 400
2243
+ },
2277
2244
  "appPosition": {
2278
2245
  "x": 180,
2279
2246
  "y": 170
@@ -2281,15 +2248,8 @@
2281
2248
  "applicationFolderPosition": {
2282
2249
  "x": 480,
2283
2250
  "y": 170
2284
- },
2285
- "windowSize": {
2286
- "height": 400,
2287
- "width": 660
2288
2251
  }
2289
- },
2290
- "files": {},
2291
- "hardenedRuntime": true,
2292
- "minimumSystemVersion": "10.13"
2252
+ }
2293
2253
  },
2294
2254
  "allOf": [
2295
2255
  {
@@ -2300,7 +2260,7 @@
2300
2260
  "iOS": {
2301
2261
  "description": "iOS configuration.",
2302
2262
  "default": {
2303
- "minimumSystemVersion": "14.0"
2263
+ "minimumSystemVersion": "15.0"
2304
2264
  },
2305
2265
  "allOf": [
2306
2266
  {
@@ -2311,14 +2271,25 @@
2311
2271
  "android": {
2312
2272
  "description": "Android configuration.",
2313
2273
  "default": {
2314
- "autoIncrementVersionCode": false,
2315
- "minSdkVersion": 24
2274
+ "minSdkVersion": 24,
2275
+ "autoIncrementVersionCode": false
2316
2276
  },
2317
2277
  "allOf": [
2318
2278
  {
2319
2279
  "$ref": "#/definitions/AndroidConfig"
2320
2280
  }
2321
2281
  ]
2282
+ },
2283
+ "cef": {
2284
+ "description": "Configuration for apps using the Chromium Embedded Framework.",
2285
+ "default": {
2286
+ "embed": true
2287
+ },
2288
+ "allOf": [
2289
+ {
2290
+ "$ref": "#/definitions/CefConfig"
2291
+ }
2292
+ ]
2322
2293
  }
2323
2294
  },
2324
2295
  "additionalProperties": false
@@ -2328,6 +2299,7 @@
2328
2299
  "anyOf": [
2329
2300
  {
2330
2301
  "description": "Bundle all targets.",
2302
+ "type": "string",
2331
2303
  "const": "all"
2332
2304
  },
2333
2305
  {
@@ -2353,51 +2325,37 @@
2353
2325
  {
2354
2326
  "description": "The debian bundle (.deb).",
2355
2327
  "type": "string",
2356
- "enum": [
2357
- "deb"
2358
- ]
2328
+ "const": "deb"
2359
2329
  },
2360
2330
  {
2361
2331
  "description": "The RPM bundle (.rpm).",
2362
2332
  "type": "string",
2363
- "enum": [
2364
- "rpm"
2365
- ]
2333
+ "const": "rpm"
2366
2334
  },
2367
2335
  {
2368
2336
  "description": "The AppImage bundle (.appimage).",
2369
2337
  "type": "string",
2370
- "enum": [
2371
- "appimage"
2372
- ]
2338
+ "const": "appimage"
2373
2339
  },
2374
2340
  {
2375
2341
  "description": "The Microsoft Installer bundle (.msi).",
2376
2342
  "type": "string",
2377
- "enum": [
2378
- "msi"
2379
- ]
2343
+ "const": "msi"
2380
2344
  },
2381
2345
  {
2382
2346
  "description": "The NSIS bundle (.exe).",
2383
2347
  "type": "string",
2384
- "enum": [
2385
- "nsis"
2386
- ]
2348
+ "const": "nsis"
2387
2349
  },
2388
2350
  {
2389
2351
  "description": "The macOS application bundle (.app).",
2390
2352
  "type": "string",
2391
- "enum": [
2392
- "app"
2393
- ]
2353
+ "const": "app"
2394
2354
  },
2395
2355
  {
2396
2356
  "description": "The Apple Disk Image bundle (.dmg).",
2397
2357
  "type": "string",
2398
- "enum": [
2399
- "dmg"
2400
- ]
2358
+ "const": "dmg"
2401
2359
  }
2402
2360
  ]
2403
2361
  },
@@ -2424,14 +2382,12 @@
2424
2382
  {
2425
2383
  "description": "Generates legacy zipped v1 compatible updaters",
2426
2384
  "type": "string",
2427
- "enum": [
2428
- "v1Compatible"
2429
- ]
2385
+ "const": "v1Compatible"
2430
2386
  }
2431
2387
  ]
2432
2388
  },
2433
2389
  "BundleResources": {
2434
- "description": "Definition for bundle resources.\n Can be either a list of paths to include or a map of source to target paths.",
2390
+ "description": "Definition for bundle resources.\nCan be either a list of paths to include or a map of source to target paths.",
2435
2391
  "anyOf": [
2436
2392
  {
2437
2393
  "description": "A list of paths to include.",
@@ -2452,9 +2408,6 @@
2452
2408
  "FileAssociation": {
2453
2409
  "description": "File association",
2454
2410
  "type": "object",
2455
- "required": [
2456
- "ext"
2457
- ],
2458
2411
  "properties": {
2459
2412
  "ext": {
2460
2413
  "description": "File extensions to associate with this app. e.g. 'png'",
@@ -2464,7 +2417,7 @@
2464
2417
  }
2465
2418
  },
2466
2419
  "contentTypes": {
2467
- "description": "Declare support to a file with the given content type. Maps to `LSItemContentTypes` on macOS.\n\n This allows supporting any file format declared by another application that conforms to this type.\n Declaration of new types can be done with [`Self::exported_type`] and linking to certain content types are done via [`ExportedFileAssociation::conforms_to`].",
2420
+ "description": "Declare support to a file with the given content type. Maps to `LSItemContentTypes` on macOS.\n\nThis allows supporting any file format declared by another application that conforms to this type.\nDeclaration of new types can be done with [`Self::exported_type`] and linking to certain content types are done via [`ExportedFileAssociation::conforms_to`].",
2468
2421
  "type": [
2469
2422
  "array",
2470
2423
  "null"
@@ -2497,7 +2450,7 @@
2497
2450
  ]
2498
2451
  },
2499
2452
  "mimeType": {
2500
- "description": "The mime-type of the association, e.g. `'image/png'` or `'text/plain'`.\n\n - **Linux**: written as `MimeType=` in the `.desktop` file.\n - **macOS / iOS**: added as `public.mime-type` in the `UTTypeTagSpecification` dictionary of\n the `UTExportedTypeDeclarations` entry in `Info.plist`.\n - **Android**: used as `android:mimeType` in the `<data>` element of an `<intent-filter>`\n in `AndroidManifest.xml`.",
2453
+ "description": "The mime-type of the association, e.g. `'image/png'` or `'text/plain'`.\n\n- **Linux**: written as `MimeType=` in the `.desktop` file.\n- **macOS / iOS**: added as `public.mime-type` in the `UTTypeTagSpecification` dictionary of\n the `UTExportedTypeDeclarations` entry in `Info.plist`.\n- **Android**: used as `android:mimeType` in the `<data>` element of an `<intent-filter>`\n in `AndroidManifest.xml`.",
2501
2454
  "type": [
2502
2455
  "string",
2503
2456
  "null"
@@ -2513,7 +2466,7 @@
2513
2466
  ]
2514
2467
  },
2515
2468
  "exportedType": {
2516
- "description": "The exported type definition. Maps to a `UTExportedTypeDeclarations` entry on macOS.\n\n You should define this if the associated file is a custom file type defined by your application.",
2469
+ "description": "The exported type definition. Maps to a `UTExportedTypeDeclarations` entry on macOS.\n\nYou should define this if the associated file is a custom file type defined by your application.",
2517
2470
  "anyOf": [
2518
2471
  {
2519
2472
  "$ref": "#/definitions/ExportedFileAssociation"
@@ -2524,7 +2477,7 @@
2524
2477
  ]
2525
2478
  },
2526
2479
  "androidIntentActionFilters": {
2527
- "description": "Intent action filters for this file association.\n\n By default all filters are used.",
2480
+ "description": "Intent action filters for this file association.\n\nBy default all filters are used.",
2528
2481
  "type": [
2529
2482
  "array",
2530
2483
  "null"
@@ -2534,10 +2487,13 @@
2534
2487
  }
2535
2488
  }
2536
2489
  },
2537
- "additionalProperties": false
2490
+ "additionalProperties": false,
2491
+ "required": [
2492
+ "ext"
2493
+ ]
2538
2494
  },
2539
2495
  "AssociationExt": {
2540
- "description": "An extension for a [`FileAssociation`].\n\n A leading `.` is automatically stripped.",
2496
+ "description": "An extension for a [`FileAssociation`].\n\nA leading `.` is automatically stripped.",
2541
2497
  "type": "string"
2542
2498
  },
2543
2499
  "BundleTypeRole": {
@@ -2546,37 +2502,27 @@
2546
2502
  {
2547
2503
  "description": "CFBundleTypeRole.Editor. Files can be read and edited.",
2548
2504
  "type": "string",
2549
- "enum": [
2550
- "Editor"
2551
- ]
2505
+ "const": "Editor"
2552
2506
  },
2553
2507
  {
2554
2508
  "description": "CFBundleTypeRole.Viewer. Files can be read.",
2555
2509
  "type": "string",
2556
- "enum": [
2557
- "Viewer"
2558
- ]
2510
+ "const": "Viewer"
2559
2511
  },
2560
2512
  {
2561
2513
  "description": "CFBundleTypeRole.Shell",
2562
2514
  "type": "string",
2563
- "enum": [
2564
- "Shell"
2565
- ]
2515
+ "const": "Shell"
2566
2516
  },
2567
2517
  {
2568
2518
  "description": "CFBundleTypeRole.QLGenerator",
2569
2519
  "type": "string",
2570
- "enum": [
2571
- "QLGenerator"
2572
- ]
2520
+ "const": "QLGenerator"
2573
2521
  },
2574
2522
  {
2575
2523
  "description": "CFBundleTypeRole.None",
2576
2524
  "type": "string",
2577
- "enum": [
2578
- "None"
2579
- ]
2525
+ "const": "None"
2580
2526
  }
2581
2527
  ]
2582
2528
  },
@@ -2586,46 +2532,35 @@
2586
2532
  {
2587
2533
  "description": "LSHandlerRank.Default. This app is an opener of files of this type; this value is also used if no rank is specified.",
2588
2534
  "type": "string",
2589
- "enum": [
2590
- "Default"
2591
- ]
2535
+ "const": "Default"
2592
2536
  },
2593
2537
  {
2594
2538
  "description": "LSHandlerRank.Owner. This app is the primary creator of files of this type.",
2595
2539
  "type": "string",
2596
- "enum": [
2597
- "Owner"
2598
- ]
2540
+ "const": "Owner"
2599
2541
  },
2600
2542
  {
2601
2543
  "description": "LSHandlerRank.Alternate. This app is a secondary viewer of files of this type.",
2602
2544
  "type": "string",
2603
- "enum": [
2604
- "Alternate"
2605
- ]
2545
+ "const": "Alternate"
2606
2546
  },
2607
2547
  {
2608
2548
  "description": "LSHandlerRank.None. This app is never selected to open files of this type, but it accepts drops of files of this type.",
2609
2549
  "type": "string",
2610
- "enum": [
2611
- "None"
2612
- ]
2550
+ "const": "None"
2613
2551
  }
2614
2552
  ]
2615
2553
  },
2616
2554
  "ExportedFileAssociation": {
2617
2555
  "description": "The exported type definition. Maps to a `UTExportedTypeDeclarations` entry on macOS.",
2618
2556
  "type": "object",
2619
- "required": [
2620
- "identifier"
2621
- ],
2622
2557
  "properties": {
2623
2558
  "identifier": {
2624
2559
  "description": "The unique identifier for the exported type. Maps to `UTTypeIdentifier`.",
2625
2560
  "type": "string"
2626
2561
  },
2627
2562
  "conformsTo": {
2628
- "description": "The types that this type conforms to. Maps to `UTTypeConformsTo`.\n\n Examples are `public.data`, `public.image`, `public.json` and `public.database`.",
2563
+ "description": "The types that this type conforms to. Maps to `UTTypeConformsTo`.\n\nExamples are `public.data`, `public.image`, `public.json` and `public.database`.",
2629
2564
  "type": [
2630
2565
  "array",
2631
2566
  "null"
@@ -2635,40 +2570,37 @@
2635
2570
  }
2636
2571
  }
2637
2572
  },
2638
- "additionalProperties": false
2573
+ "additionalProperties": false,
2574
+ "required": [
2575
+ "identifier"
2576
+ ]
2639
2577
  },
2640
2578
  "AndroidIntentAction": {
2641
2579
  "description": "Android intent action.",
2642
2580
  "oneOf": [
2643
2581
  {
2644
- "description": "ACTION_SEND.\n\n <https://developer.android.com/reference/android/content/Intent#ACTION_SEND>",
2582
+ "description": "ACTION_SEND.\n\n<https://developer.android.com/reference/android/content/Intent#ACTION_SEND>",
2645
2583
  "type": "string",
2646
- "enum": [
2647
- "send"
2648
- ]
2584
+ "const": "send"
2649
2585
  },
2650
2586
  {
2651
- "description": "ACTION_SEND_MULTIPLE.\n\n <https://developer.android.com/reference/android/content/Intent#ACTION_SEND_MULTIPLE>",
2587
+ "description": "ACTION_SEND_MULTIPLE.\n\n<https://developer.android.com/reference/android/content/Intent#ACTION_SEND_MULTIPLE>",
2652
2588
  "type": "string",
2653
- "enum": [
2654
- "sendMultiple"
2655
- ]
2589
+ "const": "sendMultiple"
2656
2590
  },
2657
2591
  {
2658
- "description": "ACTION_VIEW.\n\n <https://developer.android.com/reference/android/content/Intent#ACTION_SEND>",
2592
+ "description": "ACTION_VIEW.\n\n<https://developer.android.com/reference/android/content/Intent#ACTION_SEND>",
2659
2593
  "type": "string",
2660
- "enum": [
2661
- "view"
2662
- ]
2594
+ "const": "view"
2663
2595
  }
2664
2596
  ]
2665
2597
  },
2666
2598
  "WindowsConfig": {
2667
- "description": "Windows bundler configuration.\n\n See more: <https://v2.tauri.app/reference/config/#windowsconfig>",
2599
+ "description": "Windows bundler configuration.\n\nSee more: <https://v2.tauri.app/reference/config/#windowsconfig>",
2668
2600
  "type": "object",
2669
2601
  "properties": {
2670
2602
  "digestAlgorithm": {
2671
- "description": "Specifies the file digest algorithm to use for creating file signatures.\n Required for code signing. SHA-256 is recommended.",
2603
+ "description": "Specifies the file digest algorithm to use for creating file signatures.\nRequired for code signing. SHA-256 is recommended.",
2672
2604
  "type": [
2673
2605
  "string",
2674
2606
  "null"
@@ -2689,15 +2621,15 @@
2689
2621
  ]
2690
2622
  },
2691
2623
  "tsp": {
2692
- "description": "Whether to use Time-Stamp Protocol (TSP, a.k.a. RFC 3161) for the timestamp server. Your code signing provider may\n use a TSP timestamp server, like e.g. SSL.com does. If so, enable TSP by setting to true.",
2693
- "default": false,
2694
- "type": "boolean"
2624
+ "description": "Whether to use Time-Stamp Protocol (TSP, a.k.a. RFC 3161) for the timestamp server. Your code signing provider may\nuse a TSP timestamp server, like e.g. SSL.com does. If so, enable TSP by setting to true.",
2625
+ "type": "boolean",
2626
+ "default": false
2695
2627
  },
2696
2628
  "webviewInstallMode": {
2697
2629
  "description": "The installation mode for the Webview2 runtime.",
2698
2630
  "default": {
2699
- "silent": true,
2700
- "type": "downloadBootstrapper"
2631
+ "type": "downloadBootstrapper",
2632
+ "silent": true
2701
2633
  },
2702
2634
  "allOf": [
2703
2635
  {
@@ -2706,12 +2638,12 @@
2706
2638
  ]
2707
2639
  },
2708
2640
  "allowDowngrades": {
2709
- "description": "Validates a second app installation, blocking the user from installing an older version if set to `false`.\n\n For instance, if `1.2.1` is installed, the user won't be able to install app version `1.2.0` or `1.1.5`.\n\n The default value of this flag is `true`.",
2710
- "default": true,
2711
- "type": "boolean"
2641
+ "description": "Validates a second app installation, blocking the user from installing an older version if set to `false`.\n\nFor instance, if `1.2.1` is installed, the user won't be able to install app version `1.2.0` or `1.1.5`.\n\nThe default value of this flag is `true`.",
2642
+ "type": "boolean",
2643
+ "default": true
2712
2644
  },
2713
2645
  "minimumWebview2Version": {
2714
- "description": "Try to ensure that the WebView2 version is equal to or newer than this version,\n if the user's WebView2 is older than this version,\n the installer will try to trigger a WebView2 update.",
2646
+ "description": "Try to ensure that the WebView2 version is equal to or newer than this version,\nif the user's WebView2 is older than this version,\nthe installer will try to trigger a WebView2 update.",
2715
2647
  "type": [
2716
2648
  "string",
2717
2649
  "null"
@@ -2740,7 +2672,7 @@
2740
2672
  ]
2741
2673
  },
2742
2674
  "signCommand": {
2743
- "description": "Specify a custom command to sign the binaries.\n This command needs to have a `%1` in args which is just a placeholder for the binary path,\n which we will detect and replace before calling the command.\n\n By Default we use `signtool.exe` which can be found only on Windows so\n if you are on another platform and want to cross-compile and sign you will\n need to use another tool like `osslsigncode`.",
2675
+ "description": "Specify a custom command to sign the binaries.\nThis command needs to have a `%1` in args which is just a placeholder for the binary path,\nwhich we will detect and replace before calling the command.\n\nBy Default we use `signtool.exe` which can be found only on Windows so\nif you are on another platform and want to cross-compile and sign you will\nneed to use another tool like `osslsigncode`.",
2744
2676
  "anyOf": [
2745
2677
  {
2746
2678
  "$ref": "#/definitions/CustomSignCommandConfig"
@@ -2749,128 +2681,123 @@
2749
2681
  "type": "null"
2750
2682
  }
2751
2683
  ]
2684
+ },
2685
+ "bundleVCRuntime": {
2686
+ "description": "Whether to bundle the Visual C++ runtime DLLs alongside the application.\n\nThis can be particularly useful when your application includes sidecars or DLLs that do\nnot statically link the Visual C++ runtime and require the runtime DLLs at runtime, and\nyou do not want to require users to install the Visual C++ Redistributable. This can also\nbe useful when `build > windows > staticVCRuntime` is set to `false`.",
2687
+ "type": "boolean",
2688
+ "default": false
2752
2689
  }
2753
2690
  },
2754
2691
  "additionalProperties": false
2755
2692
  },
2756
2693
  "WebviewInstallMode": {
2757
- "description": "Install modes for the Webview2 runtime.\n Note that for the updater bundle [`Self::DownloadBootstrapper`] is used.\n\n For more information see <https://v2.tauri.app/distribute/windows-installer/#webview2-installation-options>.",
2694
+ "description": "Install modes for the Webview2 runtime.\nNote that for the updater bundle [`Self::DownloadBootstrapper`] is used.\n\nFor more information see <https://v2.tauri.app/distribute/windows-installer/#webview2-installation-options>.",
2758
2695
  "oneOf": [
2759
2696
  {
2760
2697
  "description": "Do not install the Webview2 as part of the Windows Installer.",
2761
2698
  "type": "object",
2762
- "required": [
2763
- "type"
2764
- ],
2765
2699
  "properties": {
2766
2700
  "type": {
2767
2701
  "type": "string",
2768
- "enum": [
2769
- "skip"
2770
- ]
2702
+ "const": "skip"
2771
2703
  }
2772
2704
  },
2705
+ "required": [
2706
+ "type"
2707
+ ],
2773
2708
  "additionalProperties": false
2774
2709
  },
2775
2710
  {
2776
- "description": "Download the bootstrapper and run it.\n Requires an internet connection.\n Results in a smaller installer size, but is not recommended on Windows 7.",
2711
+ "description": "Download the bootstrapper and run it.\nRequires an internet connection.\nResults in a smaller installer size, but is not recommended on Windows 7.",
2777
2712
  "type": "object",
2778
- "required": [
2779
- "type"
2780
- ],
2781
2713
  "properties": {
2782
- "type": {
2783
- "type": "string",
2784
- "enum": [
2785
- "downloadBootstrapper"
2786
- ]
2787
- },
2788
2714
  "silent": {
2789
2715
  "description": "Instructs the installer to run the bootstrapper in silent mode. Defaults to `true`.",
2790
- "default": true,
2791
- "type": "boolean"
2716
+ "type": "boolean",
2717
+ "default": true
2718
+ },
2719
+ "type": {
2720
+ "type": "string",
2721
+ "const": "downloadBootstrapper"
2792
2722
  }
2793
2723
  },
2794
- "additionalProperties": false
2724
+ "additionalProperties": false,
2725
+ "required": [
2726
+ "type"
2727
+ ]
2795
2728
  },
2796
2729
  {
2797
- "description": "Embed the bootstrapper and run it.\n Requires an internet connection.\n Increases the installer size by around 1.8MB, but offers better support on Windows 7.",
2730
+ "description": "Embed the bootstrapper and run it.\nRequires an internet connection.\nIncreases the installer size by around 1.8MB, but offers better support on Windows 7.",
2798
2731
  "type": "object",
2799
- "required": [
2800
- "type"
2801
- ],
2802
2732
  "properties": {
2803
- "type": {
2804
- "type": "string",
2805
- "enum": [
2806
- "embedBootstrapper"
2807
- ]
2808
- },
2809
2733
  "silent": {
2810
2734
  "description": "Instructs the installer to run the bootstrapper in silent mode. Defaults to `true`.",
2811
- "default": true,
2812
- "type": "boolean"
2735
+ "type": "boolean",
2736
+ "default": true
2737
+ },
2738
+ "type": {
2739
+ "type": "string",
2740
+ "const": "embedBootstrapper"
2813
2741
  }
2814
2742
  },
2815
- "additionalProperties": false
2743
+ "additionalProperties": false,
2744
+ "required": [
2745
+ "type"
2746
+ ]
2816
2747
  },
2817
2748
  {
2818
- "description": "Embed the offline installer and run it.\n Does not require an internet connection.\n Increases the installer size by around 127MB.",
2749
+ "description": "Embed the offline installer and run it.\nDoes not require an internet connection.\nIncreases the installer size by around 127MB.",
2819
2750
  "type": "object",
2820
- "required": [
2821
- "type"
2822
- ],
2823
2751
  "properties": {
2824
- "type": {
2825
- "type": "string",
2826
- "enum": [
2827
- "offlineInstaller"
2828
- ]
2829
- },
2830
2752
  "silent": {
2831
2753
  "description": "Instructs the installer to run the installer in silent mode. Defaults to `true`.",
2832
- "default": true,
2833
- "type": "boolean"
2754
+ "type": "boolean",
2755
+ "default": true
2756
+ },
2757
+ "type": {
2758
+ "type": "string",
2759
+ "const": "offlineInstaller"
2834
2760
  }
2835
2761
  },
2836
- "additionalProperties": false
2762
+ "additionalProperties": false,
2763
+ "required": [
2764
+ "type"
2765
+ ]
2837
2766
  },
2838
2767
  {
2839
- "description": "Embed a fixed webview2 version and use it at runtime.\n Increases the installer size by around 180MB.",
2768
+ "description": "Embed a fixed webview2 version and use it at runtime.\nIncreases the installer size by around 180MB.",
2840
2769
  "type": "object",
2841
- "required": [
2842
- "path",
2843
- "type"
2844
- ],
2845
2770
  "properties": {
2846
- "type": {
2847
- "type": "string",
2848
- "enum": [
2849
- "fixedRuntime"
2850
- ]
2851
- },
2852
2771
  "path": {
2853
- "description": "The path to the fixed runtime to use.\n\n The fixed version can be downloaded [on the official website](https://developer.microsoft.com/en-us/microsoft-edge/webview2/#download-section).\n The `.cab` file must be extracted to a folder and this folder path must be defined on this field.",
2772
+ "description": "The path to the fixed runtime to use.\n\nThe fixed version can be downloaded [on the official website](https://developer.microsoft.com/en-us/microsoft-edge/webview2/#download-section).\nThe `.cab` file must be extracted to a folder and this folder path must be defined on this field.",
2854
2773
  "type": "string"
2774
+ },
2775
+ "type": {
2776
+ "type": "string",
2777
+ "const": "fixedRuntime"
2855
2778
  }
2856
2779
  },
2857
- "additionalProperties": false
2780
+ "additionalProperties": false,
2781
+ "required": [
2782
+ "type",
2783
+ "path"
2784
+ ]
2858
2785
  }
2859
2786
  ]
2860
2787
  },
2861
2788
  "WixConfig": {
2862
- "description": "Configuration for the MSI bundle using WiX.\n\n See more: <https://v2.tauri.app/reference/config/#wixconfig>",
2789
+ "description": "Configuration for the MSI bundle using WiX.\n\nSee more: <https://v2.tauri.app/reference/config/#wixconfig>",
2863
2790
  "type": "object",
2864
2791
  "properties": {
2865
2792
  "version": {
2866
- "description": "MSI installer version in the format `major.minor.patch.build` (build is optional).\n\n Because a valid version is required for MSI installer, it will be derived from [`Config::version`] if this field is not set.\n\n The first field is the major version and has a maximum value of 255. The second field is the minor version and has a maximum value of 255.\n The third and fourth fields have a maximum value of 65,535.\n\n See <https://learn.microsoft.com/en-us/windows/win32/msi/productversion> for more info.",
2793
+ "description": "MSI installer version in the format `major.minor.patch.build` (build is optional).\n\nBecause a valid version is required for MSI installer, it will be derived from [`Config::version`] if this field is not set.\n\nThe first field is the major version and has a maximum value of 255. The second field is the minor version and has a maximum value of 255.\nThe third and fourth fields have a maximum value of 65,535.\n\nSee <https://learn.microsoft.com/en-us/windows/win32/msi/productversion> for more info.",
2867
2794
  "type": [
2868
2795
  "string",
2869
2796
  "null"
2870
2797
  ]
2871
2798
  },
2872
2799
  "upgradeCode": {
2873
- "description": "A GUID upgrade code for MSI installer. This code **_must stay the same across all of your updates_**,\n otherwise, Windows will treat your update as a different app and your users will have duplicate versions of your app.\n\n By default, tauri generates this code by generating a Uuid v5 using the string `<productName>.exe.app.x64` in the DNS namespace.\n You can use Tauri's CLI to generate and print this code for you, run `tauri inspect wix-upgrade-code`.\n\n It is recommended that you set this value in your tauri config file to avoid accidental changes in your upgrade code\n whenever you want to change your product name.",
2800
+ "description": "A GUID upgrade code for MSI installer. This code **_must stay the same across all of your updates_**,\notherwise, Windows will treat your update as a different app and your users will have duplicate versions of your app.\n\nBy default, tauri generates this code by generating a Uuid v5 using the string `<productName>.exe.app.x64` in the DNS namespace.\nYou can use Tauri's CLI to generate and print this code for you, run `tauri inspect wix-upgrade-code`.\n\nIt is recommended that you set this value in your tauri config file to avoid accidental changes in your upgrade code\nwhenever you want to change your product name.",
2874
2801
  "type": [
2875
2802
  "string",
2876
2803
  "null"
@@ -2895,75 +2822,75 @@
2895
2822
  },
2896
2823
  "fragmentPaths": {
2897
2824
  "description": "A list of paths to .wxs files with WiX fragments to use.",
2898
- "default": [],
2899
2825
  "type": "array",
2900
2826
  "items": {
2901
2827
  "type": "string"
2902
- }
2828
+ },
2829
+ "default": []
2903
2830
  },
2904
2831
  "componentGroupRefs": {
2905
2832
  "description": "The ComponentGroup element ids you want to reference from the fragments.",
2906
- "default": [],
2907
2833
  "type": "array",
2908
2834
  "items": {
2909
2835
  "type": "string"
2910
- }
2836
+ },
2837
+ "default": []
2911
2838
  },
2912
2839
  "componentRefs": {
2913
2840
  "description": "The Component element ids you want to reference from the fragments.",
2914
- "default": [],
2915
2841
  "type": "array",
2916
2842
  "items": {
2917
2843
  "type": "string"
2918
- }
2844
+ },
2845
+ "default": []
2919
2846
  },
2920
2847
  "featureGroupRefs": {
2921
2848
  "description": "The FeatureGroup element ids you want to reference from the fragments.",
2922
- "default": [],
2923
2849
  "type": "array",
2924
2850
  "items": {
2925
2851
  "type": "string"
2926
- }
2852
+ },
2853
+ "default": []
2927
2854
  },
2928
2855
  "featureRefs": {
2929
2856
  "description": "The Feature element ids you want to reference from the fragments.",
2930
- "default": [],
2931
2857
  "type": "array",
2932
2858
  "items": {
2933
2859
  "type": "string"
2934
- }
2860
+ },
2861
+ "default": []
2935
2862
  },
2936
2863
  "mergeRefs": {
2937
2864
  "description": "The Merge element ids you want to reference from the fragments.",
2938
- "default": [],
2939
2865
  "type": "array",
2940
2866
  "items": {
2941
2867
  "type": "string"
2942
- }
2868
+ },
2869
+ "default": []
2943
2870
  },
2944
2871
  "enableElevatedUpdateTask": {
2945
2872
  "description": "Create an elevated update task within Windows Task Scheduler.",
2946
- "default": false,
2947
- "type": "boolean"
2873
+ "type": "boolean",
2874
+ "default": false
2948
2875
  },
2949
2876
  "bannerPath": {
2950
- "description": "Path to a bitmap file to use as the installation user interface banner.\n This bitmap will appear at the top of all but the first page of the installer.\n\n The required dimensions are 493px × 58px.",
2877
+ "description": "Path to a bitmap file to use as the installation user interface banner.\nThis bitmap will appear at the top of all but the first page of the installer.\n\nThe required dimensions are 493px × 58px.",
2951
2878
  "type": [
2952
2879
  "string",
2953
2880
  "null"
2954
2881
  ]
2955
2882
  },
2956
2883
  "dialogImagePath": {
2957
- "description": "Path to a bitmap file to use on the installation user interface dialogs.\n It is used on the welcome and completion dialogs.\n\n The required dimensions are 493px × 312px.",
2884
+ "description": "Path to a bitmap file to use on the installation user interface dialogs.\nIt is used on the welcome and completion dialogs.\n\nThe required dimensions are 493px × 312px.",
2958
2885
  "type": [
2959
2886
  "string",
2960
2887
  "null"
2961
2888
  ]
2962
2889
  },
2963
2890
  "fipsCompliant": {
2964
- "description": "Enables FIPS compliant algorithms.\n Can also be enabled via the `TAURI_BUNDLER_WIX_FIPS_COMPLIANT` env var.",
2965
- "default": false,
2966
- "type": "boolean"
2891
+ "description": "Enables FIPS compliant algorithms.\nCan also be enabled via the `TAURI_BUNDLER_WIX_FIPS_COMPLIANT` env var.",
2892
+ "type": "boolean",
2893
+ "default": false
2967
2894
  }
2968
2895
  },
2969
2896
  "additionalProperties": false
@@ -2992,7 +2919,7 @@
2992
2919
  ]
2993
2920
  },
2994
2921
  "WixLanguageConfig": {
2995
- "description": "Configuration for a target language for the WiX build.\n\n See more: <https://v2.tauri.app/reference/config/#wixlanguageconfig>",
2922
+ "description": "Configuration for a target language for the WiX build.\n\nSee more: <https://v2.tauri.app/reference/config/#wixlanguageconfig>",
2996
2923
  "type": "object",
2997
2924
  "properties": {
2998
2925
  "localePath": {
@@ -3017,14 +2944,14 @@
3017
2944
  ]
3018
2945
  },
3019
2946
  "headerImage": {
3020
- "description": "The path to a bitmap file to display on the header of installers pages.\n\n The recommended dimensions are 150px x 57px.",
2947
+ "description": "The path to a bitmap file to display on the header of installers pages.\n\nThe recommended dimensions are 150px x 57px.",
3021
2948
  "type": [
3022
2949
  "string",
3023
2950
  "null"
3024
2951
  ]
3025
2952
  },
3026
2953
  "sidebarImage": {
3027
- "description": "The path to a bitmap file for the Welcome page and the Finish page.\n\n The recommended dimensions are 164px x 314px.",
2954
+ "description": "The path to a bitmap file for the Welcome page and the Finish page.\n\nThe recommended dimensions are 164px x 314px.",
3028
2955
  "type": [
3029
2956
  "string",
3030
2957
  "null"
@@ -3045,7 +2972,7 @@
3045
2972
  ]
3046
2973
  },
3047
2974
  "uninstallerHeaderImage": {
3048
- "description": "The path to a bitmap file to display on the header of uninstallers pages.\n Defaults to [`Self::header_image`]. If this is set but [`Self::header_image`] is not, a default image from NSIS will be applied to `header_image`\n\n The recommended dimensions are 150px x 57px.",
2975
+ "description": "The path to a bitmap file to display on the header of uninstallers pages.\nDefaults to [`Self::header_image`]. If this is set but [`Self::header_image`] is not, a default image from NSIS will be applied to `header_image`\n\nThe recommended dimensions are 150px x 57px.",
3049
2976
  "type": [
3050
2977
  "string",
3051
2978
  "null"
@@ -3061,7 +2988,7 @@
3061
2988
  ]
3062
2989
  },
3063
2990
  "languages": {
3064
- "description": "A list of installer languages. Default to `[\"English\"]` if not set.\n\n By default the OS language is used. If the OS language is not in the list of languages, the first language will be used.\n To allow the user to select the language, set `display_language_selector` to `true`.\n\n See <https://github.com/kichik/nsis/tree/9465c08046f00ccb6eda985abbdbf52c275c6c4d/Contrib/Language%20files> for the complete list of languages.",
2991
+ "description": "A list of installer languages. Default to `[\"English\"]` if not set.\n\nBy default the OS language is used. If the OS language is not in the list of languages, the first language will be used.\nTo allow the user to select the language, set `display_language_selector` to `true`.\n\nSee <https://github.com/kichik/nsis/tree/9465c08046f00ccb6eda985abbdbf52c275c6c4d/Contrib/Language%20files> for the complete list of languages.",
3065
2992
  "type": [
3066
2993
  "array",
3067
2994
  "null"
@@ -3071,7 +2998,7 @@
3071
2998
  }
3072
2999
  },
3073
3000
  "customLanguageFiles": {
3074
- "description": "A key-value pair where the key is the language and the\n value is the path to a custom `.nsh` file that holds the translated text for tauri's custom messages.\n\n See <https://github.com/tauri-apps/tauri/blob/dev/crates/tauri-bundler/src/bundle/windows/nsis/languages/English.nsh> for an example `.nsh` file.\n\n **Note**: the key must be a valid NSIS language and it must be added to the [`Self::languages`] array,",
3001
+ "description": "A key-value pair where the key is the language and the\nvalue is the path to a custom `.nsh` file that holds the translated text for tauri's custom messages.\n\nSee <https://github.com/tauri-apps/tauri/blob/dev/crates/tauri-bundler/src/bundle/windows/nsis/languages/English.nsh> for an example `.nsh` file.\n\n**Note**: the key must be a valid NSIS language and it must be added to the [`Self::languages`] array,",
3075
3002
  "type": [
3076
3003
  "object",
3077
3004
  "null"
@@ -3081,12 +3008,12 @@
3081
3008
  }
3082
3009
  },
3083
3010
  "displayLanguageSelector": {
3084
- "description": "Whether to display a language selector dialog before the installer and uninstaller windows are rendered or not.\n By default the OS language is selected, with a fallback to the first language in the `languages` array.",
3085
- "default": false,
3086
- "type": "boolean"
3011
+ "description": "Whether to display a language selector dialog before the installer and uninstaller windows are rendered or not.\nBy default the OS language is selected, with a fallback to the first language in the `languages` array.",
3012
+ "type": "boolean",
3013
+ "default": false
3087
3014
  },
3088
3015
  "compression": {
3089
- "description": "Set the compression algorithm used to compress files in the installer.\n\n See <https://nsis.sourceforge.io/Reference/SetCompressor>",
3016
+ "description": "Set the compression algorithm used to compress files in the installer.\n\nSee <https://nsis.sourceforge.io/Reference/SetCompressor>",
3090
3017
  "default": "lzma",
3091
3018
  "allOf": [
3092
3019
  {
@@ -3095,26 +3022,26 @@
3095
3022
  ]
3096
3023
  },
3097
3024
  "startMenuFolder": {
3098
- "description": "Set the folder name for the start menu shortcut.\n\n Use this option if you have multiple apps and wish to group their shortcuts under one folder\n or if you generally prefer to set your shortcut inside a folder.\n\n Examples:\n - `AwesomePublisher`, shortcut will be placed in `%AppData%\\Microsoft\\Windows\\Start Menu\\Programs\\AwesomePublisher\\<your-app>.lnk`\n - If unset, shortcut will be placed in `%AppData%\\Microsoft\\Windows\\Start Menu\\Programs\\<your-app>.lnk`",
3025
+ "description": "Set the folder name for the start menu shortcut.\n\nUse this option if you have multiple apps and wish to group their shortcuts under one folder\nor if you generally prefer to set your shortcut inside a folder.\n\nExamples:\n- `AwesomePublisher`, shortcut will be placed in `%AppData%\\Microsoft\\Windows\\Start Menu\\Programs\\AwesomePublisher\\<your-app>.lnk`\n- If unset, shortcut will be placed in `%AppData%\\Microsoft\\Windows\\Start Menu\\Programs\\<your-app>.lnk`",
3099
3026
  "type": [
3100
3027
  "string",
3101
3028
  "null"
3102
3029
  ]
3103
3030
  },
3104
3031
  "installerHooks": {
3105
- "description": "A path to a `.nsh` file that contains special NSIS macros to be hooked into the\n main installer.nsi script.\n\n Supported hooks are:\n\n - `NSIS_HOOK_PREINSTALL`: This hook runs before copying files, setting registry key values and creating shortcuts.\n - `NSIS_HOOK_POSTINSTALL`: This hook runs after the installer has finished copying all files, setting the registry keys and created shortcuts.\n - `NSIS_HOOK_PREUNINSTALL`: This hook runs before removing any files, registry keys and shortcuts.\n - `NSIS_HOOK_POSTUNINSTALL`: This hook runs after files, registry keys and shortcuts have been removed.\n\n ### Example\n\n ```nsh\n !macro NSIS_HOOK_PREINSTALL\n MessageBox MB_OK \"PreInstall\"\n !macroend\n\n !macro NSIS_HOOK_POSTINSTALL\n MessageBox MB_OK \"PostInstall\"\n !macroend\n\n !macro NSIS_HOOK_PREUNINSTALL\n MessageBox MB_OK \"PreUnInstall\"\n !macroend\n\n !macro NSIS_HOOK_POSTUNINSTALL\n MessageBox MB_OK \"PostUninstall\"\n !macroend\n ```",
3032
+ "description": "A path to a `.nsh` file that contains special NSIS macros to be hooked into the\nmain installer.nsi script.\n\nSupported hooks are:\n\n- `NSIS_HOOK_PREINSTALL`: This hook runs before copying files, setting registry key values and creating shortcuts.\n- `NSIS_HOOK_POSTINSTALL`: This hook runs after the installer has finished copying all files, setting the registry keys and created shortcuts.\n- `NSIS_HOOK_PREUNINSTALL`: This hook runs before removing any files, registry keys and shortcuts.\n- `NSIS_HOOK_POSTUNINSTALL`: This hook runs after files, registry keys and shortcuts have been removed.\n\n### Example\n\n```nsh\n!macro NSIS_HOOK_PREINSTALL\n MessageBox MB_OK \"PreInstall\"\n!macroend\n\n!macro NSIS_HOOK_POSTINSTALL\n MessageBox MB_OK \"PostInstall\"\n!macroend\n\n!macro NSIS_HOOK_PREUNINSTALL\n MessageBox MB_OK \"PreUnInstall\"\n!macroend\n\n!macro NSIS_HOOK_POSTUNINSTALL\n MessageBox MB_OK \"PostUninstall\"\n!macroend\n```",
3106
3033
  "type": [
3107
3034
  "string",
3108
3035
  "null"
3109
3036
  ]
3110
3037
  },
3111
3038
  "minimumWebview2Version": {
3112
- "description": "Deprecated: use [`WindowsConfig::minimum_webview2_version`] (`bundle > windows > minimumWebview2Version`) instead.\n\n Try to ensure that the WebView2 version is equal to or newer than this version,\n if the user's WebView2 is older than this version,\n the installer will try to trigger a WebView2 update.",
3113
- "deprecated": true,
3039
+ "description": "Deprecated: use [`WindowsConfig::minimum_webview2_version`] (`bundle > windows > minimumWebview2Version`) instead.\n\nTry to ensure that the WebView2 version is equal to or newer than this version,\nif the user's WebView2 is older than this version,\nthe installer will try to trigger a WebView2 update.",
3114
3040
  "type": [
3115
3041
  "string",
3116
3042
  "null"
3117
- ]
3043
+ ],
3044
+ "deprecated": true
3118
3045
  }
3119
3046
  },
3120
3047
  "additionalProperties": false
@@ -3123,58 +3050,44 @@
3123
3050
  "description": "Install Modes for the NSIS installer.",
3124
3051
  "oneOf": [
3125
3052
  {
3126
- "description": "Default mode for the installer.\n\n Install the app by default in a directory that doesn't require Administrator access.\n\n Installer metadata will be saved under the `HKCU` registry path.",
3053
+ "description": "Default mode for the installer.\n\nInstall the app by default in a directory that doesn't require Administrator access.\n\nInstaller metadata will be saved under the `HKCU` registry path.",
3127
3054
  "type": "string",
3128
- "enum": [
3129
- "currentUser"
3130
- ]
3055
+ "const": "currentUser"
3131
3056
  },
3132
3057
  {
3133
- "description": "Install the app by default in the `Program Files` folder directory requires Administrator\n access for the installation.\n\n Installer metadata will be saved under the `HKLM` registry path.",
3058
+ "description": "Install the app by default in the `Program Files` folder directory requires Administrator\naccess for the installation.\n\nInstaller metadata will be saved under the `HKLM` registry path.",
3134
3059
  "type": "string",
3135
- "enum": [
3136
- "perMachine"
3137
- ]
3060
+ "const": "perMachine"
3138
3061
  },
3139
3062
  {
3140
- "description": "Combines both modes and allows the user to choose at install time\n whether to install for the current user or per machine. Note that this mode\n will require Administrator access even if the user wants to install it for the current user only.\n\n Installer metadata will be saved under the `HKLM` or `HKCU` registry path based on the user's choice.",
3063
+ "description": "Combines both modes and allows the user to choose at install time\nwhether to install for the current user or per machine. Note that this mode\nwill require Administrator access even if the user wants to install it for the current user only.\n\nInstaller metadata will be saved under the `HKLM` or `HKCU` registry path based on the user's choice.",
3141
3064
  "type": "string",
3142
- "enum": [
3143
- "both"
3144
- ]
3065
+ "const": "both"
3145
3066
  }
3146
3067
  ]
3147
3068
  },
3148
3069
  "NsisCompression": {
3149
- "description": "Compression algorithms used in the NSIS installer.\n\n See <https://nsis.sourceforge.io/Reference/SetCompressor>",
3070
+ "description": "Compression algorithms used in the NSIS installer.\n\nSee <https://nsis.sourceforge.io/Reference/SetCompressor>",
3150
3071
  "oneOf": [
3151
3072
  {
3152
3073
  "description": "ZLIB uses the deflate algorithm, it is a quick and simple method. With the default compression level it uses about 300 KB of memory.",
3153
3074
  "type": "string",
3154
- "enum": [
3155
- "zlib"
3156
- ]
3075
+ "const": "zlib"
3157
3076
  },
3158
3077
  {
3159
3078
  "description": "BZIP2 usually gives better compression ratios than ZLIB, but it is a bit slower and uses more memory. With the default compression level it uses about 4 MB of memory.",
3160
3079
  "type": "string",
3161
- "enum": [
3162
- "bzip2"
3163
- ]
3080
+ "const": "bzip2"
3164
3081
  },
3165
3082
  {
3166
3083
  "description": "LZMA (default) is a new compression method that gives very good compression ratios. The decompression speed is high (10-20 MB/s on a 2 GHz CPU), the compression speed is lower. The memory size that will be used for decompression is the dictionary size plus a few KBs, the default is 8 MB.",
3167
3084
  "type": "string",
3168
- "enum": [
3169
- "lzma"
3170
- ]
3085
+ "const": "lzma"
3171
3086
  },
3172
3087
  {
3173
3088
  "description": "Disable compression",
3174
3089
  "type": "string",
3175
- "enum": [
3176
- "none"
3177
- ]
3090
+ "const": "none"
3178
3091
  }
3179
3092
  ]
3180
3093
  },
@@ -3182,35 +3095,35 @@
3182
3095
  "description": "Custom Signing Command configuration.",
3183
3096
  "anyOf": [
3184
3097
  {
3185
- "description": "A string notation of the script to execute.\n\n \"%1\" will be replaced with the path to the binary to be signed.\n\n This is a simpler notation for the command.\n Tauri will split the string with `' '` and use the first element as the command name and the rest as arguments.\n\n If you need to use whitespace in the command or arguments, use the object notation [`Self::CommandWithOptions`].",
3098
+ "description": "A string notation of the script to execute.\n\n\"%1\" will be replaced with the path to the binary to be signed.\n\nThis is a simpler notation for the command.\nTauri will split the string with `' '` and use the first element as the command name and the rest as arguments.\n\nIf you need to use whitespace in the command or arguments, use the object notation [`Self::CommandWithOptions`].",
3186
3099
  "type": "string"
3187
3100
  },
3188
3101
  {
3189
- "description": "An object notation of the command.\n\n This is more complex notation for the command but\n this allows you to use whitespace in the command and arguments.",
3102
+ "description": "An object notation of the command.\n\nThis is more complex notation for the command but\nthis allows you to use whitespace in the command and arguments.",
3190
3103
  "type": "object",
3191
- "required": [
3192
- "args",
3193
- "cmd"
3194
- ],
3195
3104
  "properties": {
3196
3105
  "cmd": {
3197
3106
  "description": "The command to run to sign the binary.",
3198
3107
  "type": "string"
3199
3108
  },
3200
3109
  "args": {
3201
- "description": "The arguments to pass to the command.\n\n \"%1\" will be replaced with the path to the binary to be signed.",
3110
+ "description": "The arguments to pass to the command.\n\n\"%1\" will be replaced with the path to the binary to be signed.",
3202
3111
  "type": "array",
3203
3112
  "items": {
3204
3113
  "type": "string"
3205
3114
  }
3206
3115
  }
3207
3116
  },
3208
- "additionalProperties": false
3117
+ "additionalProperties": false,
3118
+ "required": [
3119
+ "cmd",
3120
+ "args"
3121
+ ]
3209
3122
  }
3210
3123
  ]
3211
3124
  },
3212
3125
  "LinuxConfig": {
3213
- "description": "Configuration for Linux bundles.\n\n See more: <https://v2.tauri.app/reference/config/#linuxconfig>",
3126
+ "description": "Configuration for Linux bundles.\n\nSee more: <https://v2.tauri.app/reference/config/#linuxconfig>",
3214
3127
  "type": "object",
3215
3128
  "properties": {
3216
3129
  "appimage": {
@@ -3239,9 +3152,9 @@
3239
3152
  "rpm": {
3240
3153
  "description": "Configuration for the RPM bundle.",
3241
3154
  "default": {
3155
+ "release": "1",
3242
3156
  "epoch": 0,
3243
- "files": {},
3244
- "release": "1"
3157
+ "files": {}
3245
3158
  },
3246
3159
  "allOf": [
3247
3160
  {
@@ -3253,27 +3166,27 @@
3253
3166
  "additionalProperties": false
3254
3167
  },
3255
3168
  "AppImageConfig": {
3256
- "description": "Configuration for AppImage bundles.\n\n See more: <https://v2.tauri.app/reference/config/#appimageconfig>",
3169
+ "description": "Configuration for AppImage bundles.\n\nSee more: <https://v2.tauri.app/reference/config/#appimageconfig>",
3257
3170
  "type": "object",
3258
3171
  "properties": {
3259
3172
  "bundleMediaFramework": {
3260
- "description": "Include additional gstreamer dependencies needed for audio and video playback.\n This increases the bundle size by ~15-35MB depending on your build system.",
3261
- "default": false,
3262
- "type": "boolean"
3173
+ "description": "Include additional gstreamer dependencies needed for audio and video playback.\nThis increases the bundle size by ~15-35MB depending on your build system.",
3174
+ "type": "boolean",
3175
+ "default": false
3263
3176
  },
3264
3177
  "files": {
3265
3178
  "description": "The files to include in the Appimage Binary.",
3266
- "default": {},
3267
3179
  "type": "object",
3268
3180
  "additionalProperties": {
3269
3181
  "type": "string"
3270
- }
3182
+ },
3183
+ "default": {}
3271
3184
  }
3272
3185
  },
3273
3186
  "additionalProperties": false
3274
3187
  },
3275
3188
  "DebConfig": {
3276
- "description": "Configuration for Debian (.deb) bundles.\n\n See more: <https://v2.tauri.app/reference/config/#debconfig>",
3189
+ "description": "Configuration for Debian (.deb) bundles.\n\nSee more: <https://v2.tauri.app/reference/config/#debconfig>",
3277
3190
  "type": "object",
3278
3191
  "properties": {
3279
3192
  "depends": {
@@ -3328,11 +3241,11 @@
3328
3241
  },
3329
3242
  "files": {
3330
3243
  "description": "The files to include on the package.",
3331
- "default": {},
3332
3244
  "type": "object",
3333
3245
  "additionalProperties": {
3334
3246
  "type": "string"
3335
- }
3247
+ },
3248
+ "default": {}
3336
3249
  },
3337
3250
  "section": {
3338
3251
  "description": "Define the section in Debian Control file. See : https://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections",
@@ -3342,49 +3255,49 @@
3342
3255
  ]
3343
3256
  },
3344
3257
  "priority": {
3345
- "description": "Change the priority of the Debian Package. By default, it is set to `optional`.\n Recognized Priorities as of now are : `required`, `important`, `standard`, `optional`, `extra`",
3258
+ "description": "Change the priority of the Debian Package. By default, it is set to `optional`.\nRecognized Priorities as of now are : `required`, `important`, `standard`, `optional`, `extra`",
3346
3259
  "type": [
3347
3260
  "string",
3348
3261
  "null"
3349
3262
  ]
3350
3263
  },
3351
3264
  "changelog": {
3352
- "description": "Path of the uncompressed Changelog file, to be stored at /usr/share/doc/package-name/changelog.gz. See\n <https://www.debian.org/doc/debian-policy/ch-docs.html#changelog-files-and-release-notes>",
3265
+ "description": "Path of the uncompressed Changelog file, to be stored at /usr/share/doc/package-name/changelog.gz. See\n<https://www.debian.org/doc/debian-policy/ch-docs.html#changelog-files-and-release-notes>",
3353
3266
  "type": [
3354
3267
  "string",
3355
3268
  "null"
3356
3269
  ]
3357
3270
  },
3358
3271
  "desktopTemplate": {
3359
- "description": "Path to a custom desktop file Handlebars template.\n\n Available variables: `categories`, `comment` (optional), `exec`, `icon` and `name`.",
3272
+ "description": "Path to a custom desktop file Handlebars template.\n\nAvailable variables: `categories`, `comment` (optional), `exec`, `icon` and `name`.",
3360
3273
  "type": [
3361
3274
  "string",
3362
3275
  "null"
3363
3276
  ]
3364
3277
  },
3365
3278
  "preInstallScript": {
3366
- "description": "Path to script that will be executed before the package is unpacked. See\n <https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html>",
3279
+ "description": "Path to script that will be executed before the package is unpacked. See\n<https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html>",
3367
3280
  "type": [
3368
3281
  "string",
3369
3282
  "null"
3370
3283
  ]
3371
3284
  },
3372
3285
  "postInstallScript": {
3373
- "description": "Path to script that will be executed after the package is unpacked. See\n <https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html>",
3286
+ "description": "Path to script that will be executed after the package is unpacked. See\n<https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html>",
3374
3287
  "type": [
3375
3288
  "string",
3376
3289
  "null"
3377
3290
  ]
3378
3291
  },
3379
3292
  "preRemoveScript": {
3380
- "description": "Path to script that will be executed before the package is removed. See\n <https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html>",
3293
+ "description": "Path to script that will be executed before the package is removed. See\n<https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html>",
3381
3294
  "type": [
3382
3295
  "string",
3383
3296
  "null"
3384
3297
  ]
3385
3298
  },
3386
3299
  "postRemoveScript": {
3387
- "description": "Path to script that will be executed after the package is removed. See\n <https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html>",
3300
+ "description": "Path to script that will be executed after the package is removed. See\n<https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html>",
3388
3301
  "type": [
3389
3302
  "string",
3390
3303
  "null"
@@ -3428,7 +3341,7 @@
3428
3341
  }
3429
3342
  },
3430
3343
  "conflicts": {
3431
- "description": "The list of RPM dependencies your application conflicts with. They must not be present\n in order for the package to be installed.",
3344
+ "description": "The list of RPM dependencies your application conflicts with. They must not be present\nin order for the package to be installed.",
3432
3345
  "type": [
3433
3346
  "array",
3434
3347
  "null"
@@ -3438,7 +3351,7 @@
3438
3351
  }
3439
3352
  },
3440
3353
  "obsoletes": {
3441
- "description": "The list of RPM dependencies your application supersedes - if this package is installed,\n packages listed as \"obsoletes\" will be automatically removed (if they are present).",
3354
+ "description": "The list of RPM dependencies your application supersedes - if this package is installed,\npackages listed as \"obsoletes\" will be automatically removed (if they are present).",
3442
3355
  "type": [
3443
3356
  "array",
3444
3357
  "null"
@@ -3449,54 +3362,54 @@
3449
3362
  },
3450
3363
  "release": {
3451
3364
  "description": "The RPM release tag.",
3452
- "default": "1",
3453
- "type": "string"
3365
+ "type": "string",
3366
+ "default": "1"
3454
3367
  },
3455
3368
  "epoch": {
3456
3369
  "description": "The RPM epoch.",
3457
- "default": 0,
3458
3370
  "type": "integer",
3459
3371
  "format": "uint32",
3460
- "minimum": 0.0
3372
+ "minimum": 0,
3373
+ "default": 0
3461
3374
  },
3462
3375
  "files": {
3463
3376
  "description": "The files to include on the package.",
3464
- "default": {},
3465
3377
  "type": "object",
3466
3378
  "additionalProperties": {
3467
3379
  "type": "string"
3468
- }
3380
+ },
3381
+ "default": {}
3469
3382
  },
3470
3383
  "desktopTemplate": {
3471
- "description": "Path to a custom desktop file Handlebars template.\n\n Available variables: `categories`, `comment` (optional), `exec`, `icon` and `name`.",
3384
+ "description": "Path to a custom desktop file Handlebars template.\n\nAvailable variables: `categories`, `comment` (optional), `exec`, `icon` and `name`.",
3472
3385
  "type": [
3473
3386
  "string",
3474
3387
  "null"
3475
3388
  ]
3476
3389
  },
3477
3390
  "preInstallScript": {
3478
- "description": "Path to script that will be executed before the package is unpacked. See\n <http://ftp.rpm.org/max-rpm/s1-rpm-inside-scripts.html>",
3391
+ "description": "Path to script that will be executed before the package is unpacked. See\n<http://ftp.rpm.org/max-rpm/s1-rpm-inside-scripts.html>",
3479
3392
  "type": [
3480
3393
  "string",
3481
3394
  "null"
3482
3395
  ]
3483
3396
  },
3484
3397
  "postInstallScript": {
3485
- "description": "Path to script that will be executed after the package is unpacked. See\n <http://ftp.rpm.org/max-rpm/s1-rpm-inside-scripts.html>",
3398
+ "description": "Path to script that will be executed after the package is unpacked. See\n<http://ftp.rpm.org/max-rpm/s1-rpm-inside-scripts.html>",
3486
3399
  "type": [
3487
3400
  "string",
3488
3401
  "null"
3489
3402
  ]
3490
3403
  },
3491
3404
  "preRemoveScript": {
3492
- "description": "Path to script that will be executed before the package is removed. See\n <http://ftp.rpm.org/max-rpm/s1-rpm-inside-scripts.html>",
3405
+ "description": "Path to script that will be executed before the package is removed. See\n<http://ftp.rpm.org/max-rpm/s1-rpm-inside-scripts.html>",
3493
3406
  "type": [
3494
3407
  "string",
3495
3408
  "null"
3496
3409
  ]
3497
3410
  },
3498
3411
  "postRemoveScript": {
3499
- "description": "Path to script that will be executed after the package is removed. See\n <http://ftp.rpm.org/max-rpm/s1-rpm-inside-scripts.html>",
3412
+ "description": "Path to script that will be executed after the package is removed. See\n<http://ftp.rpm.org/max-rpm/s1-rpm-inside-scripts.html>",
3500
3413
  "type": [
3501
3414
  "string",
3502
3415
  "null"
@@ -3522,118 +3435,108 @@
3522
3435
  {
3523
3436
  "description": "Gzip compression",
3524
3437
  "type": "object",
3525
- "required": [
3526
- "level",
3527
- "type"
3528
- ],
3529
3438
  "properties": {
3530
- "type": {
3531
- "type": "string",
3532
- "enum": [
3533
- "gzip"
3534
- ]
3535
- },
3536
3439
  "level": {
3537
3440
  "description": "Gzip compression level",
3538
3441
  "type": "integer",
3539
3442
  "format": "uint32",
3540
- "minimum": 0.0
3443
+ "minimum": 0
3444
+ },
3445
+ "type": {
3446
+ "type": "string",
3447
+ "const": "gzip"
3541
3448
  }
3542
3449
  },
3543
- "additionalProperties": false
3450
+ "additionalProperties": false,
3451
+ "required": [
3452
+ "type",
3453
+ "level"
3454
+ ]
3544
3455
  },
3545
3456
  {
3546
3457
  "description": "Zstd compression",
3547
3458
  "type": "object",
3548
- "required": [
3549
- "level",
3550
- "type"
3551
- ],
3552
3459
  "properties": {
3553
- "type": {
3554
- "type": "string",
3555
- "enum": [
3556
- "zstd"
3557
- ]
3558
- },
3559
3460
  "level": {
3560
3461
  "description": "Zstd compression level",
3561
3462
  "type": "integer",
3562
3463
  "format": "int32"
3464
+ },
3465
+ "type": {
3466
+ "type": "string",
3467
+ "const": "zstd"
3563
3468
  }
3564
3469
  },
3565
- "additionalProperties": false
3470
+ "additionalProperties": false,
3471
+ "required": [
3472
+ "type",
3473
+ "level"
3474
+ ]
3566
3475
  },
3567
3476
  {
3568
3477
  "description": "Xz compression",
3569
3478
  "type": "object",
3570
- "required": [
3571
- "level",
3572
- "type"
3573
- ],
3574
3479
  "properties": {
3575
- "type": {
3576
- "type": "string",
3577
- "enum": [
3578
- "xz"
3579
- ]
3580
- },
3581
3480
  "level": {
3582
3481
  "description": "Xz compression level",
3583
3482
  "type": "integer",
3584
3483
  "format": "uint32",
3585
- "minimum": 0.0
3484
+ "minimum": 0
3485
+ },
3486
+ "type": {
3487
+ "type": "string",
3488
+ "const": "xz"
3586
3489
  }
3587
3490
  },
3588
- "additionalProperties": false
3491
+ "additionalProperties": false,
3492
+ "required": [
3493
+ "type",
3494
+ "level"
3495
+ ]
3589
3496
  },
3590
3497
  {
3591
3498
  "description": "Bzip2 compression",
3592
3499
  "type": "object",
3593
- "required": [
3594
- "level",
3595
- "type"
3596
- ],
3597
3500
  "properties": {
3598
- "type": {
3599
- "type": "string",
3600
- "enum": [
3601
- "bzip2"
3602
- ]
3603
- },
3604
3501
  "level": {
3605
3502
  "description": "Bzip2 compression level",
3606
3503
  "type": "integer",
3607
3504
  "format": "uint32",
3608
- "minimum": 0.0
3505
+ "minimum": 0
3506
+ },
3507
+ "type": {
3508
+ "type": "string",
3509
+ "const": "bzip2"
3609
3510
  }
3610
3511
  },
3611
- "additionalProperties": false
3512
+ "additionalProperties": false,
3513
+ "required": [
3514
+ "type",
3515
+ "level"
3516
+ ]
3612
3517
  },
3613
3518
  {
3614
3519
  "description": "Disable compression",
3615
3520
  "type": "object",
3616
- "required": [
3617
- "type"
3618
- ],
3619
3521
  "properties": {
3620
3522
  "type": {
3621
3523
  "type": "string",
3622
- "enum": [
3623
- "none"
3624
- ]
3524
+ "const": "none"
3625
3525
  }
3626
3526
  },
3527
+ "required": [
3528
+ "type"
3529
+ ],
3627
3530
  "additionalProperties": false
3628
3531
  }
3629
3532
  ]
3630
3533
  },
3631
3534
  "MacConfig": {
3632
- "description": "Configuration for the macOS bundles.\n\n See more: <https://v2.tauri.app/reference/config/#macconfig>",
3535
+ "description": "Configuration for the macOS bundles.\n\nSee more: <https://v2.tauri.app/reference/config/#macconfig>",
3633
3536
  "type": "object",
3634
3537
  "properties": {
3635
3538
  "frameworks": {
3636
- "description": "A list of strings indicating any macOS X frameworks that need to be bundled with the application.\n\n If a name is used, \".framework\" must be omitted and it will look for standard install locations. You may also use a path to a specific framework.",
3539
+ "description": "A list of strings indicating any macOS X frameworks that need to be bundled with the application.\n\nIf a name is used, \".framework\" must be omitted and it will look for standard install locations. You may also use a path to a specific framework.",
3637
3540
  "type": [
3638
3541
  "array",
3639
3542
  "null"
@@ -3644,36 +3547,36 @@
3644
3547
  },
3645
3548
  "files": {
3646
3549
  "description": "The files to include in the application relative to the Contents directory.",
3647
- "default": {},
3648
3550
  "type": "object",
3649
3551
  "additionalProperties": {
3650
3552
  "type": "string"
3651
- }
3553
+ },
3554
+ "default": {}
3652
3555
  },
3653
3556
  "bundleVersion": {
3654
- "description": "The version of the build that identifies an iteration of the bundle.\n\n Translates to the bundle's CFBundleVersion property.",
3557
+ "description": "The version of the build that identifies an iteration of the bundle.\n\nTranslates to the bundle's CFBundleVersion property.",
3655
3558
  "type": [
3656
3559
  "string",
3657
3560
  "null"
3658
3561
  ]
3659
3562
  },
3660
3563
  "bundleName": {
3661
- "description": "The name of the builder that built the bundle.\n\n Translates to the bundle's CFBundleName property.\n\n If not set, defaults to the package's product name.",
3564
+ "description": "The name of the builder that built the bundle.\n\nTranslates to the bundle's CFBundleName property.\n\nIf not set, defaults to the package's product name.",
3662
3565
  "type": [
3663
3566
  "string",
3664
3567
  "null"
3665
3568
  ]
3666
3569
  },
3667
3570
  "minimumSystemVersion": {
3668
- "description": "A version string indicating the minimum macOS X version that the bundled application supports. Defaults to `10.13`.\n\n Setting it to `null` completely removes the `LSMinimumSystemVersion` field on the bundle's `Info.plist`\n and the `MACOSX_DEPLOYMENT_TARGET` environment variable.\n\n Ignored in `tauri dev`.\n\n An empty string is considered an invalid value so the default value is used.",
3669
- "default": "10.13",
3571
+ "description": "A version string indicating the minimum macOS X version that the bundled application supports. Defaults to `10.13`.\n\nSetting it to `null` completely removes the `LSMinimumSystemVersion` field on the bundle's `Info.plist`\nand the `MACOSX_DEPLOYMENT_TARGET` environment variable.\n\nIgnored in `tauri dev`.\n\nAn empty string is considered an invalid value so the default value is used.",
3670
3572
  "type": [
3671
3573
  "string",
3672
3574
  "null"
3673
- ]
3575
+ ],
3576
+ "default": "10.13"
3674
3577
  },
3675
3578
  "exceptionDomain": {
3676
- "description": "Allows your application to communicate with the outside world.\n It should be a lowercase, without port and protocol domain name.",
3579
+ "description": "Allows your application to communicate with the outside world.\nIt should be a lowercase, without port and protocol domain name.",
3677
3580
  "type": [
3678
3581
  "string",
3679
3582
  "null"
@@ -3688,8 +3591,8 @@
3688
3591
  },
3689
3592
  "hardenedRuntime": {
3690
3593
  "description": "Whether the codesign should enable [hardened runtime](https://developer.apple.com/documentation/security/hardened_runtime) (for executables) or not.",
3691
- "default": true,
3692
- "type": "boolean"
3594
+ "type": "boolean",
3595
+ "default": true
3693
3596
  },
3694
3597
  "providerShortName": {
3695
3598
  "description": "Provider short name for notarization.",
@@ -3706,7 +3609,7 @@
3706
3609
  ]
3707
3610
  },
3708
3611
  "infoPlist": {
3709
- "description": "Path to a Info.plist file to merge with the default Info.plist.\n\n Note that Tauri also looks for a `Info.plist` file in the same directory as the Tauri configuration file.",
3612
+ "description": "Path to a Info.plist file to merge with the default Info.plist.\n\nNote that Tauri also looks for a `Info.plist` file in the same directory as the Tauri configuration file.",
3710
3613
  "type": [
3711
3614
  "string",
3712
3615
  "null"
@@ -3715,6 +3618,10 @@
3715
3618
  "dmg": {
3716
3619
  "description": "DMG-specific settings.",
3717
3620
  "default": {
3621
+ "windowSize": {
3622
+ "width": 660,
3623
+ "height": 400
3624
+ },
3718
3625
  "appPosition": {
3719
3626
  "x": 180,
3720
3627
  "y": 170
@@ -3722,10 +3629,6 @@
3722
3629
  "applicationFolderPosition": {
3723
3630
  "x": 480,
3724
3631
  "y": 170
3725
- },
3726
- "windowSize": {
3727
- "height": 400,
3728
- "width": 660
3729
3632
  }
3730
3633
  },
3731
3634
  "allOf": [
@@ -3738,7 +3641,7 @@
3738
3641
  "additionalProperties": false
3739
3642
  },
3740
3643
  "DmgConfig": {
3741
- "description": "Configuration for Apple Disk Image (.dmg) bundles.\n\n See more: <https://v2.tauri.app/reference/config/#dmgconfig>",
3644
+ "description": "Configuration for Apple Disk Image (.dmg) bundles.\n\nSee more: <https://v2.tauri.app/reference/config/#dmgconfig>",
3742
3645
  "type": "object",
3743
3646
  "properties": {
3744
3647
  "background": {
@@ -3762,8 +3665,8 @@
3762
3665
  "windowSize": {
3763
3666
  "description": "Size of volume window.",
3764
3667
  "default": {
3765
- "height": 400,
3766
- "width": 660
3668
+ "width": 660,
3669
+ "height": 400
3767
3670
  },
3768
3671
  "allOf": [
3769
3672
  {
@@ -3801,62 +3704,62 @@
3801
3704
  "Position": {
3802
3705
  "description": "Position coordinates struct.",
3803
3706
  "type": "object",
3804
- "required": [
3805
- "x",
3806
- "y"
3807
- ],
3808
3707
  "properties": {
3809
3708
  "x": {
3810
3709
  "description": "X coordinate.",
3811
3710
  "type": "integer",
3812
3711
  "format": "uint32",
3813
- "minimum": 0.0
3712
+ "minimum": 0
3814
3713
  },
3815
3714
  "y": {
3816
3715
  "description": "Y coordinate.",
3817
3716
  "type": "integer",
3818
3717
  "format": "uint32",
3819
- "minimum": 0.0
3718
+ "minimum": 0
3820
3719
  }
3821
3720
  },
3822
- "additionalProperties": false
3721
+ "additionalProperties": false,
3722
+ "required": [
3723
+ "x",
3724
+ "y"
3725
+ ]
3823
3726
  },
3824
3727
  "Size": {
3825
3728
  "description": "Size of the window.",
3826
3729
  "type": "object",
3827
- "required": [
3828
- "height",
3829
- "width"
3830
- ],
3831
3730
  "properties": {
3832
3731
  "width": {
3833
3732
  "description": "Width of the window.",
3834
3733
  "type": "integer",
3835
3734
  "format": "uint32",
3836
- "minimum": 0.0
3735
+ "minimum": 0
3837
3736
  },
3838
3737
  "height": {
3839
3738
  "description": "Height of the window.",
3840
3739
  "type": "integer",
3841
3740
  "format": "uint32",
3842
- "minimum": 0.0
3741
+ "minimum": 0
3843
3742
  }
3844
3743
  },
3845
- "additionalProperties": false
3744
+ "additionalProperties": false,
3745
+ "required": [
3746
+ "width",
3747
+ "height"
3748
+ ]
3846
3749
  },
3847
3750
  "IosConfig": {
3848
3751
  "description": "General configuration for the iOS target.",
3849
3752
  "type": "object",
3850
3753
  "properties": {
3851
3754
  "template": {
3852
- "description": "A custom [XcodeGen] project.yml template to use.\n\n [XcodeGen]: <https://github.com/yonaskolb/XcodeGen>",
3755
+ "description": "A custom [XcodeGen] project.yml template to use.\n\n[XcodeGen]: <https://github.com/yonaskolb/XcodeGen>",
3853
3756
  "type": [
3854
3757
  "string",
3855
3758
  "null"
3856
3759
  ]
3857
3760
  },
3858
3761
  "frameworks": {
3859
- "description": "A list of strings indicating any iOS frameworks that need to be bundled with the application.\n\n Note that you need to recreate the iOS project for the changes to be applied.",
3762
+ "description": "A list of strings indicating any iOS frameworks that need to be bundled with the application.\n\nNote that you need to recreate the iOS project for the changes to be applied.",
3860
3763
  "type": [
3861
3764
  "array",
3862
3765
  "null"
@@ -3866,26 +3769,26 @@
3866
3769
  }
3867
3770
  },
3868
3771
  "developmentTeam": {
3869
- "description": "The development team. This value is required for iOS development because code signing is enforced.\n The `APPLE_DEVELOPMENT_TEAM` environment variable can be set to overwrite it.",
3772
+ "description": "The development team. This value is required for iOS development because code signing is enforced.\nThe `APPLE_DEVELOPMENT_TEAM` environment variable can be set to overwrite it.",
3870
3773
  "type": [
3871
3774
  "string",
3872
3775
  "null"
3873
3776
  ]
3874
3777
  },
3875
3778
  "bundleVersion": {
3876
- "description": "The version of the build that identifies an iteration of the bundle.\n\n Translates to the bundle's CFBundleVersion property.",
3779
+ "description": "The version of the build that identifies an iteration of the bundle.\n\nTranslates to the bundle's CFBundleVersion property.",
3877
3780
  "type": [
3878
3781
  "string",
3879
3782
  "null"
3880
3783
  ]
3881
3784
  },
3882
3785
  "minimumSystemVersion": {
3883
- "description": "A version string indicating the minimum iOS version that the bundled application supports. Defaults to `13.0`.\n\n Maps to the IPHONEOS_DEPLOYMENT_TARGET value.",
3884
- "default": "14.0",
3885
- "type": "string"
3786
+ "description": "A version string indicating the minimum iOS version that the bundled application supports. Defaults to `15.0`.\n\nMaps to the IPHONEOS_DEPLOYMENT_TARGET value.",
3787
+ "type": "string",
3788
+ "default": "15.0"
3886
3789
  },
3887
3790
  "infoPlist": {
3888
- "description": "Path to a Info.plist file to merge with the default Info.plist.\n\n Note that Tauri also looks for a `Info.plist` and `Info.ios.plist` file in the same directory as the Tauri configuration file.",
3791
+ "description": "Path to a Info.plist file to merge with the default Info.plist.\n\nNote that Tauri also looks for a `Info.plist` and `Info.ios.plist` file in the same directory as the Tauri configuration file.",
3889
3792
  "type": [
3890
3793
  "string",
3891
3794
  "null"
@@ -3899,29 +3802,29 @@
3899
3802
  "type": "object",
3900
3803
  "properties": {
3901
3804
  "minSdkVersion": {
3902
- "description": "The minimum API level required for the application to run.\n The Android system will prevent the user from installing the application if the system's API level is lower than the value specified.",
3903
- "default": 24,
3805
+ "description": "The minimum API level required for the application to run.\nThe Android system will prevent the user from installing the application if the system's API level is lower than the value specified.",
3904
3806
  "type": "integer",
3905
3807
  "format": "uint32",
3906
- "minimum": 0.0
3808
+ "minimum": 0,
3809
+ "default": 24
3907
3810
  },
3908
3811
  "versionCode": {
3909
- "description": "The version code of the application.\n It is limited to 2,100,000,000 as per Google Play Store requirements.\n\n By default we use your configured version and perform the following math:\n versionCode = version.major * 1000000 + version.minor * 1000 + version.patch",
3812
+ "description": "The version code of the application.\nIt is limited to 2,100,000,000 as per Google Play Store requirements.\n\nBy default we use your configured version and perform the following math:\nversionCode = version.major * 1000000 + version.minor * 1000 + version.patch",
3910
3813
  "type": [
3911
3814
  "integer",
3912
3815
  "null"
3913
3816
  ],
3914
3817
  "format": "uint32",
3915
- "maximum": 2100000000.0,
3916
- "minimum": 1.0
3818
+ "minimum": 1,
3819
+ "maximum": 2100000000
3917
3820
  },
3918
3821
  "autoIncrementVersionCode": {
3919
- "description": "Whether to automatically increment the `versionCode` on each build.\n\n - If `true`, the generator will try to read the last `versionCode` from\n `tauri.properties` and increment it by 1 for every build.\n - If `false` or not set, it falls back to `version_code` or semver-derived logic.\n\n Note that to use this feature, you should remove `/tauri.properties` from `src-tauri/gen/android/app/.gitignore` so the current versionCode is committed to the repository.",
3920
- "default": false,
3921
- "type": "boolean"
3822
+ "description": "Whether to automatically increment the `versionCode` on each build.\n\n- If `true`, the generator will try to read the last `versionCode` from\n `tauri.properties` and increment it by 1 for every build.\n- If `false` or not set, it falls back to `version_code` or semver-derived logic.\n\nNote that to use this feature, you should remove `/tauri.properties` from `src-tauri/gen/android/app/.gitignore` so the current versionCode is committed to the repository.",
3823
+ "type": "boolean",
3824
+ "default": false
3922
3825
  },
3923
3826
  "debugApplicationIdSuffix": {
3924
- "description": "Application ID suffix to append for debug builds.\n This allows installing debug and release versions side-by-side on the same device.\n Example: \".debug\" will make debug builds use \"com.example.app.debug\" as the application ID.",
3827
+ "description": "Application ID suffix to append for debug builds.\nThis allows installing debug and release versions side-by-side on the same device.\nExample: \".debug\" will make debug builds use \"com.example.app.debug\" as the application ID.",
3925
3828
  "type": [
3926
3829
  "string",
3927
3830
  "null"
@@ -3930,8 +3833,20 @@
3930
3833
  },
3931
3834
  "additionalProperties": false
3932
3835
  },
3836
+ "CefConfig": {
3837
+ "description": "Configuration for apps using the Chromium Embedded Framework (the `cef`\nfeature of the `tauri` crate).\n\nSee more: <https://v2.tauri.app/reference/config/#cefconfig>",
3838
+ "type": "object",
3839
+ "properties": {
3840
+ "embed": {
3841
+ "description": "Whether the CEF binary distribution is embedded in the bundle.\nDefaults to `true`.\n\nSet it to `false` for an app that loads CEF at run time from outside\nits own bundle — a shared, machine-wide runtime, through the\n`TAURI_CEF_LIBRARY_PATH` environment variable. The framework,\n`libcef` and their resources are then left out of every bundle, and\nthe app must find a runtime at launch or it will not start. On macOS\nthe helper apps are still produced: they belong to the app, not to\nthe distribution.",
3842
+ "type": "boolean",
3843
+ "default": true
3844
+ }
3845
+ },
3846
+ "additionalProperties": false
3847
+ },
3933
3848
  "PluginConfig": {
3934
- "description": "The plugin configs holds a HashMap mapping a plugin name to its configuration object.\n\n See more: <https://v2.tauri.app/reference/config/#pluginconfig>",
3849
+ "description": "The plugin configs holds a HashMap mapping a plugin name to its configuration object.\n\nSee more: <https://v2.tauri.app/reference/config/#pluginconfig>",
3935
3850
  "type": "object",
3936
3851
  "additionalProperties": true
3937
3852
  }