Commit Graph
1299 Commits
Author SHA1 Message Date
Lucas Fernandes NogueiraandAmr Bashir 6a12f7c80a refactor(updater)!: remove deprecated Update.available field (#3607)
* refactor(updater)!: remove deprecated Update.available field

It was always `true`; check whether `check()` returned `null` instead.

* fix(examples): remove usage of the dropped Update.available field

* Update .changes/updater-remove-available.md

---------

Co-authored-by: Amr Bashir <github@amrbashir.me>
2026-09-22 06:13:04 -03:00
Lucas Fernandes NogueiraandAmr Bashir 73ec7ed401 refactor(autostart)!: rename ManagerExt::autolaunch to autostart (#3614)
* refactor(autostart)!: rename ManagerExt::autolaunch to autostart

* Apply suggestion from @amrbashir

---------

Co-authored-by: Amr Bashir <github@amrbashir.me>
2026-09-22 06:07:55 -03:00
Lucas Fernandes Nogueira 0ecb30e3cb refactor(upload)!: take headers, method and body via an options object (#3613)
`upload(url, path, onProgress, { headers, method })` and
`download(url, path, onProgress, { headers, body })` replace the
positional optional arguments.

`headers` accepts both a `Map` and a plain object; previously a `Map`
was silently serialized as an empty object.
2026-09-22 06:07:43 -03:00
Lucas Fernandes NogueiraandAmr Bashir b2d7c387ef refactor(dialog)!: remove deprecated MessageDialogOptions.okLabel (#3612)
* refactor(dialog)!: remove deprecated MessageDialogOptions.okLabel

Use `buttons: { ok: 'label' }` instead. `ConfirmDialogOptions` (used by
`ask` and `confirm`) still accepts `okLabel` and `cancelLabel`.

* Apply suggestion from @amrbashir

---------

Co-authored-by: Amr Bashir <github@amrbashir.me>
2026-09-22 06:07:16 -03:00
Lucas Fernandes NogueiraandAmr Bashir 1a43e4701d refactor(log)!: take u64 in Builder::max_file_size (#3611)
* refactor(log)!: take u64 in Builder::max_file_size

* Apply suggestion from @amrbashir

---------

Co-authored-by: Amr Bashir <github@amrbashir.me>
2026-09-22 06:07:06 -03:00
Lucas Fernandes Nogueira fdfb35e531 refactor(fs)!: return Watcher from watch and watchImmediate (#3610)
* refactor(fs)!: return Watcher from watch and watchImmediate

Both resolve to a `Watcher` resource instead of an `UnwatchFn` callback;
call `await watcher.close()` to stop watching. `UnwatchFn` is removed and
`Watcher` is now exported.

* fix change file

* fmt
2026-09-22 06:06:50 -03:00
Lucas Fernandes Nogueira 8083107a0a refactor(fs)!: drop notify's serialization-compat-6, flatten WatchEvent (#3609)
`WatchEvent` now follows notify v8's format: the event kind is flattened
into the event, with `type` holding the top-level kind and `kind`/`mode`
refining it, e.g. `{ type: 'modify', kind: 'data', mode: 'content' }`
instead of `{ type: { modify: { kind: 'data', mode: 'content' } } }`.
`attrs` is now typed as `WatchEventAttributes` and its `flag` is
`rescan` instead of `Rescan`.
2026-09-22 06:05:51 -03:00
Lucas Fernandes Nogueira a315a07f36 refactor(fs)!: remove the unwatch permission (#3606)
There has been no `unwatch` command since v2.0 (`Watcher.close()` releases
the resource), so `allow-unwatch` and `deny-unwatch` never granted anything.
2026-09-22 06:05:04 -03:00
Lucas Fernandes Nogueira 5c077a3812 refactor(fs)!: remove read_text_file and write_text_file commands (#3605)
`readTextFile` and `writeTextFile` now go through `read_file` and
`write_file`, so the `allow-read-text-file`, `deny-read-text-file`,
`allow-write-text-file` and `deny-write-text-file` permissions are gone;
grant `fs:allow-read-file` and `fs:allow-write-file` instead.
2026-09-22 06:04:53 -03:00
Lucas Fernandes Nogueira 120d00558e refactor(deep-link)!: return Error::Execute when an OS command fails to run (#3603)
* refactor(deep-link)!: return Error::Execute when an OS command fails to run

On Linux, `register`, `unregister` and `is_registered` now fail with the
new `Error::Execute(command, io_error)` variant when `xdg-mime` or
`update-desktop-database` cannot be spawned, instead of logging and
returning the raw `Error::Io`. This is the change deferred to v3 in #2970.

* docs(deep-link): unregister does not run OS commands
2026-09-22 06:04:13 -03:00
Lucas Fernandes NogueiraandLucas Nogueira c7416a1a2c refactor(http)!: remove deprecated macos-system-configuration feature (#3601)
* refactor(http)!: remove deprecated macos-system-configuration feature

Use `system-proxy` (enabled by default) instead.

* chore(upload): enable reqwest's system-proxy feature instead of the deprecated alias

---------

Co-authored-by: Lucas Nogueira <lucas@crabnebula.dev>
2026-09-22 06:03:58 -03:00
Lucas Fernandes Nogueira 34a06e7f60 refactor(http)!: always enforce the scope on redirects (#3600)
* refactor(http)!: always enforce the scope on redirects

Removes the `scopeRedirects` option (and the `Config` struct with it) that
was added as an opt-in in 2.7.0. Every hop of a redirect chain is now
checked against the URL scope, so a server on an allowed origin can no
longer redirect the request to a URL the scope denies.

`tauri_plugin_http::init()` returns `TauriPlugin<R>` again.

* chore(http): compile without warnings when the cookies feature is disabled
2026-09-22 06:03:27 -03:00
Lucas Fernandes NogueiraandLucas Nogueira b566f09124 refactor(store)!: reset to defaults before merging the on-disk state in reload (#3599)
* refactor(store)!: reset to defaults before merging the on-disk state in reload

`Store::reload` / `reload()` previously merged the on-disk state into the
current in-memory store. It now resets the store to its defaults first,
so in-memory keys that are neither in the defaults nor on disk are
dropped. `reload_ignore_defaults` / `reload({ ignoreDefaults: true })`
is unchanged.

* test(store): cover reload resetting to the defaults before merging the on-disk state

---------

Co-authored-by: Lucas Nogueira <lucas@crabnebula.dev>
2026-09-22 06:03:10 -03:00
Lucas Nogueira b7897cab5d chore: run taplo fmt 2026-09-21 21:56:40 -03:00
Lucas Nogueira 2fd27c2d43 chore: set MSRV to 1.95 2026-09-21 18:48:38 -03:00
Lucas Nogueira d0cfa15b71 chore: release 3.0.0-alpha.1 2026-09-21 13:53:23 -03:00
Lucas Nogueira ce7fcb3263 Merge branch 'v2' into v3 2026-09-21 13:45:38 -03:00
Lucas Nogueira 15bf611d68 chore(deps): update tauri, api, CLI 2026-09-21 13:42:00 -03:00
github-actions[bot] 2393188dea publish new versions (#3591)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-19 22:23:23 -03:00
Lucas Fernandes Nogueira 1198a524b7 Merge commit from fork
Checks the URL scope on every hop of a redirect chain instead of only on the URL requested by the frontend.
Without it, a server on an allowed origin can redirect the request to any other origin - including `localhost` services, internal hosts and cloud metadata endpoints - and the plugin follows it, returning the response to the webview.
2026-09-19 21:01:48 -03:00
Lucas Fernandes Nogueira 1308bfa399 Merge commit from fork 2026-09-19 21:00:36 -03:00
Lucas Fernandes Nogueira 690dcfd694 Merge commit from fork
* feat(updater): verify the version an update was signed for

The endpoint response is fetched over TLS but is not signed, and the signature
only covers the artifact, so a crafted response could pair an inflated version
with an older release's url and signature to force a downgrade to a genuine
but outdated build.

Read the version back from the signature's trusted comment and reject an
update whose announced version differs. Signatures carrying no version are
only rejected under the new requireSignedVersion option, since older CLIs did
not record one.

* fix tests
2026-09-19 20:57:51 -03:00
PathGao 67cd25a10c fix(single-instance): let the first instance come to front on Windows (#3592)
* fix(single-instance): let the first instance come to front on Windows

* move the hand-over right after the window lookup
2026-09-18 01:23:13 +08:00
Tony 2df3d93681 refactor(log): log webview location after double colon (#3574) 2026-09-17 16:33:47 +08:00
github-actions[bot] 3c5d267767 publish new versions (#3567)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-16 12:17:22 +08:00
Tony c050e073b6 fix(store): apply_pending_auto_save can deadlock (#3572) 2026-09-16 10:49:36 +08:00
Lucas Nogueira 6967afaef8 chore: tauri 3.0 alpha release 2026-09-13 15:55:49 -03:00
Lucas Nogueira e87544c67d Merge remote-tracking branch 'origin/v2' into v3 2026-09-12 13:28:21 -03:00
Lucas Nogueira 835adce473 chore: update tauri 2026-09-08 17:53:34 -03:00
Den Ilin a21555ddd2 fix(http): stop unhandled rejections from the fetch cleanup path (#3566)
* fix(http): stop unhandled rejections from the fetch cleanup path

The request/body cleanup commands are fired as floating promises, and the
Rust side releases a resource only once: fetch_cancel_body is
resources_table.close(rid)?, and fetch_read_body also closes the rid at
end-of-body. So every release after the first rejects with BadResourceId
into a promise nobody is listening to.

Make dropBody idempotent and let both cleanup calls handle their own
rejection.

* chore: add changefile

* chore(http): rebuild api-iife.js
2026-09-03 21:00:34 +03:00
github-actions[bot] 6aa2854f31 publish new versions (#3509)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-31 19:17:31 +08:00
dependabot[bot] 2f4c85c99a chore(deps): bump serde_with (#3490)
Bumps [serde_with](https://github.com/jonasbb/serde_with) from 3.9.0 to 3.22.0.
- [Release notes](https://github.com/jonasbb/serde_with/releases)
- [Commits](https://github.com/jonasbb/serde_with/compare/v3.9.0...v3.22.0)

---
updated-dependencies:
- dependency-name: serde_with
  dependency-version: 3.21.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-27 14:23:25 +02:00
Tony db9c5998fe fix(android): missing consumer-rules.pro (#3531)
* fix(android): missing `consumer-rules.pro`

* setup android test

* copy right too new

* build api first

* we're still on gradle 8 right now...

* restore the right host on mac
2026-08-13 17:44:29 +08:00
Tony 685610ae78 fix(fs): default permissions (#3507)
* Fix deny-webview-data platfroms and scopes

* Fix `create-app-specific-dirs` scopes

* Fix read-app-specific-dirs-recursive

* Re-generate schema and docs

* Remove unused `fs:allow-unwatch`

* Add change file

* Remove unused permissions

* Update linux permissions

* Update change file

* regenerate doc md and schema
2026-08-10 15:48:27 +08:00
Tony f8053e659e docs: cargo features (#3527)
* dialog

* fs

* geolocation

* haptic

* log

* single instance

* notification

* updater

* ##

* persisted scopes

* stronghold

* sql

* upload

* websocket

* http
(this one was too long that I generated through codex, didn't review yet)

* add change file

* no persisted-scope-js

* add `://`

* Merge branch 'v2' into document-cargo-features

* update system-proxy docs

* finish http docs

* notification doesn't need version bumps

* clean up docs
2026-08-05 15:48:11 +08:00
Tony 19fb3926fd feat(http): add system-proxy feature (#3528)
* feat(http): add `system-proxy` feature

* require reqwest 0.12.16
2026-08-04 19:51:32 +08:00
Tony 2371be839f feat(updater): add system-proxy feature (#3526)
* feat(updater): add `system-proxy` feature

* enable by default
2026-08-04 16:37:00 +08:00
Tony e215ff90d3 chore: remove outdated prod features (#3525) 2026-08-04 15:45:25 +08:00
purvsinojiya-inventyv cc9ec9b4ad fix(dialog): use parsed MIME type for Android save dialog (#3519) 2026-07-29 17:05:43 +02:00
paul valladares dc7f87bc7e chore: exclude dev-only files from published crates (#3518)
* chore: exclude dev-only files from published crates

* format
2026-07-29 09:35:15 +02:00
Michael Kadziela 304292d740 feat(notification): add rust Action/ActionType api. fix action registration in Android (#2805) 2026-07-27 13:03:43 +02:00
Tony 622f02bf21 fix(updater): check ShellExecuteW results (#3516)
* fix(updater): check `ShellExecuteW` results

* document the exit on windows
2026-07-27 16:38:50 +08:00
renovate[bot]andTony abc903c240 chore(deps): update dependency rollup to v4.62.2 (#3423)
* chore(deps): update dependency rollup to v4.62.2

* Fix audit

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tony <legendmastertony@gmail.com>
2026-07-27 13:29:36 +08:00
Tony ab7489c964 feat(updater): option to not restart after install (#3299)
* feat(updater): option to not restart after install

* More platform cfg

* Add the same function for `UpdaterBuilder`

* Fix missing `#[cfg(windows)]`

* Mark `current_exe_args` cfg(windows)

* Mark `on_before_exit` cfg(windows)

* Mark `installer_args` cfg(windows)

* Note about `installer_arg` apply to both

* Remove current args and restart together

* Only build needed bundle on windows as well

* Remove `/NS` since it breaks the msi updater

* Add launch updater debug log

* Add a folder to test updates

* Remove unused `#[allow(unused)]`

* Format

* messed up git stage

* Add change file

* Clean up

* Disable NSIS compression for API example

* Bump wry for v1 test to pull in https://github.com/tauri-apps/wry/pull/1703

* format

* Make typescript happy

* Close new update on destroy
2026-07-21 18:25:16 +08:00
Vitor AyresandTony 3fb27bf13a fix(docs): deep link platform specific and fs scope (#3504)
* deep link fix Platform Specific heading

* fix fs permission toml

* .changes

* Update change files

Co-authored-by: Tony <68118705+Legend-Master@users.noreply.github.com>

* Update .changes/fs-deny-scope.md

* fix eol

---------

Co-authored-by: Tony <68118705+Legend-Master@users.noreply.github.com>
2026-07-21 14:56:52 +08:00
Tony 7e45774610 refactor(fs): cfg gate some ios code (#3510) 2026-07-21 14:42:45 +08:00
Pascal Auf der MaurandFabian-Lars 526726162f fix(nfc): adapt backend invoke to frontend (#3419)
* fix(nfc): adapt backend invoke to frontend

* Revert "fix(nfc): adapt backend invoke to frontend"

This reverts commit e34306e083.

* fix:  enforce nfc function return type

* Update .changes/nfc.md

Co-authored-by: Fabian-Lars <30730186+FabianLars@users.noreply.github.com>

---------

Co-authored-by: Fabian-Lars <30730186+FabianLars@users.noreply.github.com>
2026-07-20 13:11:20 +02:00
github-actions[bot] 03afae6d72 publish new versions (#3500)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-19 00:40:36 +08:00
renovate[bot]andTony 57ac986453 chore(deps): update dependency @tauri-apps/cli to v2.11.4 (#3463)
* chore(deps): update dependency @tauri-apps/cli to v2.11.4

* Use workspace dependencies in example

* Bump tauri

* Leftover

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tony <legendmastertony@gmail.com>
2026-07-18 22:28:03 +08:00
Tony 2ed6d6c1de fix(store): StoreOptions.defaults should not be required (#3499) 2026-07-18 19:46:31 +08:00