Compare commits

...

213 Commits

Author SHA1 Message Date
Lucas Nogueira c2115d8d21 chore: fill description field for new crates 2023-12-20 00:10:26 -03:00
github-actions[bot] 8c6d96e645 Publish New Versions (v2) (#832)
Co-authored-by: lucasfernog <lucasfernog@users.noreply.github.com>
2023-12-19 23:56:51 -03:00
Lucas Nogueira 7bdc32079c fix(ci): set dependencies on covector config 2023-12-19 23:21:37 -03:00
Lucas Fernandes Nogueira 10b80391fc refactor(fs): use scope from tauri core (#825)
* fix(fs): scope checks on Android

On Android, when we call canonicalize() on "/data/user/0/appid" (which is the data dir), the result is a "/data/data/appid" path, so we need to adjust our scope for that.

* use scope from core

* update persisted-scope

* fix build

* dev branch
2023-12-19 23:19:01 -03:00
Tillmann 1eaf640255 Added Security Policy and Threat Model for Log Plugin (#828)
* Initial threat model and security contact

* Corrections and finalize policy
2023-12-19 22:25:42 -03:00
Amr Bashir 69a1fa099c feat(fs): improved API (#751)
* feat(fs): improved API

* fmt

* fix unix builds

* again

* clippy

* clippy

* fix import in docs examples

* fmt, clippy

* Update linux.rs

* add API for watch

* fix with `watcher` feature flag

* use baseDir for all commands

* do not export close function

* fix build

* organize and address review comments

* fmt

* generated files

* rename FsFile to FileHandle, move APIs and docs

* extend example

* extend `Resource`

* actually extend it

---------

Co-authored-by: FabianLars <fabianlars@fabianlars.de>
Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
2023-12-19 22:08:34 -03:00
Lucas Fernandes Nogueira 2cf8faa3e1 chore(deps): update to tauri alpha.20, @tauri-apps/api alpha.13 (#839)
* chore(deps): update to tauri alpha.20, @tauri-apps/api alpha.13

* fix lockfile
2023-12-20 00:18:05 +02:00
Amr Bashir e5f979f91a fix(core/updater): check if installer args are not empty before passing -ArgumentList (#818) 2023-12-19 17:37:27 -03:00
Lucas Nogueira 8df28a9875 feat(mobile): add biometric plugin (#829)
* chore: update deps, make mobile script paths relative

* feat(biometric): setup plugin folder

* feat: implement iOS

* add api

* android

* fix plugin name

* also check empty info.plist entry

* add example

* fix android

* supress

* lint

* better explanation

* add partners & contributed by

* change ext

* license headers

* update vite

* add covector setup

* tauri/dox removed

* add example

* docs

---------

Co-authored-by: Lucas Nogueira <lucas@tauri.app>
2023-12-19 11:16:13 -03:00
Lucas Nogueira fe79adb5c7 feat(mobile): add NFC plugin (#830)
* feat: scaffold NFC plugin, initial iOS code

* adjust script paths (api example)

* update entitlements & plist

* update class name

* update api

* sketch api, remove desktop

* update response data

* add write fn

* remove commands

* fixes for write mode

* check nfc state before using the APIs

* fix(example): downgrade internal-ip to v7

* feat: typed iOS arguments

* update swift requirement

* android updates

* update tauri

* fix icon

* update example

* fix build

* fix notification example

* fix clipboard

* fix ios notification build

* fix info.plist

* update tauri

* add change file

* fmt

* update to new args class syntax :( [skip ci]

* add lang code handling in RTD_TEXT helper (written payload is broken without it)

* update nfc to latest tauri. use tauri from git

* update lockfile

* android: add initial nfc writer implementation

* check sdk version for pendingintent flag

* quicksaving basic ndef reading that doesn't crash

* add basic ndef reading (android)

* small cleanup

* change pending action type

* validate available state

* gradle 8.0.0

* use session class

* implement keep session alive

* fix notification crash??

* remove dox feature, fix breaking changes

* update dependencies

* fix shell tests [skip ci]

* fmt [skip ci]

* type safe args

* scan kind options

* commit .idea files

* update api

* update example

* fix app check

* alertmessage options for iOS

* default to tag on example

* fix(ios): always close session on write, remove keepsessionalive option

* add kind input to write options

* empty records if message not found

* fill tag metadata for ndef read

* add contributors

* update vite

* covector setup

* tauri/dox removed

* docs and examples

* fmt [skip ci]

---------

Co-authored-by: FabianLars-crabnebula <fabianlars@crabnebula.dev>
Co-authored-by: Lucas Nogueira <lucas@tauri.app>
Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
2023-12-19 10:50:31 -03:00
Fabian-Lars 7c59e3785b feat(dialog): Re-export FileResponse (#837)
closes #835
2023-12-19 15:35:53 +02:00
Amr Bashir b1c6a7885e fix(core/dialog): reconstruct path using appropriate separator (#820)
* fix(core/dialog): reconstruct path using appropriate separator

ref: tauri-apps/tauri#8074

* Reference original issue [skip ci]
2023-12-18 21:09:04 -03:00
Lucas Fernandes Nogueira 2d6bfbfacf feat(fs): include full error message (#826) 2023-12-18 15:01:47 -03:00
github-actions[bot] 68cb23f9c0 Publish New Versions (v2) (#723)
Co-authored-by: lucasfernog <lucasfernog@users.noreply.github.com>
2023-12-14 15:44:44 -03:00
Fabian-Lars 387c2f9e0c chore: Update Tauri to alpha.18 (#802) 2023-12-11 15:41:42 -03:00
Fabian-Lars 78e60e6618 fix(updater): Typo in error enum (#812) 2023-12-11 15:19:05 -03:00
Tillmann a848e1870a chore(barcode): Added security policy (#766) 2023-12-07 13:42:18 +01:00
Mitchell van der Hoeff f4b2674fd5 fix(sql): Encode JSON numbers as f64 to fix JSON_EXTRACT queries (#797)
Signed-off-by: Mitchell van der Hoeff <8631205+mitchelljustin@users.noreply.github.com>
2023-12-06 15:20:35 +01:00
Michael Howell 0e3e3d4eac fix(dialog): Pin rfd to 0.12 to prevent freeze on Linux (#796)
* Do not use rfd 0.12.1

https://github.com/PolyMeilex/rfd/pull/152
conflicts with the way tauri uses it.

> Yeah, this is a decent solution, not much else we can do about this global state bs on C side.
>
> This will obviously blow up as soon as someone has other code that also uses GTK, but let's ignore that for now, as I want to get rid of GTK backend one day anyway (#66).

Yes, Tauri is other code that also uses GTK, and it does, indeed, blow up. The best way around this is to stop using rfd entirely (they're planning to drop the GTK backend, which will probably break since the XDG Portal API doesn't cover message dialogs).

* Update dialog-pin-rfd.md

---------

Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>
2023-12-05 19:31:08 +01:00
kris-ava e7c72c9816 fix(updater): fix appimage extraction (#784)
* fix updater on linux

* review changes

* Apply suggestions from code review

* change file

---------

Co-authored-by: Kris Krolak <krzysiek.krolak@gmail.com>
2023-11-30 20:46:02 +02:00
pashokitsme 2e2c0a1b95 fix(dialog): fix message dialog return with custom buttons, fixes #711 (#769)
* fix confirm

* remove unnecessary lines

* fix

* change file
2023-11-27 19:55:26 +02:00
Fabian-Lars f49b391f10 Merge pull request #761 from tauri-apps/ci/features
ci: Test rust crates with all features enabled
2023-11-24 11:12:11 +01:00
Fabian-Lars df73183f2c test http without features 2023-11-23 22:30:25 +01:00
FabianLars bd0b015180 update notify version to match code 2023-11-23 22:05:01 +01:00
Fabian-Lars 7d1f3e7a08 ci: Test rust crates with all features enabled 2023-11-23 21:56:49 +01:00
Fabian-Lars 913b767c4b chore: Merge remote-tracking branch 'origin/v1' into v2 2023-11-23 20:47:28 +01:00
FabianLars 058d5dde0d Merge remote-tracking branch 'origin/v1' into v1-into-v2-again 2023-11-23 19:59:58 +01:00
Fabian-Lars 8c9ff2a2a9 chore: Add sponsors section to readme (#758)
* chore: Add sponsors section to readme

* which link style works in nested folders?

* add sponsors to plugin readmes

* use https links as src

* double test it with the pr branch

* revert last commit

* fmt
2023-11-23 17:18:09 +01:00
Kai Hata 5106b9d0c6 docs(localhost): incorrect usage of RemoteDomainAccessScope in README. (#757)
* Fix incorrect usage of RemoteDomainAccessScope in README.

* Fix incorrect usage of RemoteDomainAccessScope in README.
2023-11-23 11:03:33 +01:00
Fabian-Lars 0864c54147 fix(updater): replace url vars in query params (#756) 2023-11-22 16:08:24 +01:00
renovate[bot] 2d941a407b chore(deps): update dependency svelte-check to v3.6.1 (#755)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-22 14:13:57 +01:00
renovate[bot] 0617e2354a chore(deps): update dependency rollup to v4.5.1 (#754)
* chore(deps): update dependency rollup to v4.5.1

* pnpm dedupe

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: FabianLars <fabianlars@fabianlars.de>
2023-11-22 13:58:45 +01:00
renovate[bot] e66b196852 chore(deps): update dependency vite to v5.0.2 (#753)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-21 18:24:35 +01:00
renovate[bot] 32309c90d8 chore(deps): update dependency vite to v5.0.1 (#752)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-21 14:56:57 +01:00
Amr Bashir 445c1e6cb6 feat(notifications): use the ligh windows-version crate (#750)
* feat(notifications): use the ligh `windows-version` crate

* Update desktop.rs

* optional
2023-11-21 14:23:47 +02:00
Amr Bashir 88d260d901 fix(fs): add options argument for exists function closes #734 (#744)
closes #734
2023-11-21 01:31:00 +02:00
renovate[bot] a3b506f559 chore(deps): update typescript-eslint monorepo to v6.12.0 (#748)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-20 20:38:19 +01:00
renovate[bot] 0a387ea358 chore(deps): update dependency typescript to v5.3.2 (#747)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-20 20:35:03 +01:00
renovate[bot] f16433be43 chore(deps): update dependency svelte to v4.2.7 (#743)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-20 16:25:37 +01:00
Amr Bashir eea3df56ef fix: add back main, module and types field in top-level package.json (#742)
closes #738

`"moduleResolution": "node"` doesn't handle the `exports` field
2023-11-20 16:00:55 +02:00
renovate[bot] 53a1a7e436 chore(deps): update dependency vite to v5 (#732)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-20 14:02:53 +01:00
renovate[bot] af3b36647c chore(deps): update dependency svelte to v4.2.6 (#741)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-20 13:57:02 +01:00
renovate[bot] 20ef22fc3a chore(deps): update dependency eslint-config-standard-with-typescript to v40 (#740)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-18 12:28:03 +01:00
renovate[bot] 4e6712ed40 chore(deps): update dependency rollup to v4.5.0 (#739)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-18 12:18:59 +01:00
renovate[bot] 8d6a60d4a2 chore(deps): update dependency eslint to v8.54.0 (#737)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-17 23:19:20 +01:00
renovate[bot] 19529b6097 chore(deps): update dependency svelte to v4.2.5 (#736)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-17 18:14:05 +01:00
renovate[bot] b11221a7c9 chore(deps): update dependency svelte to v4.2.4 (#733)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-17 13:04:41 +01:00
Amr Bashir 5a8bbe2967 chore: remove dead code from updater test (#731) 2023-11-16 18:55:46 +02:00
renovate[bot] 642a195d34 fix(deps): update rust crate windows-sys to 0.52 (#730)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-16 17:10:19 +02:00
Amr Bashir a3ca64275a fix(updater): Use escaped installer path to start the msi updater (#728)
* fix(updater): Use escaped installer path to start the msi updater

Continuation of #727

* change file

* fix build
2023-11-16 01:26:11 +02:00
Fabian-Lars 9db40a6dc4 fix(updater): Use escaped installer path to start the nsis updater (#727)
Port of v1 change: https://github.com/tauri-apps/tauri/pull/7956
2023-11-15 14:58:57 +02:00
Amr Bashir 1b98b85a1f refactor: simplify rollup config and match @tauri-apps/api output style (#722)
* refactor: simplify rollup config and match `@tauri-apps/api` output style

* add license headers

* update api-iife.js [skip ci]

---------

Co-authored-by: Lucas Nogueira <lucas@tauri.app>
2023-11-14 21:09:53 +02:00
renovate[bot] cb1586b4d1 chore(deps): update dependency @sveltejs/kit to v1.27.6 (#726)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-14 17:48:03 +01:00
renovate[bot] aeca2d0d87 chore(deps): update dependency rollup to v4.4.1 (#725)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-14 12:06:00 +01:00
Amr Bashir fc62ead565 fix(os): use an internal object instead of window.__TAURI__, closes #719 (#721)
fix(os): use an internal object instead of ` window.__TAURI__`, closes  #719
2023-11-13 21:55:00 -03:00
Fabian-Lars 251852ccbc chore: Merge branch v1 into v2 (#702) 2023-11-13 21:50:13 -03:00
renovate[bot] b13d97c7c7 chore(deps): update typescript-eslint monorepo to v6.11.0 (#720)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-13 20:10:58 +01:00
renovate[bot] f807d02c08 chore(deps): update dependency prettier to v3.1.0 (#718)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-13 09:34:04 +01:00
renovate[bot] 2888925973 chore(deps): update dependency rollup to v4.4.0 (#716)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-12 12:12:10 +01:00
renovate[bot] eac0cbff3c chore(deps): update dependency @sveltejs/kit to v1.27.5 (#715)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-11 20:31:25 +01:00
renovate[bot] 8ab2267944 chore(deps): update dependency rollup to v4.3.1 (#714)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-11 14:12:32 +01:00
renovate[bot] 84a2a11c4d chore(deps): update dependency svelte-check to v3.6.0 (#713)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-10 18:01:35 +01:00
renovate[bot] 04e396d036 chore(deps): update dependency svelte to v4.2.3 (#712)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-10 15:20:58 +01:00
renovate[bot] 5ca7a63da2 chore(deps): update dependency eslint-plugin-n to v16.3.1 (#710)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-10 15:10:22 +01:00
renovate[bot] 61e862597e chore(deps): update dependency @sveltejs/kit to v1.27.4 (#709)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-09 15:16:52 +01:00
renovate[bot] 6865299149 chore(deps): update dependency eslint-plugin-n to v16.3.0 (#705)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-07 09:02:26 +01:00
renovate[bot] ba6acafb5b chore(deps): update typescript-eslint monorepo to v6.10.0 (#704)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-06 21:04:27 +01:00
renovate[bot] 4247434ed8 chore(deps): update dependency rollup to v4.3.0 (#700)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-04 11:20:50 +01:00
renovate[bot] 33e40d819d chore(deps): update dependency eslint to v8.53.0 (#699)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-04 11:09:29 +01:00
renovate[bot] af0ee307d4 chore(deps): update dependency @sveltejs/adapter-auto to v2.1.1 (#697)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-04 11:07:59 +01:00
renovate[bot] 96d5cabc17 chore(deps): update dependency @sveltejs/kit to v1.27.3 (#698)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-04 11:03:21 +01:00
renovate[bot] 8d6045421a chore(deps): update dependency rollup to v4.2.0 (#693)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-31 11:14:58 +01:00
renovate[bot] c77cbe936d chore(deps): update dependency rollup to v4.1.6 (#692)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-31 10:51:53 +01:00
renovate[bot] 11048fd997 chore(deps): update typescript-eslint monorepo to v6.9.1 (#691)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-30 20:51:36 +01:00
Fabian-Lars f595684ba8 ci: ignore tauri-cli vite config CVE (#690) 2023-10-30 08:41:51 -03:00
renovate[bot] d472eebad2 chore(deps): update dependency rollup to v4 (#639)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-30 11:02:52 +01:00
renovate[bot] c27699ffab chore(deps): update dependency @sveltejs/kit to v1.27.2 (#689)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-30 10:26:01 +01:00
github-actions[bot] d4d1633c4d Publish New Versions (v2) (#688)
Co-authored-by: lucasfernog <lucasfernog@users.noreply.github.com>
Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
2023-10-29 16:19:52 -03:00
Lucas Fernandes Nogueira e438e0a62d feat: update to alpha.17, typed mobile plugin IPC arguments (#676)
Co-authored-by: Amr Bashir <amr.bashir2015@gmail.com>
2023-10-29 16:06:44 -03:00
renovate[bot] 68d77f999c chore(deps): update dependency @sveltejs/kit to v1.27.1 (#685)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-25 19:39:28 +02:00
Fabian-Lars 1712f27b77 feat(upload): Use BufWriter for file downloads. (#684) 2023-10-25 12:25:33 +02:00
renovate[bot] 8dd371814a chore(deps): update dependency eslint-plugin-import to v2.29.0 (#678)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-24 11:50:35 +02:00
renovate[bot] 5c3b2f7511 chore(deps): update dependency @sveltejs/kit to v1.27.0 (#681)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-24 11:17:57 +02:00
renovate[bot] 227bf5424a chore(deps): update typescript-eslint monorepo to v6.9.0 (#682)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-24 11:12:26 +02:00
renovate[bot] c25b7537e3 chore(deps): update dependency eslint to v8.52.0 (#674)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-21 10:28:46 +02:00
renovate[bot] 9e24e52164 chore(deps): update dependency @tauri-apps/cli to v1.5.5 (#672)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-19 22:54:28 +00:00
renovate[bot] 444a16ca73 chore(deps): update dependency @sveltejs/kit to v1.26.0 (#668)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-19 12:53:41 +02:00
renovate[bot] cff0cdeaa8 chore(deps): update dependency svelte to v4.2.2 (#670)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-19 12:52:03 +02:00
dependabot[bot] 57c1db41a3 chore(deps): bump rustix from 0.37.23 to 0.37.25 (#669)
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.37.23 to 0.37.25.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.37.23...v0.37.25)

---
updated-dependencies:
- dependency-name: rustix
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-19 12:43:17 +02:00
renovate[bot] 6630e5db75 fix(deps): update tauri monorepo (#665)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-18 12:50:05 +02:00
renovate[bot] 662c61826b chore(deps): update dependency vite to v4.5.0 (#666)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-18 12:45:03 +02:00
renovate[bot] 44df7726ae chore(deps): update typescript-eslint monorepo to v6.8.0 (#664)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-16 19:43:23 +02:00
renovate[bot] b4535af927 chore(deps): update dependency eslint-plugin-n to v16.2.0 (#651)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-16 19:33:00 +02:00
Pylogmon 77b81af36c chore(sql): Refine features for sql plugin (#660)
This makes it possible to use the sqlite feature without ring for windows-aarch64 support until all dependencies update to ring 0.17
2023-10-15 18:34:47 +02:00
renovate[bot] 9b20f28d74 chore(deps): update dependency @sveltejs/kit to v1.25.2 (#647)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-10 08:59:10 +02:00
renovate[bot] 1e56d86b51 chore(deps): update typescript-eslint monorepo to v6.7.5 (#646)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-09 22:27:01 +02:00
renovate[bot] 07650ca94b chore(deps): update dependency @rollup/plugin-node-resolve to v15.2.3 (#645)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-09 11:55:42 +02:00
renovate[bot] d68d5cce60 chore(deps): update dependency @tauri-apps/cli to v1.5.2 (#643)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-08 18:55:01 +02:00
renovate[bot] faab5f6cee chore(deps): update dependency eslint-config-standard-with-typescript to v39.1.1 (#641)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-07 12:14:32 +02:00
renovate[bot] 4ecc649839 chore(deps): update dependency eslint to v8.51.0 (#640)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-07 11:19:51 +02:00
renovate[bot] 9f27e6e441 chore(deps): update dependency @rollup/plugin-typescript to v11.1.5 (#638)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-05 17:33:33 +02:00
renovate[bot] 3f0917bd50 chore(deps): update dependency @rollup/plugin-terser to v0.4.4 (#637)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-05 17:11:22 +02:00
renovate[bot] 9048f80a4e chore(deps): update dependency @rollup/plugin-node-resolve to v15.2.2 (#636)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-05 17:05:30 +02:00
mellobacon ac7390973b feat(log): Custom .log file names (#633)
* feat (log): custom .log file names

* fix (log): corrected typo

* chore (log): refactor

* chore (log): replaced empty string with Option

* Apply suggestions from code review

* Update plugins/log/src/lib.rs

---------

Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>
2023-10-05 15:24:04 +02:00
renovate[bot] d5f5d78830 chore(deps): update dependency vite to v4.4.11 (#635)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-05 13:51:01 +02:00
renovate[bot] 1f799ae25e chore(deps): update dependency vite to v4.4.10 (#632)
* chore(deps): update dependency vite to v4.4.10

* update postcss to fix audit

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: FabianLars <fabianlars@fabianlars.de>
2023-10-04 11:47:49 +02:00
renovate[bot] fa32d1afa9 chore(deps): update dependency @tauri-apps/cli to v1.5.1 (#630)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-03 17:36:00 +02:00
renovate[bot] f41d3e5e77 chore(deps): update typescript-eslint monorepo to v6.7.4 (#631)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-03 16:34:35 +02:00
renovate[bot] 9b96996b5a fix(deps): update tauri monorepo to v1.5.0 (#626)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-29 11:59:59 +02:00
renovate[bot] 9af4c3727c chore(deps): update dependency rollup to v3.29.4 (#624)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-28 11:47:03 +02:00
Xinyu Yang 3d279094d4 fix(positioner): Prevent tray relative windows from being moved off-screen (#291)
* feat: add system tray positioning method

* apply patch

* remove pos

* fix linter

* fix cargo fmt

* linter

* add changefile

* Update and rename stronghold-tray-position.md to tray-position.md

---------

Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>
2023-09-27 15:55:44 +02:00
renovate[bot] 6c7a4c0984 chore(deps): update dependency eslint-config-standard-with-typescript to v39 (#622)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-26 21:00:16 +02:00
renovate[bot] 1c17161f2a chore(deps): update dependency eslint-plugin-n to v16.1.0 (#580)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-26 18:55:07 +02:00
renovate[bot] 6111c7f3da fix(deps): update rust crate notify-debouncer-mini to 0.4 (#577)
* fix(deps): update rust crate notify-debouncer-mini to 0.4

* Update lib.rs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>
2023-09-26 18:54:26 +02:00
renovate[bot] 746067bb70 fix(deps): update rust crate auto-launch to 0.5 (#621)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-26 18:53:46 +02:00
renovate[bot] 0623903f12 chore(deps): update dependency eslint to v8.50.0 (#618)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-26 18:38:06 +02:00
renovate[bot] 043de033b0 chore(deps): update dependency @rollup/plugin-node-resolve to v15.2.1 (#572)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-26 18:36:46 +02:00
renovate[bot] 7432a399db fix(deps): update rust crate aho-corasick to 1.1 (#620)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-26 18:36:26 +02:00
renovate[bot] 305c5793ae chore(deps): update dependency eslint-plugin-import to v2.28.1 (#575)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-26 18:30:56 +02:00
renovate[bot] 4a39b74d5c chore(deps): update dependency typescript to v5.2.2 (#619)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-26 18:29:31 +02:00
renovate[bot] dc5a14b6ad chore(deps): update dependency tslib to v2.6.2 (#574)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-26 18:24:12 +02:00
renovate[bot] 2b65e0a149 chore(deps): update typescript-eslint monorepo to v6.7.3 (#579)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-26 17:00:30 +02:00
renovate[bot] beb9095f11 chore(deps): update dependency rollup to v3.29.3 (#581)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-26 16:59:51 +02:00
renovate[bot] 418294b1a3 chore(deps): update dependency svelte-check to v3.5.2 (#617)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-26 16:51:09 +02:00
renovate[bot] 3febb72f28 chore(deps): update dependency svelte to v4.2.1 (#616)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-26 16:38:45 +02:00
renovate[bot] 90fecadb86 chore(deps): update dependency prettier to v3.0.3 (#615)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-26 16:26:36 +02:00
dependabot[bot] 63834d9b63 chore(deps): bump tungstenite from 0.20.0 to 0.20.1 (#614)
Bumps [tungstenite](https://github.com/snapview/tungstenite-rs) from 0.20.0 to 0.20.1.
- [Changelog](https://github.com/snapview/tungstenite-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/snapview/tungstenite-rs/compare/v0.20.0...v0.20.1)

---
updated-dependencies:
- dependency-name: tungstenite
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-26 16:22:07 +02:00
renovate[bot] 8654caa26e chore(deps): update dependency @rollup/plugin-typescript to v11.1.4 (#586)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-26 16:21:12 +02:00
renovate[bot] 473991371d chore(deps): update dependency @sveltejs/kit to v1.25.1 (#584)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-26 15:58:34 +02:00
Fabian-Lars e98e8eac3d fix(docs): Revert a single change from #612 (#613) 2023-09-26 16:44:51 +03:00
Praveen Ravichandran 44d8f60e0d fix(typo): fixed some language related issues in the documentation (#612) 2023-09-26 09:25:22 +03:00
Lorenzo Castellino b04bde3461 fix: small typo in README (#611)
"te" -> "the"
2023-09-24 17:19:46 +02:00
Fabian-Lars 0190f68f1d fix(sql): split up datatypes more granular, fixes #462 (#608) 2023-09-20 12:03:30 +02:00
Fabian-Lars 5b85dd22c7 fix(sql): decode float columns as f32, closes #602 (#607) 2023-09-20 07:30:12 +02:00
Lucas Fernandes Nogueira 76832e60bf Revert "fix(deps): update rust crate rust-argon2 to v2 (#552)" (#565)
This reverts commit 83148da959.

Co-authored-by: FabianLars <fabianlars@fabianlars.de>
2023-09-19 16:34:47 +02:00
dependabot[bot] 5b814f56e6 chore(deps): bump rustls-webpki from 0.101.2 to 0.101.4 (#582)
Bumps [rustls-webpki](https://github.com/rustls/webpki) from 0.101.2 to 0.101.4.
- [Release notes](https://github.com/rustls/webpki/releases)
- [Commits](https://github.com/rustls/webpki/compare/v/0.101.2...v/0.101.4)

---
updated-dependencies:
- dependency-name: rustls-webpki
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-23 08:16:29 +02:00
renovate[bot] 6647e6ea90 chore(deps): update dependency prettier to v3.0.2 (#563)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-15 21:00:35 +02:00
renovate[bot] 83148da959 fix(deps): update rust crate rust-argon2 to v2 (#552)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-15 10:11:04 -03:00
renovate[bot] e8d7e765e7 chore(deps): update dependency svelte to v4.2.0 (#550)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-15 08:01:32 -03:00
renovate[bot] 76bcecf5b2 chore(deps): update dependency rollup to v3.28.0 (#544)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-15 07:47:58 -03:00
renovate[bot] d49aa664e9 chore(deps): update dependency eslint to v8.47.0 (#549)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-15 07:47:30 -03:00
renovate[bot] bd0d88243a chore(deps): update dependency svelte-check to v3.5.0 (#551)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-15 07:44:43 -03:00
renovate[bot] f001df870f chore(deps): update dependency @sveltejs/kit to v1.22.6 (#548)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-15 07:44:09 -03:00
renovate[bot] 72a6e3ba68 chore(deps): update typescript-eslint monorepo to v6.4.0 (#538)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-15 07:43:48 -03:00
Lorenzo Rizzotti 7e58dc8502 feat(websocket): add custom headers feature (#542)
Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
2023-08-08 13:18:20 -03:00
Lorenzo Rizzotti ac495b9fb4 fix(websocket): config (#541)
Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
2023-08-08 10:32:34 -03:00
Alexandre Dang dacde1629d feat(stronghold): add an init function that uses argon2 (#449)
Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
2023-08-08 09:36:16 -03:00
renovate[bot] 700549ab02 chore(deps): update dependency prettier to v3.0.1 (#532)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-07 09:37:51 -03:00
renovate[bot] 811b1ec12d chore(deps): update dependency vite to v4.4.9 (#537)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-07 09:36:47 -03:00
renovate[bot] 174c5e52e3 chore(deps): update dependency rollup to v3.27.2 (#534)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-07 08:35:52 -03:00
renovate[bot] 37d057df61 chore(deps): update dependency eslint-config-prettier to v9 (#535)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-07 08:35:35 -03:00
renovate[bot] cdb77c4b65 chore(deps): update dependency eslint-plugin-import to v2.28.0 (#520)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-02 12:05:41 -03:00
renovate[bot] e47dca954f chore(deps): update dependency rollup to v3.27.0 (#522)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-02 07:40:45 -03:00
renovate[bot] 94f62d2503 chore(deps): update typescript-eslint monorepo to v6.2.1 (#528)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-02 07:40:34 -03:00
renovate[bot] ee0d314bb5 chore(deps): update dependency svelte to v4.1.2 (#524)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-01 18:14:12 +02:00
renovate[bot] ae8a581f9a chore(deps): update dependency @sveltejs/kit to v1.22.4 (#525)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-01 18:06:12 +02:00
renovate[bot] 67bff4559d chore(deps): update dependency vite to v4.4.8 (#529)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-01 18:01:29 +02:00
renovate[bot] d272bde2bb chore(deps): update dependency eslint to v8.46.0 (#521)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-28 18:50:40 +02:00
renovate[bot] 919616d7d3 chore(deps): update typescript-eslint monorepo to v6.2.0 (#514)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-27 14:16:30 +02:00
renovate[bot] b60b46a0b8 chore(deps): update dependency svelte to v4.1.1 (#508)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-27 14:15:02 +02:00
renovate[bot] 6d8f517148 chore(deps): update dependency tslib to v2.6.1 (#515)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-27 14:04:12 +02:00
renovate[bot] 949c59f8a5 chore(deps): update dependency vite to v4.4.7 (#510)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-27 14:02:51 +02:00
renovate[bot] b99844706e chore(deps): update dependency eslint-config-prettier to v8.9.0 (#517)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-27 14:01:27 +02:00
renovate[bot] 92514cca47 fix(deps): update rust crate tokio-tungstenite to 0.20 (#513)
* fix(deps): update rust crate tokio-tungstenite to 0.20

* adapt new websocket config struct

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: FabianLars <fabianlars@fabianlars.de>
2023-07-24 12:22:22 +02:00
renovate[bot] 81fb450c39 chore(deps): update dependency eslint-config-standard-with-typescript to v37 (#512)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-22 21:28:33 +02:00
renovate[bot] c3a6dab24c chore(deps): update dependency eslint-config-standard-with-typescript to v36.1.1 (#511)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-22 09:34:05 +02:00
renovate[bot] 0863f800b8 chore(deps): update dependency rollup to v3.26.3 (#503)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-18 10:55:58 +02:00
renovate[bot] 600ad30756 chore(deps): update typescript-eslint monorepo to v6.1.0 (#505)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-18 10:43:33 +02:00
David Blythe 51f20b438e MySQL examples (#501)
* Update README.md

* Update index.ts
2023-07-16 22:24:20 +02:00
renovate[bot] 4fd6b58070 chore(deps): update dependency eslint-config-standard-with-typescript to v36.1.0 (#500)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-15 11:12:31 +02:00
renovate[bot] c8c6d56d1b chore(deps): update dependency vite to v4.4.4 (#496)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-14 20:27:41 +02:00
renovate[bot] 2ed0fd716c chore(deps): update dependency eslint-config-standard-with-typescript to v36.0.1 (#497)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-14 20:08:24 +02:00
renovate[bot] 8286b06198 chore(deps): update dependency eslint to v8.45.0 (#498)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-14 20:00:08 +02:00
renovate[bot] 180ec441aa fix(deps): update rust crate iota-crypto to 0.23 (#495)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-13 22:40:05 +02:00
renovate[bot] 07f3a89df0 chore(deps): update dependency @sveltejs/kit to v1.22.3 (#493)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-13 09:59:57 +02:00
renovate[bot] c009cb383f chore(deps): update dependency eslint-plugin-n to v16.0.1 (#485)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-11 21:34:37 +02:00
renovate[bot] 00915af7e7 chore(deps): update dependency @sveltejs/kit to v1.22.2 (#484)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-11 21:29:57 +02:00
renovate[bot] c499238892 chore(deps): update dependency svelte to v4.0.5 (#486)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-11 19:26:59 +02:00
renovate[bot] ac6f08f193 chore(deps): update dependency svelte-check to v3.4.6 (#487)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-11 19:17:53 +02:00
renovate[bot] 84d8a21e55 chore(deps): update dependency vite to v4.4.3 (#492)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-11 18:48:47 +02:00
renovate[bot] 280f99c5f3 chore(deps): update dependency vite to v4.4.2 (#488)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-11 18:00:15 +02:00
renovate[bot] 8c10a1b0a7 chore(deps): update dependency @rollup/plugin-node-resolve to v15.1.0 (#489)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-11 15:22:10 +02:00
renovate[bot] b6ffbe33da chore(deps): update dependency eslint to v8.44.0 (#490)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-11 15:03:06 +02:00
renovate[bot] 2f2da76aa8 chore(deps): update dependency rollup to v3.26.2 (#491)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-11 15:02:11 +02:00
renovate[bot] 9dba680114 chore(deps): update dependency tslib to v2.6.0 (#483)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-11 14:44:03 +02:00
renovate[bot] 2365c46534 fix(deps): update tauri monorepo to v1.4.0 (#482)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-11 14:39:27 +02:00
renovate[bot] 01ede23b34 chore(deps): update typescript-eslint monorepo to v6 (#481)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-11 14:36:11 +02:00
renovate[bot] a2503b795d chore(deps): update dependency typescript to v5.1.6 (#480)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-11 14:32:38 +02:00
renovate[bot] 65e6870195 chore(deps): update dependency @rollup/plugin-typescript to v11.1.2 (#479)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-11 14:16:38 +02:00
renovate[bot] ec74b2d69a chore(deps): update dependency @rollup/plugin-terser to v0.4.3 (#478)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-11 14:13:25 +02:00
Fabian-Lars 6845cefc82 chore: Lock npm deps versions (#477)
* chore: Lock npm deps versions

* lock ws example too

* override optionator
2023-07-11 14:09:35 +02:00
renovate[bot] 2a8e168149 fix(deps): update rust crate iota-crypto to 0.22 (#475)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-11 11:49:09 +02:00
Fabian-Lars efcc3df3fe chore: Update pnpm to v7.33.1 (#472) 2023-07-10 15:39:29 +02:00
Fabian-Lars 9e440d27ae chore: Re-add changefiles from #416 and #422 (#457)
This reverts commit 8916544034.
2023-07-10 12:51:28 +02:00
github-actions[bot] 395ff65547 Publish New Versions (#470)
* publish new versions

* Update Cargo.toml

---------

Co-authored-by: FabianLars <FabianLars@users.noreply.github.com>
Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>
2023-07-10 12:29:59 +02:00
Fabian-Lars ad3028646c fix(persisted-scope): separately save asset protocol patterns (#459) 2023-07-10 11:22:11 +02:00
renovate[bot] 0d0ed7b907 chore(deps): update dependency prettier to v3 (#467)
* chore(deps): update dependency prettier to v3

* fmt

* semver override

* update example deps

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: FabianLars <fabianlars@fabianlars.de>
2023-07-06 11:47:41 +02:00
renovate[bot] 92233ea64a fix(deps): update rust crate sqlx to 0.7. plugin-sql msrv is now 1.65 (#464)
* fix(deps): update rust crate sqlx to 0.7

* Update sql's msrv in workflow to 1.65

* Update README.md

* Update Cargo.toml

* Update Cargo.toml

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>
2023-07-05 10:46:51 +02:00
renovate[bot] 36b7296746 chore(deps): update dependency svelte to v4 (#453)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-30 10:52:33 +02:00
renovate[bot] d9b2331237 chore(deps): update dependency eslint-config-standard-with-typescript to v36 (#458)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-30 10:50:38 +02:00
github-actions[bot] 8916544034 remove changefiles to publish release (#456)
Co-authored-by: FabianLars <FabianLars@users.noreply.github.com>
2023-06-30 00:26:02 +02:00
github-actions[bot] 3d4697b34a publish new versions (#417)
Co-authored-by: FabianLars <fabianlars@fabianlars.de>
2023-06-30 00:15:29 +02:00
Thibault 9174b808dc [persisted scope] fix: handle recursive directory correctly (#455)
* fix: use correct functions to allow/forbid
Without changing the data structure

* fix: wrong type passed when passing path by ref

* fix: remove '**' before allowing pattern to no trash the scope

* fmt: run fmt

* fix: Remove trailling '*' for non-recursive directories

* fix: remove superfluous asteriks recursively

* info: add changefile

* fix: remove unwated yarn.lock

* fix: simplify directories' fix and apply it to forbid_path too.

* fix: simplify path to str in fix_directory

* don't convert path back to str

* Update persisted-scope-fix-handle-glob-directories.md

---------

Co-authored-by: FabianLars <fabianlars@fabianlars.de>
2023-06-29 23:23:08 +02:00
NaokiM03 a305ad3ddb chore(fs-watch) Update Usage (#451) 2023-06-22 11:29:08 +02:00
Duke Jones 7b9d7a1d88 docs(websocket): fix readme example (#447) 2023-06-20 08:57:13 +02:00
renovate[bot] c4d2c8c693 fix(deps): update rust crate iota-crypto to 0.21 (#438)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-14 14:52:07 +02:00
amrbashir be2a90b7e2 chore: remove unneeded change file 2023-06-13 15:56:09 +03:00
Amr Bashir 417c85a2dd fix(window-state): manual default implentation (#425)
* fix(window-state): manual default implentation, closes #421

* Update lib.rs
2023-06-13 15:48:10 +03:00
Amr Bashir 617cf38069 fix(window-state): propagate promise (#435)
closes #432
2023-06-13 15:47:55 +03:00
Ludea 6ad221ed36 fix(stronghold): return null if there is no record (#129)
* [stronghold] return null if there is no record

* Return value

* return statement

* prettier

* fix function signature

* fix if condition

* simplify condition

---------

Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>
2023-06-12 19:26:08 +02:00
Fabian-Lars 0984fc8374 chore: Add branch to install instructions that use git (#433) 2023-06-12 11:20:59 +02:00
Fabian-Lars 523bcdc528 fix(window-state): correctly set decoration state if no saved state exists, fixes #421 (#424) 2023-06-07 15:19:29 +03:00
Alexandre Dang ea63b40224 fix(stronghold): change wrong argument name for remove (#422) 2023-06-07 08:09:43 -03:00
409 changed files with 12411 additions and 9774 deletions
+30
View File
@@ -0,0 +1,30 @@
---
"authenticator": patch
"autostart": patch
"barcode-scanner": patch
"cli": patch
"clipboard-manager": patch
"deep-link": patch
"dialog": patch
"fs": patch
"global-shortcut": patch
"http": patch
"localhost": patch
"log-plugin": patch
"notification": patch
"os": patch
"persisted-scope": patch
"positioner": patch
"process": patch
"shell": patch
"single-instance": patch
"sql": patch
"store": patch
"stronghold": patch
"updater": patch
"upload": patch
"websocket": patch
"window-state": patch
---
Update to tauri@alpha.17.
+30
View File
@@ -0,0 +1,30 @@
---
"authenticator": patch
"autostart": patch
"barcode-scanner": patch
"cli": patch
"clipboard-manager": patch
"deep-link": patch
"dialog": patch
"fs": patch
"global-shortcut": patch
"http": patch
"localhost": patch
"log-plugin": patch
"notification": patch
"os": patch
"persisted-scope": patch
"positioner": patch
"process": patch
"shell": patch
"single-instance": patch
"sql": patch
"store": patch
"stronghold": patch
"updater": patch
"upload": patch
"websocket": patch
"window-state": patch
---
Update to tauri@alpha.18.
+30
View File
@@ -0,0 +1,30 @@
---
"authenticator": patch
"autostart": patch
"barcode-scanner": patch
"cli": patch
"clipboard-manager": patch
"deep-link": patch
"dialog": patch
"fs": patch
"global-shortcut": patch
"http": patch
"localhost": patch
"log-plugin": patch
"notification": patch
"os": patch
"persisted-scope": patch
"positioner": patch
"process": patch
"shell": patch
"single-instance": patch
"sql": patch
"store": patch
"stronghold": patch
"updater": patch
"upload": patch
"websocket": patch
"window-state": patch
---
Update to tauri@alpha.20.
+27
View File
@@ -0,0 +1,27 @@
---
"authenticator-js": patch
"autostart-js": patch
"barcode-scanner-js": patch
"cli-js": patch
"clipboard-manager-js": patch
"deep-link-js": patch
"dialog-js": patch
"fs-js": patch
"global-shortcut-js": patch
"http-js": patch
"log-js": patch
"notification-js": patch
"os-js": patch
"positioner-js": patch
"process-js": patch
"shell-js": patch
"sql-js": patch
"store-js": patch
"stronghold-js": patch
"updater-js": patch
"upload-js": patch
"websocket-js": patch
"window-state-js": patch
---
Update to @tauri-apps/api v2.0.0-alpha.11.
+27
View File
@@ -0,0 +1,27 @@
---
"authenticator-js": patch
"autostart-js": patch
"barcode-scanner-js": patch
"cli-js": patch
"clipboard-manager-js": patch
"deep-link-js": patch
"dialog-js": patch
"fs-js": patch
"global-shortcut-js": patch
"http-js": patch
"log-js": patch
"notification-js": patch
"os-js": patch
"positioner-js": patch
"process-js": patch
"shell-js": patch
"sql-js": patch
"store-js": patch
"stronghold-js": patch
"updater-js": patch
"upload-js": patch
"websocket-js": patch
"window-state-js": patch
---
Update to @tauri-apps/api v2.0.0-alpha.12.
+27
View File
@@ -0,0 +1,27 @@
---
"authenticator-js": patch
"autostart-js": patch
"barcode-scanner-js": patch
"cli-js": patch
"clipboard-manager-js": patch
"deep-link-js": patch
"dialog-js": patch
"fs-js": patch
"global-shortcut-js": patch
"http-js": patch
"log-js": patch
"notification-js": patch
"os-js": patch
"positioner-js": patch
"process-js": patch
"shell-js": patch
"sql-js": patch
"store-js": patch
"stronghold-js": patch
"updater-js": patch
"upload-js": patch
"websocket-js": patch
"window-state-js": patch
---
Update to @tauri-apps/api v2.0.0-alpha.13.
+1 -1
View File
@@ -24,4 +24,4 @@
"window-state-js": patch
---
Update to @tauri-apps/api v2.0.0-alpha.16.
Update to @tauri-apps/api v2.0.0-alpha.9.
+6
View File
@@ -0,0 +1,6 @@
---
"biometric": major
"biometric-js": major
---
Initial release.
+21 -26
View File
@@ -39,6 +39,7 @@
"publish": false,
"dependencies": [
"barcode-scanner",
"biometric",
"log-plugin",
"cli",
"clipboard-manager",
@@ -46,6 +47,7 @@
"fs",
"global-shortcut",
"http",
"nfc",
"notification",
"os",
"process",
@@ -59,6 +61,7 @@
"publish": false,
"dependencies": [
"barcode-scanner-js",
"biometric-js",
"log-js",
"cli-js",
"clipboard-manager-js",
@@ -66,6 +69,7 @@
"fs-js",
"global-shortcut-js",
"http-js",
"nfc-js",
"notification-js",
"os-js",
"process-js",
@@ -74,7 +78,6 @@
],
"postversion": "pnpm install --no-frozen-lockfile"
},
"deep-link-example-js": {
"path": "./plugins/deep-link/examples/app",
"manager": "javascript",
@@ -82,7 +85,6 @@
"dependencies": ["deep-link-js"],
"postversion": "pnpm install --no-frozen-lockfile"
},
"authenticator": {
"path": "./plugins/authenticator",
"manager": "rust"
@@ -91,7 +93,6 @@
"path": "./plugins/authenticator",
"manager": "javascript"
},
"autostart": {
"path": "./plugins/autostart",
"manager": "rust"
@@ -100,7 +101,6 @@
"path": "./plugins/autostart",
"manager": "javascript"
},
"barcode-scanner": {
"path": "./plugins/barcode-scanner",
"manager": "rust"
@@ -109,7 +109,14 @@
"path": "./plugins/barcode-scanner",
"manager": "javascript"
},
"biometric": {
"path": "./plugins/biometric",
"manager": "rust"
},
"biometric-js": {
"path": "./plugins/biometric",
"manager": "javascript"
},
"cli": {
"path": "./plugins/cli",
"manager": "rust"
@@ -118,7 +125,6 @@
"path": "./plugins/cli",
"manager": "javascript"
},
"clipboard-manager": {
"path": "./plugins/clipboard-manager",
"manager": "rust"
@@ -127,7 +133,6 @@
"path": "./plugins/clipboard-manager",
"manager": "javascript"
},
"deep-link": {
"path": "./plugins/deep-link",
"manager": "rust"
@@ -136,7 +141,6 @@
"path": "./plugins/deep-link",
"manager": "javascript"
},
"fs": {
"path": "./plugins/fs",
"manager": "rust"
@@ -145,7 +149,6 @@
"path": "./plugins/fs",
"manager": "javascript"
},
"dialog": {
"path": "./plugins/dialog",
"manager": "rust",
@@ -155,7 +158,6 @@
"path": "./plugins/dialog",
"manager": "javascript"
},
"global-shortcut": {
"path": "./plugins/global-shortcut",
"manager": "rust"
@@ -164,7 +166,6 @@
"path": "./plugins/global-shortcut",
"manager": "javascript"
},
"http": {
"path": "./plugins/http",
"manager": "rust",
@@ -174,12 +175,10 @@
"path": "./plugins/http",
"manager": "javascript"
},
"localhost": {
"path": "./plugins/localhost",
"manager": "rust"
},
"log-plugin": {
"path": "./plugins/log",
"manager": "rust"
@@ -189,6 +188,15 @@
"manager": "javascript"
},
"nfc": {
"path": "./plugins/nfc",
"manager": "rust"
},
"nfc-js": {
"path": "./plugins/nfc",
"manager": "javascript"
},
"notification": {
"path": "./plugins/notification",
"manager": "rust"
@@ -197,7 +205,6 @@
"path": "./plugins/notification",
"manager": "javascript"
},
"os": {
"path": "./plugins/os",
"manager": "rust"
@@ -206,13 +213,11 @@
"path": "./plugins/os",
"manager": "javascript"
},
"persisted-scope": {
"path": "./plugins/persisted-scope",
"manager": "rust",
"dependencies": ["fs"]
},
"positioner": {
"path": "./plugins/positioner",
"manager": "rust"
@@ -221,7 +226,6 @@
"path": "./plugins/positioner",
"manager": "javascript"
},
"process": {
"path": "./plugins/process",
"manager": "rust"
@@ -230,7 +234,6 @@
"path": "./plugins/process",
"manager": "javascript"
},
"shell": {
"path": "./plugins/shell",
"manager": "rust"
@@ -239,12 +242,10 @@
"path": "./plugins/shell",
"manager": "javascript"
},
"single-instance": {
"path": "./plugins/single-instance",
"manager": "rust"
},
"sql": {
"path": "./plugins/sql",
"manager": "rust",
@@ -274,7 +275,6 @@
"path": "./plugins/sql",
"manager": "javascript"
},
"store": {
"path": "./plugins/store",
"manager": "rust"
@@ -283,7 +283,6 @@
"path": "./plugins/store",
"manager": "javascript"
},
"stronghold": {
"path": "./plugins/stronghold",
"manager": "rust"
@@ -292,7 +291,6 @@
"path": "./plugins/stronghold",
"manager": "javascript"
},
"updater": {
"path": "./plugins/updater",
"manager": "rust"
@@ -301,7 +299,6 @@
"path": "./plugins/updater",
"manager": "javascript"
},
"upload": {
"path": "./plugins/upload",
"manager": "rust"
@@ -310,7 +307,6 @@
"path": "./plugins/upload",
"manager": "javascript"
},
"websocket": {
"path": "./plugins/websocket",
"manager": "rust"
@@ -319,7 +315,6 @@
"path": "./plugins/websocket",
"manager": "javascript"
},
"window-state": {
"path": "./plugins/window-state",
"manager": "rust"
@@ -0,0 +1,5 @@
---
"dialog": patch
---
On Windows, fix `open` dialog `defaultPath`, when invoked from JS, not working if the path uses forward slash (`/`)
+5
View File
@@ -0,0 +1,5 @@
---
"dialog": patch
---
Re-export `FileResponse` interface.
+5
View File
@@ -0,0 +1,5 @@
---
"dialog": "patch"
---
Pin the version of `rfd` to 0.12.0. This is a workaround for [PolyMeilex/rfd#152](https://github.com/PolyMeilex/rfd/pull/152), in which rfd took over responsibility for `gtk_init` by running its own event loop thread.
+6
View File
@@ -0,0 +1,6 @@
---
"dialog": patch
"dialog-js": patch
---
Fix incorrect result for dialog messages.
+7
View File
@@ -0,0 +1,7 @@
---
"log-plugin": patch
"deep-link": patch
"store": patch
---
Update to breaking changes from tauri@alpha.17.
+5
View File
@@ -0,0 +1,5 @@
---
"sql": patch
---
Encode JSON number query params as f64 to fix JSON_EXTRACT queries on SQLite
+5
View File
@@ -0,0 +1,5 @@
---
"fs-js": "patch"
---
Add second argument to `exists` function to specify base directory.
+5
View File
@@ -0,0 +1,5 @@
---
"fs": patch
---
Fix promise rejection error only containing the context and stripping the actual error message.
+6
View File
@@ -0,0 +1,6 @@
---
"fs": "patch"
"fs-js": "patch"
---
The `fs` plugin received a major overhaul to add new APIs and changed existing APIs to be closer to Node.js and Deno APIs.
+6
View File
@@ -0,0 +1,6 @@
---
"fs": patch
"persisted-scope": patch
---
Use `tauri::scope::fs::Scope` instead of local copy of its implementation.
+6
View File
@@ -0,0 +1,6 @@
---
"nfc": major
"nfc-js": major
---
Initial release.
+7
View File
@@ -0,0 +1,7 @@
---
"os": "patch"
"os-js": "patch"
---
Fix `Uncaught TypeError: Cannot read properties of undefined (reading 'os')`
+28
View File
@@ -2,14 +2,31 @@
"tag": "alpha",
"changes": [
".changes/alpha.16.md",
".changes/alpha.17.md",
".changes/alpha.18.md",
".changes/alpha.20.md",
".changes/api-alpha.11.md",
".changes/api-alpha.12.md",
".changes/api-alpha.13.md",
".changes/api-alpha.9.md",
".changes/biometric-initial-release.md",
".changes/deep-link-initial-release.md",
".changes/dialog-async-message-dialog.md",
".changes/dialog-default-path-windows-slash.md",
".changes/dialog-export-fileresponse.md",
".changes/dialog-pin-rfd.md",
".changes/dialog-return-result.md",
".changes/fix-docs-build.md",
".changes/fix-emit-all-usage.md",
".changes/fix-invoke-usage.md",
".changes/fix-number-query-params.md",
".changes/fix-permission-notification.md",
".changes/fix-updater-macos.md",
".changes/fix-window-state-api.md",
".changes/fs-exists-2nd-arg.md",
".changes/fs-improve-error-message.md",
".changes/fs-improved-apis.md",
".changes/fs-scope-tauri.md",
".changes/fs-wiret-binary-file.md",
".changes/global-shortcut-app-handle.md",
".changes/http-multipart-refactor.md",
@@ -17,28 +34,39 @@
".changes/http-remove-cmd-property.md",
".changes/http-response.md",
".changes/msrv-1.70.md",
".changes/nfc-initial-release.md",
".changes/notification-init-script.md",
".changes/notification-revert-sound.md",
".changes/notification-sound.md",
".changes/os-OsType.md",
".changes/os-plugin-refactor.md",
".changes/os-reading-undefined.md",
".changes/persisted-scope-asset.md",
".changes/persisted-scope-glob.md",
".changes/positioner-tray-flag.md",
".changes/scanner-initial-release.md",
".changes/shell-command-apis.md",
".changes/shell-detached.md",
".changes/sql-decode-floats.md",
".changes/stronghold-arg-name.md",
".changes/stronghold-argon2.md",
".changes/stronghold-constructor.md",
".changes/tauri-alpha-15.md",
".changes/tauri-alpha.11.md",
".changes/tauri-alpha.12.md",
".changes/tray-position.md",
".changes/updater-appimage.md",
".changes/updater-escaped-path.md",
".changes/updater-nsis-admin.md",
".changes/updater-nsis-basicui.md",
".changes/updater-nsis.md",
".changes/updater-plugin-refactor.md",
".changes/updater-string-replace-round2.md",
".changes/updater-string-replace.md",
".changes/upload-bufwriter.md",
".changes/v2-alpha.md",
".changes/websocket-fix-arg-name.md",
".changes/websocket-headers.md",
".changes/window-state-decorated.md",
".changes/window-state-promise.md"
]
+5
View File
@@ -0,0 +1,5 @@
---
"sql": patch
---
Fixed an issue where float-like values were decoded as `null`.
+5
View File
@@ -0,0 +1,5 @@
---
"stronghold": patch
---
Added `Builder::with_argon2`.
+5
View File
@@ -0,0 +1,5 @@
---
"positioner": patch
---
`TrayLeft`, `TrayRight` and `TrayCenter` will now position the window according to the tray position relative to the monitor dimensions to prevent windows being displayed partially off-screen.
+5
View File
@@ -0,0 +1,5 @@
---
"updater": patch
---
Fix updater failing to extract the AppImage resulting in failing to update and also deleting the current version.
+5
View File
@@ -0,0 +1,5 @@
---
updater: patch
---
Use escaped installer path to start the nsis/msi updater to prevent crashes if app name contained spaces.
+6
View File
@@ -0,0 +1,6 @@
---
"updater": "patch"
"updater-js": "patch"
---
Fix NSIS updater failing to launch when using `basicUi` mode.
@@ -0,0 +1,5 @@
---
"updater": "patch"
---
The plugin now correctly replaces `arch`, `current_version` and `target` in query params again.
+5
View File
@@ -0,0 +1,5 @@
---
"upload": patch
---
Use `BufWriter` to reduce IO calls.
+6
View File
@@ -0,0 +1,6 @@
---
"websocket": patch
"websocket-js": patch
---
Add support for custom request headers.
+31
View File
@@ -0,0 +1,31 @@
<svg class="crabnebula-logo" width="100%" height="100%" viewBox="0 0 1204 210" version="1.1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
xml:space="preserve" xmlns:serif="http://www.serif.com/"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<style>
.crabnebula-logo path,
.crabnebula-logo rect {
fill: #001e42;
}
@media (prefers-color-scheme: dark) {
.crabnebula-logo path, .crabnebula-logo rect {
fill: #fff;
}
}
html[data-color-mode="dark"] .crabnebula-logo path,
html[data-color-mode="dark"] .crabnebula-logo rect {
fill: #fff;
}
</style>
<path d="M351.903,162.334C344.288,162.334 337.123,160.881 330.41,157.975C323.696,155.069 317.834,151.11 312.824,146.099C307.914,141.089 304.006,135.276 301.101,128.662C298.195,121.948 296.742,114.783 296.742,107.167C296.742,99.55 298.195,92.435 301.101,85.821C304.006,79.107 307.914,73.244 312.824,68.234C317.834,63.223 323.696,59.265 330.41,56.358C337.123,53.452 344.288,51.999 351.903,51.999C357.414,51.999 362.675,52.701 367.685,54.103C372.795,55.507 377.455,57.511 381.663,60.116C385.972,62.622 389.83,65.678 393.237,69.286C396.644,72.793 399.499,76.752 401.804,81.161L380.762,92.586C377.756,87.174 373.848,82.915 369.038,79.808C364.328,76.702 358.617,75.148 351.903,75.148C347.494,75.148 343.386,76 339.578,77.704C335.871,79.407 332.614,81.762 329.809,84.769C327.003,87.675 324.798,91.082 323.195,94.991C321.592,98.799 320.79,102.857 320.79,107.167C320.79,111.476 321.592,115.584 323.195,119.493C324.798,123.301 327.003,126.708 329.809,129.715C332.614,132.621 335.871,134.926 339.578,136.629C343.386,138.333 347.494,139.185 351.903,139.185C358.617,139.185 364.328,137.631 369.038,134.525C373.848,131.418 377.756,127.159 380.762,121.748L401.804,133.172C399.499,137.581 396.644,141.59 393.237,145.198C389.83,148.705 385.972,151.762 381.663,154.367C377.455,156.872 372.795,158.827 367.685,160.23C362.675,161.633 357.414,162.334 351.903,162.334Z" style="fill-rule:nonzero;stroke:black;stroke-width:0.55px;"/>
<path d="M413.821,85.37L436.517,85.37L436.517,96.644C437.72,93.337 439.924,90.481 443.131,88.076C446.437,85.671 450.195,84.468 454.403,84.468C455.506,84.468 456.658,84.518 457.86,84.619C459.063,84.719 460.366,84.969 461.768,85.37L461.768,108.369C460.065,107.768 458.412,107.317 456.808,107.016C455.205,106.716 453.502,106.565 451.698,106.565C446.788,106.565 443.03,108.269 440.425,111.676C437.82,115.083 436.517,119.493 436.517,124.904L436.517,160.53L413.821,160.53L413.821,85.37Z" style="fill-rule:nonzero;stroke:black;stroke-width:0.55px;"/>
<path d="M502.161,162.184C497.251,162.184 492.642,161.132 488.333,159.027C484.125,156.923 480.467,154.117 477.361,150.609C474.255,147.001 471.8,142.843 469.996,138.133C468.193,133.322 467.291,128.261 467.291,122.95C467.291,117.639 468.193,112.628 469.996,107.918C471.8,103.108 474.255,98.949 477.361,95.442C480.467,91.834 484.125,88.978 488.333,86.873C492.642,84.769 497.251,83.717 502.161,83.717C504.666,83.717 506.971,84.017 509.075,84.619C511.28,85.12 513.234,85.821 514.937,86.723C516.741,87.625 518.244,88.627 519.446,89.729C520.749,90.832 521.801,91.884 522.603,92.886L522.603,85.37L545.299,85.37L545.299,160.53L522.603,160.53L522.603,153.014C521.801,154.016 520.749,155.069 519.446,156.171C518.244,157.273 516.741,158.275 514.937,159.177C513.234,160.079 511.28,160.781 509.075,161.282C506.971,161.883 504.666,162.184 502.161,162.184ZM507.272,141.59C512.382,141.59 516.49,139.836 519.597,136.329C522.803,132.821 524.406,128.362 524.406,122.95C524.406,117.539 522.803,113.079 519.597,109.572C516.49,106.064 512.382,104.31 507.272,104.31C502.161,104.31 498.003,106.064 494.796,109.572C491.69,113.079 490.137,117.539 490.137,122.95C490.137,128.362 491.69,132.821 494.796,136.329C498.003,139.836 502.161,141.59 507.272,141.59Z" style="fill-rule:nonzero;stroke:black;stroke-width:0.55px;"/>
<path d="M607.116,162.184C604.611,162.184 602.256,161.883 600.051,161.282C597.947,160.781 595.993,160.079 594.19,159.177C592.486,158.275 590.983,157.273 589.681,156.171C588.378,155.069 587.376,154.016 586.674,153.014L586.674,160.53L563.979,160.53L563.979,47.79L586.674,47.79L586.674,92.886C587.376,91.884 588.378,90.832 589.681,89.729C590.983,88.627 592.486,87.625 594.19,86.723C595.993,85.821 597.947,85.12 600.051,84.619C602.256,84.017 604.611,83.717 607.116,83.717C612.026,83.717 616.585,84.769 620.793,86.873C625.102,88.978 628.81,91.834 631.916,95.442C635.022,98.949 637.477,103.108 639.281,107.918C641.084,112.628 641.986,117.639 641.986,122.95C641.986,128.261 641.084,133.322 639.281,138.133C637.477,142.843 635.022,147.001 631.916,150.609C628.81,154.117 625.102,156.923 620.793,159.027C616.585,161.132 612.026,162.184 607.116,162.184ZM602.005,141.59C607.116,141.59 611.224,139.836 614.33,136.329C617.537,132.821 619.14,128.362 619.14,122.95C619.14,117.539 617.537,113.079 614.33,109.572C611.224,106.064 607.116,104.31 602.005,104.31C596.895,104.31 592.737,106.064 589.53,109.572C586.424,113.079 584.871,117.539 584.871,122.95C584.871,128.362 586.424,132.821 589.53,136.329C592.737,139.836 596.895,141.59 602.005,141.59Z" style="fill-rule:nonzero;stroke:black;stroke-width:0.55px;"/>
<path d="M732.106,160.53L680.101,94.54L680.101,160.53L656.203,160.53L656.203,53.803L676.795,53.803L728.649,119.793L728.649,53.803L752.698,53.803L752.698,160.53L732.106,160.53Z" style="fill-rule:nonzero;stroke:black;stroke-width:0.55px;"/>
<path d="M806.852,162.184C801.341,162.184 796.13,161.282 791.22,159.478C786.411,157.674 782.202,155.069 778.595,151.661C774.988,148.254 772.132,144.145 770.028,139.335C767.923,134.425 766.871,128.963 766.871,122.95C766.871,117.338 767.823,112.177 769.727,107.467C771.731,102.657 774.487,98.498 777.994,94.991C781.601,91.483 785.809,88.727 790.619,86.723C795.429,84.719 800.69,83.717 806.401,83.717C811.311,83.717 816.021,84.518 820.53,86.122C825.139,87.625 829.147,89.93 832.554,93.036C835.961,96.043 838.666,99.851 840.67,104.461C842.775,108.97 843.827,114.282 843.827,120.395C843.827,121.397 843.777,122.549 843.677,123.852C843.677,125.055 843.576,126.558 843.376,128.362L788.816,128.362C789.517,132.871 791.671,136.228 795.279,138.433C798.886,140.538 802.844,141.59 807.153,141.59C811.562,141.59 815.319,140.738 818.425,139.034C821.632,137.231 823.937,135.226 825.339,133.022L842.173,145.649C838.666,150.659 833.857,154.668 827.744,157.674C821.732,160.681 814.768,162.184 806.852,162.184ZM821.281,113.48C820.279,109.471 818.275,106.615 815.269,104.912C812.263,103.108 809.107,102.206 805.8,102.206C804.096,102.206 802.393,102.406 800.69,102.807C798.986,103.208 797.383,103.859 795.88,104.761C794.377,105.663 793.024,106.816 791.822,108.219C790.719,109.622 789.918,111.376 789.417,113.48L821.281,113.48Z" style="fill-rule:nonzero;stroke:black;stroke-width:0.55px;"/>
<path d="M901.265,162.184C898.76,162.184 896.405,161.883 894.201,161.282C892.097,160.781 890.143,160.079 888.339,159.177C886.636,158.275 885.133,157.273 883.83,156.171C882.527,155.069 881.525,154.016 880.824,153.014L880.824,160.53L858.128,160.53L858.128,47.79L880.824,47.79L880.824,92.886C881.525,91.884 882.527,90.832 883.83,89.729C885.133,88.627 886.636,87.625 888.339,86.723C890.143,85.821 892.097,85.12 894.201,84.619C896.405,84.017 898.76,83.717 901.265,83.717C906.175,83.717 910.734,84.769 914.943,86.873C919.252,88.978 922.959,91.834 926.065,95.442C929.172,98.949 931.627,103.108 933.43,107.918C935.234,112.628 936.136,117.639 936.136,122.95C936.136,128.261 935.234,133.322 933.43,138.133C931.627,142.843 929.172,147.001 926.065,150.609C922.959,154.117 919.252,156.923 914.943,159.027C910.734,161.132 906.175,162.184 901.265,162.184ZM896.155,141.59C901.265,141.59 905.374,139.836 908.48,136.329C911.686,132.821 913.29,128.362 913.29,122.95C913.29,117.539 911.686,113.079 908.48,109.572C905.374,106.064 901.265,104.31 896.155,104.31C891.045,104.31 886.886,106.064 883.68,109.572C880.573,113.079 879.02,117.539 879.02,122.95C879.02,128.362 880.573,132.821 883.68,136.329C886.886,139.836 891.045,141.59 896.155,141.59Z" style="fill-rule:nonzero;stroke:black;stroke-width:0.55px;"/>
<path d="M977.812,162.184C968.493,162.184 961.429,159.077 956.619,152.864C951.81,146.651 949.405,138.433 949.405,128.211L949.405,85.37L972.101,85.37L972.101,124.303C972.101,129.815 972.952,134.074 974.656,137.08C976.459,140.087 979.466,141.59 983.674,141.59C987.983,141.59 991.39,140.037 993.895,136.93C996.5,133.823 997.803,128.813 997.803,121.898L997.803,85.37L1020.5,85.37L1020.5,160.53L997.803,160.53L997.803,152.864C995.999,155.469 993.444,157.674 990.137,159.478C986.83,161.282 982.722,162.184 977.812,162.184Z" style="fill-rule:nonzero;stroke:black;stroke-width:0.55px;"/>
<rect x="1039.11" y="47.79" width="22.701" height="112.74" style="fill-rule:nonzero;stroke:black;stroke-width:0.55px;"/>
<path d="M1110.86,162.184C1105.95,162.184 1101.34,161.132 1097.03,159.027C1092.83,156.923 1089.17,154.117 1086.06,150.609C1082.96,147.001 1080.5,142.843 1078.7,138.133C1076.89,133.322 1075.99,128.261 1075.99,122.95C1075.99,117.639 1076.89,112.628 1078.7,107.918C1080.5,103.108 1082.96,98.949 1086.06,95.442C1089.17,91.834 1092.83,88.978 1097.03,86.873C1101.34,84.769 1105.95,83.717 1110.86,83.717C1113.37,83.717 1115.67,84.017 1117.78,84.619C1119.98,85.12 1121.94,85.821 1123.64,86.723C1125.44,87.625 1126.95,88.627 1128.15,89.729C1129.45,90.832 1130.5,91.884 1131.3,92.886L1131.3,85.37L1154,85.37L1154,160.53L1131.3,160.53L1131.3,153.014C1130.5,154.016 1129.45,155.069 1128.15,156.171C1126.95,157.273 1125.44,158.275 1123.64,159.177C1121.94,160.079 1119.98,160.781 1117.78,161.282C1115.67,161.883 1113.37,162.184 1110.86,162.184ZM1115.97,141.59C1121.08,141.59 1125.19,139.836 1128.3,136.329C1131.5,132.821 1133.11,128.362 1133.11,122.95C1133.11,117.539 1131.5,113.079 1128.3,109.572C1125.19,106.064 1121.08,104.31 1115.97,104.31C1110.86,104.31 1106.7,106.064 1103.5,109.572C1100.39,113.079 1098.84,117.539 1098.84,122.95C1098.84,128.362 1100.39,132.821 1103.5,136.329C1106.7,139.836 1110.86,141.59 1115.97,141.59Z" style="fill-rule:nonzero;stroke:black;stroke-width:0.55px;"/>
<path d="M146.48,54.585C119.724,89.866 119.878,134.941 146.826,155.264C153.908,160.605 162.136,163.705 170.903,164.732C146.032,184.934 117.382,191.203 98.037,178.045C71.507,160 72.524,112.249 100.309,71.391C123.51,37.273 158.039,18.749 184.247,24.072C170.404,30.195 157.116,40.561 146.48,54.585ZM181.638,99.643C169.141,111.453 154.859,119.304 142.801,121.916C149.921,147.367 177.29,149.323 177.29,149.323C177.29,149.323 193.578,145.578 205.877,117.941C216.005,95.183 215.122,71.668 204.914,59.7C204.065,71.267 195.731,86.324 181.638,99.643Z" style="stroke:black;stroke-width:0.55px;"/>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

+9 -1
View File
@@ -192,9 +192,17 @@ jobs:
run: cargo install cross --git https://github.com/cross-rs/cross
- name: test ${{ matrix.package }}
if: matrix.package != 'tauri-plugin-sql'
if: matrix.package != 'tauri-plugin-sql' && matrix.package != 'tauri-plugin-http'
run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --all-features
- name: test ${{ matrix.package }}
if: matrix.package == 'tauri-plugin-http'
run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets
- name: test ${{ matrix.package }} sqlite
if: matrix.package == 'tauri-plugin-sql'
run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --features sqlite
- name: test ${{ matrix.package }} mysql
if: matrix.package == 'tauri-plugin-sql'
run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --features mysql
Generated
+1321 -1083
View File
File diff suppressed because it is too large Load Diff
+10 -4
View File
@@ -1,18 +1,24 @@
[workspace]
members = ["plugins/*", "plugins/*/tests/*", "plugins/*/examples/*/src-tauri", "examples/*/src-tauri"]
members = [
"plugins/*",
"plugins/*/tests/*",
"plugins/*/examples/*/src-tauri",
"examples/*/src-tauri",
]
resolver = "2"
[workspace.dependencies]
serde = { version = "1", features = ["derive"] }
log = "0.4"
tauri = "2.0.0-alpha.16"
tauri-build = "2.0.0-alpha.10"
tauri = "2.0.0-alpha.20"
tauri-build = "2.0.0-alpha.13"
serde_json = "1"
thiserror = "1"
url = "2"
[workspace.package]
edition = "2021"
authors = [ "Tauri Programme within The Commons Conservancy" ]
authors = ["Tauri Programme within The Commons Conservancy"]
license = "Apache-2.0 OR MIT"
rust-version = "1.70"
+16
View File
@@ -17,3 +17,19 @@
| [window-state](plugins/window-state) | Persist window sizes and positions. | ✅ | ✅ | ✅ | ? | ? |
_This repo and all plugins require a Rust version of at least **1.70**_
## Partners
<table>
<tbody>
<tr>
<td align="center" valign="middle">
<a href="https://crabnebula.dev" target="_blank">
<img src=".github/sponsors/crabnebula.svg" alt="CrabNebula" width="283">
</a>
</td>
</tr>
</tbody>
</table>
For the complete list of sponsors please visit our [website](https://tauri.app#sponsors) and [Open Collective](https://opencollective.com/tauri).
+56
View File
@@ -1,5 +1,61 @@
# Changelog
## \[2.0.0-alpha.7]
### Dependencies
- Upgraded to `barcode-scanner-js@2.0.0-alpha.4`
- Upgraded to `cli-js@2.0.0-alpha.5`
- Upgraded to `clipboard-manager-js@2.0.0-alpha.5`
- Upgraded to `dialog-js@2.0.0-alpha.5`
- Upgraded to `fs-js@2.0.0-alpha.5`
- Upgraded to `global-shortcut-js@2.0.0-alpha.5`
- Upgraded to `http-js@2.0.0-alpha.5`
- Upgraded to `log-js@2.0.0-alpha.5`
- Upgraded to `notification-js@2.0.0-alpha.5`
- Upgraded to `os-js@2.0.0-alpha.6`
- Upgraded to `process-js@2.0.0-alpha.5`
- Upgraded to `shell-js@2.0.0-alpha.5`
- Upgraded to `updater-js@2.0.0-alpha.5`
- Upgraded to `biometric-js@2.0.0-alpha.0`
- Upgraded to `nfc-js@2.0.0-alpha.0`
## \[2.0.0-alpha.6]
### Dependencies
- Upgraded to `barcode-scanner-js@2.0.0-alpha.3`
- Upgraded to `cli-js@2.0.0-alpha.4`
- Upgraded to `clipboard-manager-js@2.0.0-alpha.4`
- Upgraded to `dialog-js@2.0.0-alpha.4`
- Upgraded to `fs-js@2.0.0-alpha.4`
- Upgraded to `global-shortcut-js@2.0.0-alpha.4`
- Upgraded to `http-js@2.0.0-alpha.4`
- Upgraded to `log-js@2.0.0-alpha.4`
- Upgraded to `notification-js@2.0.0-alpha.4`
- Upgraded to `os-js@2.0.0-alpha.5`
- Upgraded to `process-js@2.0.0-alpha.4`
- Upgraded to `shell-js@2.0.0-alpha.4`
- Upgraded to `updater-js@2.0.0-alpha.4`
## \[2.0.0-alpha.5]
### Dependencies
- Upgraded to `barcode-scanner-js@2.0.0-alpha.2`
- Upgraded to `cli-js@2.0.0-alpha.3`
- Upgraded to `clipboard-manager-js@2.0.0-alpha.3`
- Upgraded to `dialog-js@2.0.0-alpha.3`
- Upgraded to `fs-js@2.0.0-alpha.3`
- Upgraded to `global-shortcut-js@2.0.0-alpha.3`
- Upgraded to `http-js@2.0.0-alpha.3`
- Upgraded to `log-js@2.0.0-alpha.3`
- Upgraded to `notification-js@2.0.0-alpha.3`
- Upgraded to `os-js@2.0.0-alpha.4`
- Upgraded to `process-js@2.0.0-alpha.3`
- Upgraded to `shell-js@2.0.0-alpha.3`
- Upgraded to `updater-js@2.0.0-alpha.3`
## \[2.0.0-alpha.4]
### Dependencies
+24 -22
View File
@@ -1,7 +1,7 @@
{
"name": "svelte-app",
"private": true,
"version": "2.0.0-alpha.4",
"version": "2.0.0-alpha.7",
"type": "module",
"scripts": {
"dev": "vite --clearScreen false",
@@ -9,30 +9,32 @@
"serve": "vite preview"
},
"dependencies": {
"@tauri-apps/api": "2.0.0-alpha.9",
"@tauri-apps/plugin-barcode-scanner": "2.0.0-alpha.1",
"@tauri-apps/plugin-cli": "2.0.0-alpha.2",
"@tauri-apps/plugin-clipboard-manager": "2.0.0-alpha.2",
"@tauri-apps/plugin-dialog": "2.0.0-alpha.2",
"@tauri-apps/plugin-fs": "2.0.0-alpha.2",
"@tauri-apps/plugin-global-shortcut": "2.0.0-alpha.2",
"@tauri-apps/plugin-http": "2.0.0-alpha.2",
"@tauri-apps/plugin-notification": "2.0.0-alpha.2",
"@tauri-apps/plugin-os": "2.0.0-alpha.3",
"@tauri-apps/plugin-process": "2.0.0-alpha.2",
"@tauri-apps/plugin-shell": "2.0.0-alpha.2",
"@tauri-apps/plugin-updater": "2.0.0-alpha.2",
"@tauri-apps/api": "2.0.0-alpha.13",
"@tauri-apps/plugin-barcode-scanner": "2.0.0-alpha.4",
"@tauri-apps/plugin-biometric": "2.0.0-alpha.0",
"@tauri-apps/plugin-cli": "2.0.0-alpha.5",
"@tauri-apps/plugin-clipboard-manager": "2.0.0-alpha.5",
"@tauri-apps/plugin-dialog": "2.0.0-alpha.5",
"@tauri-apps/plugin-fs": "2.0.0-alpha.5",
"@tauri-apps/plugin-global-shortcut": "2.0.0-alpha.5",
"@tauri-apps/plugin-http": "2.0.0-alpha.5",
"@tauri-apps/plugin-nfc": "2.0.0-alpha.0",
"@tauri-apps/plugin-notification": "2.0.0-alpha.5",
"@tauri-apps/plugin-os": "2.0.0-alpha.6",
"@tauri-apps/plugin-process": "2.0.0-alpha.5",
"@tauri-apps/plugin-shell": "2.0.0-alpha.5",
"@tauri-apps/plugin-updater": "2.0.0-alpha.5",
"@zerodevx/svelte-json-view": "1.0.7"
},
"devDependencies": {
"@iconify-json/codicon": "^1.1.31",
"@iconify-json/ph": "^1.1.6",
"@sveltejs/vite-plugin-svelte": "^2.4.6",
"@tauri-apps/cli": "2.0.0-alpha.16",
"@unocss/extractor-svelte": "^0.56.5",
"@iconify-json/codicon": "^1.1.37",
"@iconify-json/ph": "^1.1.8",
"@sveltejs/vite-plugin-svelte": "^3.0.1",
"@tauri-apps/cli": "2.0.0-alpha.20",
"@unocss/extractor-svelte": "^0.58.0",
"internal-ip": "^8.0.0",
"svelte": "^4.2.2",
"unocss": "^0.56.5",
"vite": "^4.5.0"
"svelte": "^4.2.8",
"unocss": "^0.58.0",
"vite": "^5.0.6"
}
}
+56
View File
@@ -1,5 +1,61 @@
# Changelog
## \[2.0.0-alpha.9]
### Dependencies
- Upgraded to `barcode-scanner@2.0.0-alpha.4`
- Upgraded to `cli@2.0.0-alpha.6`
- Upgraded to `clipboard-manager@2.0.0-alpha.6`
- Upgraded to `dialog@2.0.0-alpha.6`
- Upgraded to `fs@2.0.0-alpha.6`
- Upgraded to `global-shortcut@2.0.0-alpha.6`
- Upgraded to `http@2.0.0-alpha.7`
- Upgraded to `log-plugin@2.0.0-alpha.6`
- Upgraded to `notification@2.0.0-alpha.7`
- Upgraded to `os@2.0.0-alpha.6`
- Upgraded to `process@2.0.0-alpha.6`
- Upgraded to `shell@2.0.0-alpha.6`
- Upgraded to `updater@2.0.0-alpha.6`
- Upgraded to `biometric@2.0.0-alpha.0`
- Upgraded to `nfc@2.0.0-alpha.0`
## \[2.0.0-alpha.8]
### Dependencies
- Upgraded to `barcode-scanner@2.0.0-alpha.3`
- Upgraded to `cli@2.0.0-alpha.5`
- Upgraded to `clipboard-manager@2.0.0-alpha.5`
- Upgraded to `dialog@2.0.0-alpha.5`
- Upgraded to `fs@2.0.0-alpha.5`
- Upgraded to `global-shortcut@2.0.0-alpha.5`
- Upgraded to `http@2.0.0-alpha.6`
- Upgraded to `log-plugin@2.0.0-alpha.5`
- Upgraded to `notification@2.0.0-alpha.6`
- Upgraded to `os@2.0.0-alpha.5`
- Upgraded to `process@2.0.0-alpha.5`
- Upgraded to `shell@2.0.0-alpha.5`
- Upgraded to `updater@2.0.0-alpha.5`
## \[2.0.0-alpha.7]
### Dependencies
- Upgraded to `barcode-scanner@2.0.0-alpha.2`
- Upgraded to `cli@2.0.0-alpha.4`
- Upgraded to `clipboard-manager@2.0.0-alpha.4`
- Upgraded to `dialog@2.0.0-alpha.4`
- Upgraded to `fs@2.0.0-alpha.4`
- Upgraded to `global-shortcut@2.0.0-alpha.4`
- Upgraded to `http@2.0.0-alpha.5`
- Upgraded to `log-plugin@2.0.0-alpha.4`
- Upgraded to `notification@2.0.0-alpha.5`
- Upgraded to `os@2.0.0-alpha.4`
- Upgraded to `process@2.0.0-alpha.4`
- Upgraded to `shell@2.0.0-alpha.4`
- Upgraded to `updater@2.0.0-alpha.4`
## \[2.0.0-alpha.6]
### Dependencies
+17 -14
View File
@@ -1,13 +1,14 @@
[package]
name = "api"
publish = false
version = "2.0.0-alpha.6"
version = "2.0.0-alpha.9"
description = "An example Tauri Application showcasing the api"
edition = "2021"
rust-version = { workspace = true }
license = "Apache-2.0 OR MIT"
[lib]
name = "api_lib"
crate-type = [ "staticlib", "cdylib", "rlib" ]
[build-dependencies]
@@ -18,15 +19,15 @@ serde_json = { workspace = true }
serde = { workspace = true }
tiny_http = "0.11"
log = { workspace = true }
tauri-plugin-log = { path = "../../../plugins/log", version = "2.0.0-alpha.3" }
tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.0.0-alpha.3" }
tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.0.0-alpha.3" }
tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.0.0-alpha.3" }
tauri-plugin-http = { path = "../../../plugins/http", features = [ "multipart" ], version = "2.0.0-alpha.4" }
tauri-plugin-notification = { path = "../../../plugins/notification", version = "2.0.0-alpha.4", features = [ "windows7-compat" ] }
tauri-plugin-os = { path = "../../../plugins/os", version = "2.0.0-alpha.3" }
tauri-plugin-process = { path = "../../../plugins/process", version = "2.0.0-alpha.3" }
tauri-plugin-shell = { path = "../../../plugins/shell", version = "2.0.0-alpha.3" }
tauri-plugin-log = { path = "../../../plugins/log", version = "2.0.0-alpha.6" }
tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.0.0-alpha.6" }
tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.0.0-alpha.6" }
tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.0.0-alpha.6" }
tauri-plugin-http = { path = "../../../plugins/http", features = [ "multipart" ], version = "2.0.0-alpha.7" }
tauri-plugin-notification = { path = "../../../plugins/notification", version = "2.0.0-alpha.7", features = [ "windows7-compat" ] }
tauri-plugin-os = { path = "../../../plugins/os", version = "2.0.0-alpha.6" }
tauri-plugin-process = { path = "../../../plugins/process", version = "2.0.0-alpha.6" }
tauri-plugin-shell = { path = "../../../plugins/shell", version = "2.0.0-alpha.6" }
[dependencies.tauri]
workspace = true
@@ -40,12 +41,14 @@ tauri-plugin-shell = { path = "../../../plugins/shell", version = "2.0.0-alpha.3
]
[target."cfg(any(target_os = \"macos\", windows, target_os = \"linux\", target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\"))".dependencies]
tauri-plugin-cli = { path = "../../../plugins/cli", version = "2.0.0-alpha.3" }
tauri-plugin-global-shortcut = { path = "../../../plugins/global-shortcut", version = "2.0.0-alpha.3" }
tauri-plugin-updater = { path = "../../../plugins/updater", version = "2.0.0-alpha.3" }
tauri-plugin-cli = { path = "../../../plugins/cli", version = "2.0.0-alpha.6" }
tauri-plugin-global-shortcut = { path = "../../../plugins/global-shortcut", version = "2.0.0-alpha.6" }
tauri-plugin-updater = { path = "../../../plugins/updater", version = "2.0.0-alpha.6" }
[target."cfg(any(target_os = \"android\", target_os = \"ios\"))".dependencies]
tauri-plugin-barcode-scanner = { path = "../../../plugins/barcode-scanner/", version = "2.0.0-alpha.1" }
tauri-plugin-barcode-scanner = { path = "../../../plugins/barcode-scanner/", version = "2.0.0-alpha.4" }
tauri-plugin-nfc = { path = "../../../plugins/nfc", version = "2.0.0-alpha.0" }
tauri-plugin-biometric = { path = "../../../plugins/biometric/", version = "2.0.0-alpha.0" }
[target."cfg(target_os = \"windows\")".dependencies]
window-shadows = "0.2"
+3
View File
@@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="17" />
</component>
</project>
+28
View File
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="GRADLE" />
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="jbr-17" />
<option name="modules">
<set>
<option value="$USER_HOME$/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tauri-2.0.0-alpha.17/mobile/android" />
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
<option value="$PROJECT_DIR$/buildSrc" />
<option value="$PROJECT_DIR$/../../../../../plugins/barcode-scanner/android" />
<option value="$PROJECT_DIR$/../../../../../plugins/biometric/android" />
<option value="$PROJECT_DIR$/../../../../../plugins/clipboard-manager/android" />
<option value="$PROJECT_DIR$/../../../../../plugins/dialog/android" />
<option value="$PROJECT_DIR$/../../../../../plugins/nfc/android" />
<option value="$PROJECT_DIR$/../../../../../plugins/notification/android" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="MavenRepo" />
<option name="name" value="MavenRepo" />
<option name="url" value="https://repo.maven.apache.org/maven2/" />
</remote-repository>
<remote-repository>
<option name="id" value="Google" />
<option name="name" value="Google" />
<option name="url" value="https://dl.google.com/dl/android/maven2/" />
</remote-repository>
</component>
</project>
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="KotlinJpsPluginSettings">
<option name="version" value="1.8.10" />
</component>
</project>
+10
View File
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../../../../.." vcs="Git" />
</component>
</project>
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
@@ -16,6 +17,26 @@
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- NFC PLUGIN. AUTO-GENERATED. DO NOT REMOVE. -->
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="@xml/nfc_tech_filter" />
<!-- NFC PLUGIN. AUTO-GENERATED. DO NOT REMOVE. -->
</activity>
<provider
@@ -1,11 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1200"
version = "1.7">
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
runPostActionsOnFailure = "NO">
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
@@ -16,7 +15,7 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "54DC6E273C78071F3BA12EF3"
BuildableName = "api_iOS.app"
BuildableName = "Tauri API.app"
BlueprintName = "api_iOS"
ReferencedContainer = "container:api.xcodeproj">
</BuildableReference>
@@ -27,21 +26,16 @@
buildConfiguration = "debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "NO"
onlyGenerateCoverageForSpecifiedTargets = "NO">
shouldUseLaunchSchemeArgsEnv = "NO">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "54DC6E273C78071F3BA12EF3"
BuildableName = "api_iOS.app"
BuildableName = "Tauri API.app"
BlueprintName = "api_iOS"
ReferencedContainer = "container:api.xcodeproj">
</BuildableReference>
</MacroExpansion>
<Testables>
</Testables>
<CommandLineArguments>
</CommandLineArguments>
<EnvironmentVariables>
<EnvironmentVariable
key = "RUST_BACKTRACE"
@@ -54,6 +48,8 @@
isEnabled = "YES">
</EnvironmentVariable>
</EnvironmentVariables>
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "debug"
@@ -70,13 +66,11 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "54DC6E273C78071F3BA12EF3"
BuildableName = "api_iOS.app"
BuildableName = "Tauri API.app"
BlueprintName = "api_iOS"
ReferencedContainer = "container:api.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
</CommandLineArguments>
<EnvironmentVariables>
<EnvironmentVariable
key = "RUST_BACKTRACE"
@@ -101,13 +95,11 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "54DC6E273C78071F3BA12EF3"
BuildableName = "api_iOS.app"
BuildableName = "Tauri API.app"
BlueprintName = "api_iOS"
ReferencedContainer = "container:api.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
</CommandLineArguments>
<EnvironmentVariables>
<EnvironmentVariable
key = "RUST_BACKTRACE"
@@ -2,6 +2,10 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NFCReaderUsageDescription</key>
<string>NFC Test</string>
<key>NSCameraUsageDescription</key>
<string>Request camera access for barcode scanner</string>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
@@ -40,5 +44,7 @@
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>NSFaceIDUsageDescription</key>
<string>Biometric Test</string>
</dict>
</plist>
@@ -1,5 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
<dict>
<key>com.apple.developer.nfc.readersession.formats</key>
<array>
<string>TAG</string>
<string>NDEF</string>
</array>
</dict>
</plist>
+3 -6
View File
@@ -2,17 +2,12 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
#![cfg_attr(
all(not(debug_assertions), target_os = "windows"),
windows_subsystem = "windows"
)]
mod cmd;
#[cfg(desktop)]
mod tray;
use serde::Serialize;
use tauri::{window::WindowBuilder, App, AppHandle, RunEvent, WindowUrl};
use tauri::{window::WindowBuilder, App, AppHandle, Manager, RunEvent, WindowUrl};
#[derive(Clone, Serialize)]
struct Reply {
@@ -52,6 +47,8 @@ pub fn run() {
#[cfg(mobile)]
{
app.handle().plugin(tauri_plugin_barcode_scanner::init())?;
app.handle().plugin(tauri_plugin_nfc::init())?;
app.handle().plugin(tauri_plugin_biometric::init())?;
}
let mut window_builder = WindowBuilder::new(app, "main", WindowUrl::default());
+1 -2
View File
@@ -6,6 +6,5 @@
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
fn main() {
#[cfg(desktop)]
api::run();
api_lib::run();
}
+26 -9
View File
@@ -17,9 +17,11 @@
import Clipboard from "./views/Clipboard.svelte";
import WebRTC from "./views/WebRTC.svelte";
import Scanner from "./views/Scanner.svelte";
import Biometric from "./views/Biometric.svelte";
import { onMount } from "svelte";
import { onMount, tick } from "svelte";
import { ask } from "@tauri-apps/plugin-dialog";
import Nfc from "./views/Nfc.svelte";
const appWindow = getCurrent();
@@ -72,7 +74,7 @@
component: Http,
icon: "i-ph-globe-hemisphere-west",
},
!isMobile && {
{
label: "Notifications",
component: Notifications,
icon: "i-codicon-bell-dot",
@@ -92,7 +94,7 @@
component: Updater,
icon: "i-codicon-cloud-download",
},
!isMobile && {
{
label: "Clipboard",
component: Clipboard,
icon: "i-codicon-clippy",
@@ -107,6 +109,16 @@
component: Scanner,
icon: "i-ph-scan",
},
isMobile && {
label: "NFC",
component: Nfc,
icon: "i-ph-nfc",
},
isMobile && {
label: "Biometric",
component: Biometric,
icon: "i-ph-scan",
},
];
let selected = views[0];
@@ -166,30 +178,35 @@
// Console
let messages = writable([]);
function onMessage(value) {
let consoleTextEl;
async function onMessage(value) {
messages.update((r) => [
...r,
{
html:
`<pre><strong class="text-accent dark:text-darkAccent">[${new Date().toLocaleTimeString()}]:</strong> ` +
(typeof value === "string" ? value : JSON.stringify(value, null, 1)) +
"</pre>",
},
...r,
]);
await tick();
if (consoleTextEl) consoleTextEl.scrollTop = consoleTextEl.scrollHeight;
}
// this function is renders HTML without sanitizing it so it's insecure
// we only use it with our own input data
function insecureRenderHtml(html) {
async function insecureRenderHtml(html) {
messages.update((r) => [
...r,
{
html:
`<pre><strong class="text-accent dark:text-darkAccent">[${new Date().toLocaleTimeString()}]:</strong> ` +
html +
"</pre>",
},
...r,
]);
await tick();
if (consoleTextEl) consoleTextEl.scrollTop = consoleTextEl.scrollHeight;
}
function clear() {
@@ -221,7 +238,7 @@
let isWindows;
onMount(async () => {
isWindows = (await os.platform()) === "win32";
isWindows = (await os.platform()) === "windows";
});
// mobile
@@ -474,7 +491,7 @@
<div class="i-codicon-clear-all" />
</div>
</div>
<div class="px-2 overflow-y-auto all:font-mono code-block all:text-xs">
<div bind:this={consoleTextEl} class="px-2 overflow-y-auto all:font-mono code-block all:text-xs select-text mr-2">
{#each $messages as r}
{@html r.html}
{/each}
+30
View File
@@ -0,0 +1,30 @@
<script>
import { authenticate } from "@tauri-apps/plugin-biometric";
export let onMessage;
let allowDeviceCredential = true;
function auth() {
authenticate("Tauri API wants to show it is awesome :)", {
allowDeviceCredential,
cancelTitle: "Cancel request",
fallbackTitle: "Trying the fallback option",
title: "Tauri API Auth",
subtitle: "Please authenticate :)",
confirmationRequired: false,
maxAttemps: 1,
})
.then(onMessage)
.catch(onMessage);
}
</script>
<div>
<input
type="checkbox"
id="dllowDeviceCredential"
bind:checked={allowDeviceCredential}
/>
<label for="allowDeviceCredentiale">Allow device credential</label>
</div>
<button class="btn" id="cli-matches" on:click={auth}> Authenticate </button>
+1 -1
View File
@@ -1,6 +1,6 @@
<script>
import { getCurrent } from "@tauri-apps/api/window";
import { invoke } from "@tauri-apps/api/primitives";
import { invoke } from "@tauri-apps/api/core";
import { onMount, onDestroy } from "svelte";
const appWindow = getCurrent();
+2 -2
View File
@@ -1,6 +1,6 @@
<script>
import { open, save, confirm } from "@tauri-apps/plugin-dialog";
import { readBinaryFile } from "@tauri-apps/plugin-fs";
import { readFile } from "@tauri-apps/plugin-fs";
export let onMessage;
export let insecureRenderHtml;
@@ -55,7 +55,7 @@
} else {
var pathToRead = typeof res === "string" ? res : res.path;
var isFile = pathToRead.match(/\S+\.\S+$/g);
readBinaryFile(pathToRead)
readFile(pathToRead)
.then(function (response) {
if (isFile) {
if (
+124 -48
View File
@@ -1,17 +1,14 @@
<script>
import {
readBinaryFile,
writeTextFile,
readDir,
Dir,
} from "@tauri-apps/plugin-fs";
import { convertFileSrc } from "@tauri-apps/api/primitives";
import * as fs from "@tauri-apps/plugin-fs";
import { convertFileSrc } from "@tauri-apps/api/core";
export let onMessage;
export let insecureRenderHtml;
let pathToRead = "";
let path = "";
let img;
let file;
let renameTo;
function getDir() {
const dirSelect = document.getElementById("dir");
@@ -30,56 +27,123 @@
reader.readAsDataURL(blob);
}
const DirOptions = Object.keys(Dir)
const DirOptions = Object.keys(fs.BaseDirectory)
.filter((key) => isNaN(parseInt(key)))
.map((dir) => [dir, Dir[dir]]);
.map((dir) => [dir, fs.BaseDirectory[dir]]);
function open() {
fs.open(path, {
baseDir: getDir(),
read: true,
write: true,
create: true,
})
.then((f) => {
file = f;
onMessage(`Opened ${path}`);
})
.catch(onMessage);
}
function mkdir() {
fs.mkdir(path, { baseDir: getDir() })
.then(() => {
onMessage(`Created dir ${path}`);
})
.catch(onMessage);
}
function remove() {
fs.remove(path, { baseDir: getDir() })
.then(() => {
onMessage(`Removed ${path}`);
})
.catch(onMessage);
}
function rename() {
fs.rename(path, renameTo, {
oldPathBaseDir: getDir(),
newPathBaseDir: getDir(),
})
.then(() => {
onMessage(`Renamed ${path} to ${renameTo}`);
})
.catch(onMessage);
}
function truncate() {
file
.truncate(0)
.then(() => {
onMessage(`Truncated file`);
})
.catch(onMessage);
}
function stat() {
file
.stat()
.then((stat) => {
onMessage(`File stat ${JSON.stringify(stat)}`);
})
.catch(onMessage);
}
function read() {
const isFile = pathToRead.match(/\S+\.\S+$/g);
const opts = {
dir: getDir(),
baseDir: getDir(),
};
const promise = isFile
? readBinaryFile(pathToRead, opts)
: readDir(pathToRead, opts);
promise
.then(function (response) {
if (isFile) {
if (pathToRead.includes(".png") || pathToRead.includes(".jpg")) {
arrayBufferToBase64(new Uint8Array(response), function (base64) {
const src = "data:image/png;base64," + base64;
insecureRenderHtml('<img src="' + src + '"></img>');
});
} else {
const value = String.fromCharCode.apply(null, response);
insecureRenderHtml(
'<textarea id="file-response"></textarea><button id="file-save">Save</button>'
);
setTimeout(() => {
const fileInput = document.getElementById("file-response");
fileInput.value = value;
document
.getElementById("file-save")
.addEventListener("click", function () {
writeTextFile(pathToRead, fileInput.value, {
dir: getDir(),
}).catch(onMessage);
fs.stat(path, opts)
.then((stat) => {
const isFile = stat.isFile;
const promise = isFile
? fs.readFile(path, opts)
: fs.readDir(path, opts);
promise
.then(function (response) {
if (isFile) {
if (path.includes(".png") || path.includes(".jpg")) {
arrayBufferToBase64(
new Uint8Array(response),
function (base64) {
const src = "data:image/png;base64," + base64;
insecureRenderHtml('<img src="' + src + '"></img>');
}
);
} else {
const value = String.fromCharCode.apply(null, response);
insecureRenderHtml(
'<textarea id="file-response"></textarea><button id="file-save">Save</button>'
);
setTimeout(() => {
const fileInput = document.getElementById("file-response");
fileInput.value = value;
document
.getElementById("file-save")
.addEventListener("click", function () {
fs.writeTextFile(path, fileInput.value, {
dir: getDir(),
}).catch(onMessage);
});
});
});
}
} else {
onMessage(response);
}
}
} else {
onMessage(response);
}
})
.catch(onMessage);
})
.catch(onMessage);
}
function setSrc() {
img.src = convertFileSrc(pathToRead);
img.src = convertFileSrc(path);
}
</script>
<form class="flex flex-col" on:submit|preventDefault={read}>
<div class="flex flex-col">
<div class="flex gap-1">
<select class="input" id="dir">
<option value="">None</option>
@@ -89,17 +153,29 @@
</select>
<input
class="input grow"
id="path-to-read"
placeholder="Type the path to read..."
bind:value={pathToRead}
bind:value={path}
/>
</div>
<br />
<div>
<button class="btn" id="read">Read</button>
<button class="btn" on:click={open}>Open</button>
<button class="btn" on:click={read}>Read</button>
<button class="btn" on:click={mkdir}>Mkdir</button>
<button class="btn" on:click={remove}>Remove</button>
<div class="flex flex-row">
<button class="btn" on:click={rename}>Rename</button>
<input class="input" bind:value={renameTo} placeholder="To" />
</div>
<button class="btn" type="button" on:click={setSrc}>Use as img src</button>
</div>
</form>
{#if file}
<div>
<button class="btn" on:click={truncate}>Truncate</button>
<button class="btn" on:click={stat}>Stat</button>
</div>
{/if}
</div>
<br />
+126
View File
@@ -0,0 +1,126 @@
<script>
import { onMount } from "svelte";
import { write, scan, textRecord, uriRecord } from "@tauri-apps/plugin-nfc";
import * as os from "@tauri-apps/plugin-os";
export let onMessage;
const decoder = new TextDecoder();
let kind = "tag";
let writeToNfc = false;
let text = "";
let uri = "";
let scheme = "";
let host = "";
let pathPrefix = "";
let mimeType = "";
let isAndroid;
onMount(async () => {
isAndroid = (await os.platform()) === "android";
});
async function _readNfc() {
onMessage(`NFC scanning ${kind}`);
const tagResponse = await scan(
{
type: kind,
uri: {
scheme: scheme || null,
host: host || null,
pathPrefix: pathPrefix || null,
},
mimeType: mimeType || null,
},
{
keepSessionAlive: writeToNfc,
message: "Hold your iPhone near an NFC tag",
successMessage: "Tag successfully read",
}
);
onMessage({
id: decoder.decode(new Uint8Array(tagResponse.id)),
kind: tagResponse.kind,
records: tagResponse.records.map((record) => ({
id: decoder.decode(new Uint8Array(record.id)),
kind: decoder.decode(new Uint8Array(record.kind)),
payload: decoder.decode(new Uint8Array(record.payload)),
tnf: record.tnf,
})),
});
if (writeToNfc) {
const records = [];
if (text) {
records.push(textRecord(text, "tauriTextId"));
}
if (uri) {
records.push(uriRecord(uri, "tauriUriId"));
}
await write(records, {
successMessage: "Data written to tag",
});
onMessage("Wrote to tag");
}
}
function readNfc() {
_readNfc().catch(onMessage);
}
</script>
<div>
<div class="flex gap-2 children:grow items-center">
<div>
<input type="checkbox" id="nfc-write" bind:checked={writeToNfc} />
<label for="nfc-write">Write data</label>
</div>
<select class="input" id="request-method" bind:value={kind}>
<option value="tag">TAG</option>
<option value="ndef">NDEF</option>
</select>
</div>
{#if isAndroid}
<div class="flex flex-col gap-2 children:grow">
<p>Filters</p>
<div class="flex gap-2">
<input
class="input"
placeholder="Scheme"
style="width: 33%"
bind:value={scheme}
/>
<input
class="input"
placeholder="Host"
style="width: 33%"
bind:value={host}
/>
<input
class="input"
placeholder="Path prefix"
style="width: 33%"
bind:value={pathPrefix}
/>
</div>
<div class="flex gap-2">
<input class="input" placeholder="Mime type" bind:value={mimeType} />
</div>
</div>
{/if}
<div class="flex flex-col gap-2 children:grow">
<p>Write Records</p>
<div class="flex">
<input class="input" placeholder="Text record" bind:value={text} />
<input class="input" placeholder="URI record" bind:value={uri} />
</div>
</div>
<button class="btn" on:click={readNfc}>Scan</button>
</div>
+1 -1
View File
@@ -29,6 +29,6 @@
}
</script>
<button class="btn" id="notification" on:click={_sendNotification}>
<button class="btn" id="notification" on:click={sendNotification}>
Send test notification
</button>
+17 -10
View File
@@ -13,19 +13,19 @@
"@rollup/plugin-node-resolve": "15.2.3",
"@rollup/plugin-terser": "0.4.4",
"@rollup/plugin-typescript": "11.1.5",
"@typescript-eslint/eslint-plugin": "6.8.0",
"@typescript-eslint/parser": "6.8.0",
"@typescript-eslint/eslint-plugin": "6.13.2",
"@typescript-eslint/parser": "6.13.2",
"covector": "^0.10.2",
"eslint": "8.51.0",
"eslint-config-prettier": "9.0.0",
"eslint-config-standard-with-typescript": "39.1.1",
"eslint-plugin-import": "2.28.1",
"eslint-plugin-n": "16.2.0",
"eslint": "8.55.0",
"eslint-config-prettier": "9.1.0",
"eslint-config-standard-with-typescript": "40.0.0",
"eslint-plugin-import": "2.29.0",
"eslint-plugin-n": "16.3.1",
"eslint-plugin-promise": "6.1.1",
"eslint-plugin-security": "1.7.1",
"prettier": "3.0.3",
"rollup": "4.1.4",
"typescript": "5.2.2"
"prettier": "3.1.0",
"rollup": "4.6.1",
"typescript": "5.3.2"
},
"resolutions": {
"semver": ">=7.5.2",
@@ -33,5 +33,12 @@
},
"engines": {
"pnpm": ">=7.33.1"
},
"pnpm": {
"auditConfig": {
"ignoreCves": [
"CVE-2023-46115"
]
}
}
}
+13 -1
View File
@@ -1,8 +1,20 @@
# Changelog
## \[2.0.0-alpha.5]
- [`387c2f9`](https://github.com/tauri-apps/plugins-workspace/commit/387c2f9e0ce4c75c07ffa3fd76391a25b58f5daf)([#802](https://github.com/tauri-apps/plugins-workspace/pull/802)) Update to @tauri-apps/api v2.0.0-alpha.13.
## \[2.0.0-alpha.4]
- [`387c2f9`](https://github.com/tauri-apps/plugins-workspace/commit/387c2f9e0ce4c75c07ffa3fd76391a25b58f5daf)([#802](https://github.com/tauri-apps/plugins-workspace/pull/802)) Update to @tauri-apps/api v2.0.0-alpha.12.
## \[2.0.0-alpha.3]
- [`e438e0a`](https://github.com/tauri-apps/plugins-workspace/commit/e438e0a62d4b430a5159f05f13ecd397dd891a0d)([#676](https://github.com/tauri-apps/plugins-workspace/pull/676)) Update to @tauri-apps/api v2.0.0-alpha.11.
## \[2.0.0-alpha.2]
- [`5c13736`](https://github.com/tauri-apps/plugins-workspace/commit/5c137365c60790e8d4037d449e8237aa3fffdab0)([#673](https://github.com/tauri-apps/plugins-workspace/pull/673)) Update to @tauri-apps/api v2.0.0-alpha.16.
- [`5c13736`](https://github.com/tauri-apps/plugins-workspace/commit/5c137365c60790e8d4037d449e8237aa3fffdab0)([#673](https://github.com/tauri-apps/plugins-workspace/pull/673)) Update to @tauri-apps/api v2.0.0-alpha.9.
## \[2.0.0-alpha.2]
+3 -2
View File
@@ -1,6 +1,6 @@
[package]
name = "tauri-plugin-authenticator"
version = "2.0.0-alpha.3"
version = "2.0.0-alpha.6"
description = "Use hardware security-keys in your Tauri App."
authors = { workspace = true }
license = { workspace = true }
@@ -8,7 +8,8 @@ edition = { workspace = true }
rust-version = { workspace = true }
[package.metadata.docs.rs]
features = [ "tauri/dox" ]
rustc-args = [ "--cfg", "docsrs" ]
rustdoc-args = [ "--cfg", "docsrs" ]
[dependencies]
serde = { workspace = true }
+22 -6
View File
@@ -10,11 +10,11 @@ _This plugin requires a Rust version of at least **1.70**_
There are three general methods of installation that we can recommend.
1. Use crates.io and npm (easiest, and requires you to trust that our publishing pipeline worked)
1. Use crates.io and npm (easiest and requires you to trust that our publishing pipeline worked)
2. Pull sources directly from Github using git tags / revision hashes (most secure)
3. Git submodule install this repo in your tauri project and then use file protocol to ingest the source (most secure, but inconvenient to use)
3. Git submodule install this repo in your tauri project and then use the file protocol to ingest the source (most secure, but inconvenient to use)
Install the Core plugin by adding the following to your `Cargo.toml` file:
Install the authenticator plugin by adding the following lines to your `Cargo.toml` file:
`src-tauri/Cargo.toml`
@@ -50,7 +50,7 @@ yarn add https://github.com/tauri-apps/tauri-plugin-authenticator#v2
## Usage
First you need to register the core plugin with Tauri:
First, you need to register the authenticator plugin with Tauri:
`src-tauri/src/main.rs`
@@ -67,7 +67,7 @@ fn main() {
}
```
Afterwards all the plugin's APIs are available through the JavaScript guest bindings:
Afterwards, all the plugin's APIs are available through the JavaScript guest bindings:
```javascript
import { Authenticator } from "@tauri-apps/plugin-authenticator";
@@ -88,7 +88,7 @@ const domain = "https://tauri.app";
const json = await auth.register(challenge, domain);
const registerResult = JSON.parse(json);
// verify te registration was successfull
// verify the registration was successful
const r2 = await auth.verifyRegistration(
challenge,
app,
@@ -120,6 +120,22 @@ if (counter && counter > 0) {
PRs accepted. Please make sure to read the Contributing Guide before making a pull request.
## Partners
<table>
<tbody>
<tr>
<td align="center" valign="middle">
<a href="https://crabnebula.dev" target="_blank">
<img src="https://github.com/tauri-apps/plugins-workspace/raw/v2/.github/sponsors/crabnebula.svg" alt="CrabNebula" width="283">
</a>
</td>
</tr>
</tbody>
</table>
For the complete list of sponsors please visit our [website](https://tauri.app#sponsors) and [Open Collective](https://opencollective.com/tauri).
## License
Code: (c) 2015 - Present - The Tauri Programme within The Commons Conservancy.
+1 -1
View File
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
import { invoke } from "@tauri-apps/api/primitives";
import { invoke } from "@tauri-apps/api/core";
export class Authenticator {
async init(): Promise<void> {
+7 -11
View File
@@ -1,33 +1,29 @@
{
"name": "@tauri-apps/plugin-authenticator",
"version": "2.0.0-alpha.2",
"version": "2.0.0-alpha.5",
"description": "Use hardware security-keys in your Tauri App.",
"license": "MIT or APACHE-2.0",
"authors": [
"Tauri Programme within The Commons Conservancy"
],
"type": "module",
"browser": "dist-js/index.min.js",
"module": "dist-js/index.mjs",
"types": "dist-js/index.d.ts",
"types": "./dist-js/index.d.ts",
"main": "./dist-js/index.cjs",
"module": "./dist-js/index.js",
"exports": {
"import": "./dist-js/index.mjs",
"types": "./dist-js/index.d.ts",
"browser": "./dist-js/index.min.js"
"import": "./dist-js/index.js",
"require": "./dist-js/index.cjs"
},
"scripts": {
"build": "rollup -c"
},
"files": [
"dist-js",
"!dist-js/**/*.map",
"README.md",
"LICENSE"
],
"devDependencies": {
"tslib": "2.6.0"
},
"dependencies": {
"@tauri-apps/api": "2.0.0-alpha.9"
"@tauri-apps/api": "2.0.0-alpha.13"
}
}
+7
View File
@@ -0,0 +1,7 @@
// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
import { createConfig } from "../../shared/rollup.config.js";
export default createConfig();
-11
View File
@@ -1,11 +0,0 @@
import { readFileSync } from "fs";
import { createConfig } from "../../shared/rollup.config.mjs";
export default createConfig({
input: "guest-js/index.ts",
pkg: JSON.parse(
readFileSync(new URL("./package.json", import.meta.url), "utf8"),
),
external: [/^@tauri-apps\/api/],
});
+1 -1
View File
@@ -1 +1 @@
if("__TAURI__"in window){var __TAURI_AUTHENTICATOR__=function(e){"use strict";var t=Object.defineProperty,n=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)},i=(e,t,i)=>(n(e,t,"read from private field"),i?i.call(e):t.get(e));function a(e,t=!1){return window.__TAURI_INTERNALS__.transformCallback(e,t)}((e,n)=>{for(var i in n)t(e,i,{get:n[i],enumerable:!0})})({},{Channel:()=>s,PluginListener:()=>c,addPluginListener:()=>l,convertFileSrc:()=>u,invoke:()=>o,transformCallback:()=>a});var r,s=class{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,((e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)})(this,r,(()=>{})),this.id=a((e=>{i(this,r).call(this,e)}))}set onmessage(e){var t,i,a,s;a=e,n(t=this,i=r,"write to private field"),s?s.call(t,a):i.set(t,a)}get onmessage(){return i(this,r)}toJSON(){return`__CHANNEL__:${this.id}`}};r=new WeakMap;var c=class{constructor(e,t,n){this.plugin=e,this.event=t,this.channelId=n}async unregister(){return o(`plugin:${this.plugin}|remove_listener`,{event:this.event,channelId:this.channelId})}};async function l(e,t,n){let i=new s;return i.onmessage=n,o(`plugin:${e}|register_listener`,{event:t,handler:i}).then((()=>new c(e,t,i.id)))}async function o(e,t={},n){return window.__TAURI_INTERNALS__.invoke(e,t,n)}function u(e,t="asset"){return window.__TAURI_INTERNALS__.convertFileSrc(e,t)}return e.Authenticator=class{async init(){return await o("plugin:authenticator|init_auth")}async register(e,t){return await o("plugin:authenticator|register",{timeout:1e4,challenge:e,application:t})}async verifyRegistration(e,t,n,i){return await o("plugin:authenticator|verify_registration",{challenge:e,application:t,registerData:n,clientData:i})}async sign(e,t,n){return await o("plugin:authenticator|sign",{timeout:1e4,challenge:e,application:t,keyHandle:n})}async verifySignature(e,t,n,i,a,r){return await o("plugin:authenticator|verify_signature",{challenge:e,application:t,signData:n,clientData:i,keyHandle:a,pubkey:r})}},e}({});Object.defineProperty(window.__TAURI__,"authenticator",{value:__TAURI_AUTHENTICATOR__})}
if("__TAURI__"in window){var __TAURI_PLUGIN_AUTHENTICATOR__=function(t){"use strict";async function i(t,i={},a){return window.__TAURI_INTERNALS__.invoke(t,i,a)}"function"==typeof SuppressedError&&SuppressedError;return t.Authenticator=class{async init(){return await i("plugin:authenticator|init_auth")}async register(t,a){return await i("plugin:authenticator|register",{timeout:1e4,challenge:t,application:a})}async verifyRegistration(t,a,e,n){return await i("plugin:authenticator|verify_registration",{challenge:t,application:a,registerData:e,clientData:n})}async sign(t,a,e){return await i("plugin:authenticator|sign",{timeout:1e4,challenge:t,application:a,keyHandle:e})}async verifySignature(t,a,e,n,r,u){return await i("plugin:authenticator|verify_signature",{challenge:t,application:a,signData:e,clientData:n,keyHandle:r,pubkey:u})}},t}({});Object.defineProperty(window.__TAURI__,"authenticator",{value:__TAURI_PLUGIN_AUTHENTICATOR__})}
+13 -1
View File
@@ -1,8 +1,20 @@
# Changelog
## \[2.0.0-alpha.5]
- [`387c2f9`](https://github.com/tauri-apps/plugins-workspace/commit/387c2f9e0ce4c75c07ffa3fd76391a25b58f5daf)([#802](https://github.com/tauri-apps/plugins-workspace/pull/802)) Update to @tauri-apps/api v2.0.0-alpha.13.
## \[2.0.0-alpha.4]
- [`387c2f9`](https://github.com/tauri-apps/plugins-workspace/commit/387c2f9e0ce4c75c07ffa3fd76391a25b58f5daf)([#802](https://github.com/tauri-apps/plugins-workspace/pull/802)) Update to @tauri-apps/api v2.0.0-alpha.12.
## \[2.0.0-alpha.3]
- [`e438e0a`](https://github.com/tauri-apps/plugins-workspace/commit/e438e0a62d4b430a5159f05f13ecd397dd891a0d)([#676](https://github.com/tauri-apps/plugins-workspace/pull/676)) Update to @tauri-apps/api v2.0.0-alpha.11.
## \[2.0.0-alpha.2]
- [`5c13736`](https://github.com/tauri-apps/plugins-workspace/commit/5c137365c60790e8d4037d449e8237aa3fffdab0)([#673](https://github.com/tauri-apps/plugins-workspace/pull/673)) Update to @tauri-apps/api v2.0.0-alpha.16.
- [`5c13736`](https://github.com/tauri-apps/plugins-workspace/commit/5c137365c60790e8d4037d449e8237aa3fffdab0)([#673](https://github.com/tauri-apps/plugins-workspace/pull/673)) Update to @tauri-apps/api v2.0.0-alpha.9.
## \[2.0.0-alpha.2]
+4 -3
View File
@@ -1,6 +1,6 @@
[package]
name = "tauri-plugin-autostart"
version = "2.0.0-alpha.3"
version = "2.0.0-alpha.6"
description = "Automatically launch your application at startup."
authors = { workspace = true }
license = { workspace = true }
@@ -8,7 +8,8 @@ edition = { workspace = true }
rust-version = { workspace = true }
[package.metadata.docs.rs]
features = [ "tauri/dox" ]
rustc-args = [ "--cfg", "docsrs" ]
rustdoc-args = [ "--cfg", "docsrs" ]
[dependencies]
serde = { workspace = true }
@@ -16,4 +17,4 @@ serde_json = { workspace = true }
tauri = { workspace = true }
log = { workspace = true }
thiserror = { workspace = true }
auto-launch = "0.4"
auto-launch = "0.5"
+16
View File
@@ -75,6 +75,22 @@ disable();
PRs accepted. Please make sure to read the Contributing Guide before making a pull request.
## Partners
<table>
<tbody>
<tr>
<td align="center" valign="middle">
<a href="https://crabnebula.dev" target="_blank">
<img src="https://github.com/tauri-apps/plugins-workspace/raw/v2/.github/sponsors/crabnebula.svg" alt="CrabNebula" width="283">
</a>
</td>
</tr>
</tbody>
</table>
For the complete list of sponsors please visit our [website](https://tauri.app#sponsors) and [Open Collective](https://opencollective.com/tauri).
## License
Code: (c) 2015 - Present - The Tauri Programme within The Commons Conservancy.
+1 -1
View File
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
import { invoke } from "@tauri-apps/api/primitives";
import { invoke } from "@tauri-apps/api/core";
export async function isEnabled(): Promise<boolean> {
return await invoke("plugin:autostart|is_enabled");
+7 -11
View File
@@ -1,32 +1,28 @@
{
"name": "@tauri-apps/plugin-autostart",
"version": "2.0.0-alpha.2",
"version": "2.0.0-alpha.5",
"license": "MIT or APACHE-2.0",
"authors": [
"Tauri Programme within The Commons Conservancy"
],
"type": "module",
"browser": "dist-js/index.min.js",
"module": "dist-js/index.mjs",
"types": "dist-js/index.d.ts",
"types": "./dist-js/index.d.ts",
"main": "./dist-js/index.cjs",
"module": "./dist-js/index.js",
"exports": {
"import": "./dist-js/index.mjs",
"types": "./dist-js/index.d.ts",
"browser": "./dist-js/index.min.js"
"import": "./dist-js/index.js",
"require": "./dist-js/index.cjs"
},
"scripts": {
"build": "rollup -c"
},
"files": [
"dist-js",
"!dist-js/**/*.map",
"README.md",
"LICENSE"
],
"devDependencies": {
"tslib": "2.6.0"
},
"dependencies": {
"@tauri-apps/api": "2.0.0-alpha.9"
"@tauri-apps/api": "2.0.0-alpha.13"
}
}
+7
View File
@@ -0,0 +1,7 @@
// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
import { createConfig } from "../../shared/rollup.config.js";
export default createConfig();
-11
View File
@@ -1,11 +0,0 @@
import { readFileSync } from "fs";
import { createConfig } from "../../shared/rollup.config.mjs";
export default createConfig({
input: "guest-js/index.ts",
pkg: JSON.parse(
readFileSync(new URL("./package.json", import.meta.url), "utf8"),
),
external: [/^@tauri-apps\/api/],
});
+1 -1
View File
@@ -1 +1 @@
if("__TAURI__"in window){var __TAURI_AUTOSTART__=function(e){"use strict";var n=Object.defineProperty,t=(e,n,t)=>{if(!n.has(e))throw TypeError("Cannot "+t)},r=(e,n,r)=>(t(e,n,"read from private field"),r?r.call(e):n.get(e));function a(e,n=!1){return window.__TAURI_INTERNALS__.transformCallback(e,n)}((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})({},{Channel:()=>s,PluginListener:()=>o,addPluginListener:()=>_,convertFileSrc:()=>c,invoke:()=>l,transformCallback:()=>a});var i,s=class{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,((e,n,t)=>{if(n.has(e))throw TypeError("Cannot add the same private member more than once");n instanceof WeakSet?n.add(e):n.set(e,t)})(this,i,(()=>{})),this.id=a((e=>{r(this,i).call(this,e)}))}set onmessage(e){var n,r,a,s;a=e,t(n=this,r=i,"write to private field"),s?s.call(n,a):r.set(n,a)}get onmessage(){return r(this,i)}toJSON(){return`__CHANNEL__:${this.id}`}};i=new WeakMap;var o=class{constructor(e,n,t){this.plugin=e,this.event=n,this.channelId=t}async unregister(){return l(`plugin:${this.plugin}|remove_listener`,{event:this.event,channelId:this.channelId})}};async function _(e,n,t){let r=new s;return r.onmessage=t,l(`plugin:${e}|register_listener`,{event:n,handler:r}).then((()=>new o(e,n,r.id)))}async function l(e,n={},t){return window.__TAURI_INTERNALS__.invoke(e,n,t)}function c(e,n="asset"){return window.__TAURI_INTERNALS__.convertFileSrc(e,n)}return e.disable=async function(){await l("plugin:autostart|disable")},e.enable=async function(){await l("plugin:autostart|enable")},e.isEnabled=async function(){return await l("plugin:autostart|is_enabled")},e}({});Object.defineProperty(window.__TAURI__,"autostart",{value:__TAURI_AUTOSTART__})}
if("__TAURI__"in window){var __TAURI_PLUGIN_AUTOSTART__=function(n){"use strict";async function t(n,t={},a){return window.__TAURI_INTERNALS__.invoke(n,t,a)}return"function"==typeof SuppressedError&&SuppressedError,n.disable=async function(){await t("plugin:autostart|disable")},n.enable=async function(){await t("plugin:autostart|enable")},n.isEnabled=async function(){return await t("plugin:autostart|is_enabled")},n}({});Object.defineProperty(window.__TAURI__,"autostart",{value:__TAURI_PLUGIN_AUTOSTART__})}
+13 -1
View File
@@ -1,8 +1,20 @@
# Changelog
## \[2.0.0-alpha.4]
- [`387c2f9`](https://github.com/tauri-apps/plugins-workspace/commit/387c2f9e0ce4c75c07ffa3fd76391a25b58f5daf)([#802](https://github.com/tauri-apps/plugins-workspace/pull/802)) Update to @tauri-apps/api v2.0.0-alpha.13.
## \[2.0.0-alpha.3]
- [`387c2f9`](https://github.com/tauri-apps/plugins-workspace/commit/387c2f9e0ce4c75c07ffa3fd76391a25b58f5daf)([#802](https://github.com/tauri-apps/plugins-workspace/pull/802)) Update to @tauri-apps/api v2.0.0-alpha.12.
## \[2.0.0-alpha.2]
- [`e438e0a`](https://github.com/tauri-apps/plugins-workspace/commit/e438e0a62d4b430a5159f05f13ecd397dd891a0d)([#676](https://github.com/tauri-apps/plugins-workspace/pull/676)) Update to @tauri-apps/api v2.0.0-alpha.11.
## \[2.0.0-alpha.1]
- [`5c13736`](https://github.com/tauri-apps/plugins-workspace/commit/5c137365c60790e8d4037d449e8237aa3fffdab0)([#673](https://github.com/tauri-apps/plugins-workspace/pull/673)) Update to @tauri-apps/api v2.0.0-alpha.16.
- [`5c13736`](https://github.com/tauri-apps/plugins-workspace/commit/5c137365c60790e8d4037d449e8237aa3fffdab0)([#673](https://github.com/tauri-apps/plugins-workspace/pull/673)) Update to @tauri-apps/api v2.0.0-alpha.9.
## \[2.0.0-alpha.0]
+3 -5
View File
@@ -1,6 +1,6 @@
[package]
name = "tauri-plugin-barcode-scanner"
version = "2.0.0-alpha.1"
version = "2.0.0-alpha.4"
description = "Scan QR codes, EAN-13 and other kinds of barcodes on Android and iOS"
edition = { workspace = true }
authors = { workspace = true }
@@ -9,7 +9,8 @@ rust-version = { workspace = true }
links = "tauri-plugin-barcode-scanner"
[package.metadata.docs.rs]
features = [ "dox" ]
rustc-args = [ "--cfg", "docsrs" ]
rustdoc-args = [ "--cfg", "docsrs" ]
targets = [ "x86_64-linux-android" ]
[build-dependencies]
@@ -21,6 +22,3 @@ serde_json = { workspace = true }
tauri = { workspace = true }
log = { workspace = true }
thiserror = { workspace = true }
[features]
dox = [ "tauri/dox" ]
+17 -1
View File
@@ -1,4 +1,4 @@
![Barcode Scanner](banner.png)
![Barcode Scanner](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/scanner/banner.png)
Allows your mobile application to use the camera to scan QR codes, EAN-13 and other kinds of barcodes.
@@ -91,6 +91,22 @@ PRs accepted. Please make sure to read the Contributing Guide before making a pu
</tbody>
</table>
## Partners
<table>
<tbody>
<tr>
<td align="center" valign="middle">
<a href="https://crabnebula.dev" target="_blank">
<img src="https://github.com/tauri-apps/plugins-workspace/raw/v2/.github/sponsors/crabnebula.svg" alt="CrabNebula" width="283">
</a>
</td>
</tr>
</tbody>
</table>
For the complete list of sponsors please visit our [website](https://tauri.app#sponsors) and [Open Collective](https://opencollective.com/tauri).
## License
Code: (c) 2015 - Present - The Tauri Programme within The Commons Conservancy.
+66
View File
@@ -0,0 +1,66 @@
# Security Policy
**Do not report security vulnerabilities through public GitHub issues.**
**Please use the [Private Vulnerability Disclosure](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing-information-about-vulnerabilities/privately-reporting-a-security-vulnerability#privately-reporting-a-security-vulnerability) feature of GitHub.**
Include as much of the following information:
- Type of issue (e.g. improper input parsing, privilege escalation, etc.)
- The location of the affected source code (tag/branch/commit or direct URL)
- Any special configuration required to reproduce the issue
- The distribution affected or used to help us with reproduction of the issue
- Step-by-step instructions to reproduce the issue
- Ideally a reproduction repository
- Impact of the issue, including how an attacker might exploit the issue
We prefer to receive reports in English.
## Contact
Please disclose a vulnerability or security relevant issue here: [https://github.com/tauri-apps/plugins-workspace/security/advisories/new](https://github.com/tauri-apps/plugins-workspace/security/advisories/new).
Alternatively, you can also contact us by email via [security@tauri.app](mailto:security@tauri.app).
## Threat Model
As there are only the `scan` and `cancel` commands exposed to the frontend,
there is no additional risk or exposure of additional information.
Only barcodes are passed and no raw camera access is used, which means no images are available to the frontend.
The application is only usable on iOS and Android and therefore the specific mobile operating system security boundaries need to be considered.
### Security Assumptions
- The QR code parsing into a link/text is trusted and correctly handled by the mobile operating system
- The link itself is untrusted and additional validation/sanitization needs to be handled by the app developer
- The camera is not passing images to the app
- The camera permission is granted at first use by the user and can be revoked at any time
- The Android manifest also states that the camera permission is required
### Threats
#### Silent Interaction
##### When is it possible?
The following threat is either caused by a malicious developer, which has further implications and should be considered as a full compromise of an application or system, or by
compromise of the application frontend. In the second case there are several impact minimization methods (e.g. the CSP) and if all of these fail the possible risk could occur.
Therefore it is unlikely to occur in most cases but should be considered when using this plugin.
##### What is possible?
The camera has two modes. The first one is where the user can see the background camera image and no further interaction is possible.
The second mode allows the developer to assist the user and add a transparent overlay to the image, providing hints or additional information (like a link preview).
The overlay could be made non-transparent by the application frontend and as long as the app is open (and in some cases) it could read QR codes in range of the camera lense.
#### Out Of Scope
- Exploits in the operating system QR code parsing functionality
- Exploits based on the string passed to the application using this plugin
- Continous camera/QR scan usage even when application is in background
## Best Practices
There is no additional exposure aside from reading barcodes in the webview and there are no specific best practices for secure usage.
@@ -37,6 +37,7 @@ import app.tauri.Logger
import app.tauri.PermissionState
import app.tauri.annotation.ActivityCallback
import app.tauri.annotation.Command
import app.tauri.annotation.InvokeArg
import app.tauri.annotation.Permission
import app.tauri.annotation.PermissionCallback
import app.tauri.annotation.TauriPlugin
@@ -57,6 +58,13 @@ private const val PERMISSION_ALIAS_CAMERA = "camera"
private const val PERMISSION_NAME = Manifest.permission.CAMERA
private const val PREFS_PERMISSION_FIRST_TIME_ASKING = "PREFS_PERMISSION_FIRST_TIME_ASKING"
@InvokeArg
class ScanOptions {
var formats: Array<String>? = null
var windowed: Boolean = false
var cameraDirection: String? = null
}
@TauriPlugin(
permissions = [
Permission(strings = [Manifest.permission.CAMERA], alias = "camera")
@@ -206,19 +214,12 @@ class BarcodeScannerPlugin(private val activity: Activity) : Plugin(activity),
}
}
private fun getFormats(invoke: Invoke): List<Int> {
val jsFormats = invoke.getArray("formats", JSArray())
private fun getFormats(args: ScanOptions): List<Int> {
val formats = ArrayList<Int>()
for (i in 0 until jsFormats.length()) {
try {
val targetedFormat: String = jsFormats.getString(i)
val targetedBarcodeFormat =
supportedFormats[targetedFormat]
if (targetedBarcodeFormat != null) {
formats.add(targetedBarcodeFormat)
}
} catch (e: JSONException) {
e.printStackTrace()
for (format in args.formats ?: arrayOf()) {
val targetedBarcodeFormat = supportedFormats[format]
if (targetedBarcodeFormat != null) {
formats.add(targetedBarcodeFormat)
}
}
return formats
@@ -341,14 +342,16 @@ class BarcodeScannerPlugin(private val activity: Activity) : Plugin(activity),
@Command
fun scan(invoke: Invoke) {
val args = invoke.parseArgs(ScanOptions::class.java)
savedInvoke = invoke
if (hasCamera()) {
if (getPermissionState("camera") != PermissionState.GRANTED) {
throw Exception("No permission to use camera. Did you request it yet?")
} else {
webViewBackground = null
prepare(invoke.getString("cameraDirection", "back"), invoke.getBoolean("windowed", false))
configureCamera(getFormats(invoke))
prepare(args.cameraDirection ?: "back", args.windowed)
configureCamera(getFormats(args))
}
}
}
+1 -1
View File
@@ -10,7 +10,7 @@ fn main() {
{
println!("{error:#}");
// when building documentation for Android the plugin build result is irrelevant to the crate itself
if !(cfg!(feature = "dox") && std::env::var("TARGET").unwrap().contains("android")) {
if !(cfg!(docsrs) && std::env::var("TARGET").unwrap().contains("android")) {
std::process::exit(1);
}
}
+1 -1
View File
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
import { invoke } from "@tauri-apps/api/primitives";
import { invoke } from "@tauri-apps/api/core";
export type PermissionState = "granted" | "denied" | "prompt";
@@ -7,7 +7,13 @@ import Tauri
import UIKit
import WebKit
enum SupportedFormat: String, CaseIterable {
struct ScanOptions: Decodable {
var formats: [SupportedFormat] = []
let windowed: Bool?
let cameraDirection: String?
}
enum SupportedFormat: String, CaseIterable, Decodable {
// UPC_A not supported
case UPC_E
case EAN_8
@@ -232,19 +238,11 @@ class BarcodeScannerPlugin: Plugin, AVCaptureMetadataOutputObjectsDelegate {
}
}
private func runScanner(_ invoke: Invoke) {
private func runScanner(_ invoke: Invoke, args: ScanOptions) {
scanFormats = [AVMetadataObject.ObjectType]()
if (invoke.data["formats"]) != nil {
let _scanFormats = invoke.getArray("formats", String.self)
if _scanFormats != nil && _scanFormats?.count ?? 0 > 0 {
_scanFormats?.forEach { targetedFormat in
if let value = SupportedFormat(rawValue: targetedFormat)?.value {
scanFormats.append(value)
}
}
}
args.formats.forEach { format in
scanFormats.append(format.value)
}
if scanFormats.count == 0 {
@@ -259,7 +257,9 @@ class BarcodeScannerPlugin: Plugin, AVCaptureMetadataOutputObjectsDelegate {
self.isScanning = true
}
@objc private func scan(_ invoke: Invoke) {
@objc private func scan(_ invoke: Invoke) throws {
let args = try invoke.parseArgs(ScanOptions.self)
self.invoke = invoke
var iOS14min: Bool = false
@@ -279,10 +279,10 @@ class BarcodeScannerPlugin: Plugin, AVCaptureMetadataOutputObjectsDelegate {
self.loadCamera()
self.dismantleCamera()
self.setupCamera(
direction: invoke.getString("cameraDirection") ?? "back",
windowed: invoke.getBool("windowed") ?? false
direction: args.cameraDirection ?? "back",
windowed: args.windowed ?? false
)
self.runScanner(invoke)
self.runScanner(invoke, args: args)
}
}
+7 -11
View File
@@ -1,33 +1,29 @@
{
"name": "@tauri-apps/plugin-barcode-scanner",
"version": "2.0.0-alpha.1",
"version": "2.0.0-alpha.4",
"description": "Scan QR codes, EAN-13 and other kinds of barcodes on Android and iOS",
"license": "MIT or APACHE-2.0",
"authors": [
"Tauri Programme within The Commons Conservancy"
],
"type": "module",
"browser": "dist-js/index.min.js",
"module": "dist-js/index.mjs",
"types": "dist-js/index.d.ts",
"types": "./dist-js/index.d.ts",
"main": "./dist-js/index.cjs",
"module": "./dist-js/index.js",
"exports": {
"import": "./dist-js/index.mjs",
"types": "./dist-js/index.d.ts",
"browser": "./dist-js/index.min.js"
"import": "./dist-js/index.js",
"require": "./dist-js/index.cjs"
},
"scripts": {
"build": "rollup -c"
},
"files": [
"dist-js",
"!dist-js/**/*.map",
"README.md",
"LICENSE"
],
"devDependencies": {
"tslib": "^2.5.0"
},
"dependencies": {
"@tauri-apps/api": "2.0.0-alpha.9"
"@tauri-apps/api": "2.0.0-alpha.13"
}
}
+7
View File
@@ -0,0 +1,7 @@
// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
import { createConfig } from "../../shared/rollup.config.js";
export default createConfig();
-11
View File
@@ -1,11 +0,0 @@
import { readFileSync } from "fs";
import { createConfig } from "../../shared/rollup.config.mjs";
export default createConfig({
input: "guest-js/index.ts",
pkg: JSON.parse(
readFileSync(new URL("./package.json", import.meta.url), "utf8"),
),
external: [/^@tauri-apps\/api/],
});
+1 -1
View File
@@ -1 +1 @@
if("__TAURI__"in window){var __TAURI_BARCODESCANNER__=function(e){"use strict";var n=Object.defineProperty,t=(e,n,t)=>{if(!n.has(e))throw TypeError("Cannot "+t)},r=(e,n,r)=>(t(e,n,"read from private field"),r?r.call(e):n.get(e));function a(e,n=!1){return window.__TAURI_INTERNALS__.transformCallback(e,n)}((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})({},{Channel:()=>s,PluginListener:()=>o,addPluginListener:()=>_,convertFileSrc:()=>l,invoke:()=>u,transformCallback:()=>a});var i,s=class{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,((e,n,t)=>{if(n.has(e))throw TypeError("Cannot add the same private member more than once");n instanceof WeakSet?n.add(e):n.set(e,t)})(this,i,(()=>{})),this.id=a((e=>{r(this,i).call(this,e)}))}set onmessage(e){var n,r,a,s;a=e,t(n=this,r=i,"write to private field"),s?s.call(n,a):r.set(n,a)}get onmessage(){return r(this,i)}toJSON(){return`__CHANNEL__:${this.id}`}};i=new WeakMap;var c,o=class{constructor(e,n,t){this.plugin=e,this.event=n,this.channelId=t}async unregister(){return u(`plugin:${this.plugin}|remove_listener`,{event:this.event,channelId:this.channelId})}};async function _(e,n,t){let r=new s;return r.onmessage=t,u(`plugin:${e}|register_listener`,{event:n,handler:r}).then((()=>new o(e,n,r.id)))}async function u(e,n={},t){return window.__TAURI_INTERNALS__.invoke(e,n,t)}function l(e,n="asset"){return window.__TAURI_INTERNALS__.convertFileSrc(e,n)}return e.Format=void 0,(c=e.Format||(e.Format={})).QRCode="QR_CODE",c.UPC_A="UPC_A",c.UPC_E="UPC_E",c.EAN8="EAN_8",c.EAN13="EAN_13",c.Code39="CODE_39",c.Code93="CODE_93",c.Code128="CODE_128",c.Codabar="CODABAR",c.ITF="ITF",c.Aztec="AZTEC",c.DataMatrix="DATA_MATRIX",c.PDF417="PDF_417",e.cancel=async function(){return await u("plugin:barcodeScanner|cancel")},e.checkPermissions=async function(){return await u("plugin:barcodeScanner|checkPermissions").then((e=>e.camera))},e.openAppSettings=async function(){return await u("plugin:barcodeScanner|openAppSettings")},e.requestPermissions=async function(){return await u("plugin:barcodeScanner|requestPermissions").then((e=>e.camera))},e.scan=async function(e){return await u("plugin:barcodeScanner|scan",{...e})},e}({});Object.defineProperty(window.__TAURI__,"barcodeScanner",{value:__TAURI_BARCODESCANNER__})}
if("__TAURI__"in window){var __TAURI_PLUGIN_BARCODESCANNER__=function(n){"use strict";async function e(n,e={},r){return window.__TAURI_INTERNALS__.invoke(n,e,r)}var r;return"function"==typeof SuppressedError&&SuppressedError,n.Format=void 0,(r=n.Format||(n.Format={})).QRCode="QR_CODE",r.UPC_A="UPC_A",r.UPC_E="UPC_E",r.EAN8="EAN_8",r.EAN13="EAN_13",r.Code39="CODE_39",r.Code93="CODE_93",r.Code128="CODE_128",r.Codabar="CODABAR",r.ITF="ITF",r.Aztec="AZTEC",r.DataMatrix="DATA_MATRIX",r.PDF417="PDF_417",n.cancel=async function(){return await e("plugin:barcodeScanner|cancel")},n.checkPermissions=async function(){return await e("plugin:barcodeScanner|checkPermissions").then((n=>n.camera))},n.openAppSettings=async function(){return await e("plugin:barcodeScanner|openAppSettings")},n.requestPermissions=async function(){return await e("plugin:barcodeScanner|requestPermissions").then((n=>n.camera))},n.scan=async function(n){return await e("plugin:barcodeScanner|scan",{...n})},n}({});Object.defineProperty(window.__TAURI__,"barcodeScanner",{value:__TAURI_PLUGIN_BARCODESCANNER__})}
+1
View File
@@ -0,0 +1 @@
/.tauri
+5
View File
@@ -0,0 +1,5 @@
# Changelog
## \[2.0.0-alpha.0]
- [`8df28a9`](https://github.com/tauri-apps/plugins-workspace/commit/8df28a987519ecfa03dcb8635443025f8d010362)([#829](https://github.com/tauri-apps/plugins-workspace/pull/829)) Initial release.
+23
View File
@@ -0,0 +1,23 @@
[package]
name = "tauri-plugin-biometric"
version = "2.0.0-alpha.0"
description = "Prompt the user for biometric authentication on Android and iOS."
edition = { workspace = true }
authors = { workspace = true }
license = { workspace = true }
links = "tauri-plugin-biometric"
[package.metadata.docs.rs]
rustc-args = ["--cfg", "docsrs"]
rustdoc-args = ["--cfg", "docsrs"]
[build-dependencies]
tauri-build = { workspace = true }
[dependencies]
serde = { workspace = true }
serde_json = { workspace = true }
tauri = { workspace = true }
log = { workspace = true }
thiserror = { workspace = true }
serde_repr = "0.1"
+20
View File
@@ -0,0 +1,20 @@
SPDXVersion: SPDX-2.1
DataLicense: CC0-1.0
PackageName: tauri
DataFormat: SPDXRef-1
PackageSupplier: Organization: The Tauri Programme in the Commons Conservancy
PackageHomePage: https://tauri.app
PackageLicenseDeclared: Apache-2.0
PackageLicenseDeclared: MIT
PackageCopyrightText: 2019-2022, The Tauri Programme in the Commons Conservancy
PackageSummary: <text>Tauri is a rust project that enables developers to make secure
and small desktop applications using a web frontend.
</text>
PackageComment: <text>The package includes the following libraries; see
Relationship information.
</text>
Created: 2019-05-20T09:00:00Z
PackageDownloadLocation: git://github.com/tauri-apps/tauri
PackageDownloadLocation: git+https://github.com/tauri-apps/tauri.git
PackageDownloadLocation: git+ssh://github.com/tauri-apps/tauri.git
Creator: Person: Daniel Thompson-Yvetot
+177
View File
@@ -0,0 +1,177 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2017 - Present Tauri Apps Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+112
View File
@@ -0,0 +1,112 @@
![biometric](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/biometric/banner.png)
Prompt the user for biometric authentication on Android and iOS.
## Install
_This plugin requires a Rust version of at least **1.65**_
There are three general methods of installation that we can recommend.
1. Use crates.io and npm (easiest, and requires you to trust that our publishing pipeline worked)
2. Pull sources directly from Github using git tags / revision hashes (most secure)
3. Git submodule install this repo in your tauri project and then use file protocol to ingest the source (most secure, but inconvenient to use)
Install the Core plugin by adding the following to your `Cargo.toml` file:
`src-tauri/Cargo.toml`
```toml
[dependencies]
tauri-plugin-biometric = "2.0.0-alpha"
# alternatively with Git:
tauri-plugin-biometric = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" }
```
You can install the JavaScript Guest bindings using your preferred JavaScript package manager:
> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use.
<!-- Add the branch for installations using git! -->
```sh
pnpm add @tauri-apps/plugin-biometric
# or
npm add @tauri-apps/plugin-biometric
# or
yarn add @tauri-apps/plugin-biometric
# alternatively with Git:
pnpm add https://github.com/tauri-apps/tauri-plugin-biometric#v2
# or
npm add https://github.com/tauri-apps/tauri-plugin-biometric#v2
# or
yarn add https://github.com/tauri-apps/tauri-plugin-biometric#v2
```
## Usage
First you need to register the core plugin with Tauri:
`src-tauri/src/main.rs`
```rust
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_biometric::init())
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
```
Afterwards all the plugin's APIs are available through the JavaScript guest bindings:
```javascript
import { authenticate } from "@tauri-apps/plugin-biometric";
await authenticate('Open your wallet');
```
## Contributing
PRs accepted. Please make sure to read the Contributing Guide before making a pull request.
## Contributed By
<table>
<tbody>
<tr>
<td align="center" valign="middle">
<a href="https://crabnebula.dev" target="_blank">
<img src="contributors/crabnebula.svg" alt="CrabNebula" width="283">
</a>
</td>
<td align="center" valign="middle">
<a href="https://impierce.com" target="_blank">
<img src="contributors/impierce.svg" alt="Impierce" width="283" height="90">
</a>
</td>
</tr>
</tbody>
</table>
## Partners
<table>
<tbody>
<tr>
<td align="center" valign="middle">
<a href="https://crabnebula.dev" target="_blank">
<img src="https://github.com/tauri-apps/plugins-workspace/raw/v2/.github/sponsors/crabnebula.svg" alt="CrabNebula" width="283">
</a>
</td>
</tr>
</tbody>
</table>
For the complete list of sponsors please visit our [website](https://tauri.app#sponsors) and [Open Collective](https://opencollective.com/tauri).
## License
Code: (c) 2015 - Present - The Tauri Programme within The Commons Conservancy.
MIT or MIT/Apache 2.0 where applicable.
+2
View File
@@ -0,0 +1,2 @@
/build
/.tauri
@@ -0,0 +1,45 @@
plugins {
id("com.android.library")
id("org.jetbrains.kotlin.android")
}
android {
namespace = "app.tauri.biometric"
compileSdk = 32
defaultConfig {
minSdk = 24
targetSdk = 32
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles("consumer-rules.pro")
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
}
dependencies {
implementation("androidx.biometric:biometric:1.1.0")
implementation("androidx.core:core-ktx:1.9.0")
implementation("androidx.appcompat:appcompat:1.6.0")
implementation("com.google.android.material:material:1.7.0")
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
implementation(project(":tauri-android"))
}
+21
View File
@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
@@ -0,0 +1,2 @@
include ':tauri-android'
project(':tauri-android').projectDir = new File('./.tauri/tauri-api')

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