Commit Graph
2195 Commits
Author SHA1 Message Date
Lucas Fernandes Nogueira 9106093f77 fix(fs): map open options to valid Android modes (#3624)
In plugins/fs/src/lib.rs OpenOptions::android_mode, the mode was built by
concatenating r/w/t/a, so open(url, {append: true}) (read defaults to
true) produced "ra" and write+truncate+append "wta", which
ParcelFileDescriptor.parseMode / ContentResolver reject.

The options now map to r, w, wt, wa, rw or rwt. append wins over the
default read (no read+append mode exists). create/createNew still have no
Android equivalent (documented on the function). Unit tests for the
mapping, compiled on the host with cfg(test).
2026-09-23 12:58:28 -03:00
Lucas Fernandes Nogueira 97e865bc13 feat(fs): accept baseDir in size (#3623)
In plugins/fs/guest-js/index.ts, the size function only sent `path`
although the Rust command accepts `options.baseDir` and the JSDoc example
passed `{ baseDir: BaseDirectory.AppData }` (a TS error, silently dropped
at runtime, so the relative path was rejected).

Adds an optional `options?: SizeOptions` parameter (new exported type).
api-iife.js regenerated. The e2e spec now measures a file and a directory
relative to AppData instead of working around the missing option.
2026-09-23 12:58:03 -03:00
Lucas Fernandes Nogueira b46a88ff55 fix(fs): reject malformed write_file options instead of ignoring them (#3622)
In plugins/fs/src/commands.rs write_file_inner, a malformed or non-ASCII
`options` header was dropped with .ok(), so baseDir/append/createNew were
silently ignored and the call became a truncating write to the raw path;
the JSON array body fallback truncated values above 255 and dropped
non-numbers.

The header is parsed with parse_write_file_options: empty, `undefined`
(what fetch sends for JSON.stringify(undefined)) and `null` mean no
options, anything else must parse. Array bodies must only contain bytes.
Unit test for the header parser; e2e spec for writes without options,
which is the case the `undefined` handling keeps working.
2026-09-23 12:57:49 -03:00
Lucas Fernandes Nogueira 0c84c917e3 fix(fs): log file watcher errors (#3621)
In plugins/fs/src/watcher.rs, notify errors were discarded (TODO), so a
watch that died left no trace. They are now logged with log::error!.
Reporting them to the JS callback would change the event payload and is
deferred to v3.
2026-09-23 12:57:33 -03:00
Timofey Maykov 101e1b068a fix(updater): stop overriding SSL_CERT_FILE and SSL_CERT_DIR on Linux (#3615)
check() set both variables to Debian paths when they were unset. On distros
with a different layout, such as ALT Linux, the paths do not exist, and
rustls-native-certs then loads roots only from them, so every TLS client
created afterwards in the app got an empty root store.

reqwest with rustls already finds the system store through
rustls-platform-verifier and openssl-probe, so the override is not needed.

Closes #3598
2026-09-23 09:29:37 -03:00
Lucas Nogueira 55f9645aa2 chore: update websocket test 2026-09-23 06:08:43 -03:00
Lucas Nogueira 4a94356386 fix(deep-link): unregister must refresh the database 2026-09-22 22:03:02 -03:00
Lucas Nogueira 710d097b6b chore: fmt 2026-09-22 21:56:25 -03:00
Lucas Nogueira 5c78814220 fix(autostart): handle disabling when the autostart is already disabled 2026-09-22 21:56:01 -03:00
Lucas Nogueira c8c373b48b tests(e2e): improve coverage 2026-09-22 21:54:21 -03:00
Lucas Fernandes Nogueira 684feb2510 feat(tests): add api e2e tests (#3617)
* feat(tests): add api e2e tests

* lockfile

* mobile

* try linux fix [skip ci]

* ios fix

* fix test on windows

* improve cache

* fix pnpm audit [skip ci]
2026-09-22 18:58:14 -03:00
Lucas Nogueira 7f87091288 test(updater): fix e2e tests on Windows (missing bundle_type patch) 2026-09-22 18:52:27 -03:00
Lucas Fernandes Nogueira 06485c5884 test(updater): also check .deb and .rpm on e2e test (#3619)
* test(updater): also check .deb and .rpm on e2e test

* fix test on mac

* install rpm on ci

* improve update server, fix rpm crash
2026-09-22 18:51:05 -03:00
Lucas Nogueira 8882934230 fix: change file 2026-09-22 13:39:05 -03:00
Lucas Fernandes Nogueira 28d644572c test(docs): run doctest on CI, make sure doctests pass (#3620)
* test(docs): run doctest on CI, make sure doctests pass

* no_run on dialog doctests [skip ci]
2026-09-22 13:18:21 -03:00
Lucas Nogueira 413b177f81 feat(ci): improve cache usage 2026-09-22 12:42:20 -03:00
Lucas Nogueira a87a3c7d44 chore: update documentation 2026-09-22 11:30:47 -03:00
Lucas Nogueira d869c162a7 fix: geolocation and haptics plugin build fails with specta feature on 2026-09-22 06:40:58 -03:00
Lucas Fernandes Nogueira ae3c808eb6 fix: global API script should reuse window.__TAURI__ types (#3602)
currently each script inlines what it needs from @tauri-apps/api, so type checks like `image instanceof Image` all fail
2026-09-22 06:04:28 -03:00
Lucas Nogueira 5baf71a472 fix: pnpm audit single-instance-v2.4.5 updater-v2.12.0 log-v2.9.2 updater-js-v2.12.0 http-v2.7.0 log-js-v2.9.2 2026-09-19 22:23:56 -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
renovate[bot]andTony 4b5c9549c9 chore(deps): update dependency typescript-eslint to v8.70.0 (#3536)
* chore(deps): update dependency typescript-eslint to v8.70.0

* fix rust audit

* dedupe

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tony <legendmastertony@gmail.com>
2026-09-16 14:23:04 +08:00
github-actions[bot] 3c5d267767 publish new versions (#3567)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
store-v2.4.5 http-js-v2.6.1 http-v2.6.1 store-js-v2.4.5
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
Tony 0850317b5c chore(deps): update pnpm to v12 (#3576) 2026-09-10 10:36:25 +08:00
Tony 2a5783397e refactor(example): use tsconfig and change entries to ts (#3575) 2026-09-09 19:31:52 +08:00
renovate[bot]andTony b48d52cf6e chore(deps): update dependency rollup to v4.63.1 (#3558)
* chore(deps): update dependency rollup to v4.63.1

* fix audit

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tony <legendmastertony@gmail.com>
2026-09-09 12:43:07 +08: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
Tony 845d8989cb fix: ignore and fix audits (#3564)
* fix: ignore and fix audits

* openssl-sys 0.9.114
2026-09-01 17:38:21 +08:00
github-actions[bot] 6aa2854f31 publish new versions (#3509)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
haptics-js-v2.3.3 positioner-js-v2.3.4 clipboard-manager-js-v2.3.3 websocket-v2.4.3 clipboard-manager-v2.3.3 deep-link-js-v2.4.10 websocket-js-v2.4.3 log-js-v2.9.1 upload-v2.4.1 http-js-v2.6.0 biometric-js-v2.3.3 upload-js-v2.4.1 deep-link-v2.4.10 updater-v2.11.0 log-v2.9.1 nfc-js-v2.3.6 updater-js-v2.11.0 barcode-scanner-js-v2.4.6 nfc-v2.3.6 stronghold-v2.3.2 notification-js-v2.4.0 stronghold-js-v2.3.2 notification-v2.4.0 haptics-v2.3.3 biometric-v2.3.3 shell-js-v2.3.6 barcode-scanner-v2.4.6 opener-v2.5.5 shell-v2.3.6 dialog-v2.7.3 geolocation-v2.3.3 geolocation-js-v2.3.3 dialog-js-v2.7.3 http-v2.6.0 fs-v2.5.2 persisted-scope-v2.3.8 fs-js-v2.5.2 single-instance-v2.4.4 positioner-v2.3.4 opener-js-v2.5.5 sql-js-v2.4.1 sql-v2.4.1
2026-08-31 19:17:31 +08:00
Fabian-Lars 9d6d03269a chore(deps): update h2 to 0.4.19 (#3556) 2026-08-27 16:02:57 +02:00
Fabian-Lars 98f8787de4 ci: fix typo in workflow permissions 2026-08-27 14:35:49 +02:00
Fabian-Lars 1a7b12c102 ci: add explicit token permissions 2026-08-27 14:31:16 +02: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
renovate[bot] c546de0616 chore(deps): update dependency rollup to v4.62.5 (#3520)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-27 14:04:52 +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
renovate[bot]andTony 9c9343772b chore(deps): update dependency typescript-eslint to v8.66.0 (#3391)
* chore(deps): update dependency typescript-eslint to v8.66.0

* bump nanoid for audit

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tony <legendmastertony@gmail.com>
2026-08-10 16:15:04 +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
renovate[bot]andTony ba89f32eb0 chore(deps): update dependency @zerodevx/svelte-json-view to v2 (#3524)
* chore(deps): update dependency @zerodevx/svelte-json-view to v2

* update pnpm to 11.20.0?

* bump brace-expansion for audit

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tony <legendmastertony@gmail.com>
2026-08-04 10:46:11 +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