Compare commits

..
Author SHA1 Message Date
fabianlars 0fd529ae22 revert 2024-12-02 22:31:52 +01:00
fabianlars f71be86d47 temp 2024-12-02 22:28:41 +01:00
FabianLars 7d9dfaeb9e lint 2024-11-26 15:40:14 +01:00
FabianLars 2c00f7ddad shell 2024-11-26 15:04:53 +01:00
FabianLars 0f310e75ed fix 2024-11-26 14:57:41 +01:00
FabianLars bf3e8a0b8a fix(opener): Try /usr/bin/xdg-open first 2024-11-26 14:47:35 +01:00
Roman SteinerandGitHub 3fa0fc09bb fix(clipboard): alt_text in write_html command not being passed with correct argument name (#2099) 2024-11-26 14:32:24 +02:00
ayangandGitHub fef76bd504 feat(fs): add the size method to get the size of a file or directory (#2095) 2024-11-26 14:09:42 +02:00
jLynxandGitHub f8f2eefe03 feat(updater): Add .deb Package Support to Linux Updater (#1991) 2024-11-26 13:48:37 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
c665818395 chore(deps): update dependency prettier to v3.4.0 (#2097)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-26 09:20:21 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2ba68760b9 chore(deps): update dependency typescript-eslint to v8.16.0 (v2) (#2096)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-25 21:49:38 +01:00
SoSweetHamandGitHub 5070476816 docs(store): Fix file reference (#2094) 2024-11-25 15:21:36 +01:00
Fabian-LarsandGitHub 51cd283a5f docs(deep-link): Fix js inline docs (#2093) 2024-11-25 13:46:08 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
d44f0ee7a7 chore(deps): update dependency typescript to v5.7.2 (v2) (#2084)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-25 10:37:42 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
b1b0565d12 chore(deps): update dependency rollup to v4.27.4 (v2) (#2086)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-25 10:27:15 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
db526a1c97 chore(deps): lock file maintenance (#2090)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-25 10:05:40 +08:00
Amr BashirandGitHub a3b553ddb4 feat(http): add request and response tracing behind feature flag (#2079) 2024-11-21 17:08:34 +02:00
Fabian-LarsandGitHub fecfd5533a fix(fs)!: use tauri::scope::fs::Scope (#2070) 2024-11-21 16:57:25 +02:00
Amr BashirandGitHub ed981027dd feat(fs): improve readTextFile and readTextFileLines performance (#1962) 2024-11-21 15:43:51 +02:00
Amr BashirandGitHub 5092ea5e89 feat(fs): support ReadableStream<Unit8Array> for writeFile API (#1964) 2024-11-21 14:49:40 +02:00
Fabian-LarsandGitHub ac2edc2159 docs(notification): Add note about installation requirement on windows 2024-11-20 21:42:27 +01:00
amrbashir 59dd5f105a chore: fmt toml 2024-11-20 03:35:19 +02:00
Jakob WesthoffandGitHub 4db626354c feat(positioner): add moveWindowConstrained for tray-icon positions (#2076) 2024-11-20 02:05:37 +02:00
Amr BashirandGitHub 383e636a8e feat: add tauri-plugin-opener (#2019) 2024-11-20 00:50:02 +02:00
Vinicius CestariandGitHub 1051db406a docs(clipboard-manager): update readImage doc to use async rgba() instead of bytes (#2077) 2024-11-19 21:06:29 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
ee3fb1dba6 chore(deps): update eslint monorepo to v9.15.0 (#2058)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-18 21:37:34 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
c34b2ea824 chore(deps): update dependency typescript-eslint to v8.15.0 (#2072)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-18 21:33:20 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
8a33595bbe chore(deps): update dependency rollup to v4.27.3 (#2071)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-18 21:30:34 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
ff05a59e60 chore(deps): update rust crate mockito to 1.6.1 (#2068)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-18 10:39:43 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
bea474c550 chore(deps): lock file maintenance (#2065)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-18 11:35:21 +08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
e5476aac94 chore(deps): update dependency rollup to v4.27.2 (v2) (#2056)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-16 15:10:38 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
7f025e5240 chore(deps): update dependency rollup to v4.27.0 (v2) (#2053)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-15 12:08:10 +01:00
Jérôme BousquiéandGitHub 5700bd2213 docs: document permissions example for geolocation plugin (#2044) 2024-11-14 17:58:11 +02:00
Fabian-LarsandGitHub d402c3865a fix(sql): more explicit error if no driver is enabled (#2047) 2024-11-13 23:43:58 +01:00
John CarmackandGitHub 90ef77c872 fix(sql) Allow tauri-plugin-sql to work when Tauri is running async (#2038) 2024-11-13 16:58:50 +01:00
Fabian-LarsandGitHub 51856e9e0a docs: Remove header image from inline docs (#2045) 2024-11-13 16:07:29 +01:00
Jérôme BousquiéandGitHub 9741b97e8c docs(geolocation): Fix js import example (#2043) 2024-11-13 14:54:15 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
e421b9a2c0 chore(deps): update dependency rollup to v4.26.0 (v2) (#2041)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 11:58:26 +01:00
TonyandGitHub 371a2f7361 fix(log): inconsistent webview log target (#2021)
* Fix very inconsistent webview log target

* Add change file

* It's log-plugin not log

* Lower rust version requirement

* Use the third line instead of second
2024-11-12 10:10:38 +08:00
Fabian-LarsandGitHub 52c093ac9d docs(fs): Fix scope example in js inline docs (#2034) 2024-11-12 00:20:36 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
6d6508f18e chore(deps): update dependency typescript-eslint to v8.14.0 (v2) (#2035)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-11 19:01:45 +01:00
Fabian-LarsandGitHub 3fa814d1f0 docs(websocket): fix short description (server -> client) 2024-11-11 18:52:54 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>FabianLars
1fe3dab64c fix(deps): update rust crate thiserror to v2 (v2) (#2012)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: FabianLars <fabianlars@fabianlars.de>
2024-11-11 18:33:58 +01:00
5dadd205f5 feat(upload): add progressTotal to event payload (#2033)
Co-authored-by: Fabian-Lars <github@fabianlars.de>
2024-11-11 17:54:59 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>Fabian-Lars
3e15acea9a fix(deps): update tauri monorepo (v2) (#2026)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Fabian-Lars <github@fabianlars.de>
2024-11-11 17:28:35 +01:00
Amr BashirandGitHub 3e78173df9 fix(fs): ignore metadata error while reading dir entries (#2018)
* fix(fs):  ignore metadata error while reading dir entries

closes #2014

* remove package manager
2024-11-11 18:02:03 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
64fac08bfb chore(deps): update dependency rollup to v4.25.0 (v2) (#2024)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-11 16:56:04 +01:00
Fabian-LarsandGitHub fdc382dff0 chore(example): Add Haptics page (#2032) 2024-11-11 16:53:56 +01:00
Fabian-LarsandGitHub b2aea04567 fix(deep-link): Remove getCurrent call in onOpenUrl (#2008) 2024-11-09 10:05:46 -03:00
3449dd5a8f feat(localhost): add custom host binding to allow external access (#1982)
Co-authored-by: Fabian-Lars <github@fabianlars.de>
2024-11-06 11:52:49 +01:00
57f69c6615 Publish New Versions (v2) (#1966)
Co-authored-by: FabianLars <FabianLars@users.noreply.github.com>
2024-11-05 17:32:55 +01:00
Fabian-LarsandGitHub cfb3ec0e21 fix(window-state): Ignore is_maximized state in resize events on macos (#2007) 2024-11-05 17:01:35 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
b8bf4ad360 chore(deps): update unocss monorepo to ^0.64.0 (v2) (#2006)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-05 13:23:46 +01:00
87cc58527d feat(upload): Add transfer_speed for downloading and uploading files (#1797)
Co-authored-by: Victor Aremu <me@victorare.mu>
Co-authored-by: Fabian-Lars <github@fabianlars.de>
2024-11-04 22:41:48 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
e0d2e2c53f chore(deps): update dependency typescript-eslint to v8.13.0 (#2004)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-04 19:36:33 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>FabianLars
9a7092ca44 fix(deps): update rust crate notify to v7 (v2) (#1999)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: FabianLars <fabianlars@fabianlars.de>
2024-11-04 15:56:31 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>Fabian-Lars
606fa08dae fix(deps): update rust crate fern to 0.7 (v2) (#1997)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>
2024-11-04 15:00:01 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
62f1e40682 chore(deps): update eslint monorepo to v9.14.0 (v2) (#1996)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-04 13:23:13 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>FabianLars
c8e5614063 chore(deps): update dependency svelte to v5 (v2) (#1956)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: FabianLars <fabianlars@fabianlars.de>
2024-11-04 13:16:36 +01:00
Fabian-LarsandGitHub 03c255ae20 chore(readme): Add new plugins and update support table (#1993) 2024-11-04 13:57:38 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
a706748dd3 fix(deps): update tauri monorepo (v2) (#1994)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-04 12:29:34 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
7c1046d239 chore(deps): update dependency rollup to v4.24.4 (v2) (#1844)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-04 12:28:44 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
a90f36b07e chore(deps): update dependency typescript-eslint to v8.12.2 (v2) (#1995)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-04 12:25:26 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
e5249cff0b chore(deps): update dependency tslib to v2.8.1 (v2) (#1943)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-04 12:06:26 +01:00
RikaandGitHub d57df4debe fix(clipboard-manager): read_image wrongly set the image rgba data with binary PNG data. (#1986)
* fix(clipboard-manager): `read_image` wrongly set the image rgba data with binary PNG data.

* remove depencency of `image` crate; add patch file
2024-10-30 20:29:14 +03:00
Amr BashirandGitHub 1f649c7f1f chore: print a warning in development for forbidden headers (#1981)
* chore: print a warning in development for forbidden headers

closes #1979

* Update plugins/http/src/commands.rs
2024-10-30 15:26:46 +03:00
YoggieSandGitHub 0ca4cc914c docs(sql): docs of frontend Database select method (#1963) 2024-10-30 10:53:04 +01:00
Amr BashirandGitHub 9dcad78f44 docs(fs): fix default permission documentation (#1980) 2024-10-30 10:50:00 +01:00
阿良仔andGitHub 4341d7f500 fix(sql): replace Mutex with RwLock to enable concurrent SQL execution (#1972) 2024-10-26 13:19:59 +02:00
Amr BashirandGitHub 77149dc432 fix(fs): fix writeFile converting UTF-8 characters in path into replacement character (#1965) 2024-10-22 08:17:37 +03:00
525abc4be5 Publish New Versions (v2) (#1961)
Co-authored-by: amrbashir <amrbashir@users.noreply.github.com>
2024-10-21 15:13:27 +03:00
bWanShiTongandGitHub 14cee64c82 fix(fs): fix compilation on targets with pointer width 16 and 32 (#1958) 2024-10-21 15:07:55 +03:00
3fd283121f publish new versions (#1909)
Co-authored-by: lucasfernog <lucasfernog@users.noreply.github.com>
2024-10-20 08:54:26 -03:00
ae8024565f perf(fs): improve FileHandle.read performance (#1950)
* perf(fs): improve `FileHandle.read` performance

* handle different target pointer width

* improve `writeTextFile` performance

* revert packageManager field

* change file

---------

Co-authored-by: Lucas Nogueira <lucas@tauri.app>
2024-10-20 08:49:01 -03:00
TonyandGitHub 2302c2db1c fix(dialog): ask and confirm not using system button texts (#1910)
* Fix `ask`'s button texts being ok and cancel

* Update change file
2024-10-20 08:48:45 -03:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
44c50c1275 chore(deps): update rust crate tauri to 2.0.4 (#1952)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-20 17:28:39 +08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
415bf2abc3 chore(deps): update eslint monorepo to v9.13.0 (#1951)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-20 16:54:34 +08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
36207a93f3 chore(deps): update dependency @tauri-apps/cli to v2.0.3 (#1925)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-19 11:14:14 +08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
854754e10b chore(deps): update dependency typescript-eslint to v8.10.0 (#1949)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-19 11:13:06 +08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1c2f137a8a chore(deps): lock file maintenance (#1929)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-19 11:12:38 +08:00
8c67d44aef refactor(store)!: more reworks (#1860)
* refactor(store): more reworks

* Enable auto save by default

* Store to resource table by default

* Remove share store

* Clean up

* Add close store

* Add store function

* Add lazy store

* Add init to lazy store

* refresh cache in example

* Add get-or-create-store

* Revert "Add get-or-create-store"

This reverts commit 7ffd769240.

* try get first

* Docs

* Use absolute path for store

* more docs

* Allow js to use pre-stored (de)serialize functions

* Fix js get and close store

* Show case how to use pretty json

* Update readme

* Use store instead of `store_builder` in example

* Build

* Fix example

* More docs for StoreBuilder::build

* Add default (de)serialize fn

* Use pretty json by default

* Use `undefined` for empty value in get

* Change files

* Differentiate json null from no value for events

* Add create or existing

* Build

* Rename inner store's inset method to set

* Update readme

* Apply suggestions from code review

* Use close instead

* Update breaking changes

* Return result in resolve_store_path

* Change to close_resource and take &self

* Clean up

* Apply suggestions from code review

Co-authored-by: Amr Bashir <amr.bashir2015@gmail.com>

* Remove unused pub(crate)

* Update change file

* Expose resolve_store_path

* Remove with_store

* Remove StoreInner from pub and expose is_empty

* Fix wrong jsdoc param

* Update readme

* rename createOrExistingStore to createOrLoad

* make api consistent with the JS implementation, add examples

* fmt

* reintroduce "get existing store" behavior for create_or_load

* rename createOrLoad to newOrExisting

* keep store lock throughout whole new_or_existing_inner

* Remove load

* Missed if load

* Don't make StoreState public

* Remove R: Runtime from Builder

* rename newOrExisting to load, load to reload

* update docs

* rename missing reload fn

* rename builder fn to build()

* fix default permission

* Fix description and create_new logic

* Clippy

* Update docs

* Update docs

* remove create_store command

* remove close_store command since we extend from Resource

* Revert "remove close_store command since we extend from Resource"

This reverts commit 4a29fc8990.

* Reapply "remove close_store command since we extend from Resource"

This reverts commit 70a1830e7d.

---------

Co-authored-by: Amr Bashir <amr.bashir2015@gmail.com>
Co-authored-by: Lucas Nogueira <lucas@tauri.app>
2024-10-17 19:14:41 +08:00
Niko KorvenlaitaandGitHub cfd48b3b2e feat: allow http calls without origin header (#1941) 2024-10-16 15:56:36 +03:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
558e14bb4c chore(deps): update dependency typescript-eslint to v8.9.0 (#1937)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-16 09:52:18 +08:00
aef5dd6157 fix(sql): don't panic on missing migration when preload is enabled (#1932)
Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>
2024-10-14 20:32:49 +02:00
Fabian-LarsandGitHub 74ee7edc43 ci: Run workflows on ubuntu 22.04 (#1936) 2024-10-14 18:40:56 +02:00
Fabian-LarsandGitHub 7e1c17a635 ci(renovate): Remove tauri pre-release workaround 2024-10-09 14:44:38 +02:00
Lucas Fernandes NogueiraandGitHub 3c1f3874f4 fix(positioner): handleIconState missing permission and wrong impl (#1911) 2024-10-09 09:37:16 -03:00
Amr BashirandGitHub 51ddf6a715 fix(shell): use async command for open JS API (#1881)
closes tauri-apps/tauri#11212
2024-10-09 08:47:25 -03:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
62082b7086 chore(deps): lock file maintenance (#1895)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-09 08:46:38 -03:00
aee14ed426 fix(dialog): Fix the issue of Android saving files with a .txt extension (#1892)
* fix: Fix the issue of Android saving files with a .txt extension

* fix(dialog): pull intent type from extensions filters

* fix covector

---------

Co-authored-by: Lucas Nogueira <lucas@tauri.app>
2024-10-09 08:45:05 -03:00
9b2840db94 fix(http): retain headers order (#1884)
* fix(http): retain headers order

closes #1882

* simplify if

* actually set headers

---------

Co-authored-by: Lucas Nogueira <lucas@tauri.app>
2024-10-09 08:07:46 -03:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
60064fce52 chore(deps): update dependency typescript to v5.6.3 (#1905)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-09 09:28:06 +08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
0058583583 fix(deps): update tauri monorepo to v2.0.2 (#1874)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-08 15:29:28 +08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
fb676626f1 chore(deps): update dependency typescript-eslint to v8.8.1 (#1899)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-08 10:01:07 +08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
f445c704a1 chore(deps): update eslint monorepo to v9.12.0 (#1887)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-05 07:29:30 +08:00
fd785ab5de publish new versions (#1878)
Co-authored-by: lucasfernog <lucasfernog@users.noreply.github.com>
2024-10-03 10:58:13 -03:00
Lucas Fernandes NogueiraandGitHub a1a82208ed chore: change MSRV to 1.77.2 to support Windows 7 (#1873)
* chore: change MSRV to 1.77.2 to support Windows 7

* fmt
2024-10-03 10:31:13 -03:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
dc49de5341 chore(deps): update dependency typescript-eslint to v8.8.0 (#1854)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-03 20:52:00 +08:00
TillmannandGitHub 4c2454d410 sync readme with metadata (#1872) 2024-10-03 07:23:40 -03:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
fe6dd0ff9e fix(deps): update dependency @tauri-apps/api to v2.0.1 (#1862)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-03 10:54:25 +08:00
HoruandGitHub ab8d089b2b chore(barcode-scanner): fix banner link in readme (#1870)
* chore: fix banner link in readme

* chore: raw
2024-10-03 05:04:38 +03:00
ee02ea7746 publish new versions (#1869)
Co-authored-by: lucasfernog <lucasfernog@users.noreply.github.com>
2024-10-02 16:40:18 -03:00
Lucas Fernandes NogueiraandGitHub 9501cfa5f5 fix(updater): validate endpoint scheme before printing warning (#1868)
regression from #1814
2024-10-02 16:28:16 -03:00
Lucas Fernandes NogueiraandGitHub e8069af804 feat: update to tauri v2 stable, promote all packages to 2.0.0 (#1863)
* update to tauri v2

* covector setup

* update locks

* bump packages to v2 through covector, remove rc references

* msrv 1.78

* downgrade 1.79 msrv dep

* test clipboard

* fmt

* bitstream-io 2.3.0

* Revert "test clipboard"

This reverts commit c3e19dbe59.
2024-10-02 12:08:37 -03:00
pajladaandGitHub 0975a687a0 fix: make package.json licenses SPDX compliant (#1861)
* fix: make plugin template package.json license SPDX compliant

* fix: make plugin package.json license SPDX compliant

* fix: make root package.json license SPDX compliant
2024-10-02 08:29:34 -03:00
Amr BashirandGitHub 654a7299c3 fix(positioner): pass correct values through IPC (#1858)
* fix(positioner): pass correct values through IPC

followup to https://github.com/tauri-apps/plugins-workspace/pull/1822

* build api & remove packageManager field
2024-10-02 08:28:28 -03:00
Lucas Fernandes NogueiraandGitHub 58eab11faf chore: document supported platforms on README, clarify unsupported APIs (#1857)
closes #1795
2024-10-02 08:27:27 -03:00
fb62d03f73 publish new versions (#1807)
Co-authored-by: lucasfernog <lucasfernog@users.noreply.github.com>
2024-10-02 07:02:42 -03:00
TonyandGitHub 7e5e34420b Cancel auto save on save (#1859) 2024-10-01 23:13:20 -03:00
f12d35609a feat(store)!: fully rework and add auto save (#1550)
* Add auto save to store plugin

* Put jsdoc at constructor instead of class level

* Clippy

* Use enum instead of bool

* Some(AutoSaveMessage::Cancel) | None

* from_millis

* u64

* Add change file

* Rename to emit_on_change

* should use Duration in `with_store`

* Add breaking change notice to change file

* Emit change event for inserts by reset

* Update readme example

* Update example

* Remove extra line

* Make description clear it only works with managed

* Fix links in docstring

* Fix doc string closing

* get_mut

* Proof of concept

* fmt

* Load store on create

* cargo fmt

* Fix merge conflits

* Format

* small cleanup

* update docs, use `impl Into<JsonValue>`

* fix doctests, further simplification of api

* add store options

---------

Co-authored-by: Tillmann <28728469+tweidinger@users.noreply.github.com>
Co-authored-by: Lucas Nogueira <lucas@tauri.app>
2024-10-01 15:10:40 -03:00
44273b9889 fix(shell): fix schema requiring sidecar property even though it is optional (#1839)
* fix(shell): fix schema requiring `sidecar` property even though it is optional

* fix clippy

* make `cmd` and `sidecar` exclusive

* make args optional

* cleanup

---------

Co-authored-by: Lucas Nogueira <lucas@tauri.app>
2024-10-01 10:16:14 -03:00
2f7e32b5e0 [positioner] handleIconState in JS (#1822)
* [positioner] handleIconState in JS

* update readme

* fix change file version

* fixes

---------

Co-authored-by: Lucas Nogueira <lucas@tauri.app>
2024-10-01 10:15:22 -03:00
Fabian-LarsandGitHub 30bcf5dcc2 refactor(sql): Allow multiple drivers at the same time (#1838)
* refactor(sql): Allow multiple drivers at the same time

* fmt

* remove default feature comment [skip ci]

* what was that doing there [skip ci]

* disable public methods for now
2024-10-01 09:47:08 -03:00
Amr BashirandGitHub 68579934c9 fix(cli): expose hidden structs (#1856)
closes  #1843
2024-10-01 09:35:13 -03:00
TonyandGitHub 04459afbb6 refactor(dialog)!: use enum instead of label for buttons (#1842)
* refactor(dialog)!: use enum instead of label

* Add change file

* Fix doc comment typo

* Move ok and cancel to lib.rs
2024-10-01 09:34:20 -03:00
TillmannandGitHub 3b2bd3065d fix sql heading 2024-09-30 14:11:44 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
f930505de4 chore(deps): lock file maintenance (#1852)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-30 10:19:10 +08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
34319bd977 chore(deps): update unocss monorepo to ^0.63.0 (#1848)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-29 16:18:56 +08:00
TonyandGitHub 34737186fe chore: re-generate reference.md (#1847) 2024-09-28 20:50:57 +03:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
4bd1f15bb9 fix(deps): update tauri monorepo (#1846)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-28 14:44:24 +08:00
aabc4d3a24 Add Metadata for Plugin Compatibility (#1836)
Co-authored-by: Tillmann <112912081+tillmann-crabnebula@users.noreply.github.com>
Co-authored-by: Tillmann <28728469+tweidinger@users.noreply.github.com>
2024-09-26 14:21:25 +02:00
Fabian-LarsandGitHub fc9b189e83 fix(fs): ignore OS specific paths in scope deserialization (#1837) 2024-09-26 02:43:33 +03:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>FabianLars
b7ff3a6bdb fix(deps): update rust crate windows-registry to 0.3 (v2) (#1841)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: FabianLars <fabianlars@fabianlars.de>
2024-09-25 15:44:41 +02:00
Amr BashirandGitHub 04a0aea0ab feat(updater)!: add option to use insecure transport protocol (#1814) 2024-09-24 18:38:53 +03:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
e564e2aa91 chore(deps): update dependency typescript-eslint to v8.7.0 (#1832)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-23 23:25:24 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
118f6b4334 chore(deps): update dependency @rollup/plugin-node-resolve to v15.3.0 (#1831)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-23 23:11:01 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
fd0a52aa86 chore(deps): update eslint monorepo to v9.11.1 (#1829)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-23 22:49:03 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>fabianlars
52e3bdab26 fix(deps): update dependency @zerodevx/svelte-json-view to v1.0.11 (v2) (#1830)
* fix(deps): update dependency @zerodevx/svelte-json-view to v1.0.11

* audit fix

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: fabianlars <fabianlars@fabianlars.de>
2024-09-23 22:45:24 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
dd09e3c3f4 chore(deps): update dependency @rollup/plugin-node-resolve to v15.2.4 (#1824)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-23 16:13:16 +08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2797954799 chore(deps): update dependency rollup to v4.22.4 (#1818)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-23 16:08:15 +08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
025210be28 chore(deps): update eslint monorepo to v9.11.0 (#1820)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-23 16:07:35 +08:00
Amr BashirandGitHub 221f50f53b fix(updater): encode version when making requests (#1816)
* fix(updater): encode version when making requests

ref: https://github.com/tauri-apps/tauri/issues/10908

* Update .changes/updater-endpoint-version-encoded.md

* only skip `+`

* fmt

* use normal const
2024-09-20 07:57:40 -03:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>Tony
6bf1bd8d44 fix(deps): update rust crate rfd to 0.15 (v2) (#1805)
* fix(deps): update rust crate rfd to 0.15

* Fix compilation

* Add change file

* Remove platform specific note

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tony <legendmastertony@gmail.com>
2024-09-19 20:04:02 +08:00
TonyandGitHub 41fe9053a0 fix(deep-link): is_registered check on windows 2024-09-19 19:58:13 +08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
27bb5d9a27 chore(deps): update dependency rollup to v4.22.0 (v2) (#1810)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-19 12:40:55 +02:00
3168e17603 Added quotes for cmd (#1806)
* Added quotes for cmd

* Add change file

---------

Co-authored-by: Tony <legendmastertony@gmail.com>
2024-09-19 09:59:54 +08:00
Jaken HermanandGitHub dd514e7a88 Docs: contaiend -> contained typos (#1802) 2024-09-17 19:31:55 +03:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
6e142b4230 fix(deps): update tauri monorepo (v2) (#1801)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-17 17:24:18 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
fd1c7c8dbb fix(deps): update dependency @tauri-apps/plugin-geolocation to v2.0.0-rc.2 (v2) (#1799)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-17 11:09:53 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
59c63f31cc chore(deps): update dependency typescript-eslint to v8.6.0 (v2) (#1798)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-16 21:39:26 +02:00
github-actions[bot]andGitHub 3cbb55aa7b publish new versions (#1796) 2024-09-16 16:29:07 -03:00
Lucas Fernandes NogueiraandGitHub 60765694f5 refactor(geolocation): simplify API, defer permission checks (#1773) 2024-09-16 17:01:13 +03:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>FabianLars
fd75401aee fix(deps): update rust crate image to 0.25 (v2) (#1418)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: FabianLars <fabianlars@fabianlars.de>
2024-09-16 13:20:08 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
ca34972266 fix(deps): update rust crate tokio-tungstenite to 0.24 (v2) (#1781)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-16 13:13:15 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
179184326b chore(deps): update tauri monorepo (v2) (#1789)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-16 12:08:42 +02:00
d8efd3cd20 Publish New Versions (v2) (#1794)
Co-authored-by: amrbashir <amrbashir@users.noreply.github.com>
2024-09-16 07:00:22 -03:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5d39ddcf22 chore(deps): lock file maintenance (#1791)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-16 10:21:19 +08:00
TonyandGitHub 2050a3bea2 fix(upload): change tokio version to 1 instead of * (#1793) 2024-09-16 05:20:52 +03:00
TonyandGitHub c078f57a09 Revert "Publish New Versions (v2)" (#1792)
This reverts commit dc5721ac13.
2024-09-16 05:20:21 +03:00
dc5721ac13 Publish New Versions (v2) (#1788)
Co-authored-by: lucasfernog <lucasfernog@users.noreply.github.com>
2024-09-15 18:37:58 -03:00
1d9741b52b [upload - http-extra] fix: download content to file when unsuccessful response (and test) #1750 (#1783)
* fix and test

* Update Cargo.toml

Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>

* Update Cargo.toml

Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>

* add .change log

* clippy fixes

* print test error

* fix tests

---------

Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>
Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
2024-09-15 18:37:02 -03:00
TonyandGitHub 7a37355e17 fix(window-state): deadlock when trying to restore window states on initial load (#1787)
* Fix deadlock when trying to restore window the size on initial load

* Typo
2024-09-15 18:01:27 -03:00
5cbd593e76 publish new versions (#1772)
Co-authored-by: lucasfernog <lucasfernog@users.noreply.github.com>
2024-09-15 11:55:38 -03:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
f7600b5fff chore(deps): update dependency @tauri-apps/cli to v2.0.0-rc.14 (#1786)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-15 11:37:09 -03:00
Lucas Fernandes NogueiraandGitHub fb85e5dd76 chore(deps): update tauri to 2.0.0-rc.12 (#1785) 2024-09-15 11:36:23 -03:00
Lucas Fernandes NogueiraandGitHub 6f3f66794a feat(deep-link): add on_open_url Rust API (#1780) 2024-09-14 21:35:31 -03:00
FabianLars 79d6e19c4b chore: Add changefile for #1777 2024-09-14 18:34:45 +02:00
aebd4f6185 fix(barcode-scanner): Fix mixed up imports (internal) (#1777)
Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>
2024-09-14 18:20:21 +02:00
Lucas Fernandes NogueiraandGitHub 341a5320c3 fix(clipboard): Android warnings and build on SDK under 28 (#1771) 2024-09-13 12:03:10 -03:00
Lucas Fernandes NogueiraandGitHub cc03ccf5e0 fix(fs): app scopes not properly enabling paths (#1774) 2024-09-13 09:57:46 -03:00
Lucas Nogueira 009299ebec chore(prettier): ignore mobile build artifacts 2024-09-13 09:10:01 -03:00
TonyandGitHub 204e5aacad fix(window-state)!: saving minimized state (#1743)
* Fix saving minimized state again

* Add change file

* Fix saving minimized size

* Add change file

* Fix missing .md

* Remove window-shadows
2024-09-13 06:29:38 +03:00
8a45c35160 publish new versions (#1764)
Co-authored-by: lucasfernog <lucasfernog@users.noreply.github.com>
2024-09-12 15:49:29 -03:00
Lucas Nogueira ebf821afd1 chore(examples): update AndroidManifest.xml 2024-09-12 15:32:27 -03:00
Lucas Fernandes NogueiraandGitHub 984110a978 fix(deep-link): emit new-url event on app load (#1770) 2024-09-12 11:20:16 -03:00
Lucas Fernandes NogueiraandGitHub 2b898f0786 fix(dialog): update asset protocol scope on directory open, closes #1553 (#1769) 2024-09-12 11:10:16 -03:00
b2269333e3 chore(single-instance): put deep link integration behined a feature (#1766)
* Make deep link optional for single instance

* Add change file

* Add deep-link feature to example

* Update plugins/deep-link/README.md

Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>

* format

* [skip ci] update readme

---------

Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>
2024-09-12 18:20:15 +08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
41afcae399 chore(deps): update dependency rollup to v4.21.3 (v2) (#1767)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-12 12:01:38 +02:00
9291e4d2ca fix(fs): support any UTF-8 path in writeFile (#1640)
* In the `writeFile` function, when `options.baseDir` is not set, convert `path` to URL to avoid errors caused by Chinese characters.

* fmt

* use TextEncoder

* use percent encoding

* add change file

* fmt

---------

Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
2024-09-11 12:02:24 -03:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
3715f3c9a6 chore(deps): update tauri monorepo (#1760)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-11 09:12:13 +08:00
github-actions[bot]andGitHub 253ae66210 publish new versions (#1761) 2024-09-10 16:14:05 -03:00
Lucas Nogueira 949e2d6c45 chore: update docs 2024-09-10 16:02:38 -03:00
Lucas Fernandes NogueiraandGitHub 64a6240f79 feat(deep-link): implement getCurrent on Windows/Linux (#1759)
* feat(deep-link): implement getCurrent on Windows/Linux

checks std::env::args() on initialization, also includes integration with the single-instance plugin

* fmt

* update docs, fix event

* add register_all function

* expose api

* be nicer on docs, clippy
2024-09-10 16:00:42 -03:00
77680f6ed8 publish new versions (#1740)
Co-authored-by: lucasfernog <lucasfernog@users.noreply.github.com>
2024-09-10 13:06:48 -03:00
Lucas Fernandes NogueiraandGitHub 8c3a6a253d feat(barcode-scanner): validate missing Info.plist configuration (#1758) 2024-09-10 12:24:03 -03:00
Lucas Nogueira 57fd28126c chore(examples): add NFCReaderUsageDescription Info.plist, entitlement 2024-09-10 08:45:43 -03:00
Lucas Fernandes NogueiraandGitHub a34fade500 chore(ios): consolidate optional argument standard (#1738)
* chore(ios): consolidate optional argument standard

mark all optional iOS arguments as `var <name>: Type?`, following the pattern described in the documentation: https://v2.tauri.app/develop/plugins/develop-mobile/#ios

* chore: add missing Info.plist to example
2024-09-10 08:31:39 -03:00
713c54ef83 chore(barcode): remove unused Android dependencies (#1749)
* chore(barcode): remove unused Android dependencies

Plugin barcode-scanner has two unused Android dependencies:
- com.google.zxing:core
- com.journeyapps:zxing-android-embedded

However, these dependency's AndroidManifest.xml were merged, and contained
required parameters (to get camera's permissions).

See the merged manifests:
- https://github.com/zxing/zxing/blob/zxing-3.3.0/android/AndroidManifest.xml
- https://github.com/journeyapps/zxing-android-embedded/blob/v4.3.0/zxing-android-embedded/AndroidManifest.xml

This commit removes the unused dependencies (and unused Java imports)
and updates the Android manifest.

* chore: remove comments

---------

Co-authored-by: Lucas Nogueira <lucas@tauri.app>
2024-09-10 08:01:29 -03:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
a9b2a9af84 chore(deps): update dependency typescript to v5.6.2 (v2) (#1754)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-09 21:28:08 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
c23b3d4bc8 chore(deps): update dependency typescript-eslint to v8.5.0 (v2) (#1755)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-09 21:24:20 +02:00
0dd97d9115 feat(sql): added uuid type in postgres decoder (#1375)
Co-authored-by: Kauan Curbani <kauan.curbani@segalas.local>
Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>
2024-09-09 17:40:45 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
3912800db3 chore(deps): lock file maintenance (#1753)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-09 13:35:43 +08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
c23d7c51f6 chore(deps): lock file maintenance (#1751)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-09 11:22:59 +08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5906cf4335 chore(deps): update eslint monorepo to v9.10.0 (v2) (#1744)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-08 18:12:08 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
d4a54157f0 chore(deps): update tauri monorepo (#1739)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-06 09:19:57 +08:00
Lucas Fernandes NogueiraandGitHub 3d301c654e fix(notification): body should be optional on iOS (#1737) 2024-09-05 17:46:04 -03:00
12e80ffe00 Publish New Versions (v2) (#1736)
Co-authored-by: amrbashir <amrbashir@users.noreply.github.com>
Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>
2024-09-05 13:26:57 +02:00
Amr BashirandGitHub a2fe55512f refactor: add methods and implement traits for FilePath and SafeFilePath (#1727)
* refactor: add methods and implement traits for `FilePath` and `SafeFilePath`

closes #1726

* clippy

* path -> as_path

* fix prettierignore

* Discard changes to Cargo.lock

* Discard changes to Cargo.toml

* update tauri deps
2024-09-05 14:12:40 +03:00
Fabian-LarsandGitHub d00519e3e3 chore: Add missing changefile for updater rust changes (#1735) 2024-09-05 13:10:04 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
6995127778 chore(deps): update tauri monorepo (#1734)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-05 11:16:52 +08:00
c565a08d09 publish new versions (#1711)
Co-authored-by: lucasfernog <lucasfernog@users.noreply.github.com>
2024-09-04 17:30:08 -03:00
cf4d7d4e6c chore: adjust prettier config, .gitignore and use taplo to format toml files (#1728)
* chore: adjust prettier config, .gitignore and use taplo to format toml files

This brings the plugins-workspace repository to the same code style of the main tauri repo

* format toml

* ignore examples gen dir

* add .vscode/extensions.json

* remove packageManager field

* fmt

* fix audit

* taplo ignore permissions autogenerated files

* remove create dummy dist

* fix prettier workflow

* install fmt in prettier workflow

---------

Co-authored-by: Lucas Nogueira <lucas@tauri.app>
2024-09-04 08:54:23 -03:00
Lucas Fernandes NogueiraandGitHub 72c2ce82c1 chore(deep-link): fix example, update documentation (#1725)
* chore(deep-link): fix example, update documentation

* update lock file

* fix lint, add header

* fmt
2024-09-04 08:37:34 -03:00
Lucas Fernandes NogueiraandGitHub 4654591d82 fix(deep-link): allow empty config values (#1732) 2024-09-04 08:18:42 -03:00
Lucas Fernandes NogueiraandGitHub feb1e93fcb feat(dialog): implement save API on iOS (#1707) 2024-09-02 21:13:43 -03:00
Fabian-LarsandGitHub ff134a8ca4 Remove authenticator plugin (#1723) 2024-09-03 02:41:19 +03:00
Amr BashirandGitHub f8255e1db5 feat(updater): allow passing headers & timeout in Update.download* methods (#1661)
closes #1634
2024-09-03 01:02:16 +03:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
b9bcb2b6af chore(deps): update dependency typescript-eslint to v8.4.0 (v2) (#1721)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-02 21:23:41 +02:00
Lucas Fernandes NogueiraandGitHub 51819c601f fix(fs): writeFile command implementation on Android (#1708) 2024-09-02 13:13:53 -03:00
TonyandGitHub f7280c8830 fix(fs): can't use Windows path (#1710)
* Fix fs can't use Windows path

* Add change file

* Implement `Deserialize` instead

* Rename FilePath's visitor to FilePathVisitor

* Add todo and test

* Clippy

* Unused variable
2024-09-02 18:24:37 +03:00
Lucas Fernandes NogueiraandGitHub 0cb99bdaf1 fix(dialog): iOS file picker default to file selection instead of photo (#1706) 2024-09-02 17:43:13 +03:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>FabianLars
de04935b2f chore(deps): update rust crate urlpattern to 0.3 (v2) (#1607)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: FabianLars <fabianlars@fabianlars.de>
2024-09-02 15:37:44 +02:00
Carlos ValdezandGitHub b4c95b25df chore(dialog): fix misspell "ths" to "the" (#1719) 2024-09-02 14:05:11 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
de452d4373 chore(deps): update rust crate infer to 0.16 (v2) (#1419)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-02 12:48:48 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
e271382982 chore(deps): update dependency tslib to v2.7.0 (#1715)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-02 12:24:53 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
3a350add23 chore(deps): update eslint monorepo to v9.9.1 (#1685)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-02 10:32:56 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
3518a23fa0 chore(deps): update dependency rollup to v4.21.2 (#1712)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-02 10:27:59 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
c6a1b86404 chore(deps): update dependency @zerodevx/svelte-json-view to v1.0.10 (#1713)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-02 10:26:15 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
091a78f1d2 chore(deps): update dependency typescript-eslint to v8.3.0 (#1678)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-02 10:23:00 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
16f68c2397 chore(deps): update rust crate gethostname to 0.5 (#1522)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-02 10:21:19 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
16d87bf236 chore(deps): update dependency @tauri-apps/cli to v2.0.0-rc.10 (#1677)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-02 10:10:00 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
e502a706d1 fix(deps): update rust crate cocoa to 0.26 (#1650)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-02 10:05:40 +02:00
TonyandGitHub 17e8014b69 fix(window-state): saving a minimized window's state changes its position to -32000 (#1702)
* Don't store position on minimized

* Add change file

* ?
2024-09-02 15:58:25 +08:00
de732d0ab0 publish new versions (#1683)
Co-authored-by: lucasfernog <lucasfernog@users.noreply.github.com>
2024-08-29 15:47:05 -03:00
Lucas Fernandes NogueiraandGitHub e2e97db519 feat: use PermissionState type from tauri, closes #979 (#1701) 2024-08-29 15:40:38 -03:00
Lucas Fernandes NogueiraandGitHub 9ea9e05944 chore(deps): update to tauri rc.7 (#1699)
* chore(deps): update to tauri rc.7

* update api [skip ci]

* downgrade sqlx [skip ci]
2024-08-28 19:21:37 -03:00
Lucas Fernandes NogueiraandGitHub d0482502e9 chore(api): tauri can serialize array buffers from rc.7 (#1694)
* chore(api): tauri can serialize array buffers from rc.7

* fmt

* fix audit

* update lockfile
2024-08-28 17:58:56 -03:00
Lucas Fernandes NogueiraandGitHub 0c040bcc9a fix(store): remove Android and iOS plugins, closes #1256 (#1695)
The Android and iOS support introduced on #1011 is not really supported - the Tauri path API correctly resolves the cache directory on mobile, and we can access those directly using Rust code.

This is a breaking change because we no longer uses the same directory to store the files - app_cache_dir returns a different location
2024-08-27 14:18:02 -03:00
Lucas Fernandes NogueiraandGitHub 0d5e7e2892 feat(fs): scope-*-recursive permission allows read dir, closes #1307 (#1696)
We could instead document that you should also enable `scope-*-index`, it is more a matter of semantics.
2024-08-27 14:17:30 -03:00
Greg KnappandGitHub 01c913e83e Update import package name to V2 (#1693) 2024-08-27 18:34:23 +08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
532622d8b2 fix(deps): update rust crate sqlx to v0.8.1 [security] (#1686)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-27 18:28:01 +08:00
448846b834 feat(fs): resolve content URIs on Android (#1658)
* Implemented writeTextFile on Android.

* Added license headers.

* fix fmt checks.

* implement more file APIs

* change file

* cleanup

* refactor dialog plugin to leverage new FS APIs

* implement metadata functions

* fix build

* expose FS rust API

* resolve resources on android

* update pnpm

* update docs

---------

Co-authored-by: Lucas Nogueira <lucas@tauri.app>
2024-08-23 13:35:53 -03:00
Amr BashirandGitHub 3c52f30ea4 chore(deps): update windows-sys crate to 0.59 and global-hotkey to 0.6 (#1665)
* chore(deps): update windows-sys crate to `0.59`

* update global-hotkey as well

* change files
2024-08-21 17:04:03 +03:00
Amr BashirandGitHub f690777a91 refacator(dialog): mark FileResponse as #[non_exhaustive] (#1660)
* recator(dialog): mark `FileResponse` as `#[non_exhaustive]`

closes #1623

* change file
2024-08-21 16:14:58 +03:00
691 changed files with 17160 additions and 28667 deletions
+1 -1
View File
@@ -7,5 +7,5 @@ ignore = [
# wry needs kuchiki on Android # wry needs kuchiki on Android
"RUSTSEC-2023-0019", "RUSTSEC-2023-0019",
# atty is only used when the `colored` feature is enabled on tauri-plugin-log # atty is only used when the `colored` feature is enabled on tauri-plugin-log
"RUSTSEC-2021-0145" "RUSTSEC-2021-0145",
] ]
+5
View File
@@ -0,0 +1,5 @@
---
fs: minor
---
Add the `size` method to get the size of a file or directory.
+6
View File
@@ -0,0 +1,6 @@
---
"upload": "minor"
"upload-js": "minor"
---
Added a new field `progressTotal` to track the total amount of data transferred during the upload/download process.
-5
View File
@@ -1,5 +0,0 @@
---
"dialog": patch:feat
---
Implement `save` API on Android.
+17 -10
View File
@@ -62,13 +62,17 @@
"dialog", "dialog",
"fs", "fs",
"global-shortcut", "global-shortcut",
"opener",
"http", "http",
"nfc", "nfc",
"notification", "notification",
"os", "os",
"process", "process",
"shell", "shell",
"updater" "store",
"updater",
"geolocation",
"haptics"
] ]
}, },
"api-example-js": { "api-example-js": {
@@ -84,12 +88,14 @@
"dialog-js", "dialog-js",
"fs-js", "fs-js",
"global-shortcut-js", "global-shortcut-js",
"opener-js",
"http-js", "http-js",
"nfc-js", "nfc-js",
"notification-js", "notification-js",
"os-js", "os-js",
"process-js", "process-js",
"shell-js", "shell-js",
"store-js",
"updater-js" "updater-js"
], ],
"postversion": "pnpm install --no-frozen-lockfile" "postversion": "pnpm install --no-frozen-lockfile"
@@ -101,14 +107,6 @@
"dependencies": ["deep-link-js"], "dependencies": ["deep-link-js"],
"postversion": "pnpm install --no-frozen-lockfile" "postversion": "pnpm install --no-frozen-lockfile"
}, },
"authenticator": {
"path": "./plugins/authenticator",
"manager": "rust"
},
"authenticator-js": {
"path": "./plugins/authenticator",
"manager": "javascript"
},
"autostart": { "autostart": {
"path": "./plugins/autostart", "path": "./plugins/autostart",
"manager": "rust" "manager": "rust"
@@ -190,6 +188,14 @@
"path": "./plugins/global-shortcut", "path": "./plugins/global-shortcut",
"manager": "javascript" "manager": "javascript"
}, },
"opener": {
"path": "./plugins/opener",
"manager": "rust"
},
"opener-js": {
"path": "./plugins/opener",
"manager": "javascript"
},
"haptics": { "haptics": {
"path": "./plugins/haptics", "path": "./plugins/haptics",
"manager": "rust" "manager": "rust"
@@ -274,7 +280,8 @@
}, },
"single-instance": { "single-instance": {
"path": "./plugins/single-instance", "path": "./plugins/single-instance",
"manager": "rust" "manager": "rust",
"dependencies": ["deep-link"]
}, },
"sql": { "sql": {
"path": "./plugins/sql", "path": "./plugins/sql",
+5
View File
@@ -0,0 +1,5 @@
---
"updater": "minor"
---
Added support for `.deb` package updates on Linux systems.
+5
View File
@@ -0,0 +1,5 @@
---
clipboard-manager-js: patch
---
Fix clipboard manager client side api not copying fallback alternative text when calling `writeHtml`.
@@ -0,0 +1,6 @@
---
deep-link: patch
deep-link-js: patch
---
`onOpenUrl()` will now not call `getCurrent()` anymore, matching the documented behavior.
+6
View File
@@ -0,0 +1,6 @@
---
fs: minor
persisted-scope: minor
---
**Breaking Change:** Replaced the custom `tauri_plugin_fs::Scope` struct with `tauri::fs::Scope`.
-5
View File
@@ -1,5 +0,0 @@
---
"http-js": patch
---
Fixed an issue with abort signal not aborting the fetch request.
@@ -0,0 +1,6 @@
---
'log-plugin': 'patch'
'log-js': 'patch'
---
Make webview log target more consistent that it always starts with `webview`
@@ -1,5 +0,0 @@
---
"updater": patch
---
Fixes the updater not preserving AppImage file permissions.
+6
View File
@@ -0,0 +1,6 @@
---
"fs": "patch"
"fs-js": "patch"
---
Improve performance of `readTextFile` and `readTextFileLines` APIs
+7
View File
@@ -0,0 +1,7 @@
---
"fs": "patch"
"fs-js": "patch"
---
Fix `readDir` function failing to read directories that contain broken symlinks.
+7
View File
@@ -0,0 +1,7 @@
---
"fs": "patch"
"fs-js": "patch"
---
Add support for using `ReadableStream<Unit8Array>` with `writeFile` API.
-6
View File
@@ -1,6 +0,0 @@
---
"geolocation": major
"geolocation-js": major
---
Initial release.
-6
View File
@@ -1,6 +0,0 @@
---
"haptics": major
"haptics-js": major
---
Initial release.
+5
View File
@@ -0,0 +1,5 @@
---
"http": "patch"
---
Add tracing logs for requestes and responses behind `tracing` feature flag.
-9
View File
@@ -1,9 +0,0 @@
---
barcode-scanner: patch
clipboard-manager: patch
deep-link: patch
global-shortcut: patch
window-state: patch
---
Fixed an issue that caused multi-word IIFE names to not be formatted correctly. For example the `barcode-scanner` was defined as `window.__TAURI_PLUGIN_CLIPBOARDMANAGER__` instead of `window.__TAURI_PLUGIN_CLIPBOARD_MANAGER__`.
@@ -0,0 +1,5 @@
---
'localhost': 'minor'
---
Add custom host binding to allow external access
+6
View File
@@ -0,0 +1,6 @@
---
"opener": "major"
"opener-js": "major"
---
Initial Release
@@ -0,0 +1,6 @@
---
"positioner-js": minor
---
Add `moveWindowConstrained` function that is similar to `moveWindow` but constrains the window to the screen dimensions in case of tray icon positions.
@@ -0,0 +1,6 @@
---
"positioner": minor
---
Add `WindowExt::move_window_constrained` method that is similar to `WindowExt::move_window` but constrains the window to the screen dimensions in case of tray icon positions.
-18
View File
@@ -1,18 +0,0 @@
{
"tag": "rc",
"changes": [
".changes/android-dialog-save.md",
".changes/fix-http-plugin-abort.md",
".changes/fix-linux-updater-permission-error.md",
".changes/geolocation-release.md",
".changes/haptics-release.md",
".changes/iife-varname-spacing.md",
".changes/rc.md",
".changes/remove-target-sdk.md",
".changes/shell-open-regex-match-string.md",
".changes/shell-regex-match-string.md",
".changes/swift-build-older-versions.md",
".changes/update-fs-api-docs.md",
".changes/update-tauri-rc-3.md"
]
}
-61
View File
@@ -1,61 +0,0 @@
---
"authenticator": patch
"autostart": patch
"barcode-scanner": patch
"biometric": patch
"cli": patch
"clipboard-manager": patch
"deep-link": patch
"dialog": patch
"fs": patch
"global-shortcut": patch
"http": patch
"localhost": patch
"log-plugin": patch
"nfc": 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
"authenticator-js": patch
"autostart-js": patch
"barcode-scanner-js": patch
"biometric-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
"nfc-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
"haptics": patch
"haptics-js": patch
"geolocation": patch
"geolocation-js": patch
---
Update to tauri RC.
-15
View File
@@ -1,15 +0,0 @@
---
"barcode-scanner": patch:changes
"biometric": patch:changes
"clipboard-manager": patch:changes
"deep-link": patch:changes
"dialog": patch:changes
"geolocation": patch:changes
"haptics": patch:changes
"nfc": patch:changes
"notification": patch:changes
"shell": patch:changes
"store": patch:changes
---
Remove targetSdk from build.kts files as it is deprecated and will be removed from DSL v9.0
@@ -1,5 +0,0 @@
---
"shell": patch
---
Change the `open` scope validator regex to match on the entire string.
-6
View File
@@ -1,6 +0,0 @@
---
"shell": patch
---
Change the `execute` scope argument validator regex to match on the entire string by default.
If this behavior is not desired check the `raw` boolean configuration option that is available along the `validator` string.
+5
View File
@@ -0,0 +1,5 @@
---
shell: patch
---
shell.open will now try to execute `/usr/bin/xdg-open` before using `xdg-open` from `PATH`.
@@ -0,0 +1,5 @@
---
"sql": "patch"
---
Allow blocking on async code without creating a nested runtime.
-15
View File
@@ -1,15 +0,0 @@
---
"barcode-scanner": patch
"biometric": patch
"clipboard-manager": patch
"dialog": patch
"geolocation": patch
"haptics": patch
"log-plugin": patch
"nfc": patch
"notification": patch
"shell": patch
"store": patch
---
Explicitly set a minimum macOS version for the Swift package.
-5
View File
@@ -1,5 +0,0 @@
---
"fs-js": patch
---
Update documentation.
-7
View File
@@ -1,7 +0,0 @@
---
"geolocation": patch
"deep-link": patch
"updater": patch
---
Update to tauri 2.0.0-rc.3.
+8 -8
View File
@@ -7,23 +7,23 @@ name: Audit JavaScript
on: on:
workflow_dispatch: workflow_dispatch:
schedule: schedule:
- cron: "0 0 * * *" - cron: '0 0 * * *'
push: push:
branches: branches:
- v1 - v1
- v2 - v2
paths: paths:
- ".github/workflows/audit-javascript.yml" - '.github/workflows/audit-javascript.yml'
- "**/pnpm-lock.yaml" - '**/pnpm-lock.yaml'
- "**/package.json" - '**/package.json'
pull_request: pull_request:
branches: branches:
- v1 - v1
- v2 - v2
paths: paths:
- ".github/workflows/audit-javascript.yml" - '.github/workflows/audit-javascript.yml'
- "**/pnpm-lock.yaml" - '**/pnpm-lock.yaml'
- "**/package.json" - '**/package.json'
concurrency: concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
@@ -43,7 +43,7 @@ jobs:
${{ runner.os }}- ${{ runner.os }}-
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
with: with:
node-version: "lts/*" node-version: 'lts/*'
- uses: pnpm/action-setup@v4 - uses: pnpm/action-setup@v4
with: with:
version: 9.x.x version: 9.x.x
+7 -7
View File
@@ -7,23 +7,23 @@ name: Audit Rust
on: on:
workflow_dispatch: workflow_dispatch:
schedule: schedule:
- cron: "0 0 * * *" - cron: '0 0 * * *'
push: push:
branches: branches:
- v1 - v1
- v2 - v2
paths: paths:
- ".github/workflows/audit-rust.yml" - '.github/workflows/audit-rust.yml'
- "**/Cargo.lock" - '**/Cargo.lock'
- "**/Cargo.toml" - '**/Cargo.toml'
pull_request: pull_request:
branches: branches:
- v1 - v1
- v2 - v2
paths: paths:
- ".github/workflows/audit-rust.yml" - '.github/workflows/audit-rust.yml'
- "**/Cargo.lock" - '**/Cargo.lock'
- "**/Cargo.toml" - '**/Cargo.toml'
concurrency: concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
+7 -7
View File
@@ -7,8 +7,8 @@ name: check generated files
on: on:
pull_request: pull_request:
paths: paths:
- ".github/workflows/check-generated-files.yml" - '.github/workflows/check-generated-files.yml'
- "**/guest-js/**" - '**/guest-js/**'
concurrency: concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
@@ -25,10 +25,6 @@ jobs:
id: filter id: filter
with: with:
filters: | filters: |
authenticator:
- .github/workflows/check-generated-files.yml
- plugins/authenticator/guest-js/**
- plugins/authenticator/src/api-iife.js
autostart: autostart:
- .github/workflows/check-generated-files.yml - .github/workflows/check-generated-files.yml
- plugins/autostart/guest-js/** - plugins/autostart/guest-js/**
@@ -57,6 +53,10 @@ jobs:
- .github/workflows/check-generated-files.yml - .github/workflows/check-generated-files.yml
- plugins/global-shortcut/guest-js/** - plugins/global-shortcut/guest-js/**
- plugins/global-shortcut/src/api-iife.js - plugins/global-shortcut/src/api-iife.js
opener:
- .github/workflows/check-generated-files.yml
- plugins/opener/guest-js/**
- plugins/opener/src/api-iife.js
haptics: haptics:
- .github/workflows/check-generated-files.yml - .github/workflows/check-generated-files.yml
- plugins/haptics/guest-js/** - plugins/haptics/guest-js/**
@@ -140,7 +140,7 @@ jobs:
${{ runner.os }}- ${{ runner.os }}-
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
with: with:
node-version: "lts/*" node-version: 'lts/*'
- uses: pnpm/action-setup@v4 - uses: pnpm/action-setup@v4
with: with:
version: 9.x.x version: 9.x.x
@@ -27,4 +27,4 @@ jobs:
uses: jbolda/covector/packages/action@covector-v0 uses: jbolda/covector/packages/action@covector-v0
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
command: "status" command: 'status'
+1 -1
View File
@@ -17,6 +17,6 @@ jobs:
uses: jbolda/covector/packages/action@covector-v0 uses: jbolda/covector/packages/action@covector-v0
id: covector id: covector
with: with:
command: "status" command: 'status'
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
comment: true comment: true
@@ -34,8 +34,8 @@ jobs:
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
with: with:
node-version: "lts/*" node-version: 'lts/*'
registry-url: "https://registry.npmjs.org" registry-url: 'https://registry.npmjs.org'
- uses: pnpm/action-setup@v4 - uses: pnpm/action-setup@v4
with: with:
@@ -65,7 +65,7 @@ jobs:
NODE_AUTH_TOKEN: ${{ secrets.ORG_NPM_TOKEN }} NODE_AUTH_TOKEN: ${{ secrets.ORG_NPM_TOKEN }}
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
command: "version-or-publish" command: 'version-or-publish'
createRelease: true createRelease: true
recognizeContributors: true recognizeContributors: true
@@ -78,8 +78,8 @@ jobs:
uses: tauri-apps/create-pull-request@v3 uses: tauri-apps/create-pull-request@v3
if: steps.covector.outputs.commandRan == 'version' if: steps.covector.outputs.commandRan == 'version'
with: with:
title: "Publish New Versions (${{ github.ref_name }})" title: 'Publish New Versions (${{ github.ref_name }})'
commit-message: "publish new versions" commit-message: 'publish new versions'
labels: "version updates" labels: 'version updates'
branch: "ci/release-${{ github.ref_name }}" branch: 'ci/release-${{ github.ref_name }}'
body: ${{ steps.covector.outputs.change }} body: ${{ steps.covector.outputs.change }}
+59
View File
@@ -0,0 +1,59 @@
# Copyright 2019-2023 Tauri Programme within The Commons Conservancy
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: MIT
name: check formatting
on:
pull_request:
jobs:
rustfmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: install Rust stable and rustfmt
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: run cargo fmt
run: cargo fmt --all -- --check
prettier:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cache pnpm modules
uses: actions/cache@v4
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-
- uses: actions/setup-node@v4
with:
node-version: 'lts/*'
- uses: pnpm/action-setup@v4
with:
version: 9.x.x
run_install: true
- run: pnpm format:check
taplo:
name: taplo (.toml files)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: install Rust stable
uses: dtolnay/rust-toolchain@stable
- name: install taplo-cli
uses: taiki-e/install-action@v2
with:
tool: taplo-cli
- run: taplo fmt --check --diff
+4 -4
View File
@@ -10,15 +10,15 @@ on:
- v1 - v1
- v2 - v2
paths: paths:
- ".github/workflows/integration-tests.yml" - '.github/workflows/integration-tests.yml'
- "plugins/updater/src/**" - 'plugins/updater/src/**'
pull_request: pull_request:
branches: branches:
- v1 - v1
- v2 - v2
paths: paths:
- ".github/workflows/integration-tests.yml" - '.github/workflows/integration-tests.yml'
- "plugins/updater/src/**" - 'plugins/updater/src/**'
jobs: jobs:
run-integration-tests: run-integration-tests:
+13 -33
View File
@@ -10,23 +10,23 @@ on:
- v1 - v1
- v2 - v2
paths: paths:
- ".github/workflows/lint-javascript.yml" - '.github/workflows/lint-javascript.yml'
- "plugins/*/guest-js/**" - 'plugins/*/guest-js/**'
- ".eslintignore" - '.eslintignore'
- ".eslintrc.json" - '.eslintrc.json'
- ".prettierignore" - '.prettierignore'
- "**/package.json" - '**/package.json'
pull_request: pull_request:
branches: branches:
- v1 - v1
- v2 - v2
paths: paths:
- ".github/workflows/lint-javascript.yml" - '.github/workflows/lint-javascript.yml'
- "plugins/*/guest-js/**" - 'plugins/*/guest-js/**'
- ".eslintignore" - '.eslintignore'
- ".eslintrc.json" - '.eslintrc.json'
- ".prettierignore" - '.prettierignore'
- "**/package.json" - '**/package.json'
concurrency: concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
@@ -46,30 +46,10 @@ jobs:
${{ runner.os }}- ${{ runner.os }}-
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
with: with:
node-version: "lts/*" node-version: 'lts/*'
- uses: pnpm/action-setup@v4 - uses: pnpm/action-setup@v4
with: with:
version: 9.x.x version: 9.x.x
run_install: true run_install: true
- name: eslint - name: eslint
run: pnpm lint run: pnpm lint
prettier:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cache pnpm modules
uses: actions/cache@v4
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-
- uses: actions/setup-node@v4
with:
node-version: "lts/*"
- uses: pnpm/action-setup@v4
with:
version: 9.x.x
run_install: true
- name: prettier check
run: pnpm format-check
+16 -40
View File
@@ -10,19 +10,19 @@ on:
- v1 - v1
- v2 - v2
paths: paths:
- ".github/workflows/lint-rust.yml" - '.github/workflows/lint-rust.yml'
- "plugins/*/src/**" - 'plugins/*/src/**'
- "!plugins/*/src/api-iife.js" - '!plugins/*/src/api-iife.js'
- "**/Cargo.toml" - '**/Cargo.toml'
pull_request: pull_request:
branches: branches:
- v1 - v1
- v2 - v2
paths: paths:
- ".github/workflows/lint-rust.yml" - '.github/workflows/lint-rust.yml'
- "plugins/*/src/**" - 'plugins/*/src/**'
- "!plugins/*/src/api-iife.js" - '!plugins/*/src/api-iife.js'
- "**/Cargo.toml" - '**/Cargo.toml'
concurrency: concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
@@ -41,9 +41,6 @@ jobs:
id: filter id: filter
with: with:
filters: | filters: |
tauri-plugin-authenticator:
- .github/workflows/lint-rust.yml
- plugins/authenticator/**
tauri-plugin-autostart: tauri-plugin-autostart:
- .github/workflows/lint-rust.yml - .github/workflows/lint-rust.yml
- plugins/autostart/** - plugins/autostart/**
@@ -69,6 +66,9 @@ jobs:
tauri-plugin-global-shortcut: tauri-plugin-global-shortcut:
- .github/workflows/lint-rust.yml - .github/workflows/lint-rust.yml
- plugins/global-shortcut/** - plugins/global-shortcut/**
tauri-plugin-opener:
- .github/workflows/lint-rust.yml
- plugins/opener/**
tauri-plugin-haptics: tauri-plugin-haptics:
- .github/workflows/lint-rust.yml - .github/workflows/lint-rust.yml
- plugins/haptics/** - plugins/haptics/**
@@ -129,7 +129,7 @@ jobs:
clippy: clippy:
needs: changes needs: changes
if: ${{ needs.changes.outputs.packages != '[]' && needs.changes.outputs.packages != '' }} if: ${{ needs.changes.outputs.packages != '[]' && needs.changes.outputs.packages != '' }}
runs-on: ubuntu-latest runs-on: ubuntu-22.04
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
@@ -138,10 +138,10 @@ jobs:
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: install webkit2gtk and libudev for [authenticator] - name: install webkit2gtk
run: | run: |
sudo apt-get update sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev libudev-dev sudo apt-get install -y libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev
- name: Install clippy with stable toolchain - name: Install clippy with stable toolchain
uses: dtolnay/rust-toolchain@stable uses: dtolnay/rust-toolchain@stable
@@ -150,32 +150,8 @@ jobs:
- uses: Swatinem/rust-cache@v2 - uses: Swatinem/rust-cache@v2
- name: create dummy dist
working-directory: examples/api
run: mkdir dist
- name: clippy ${{ matrix.package }} - name: clippy ${{ matrix.package }}
if: matrix.package != 'tauri-plugin-sql'
run: cargo clippy --package ${{ matrix.package }} --all-targets -- -D warnings run: cargo clippy --package ${{ matrix.package }} --all-targets -- -D warnings
- name: clippy ${{ matrix.package }} mysql - name: clippy ${{ matrix.package }} --all-features
if: matrix.package == 'tauri-plugin-sql' run: cargo clippy --package ${{ matrix.package }} --all-targets --all-features -- -D warnings
run: cargo clippy --package ${{ matrix.package }} --all-targets --no-default-features --features mysql -- -D warnings
- name: clippy ${{ matrix.package }} postgres
if: matrix.package == 'tauri-plugin-sql'
run: cargo clippy --package ${{ matrix.package }} --all-targets --no-default-features --features postgres -- -D warnings
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install rustfmt with nightly toolchain
uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt
- name: Check formatting
run: cargo fmt --all -- --check
+1 -1
View File
@@ -34,7 +34,7 @@ jobs:
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
with: with:
node-version: "lts/*" node-version: 'lts/*'
- uses: pnpm/action-setup@v4 - uses: pnpm/action-setup@v4
with: with:
+29 -51
View File
@@ -10,21 +10,21 @@ on:
- v1 - v1
- v2 - v2
paths: paths:
- ".github/workflows/test-rust.yml" - '.github/workflows/test-rust.yml'
- "plugins/*/src/**" - 'plugins/*/src/**'
- "!plugins/*/src/api-iife.js" - '!plugins/*/src/api-iife.js'
- "**/Cargo.toml" - '**/Cargo.toml'
- "**/Cargo.lock" - '**/Cargo.lock'
pull_request: pull_request:
branches: branches:
- v1 - v1
- v2 - v2
paths: paths:
- ".github/workflows/test-rust.yml" - '.github/workflows/test-rust.yml'
- "plugins/*/src/**" - 'plugins/*/src/**'
- "!plugins/*/src/api-iife.js" - '!plugins/*/src/api-iife.js'
- "**/Cargo.toml" - '**/Cargo.toml'
- "**/Cargo.lock" - '**/Cargo.lock'
concurrency: concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
@@ -44,10 +44,6 @@ jobs:
with: with:
base: v2 base: v2
filters: | filters: |
tauri-plugin-authenticator:
- .github/workflows/test-rust.yml
- Cargo.toml
- plugins/authenticator/**
tauri-plugin-autostart: tauri-plugin-autostart:
- .github/workflows/test-rust.yml - .github/workflows/test-rust.yml
- Cargo.toml - Cargo.toml
@@ -81,6 +77,10 @@ jobs:
- .github/workflows/test-rust.yml - .github/workflows/test-rust.yml
- Cargo.toml - Cargo.toml
- plugins/global-shortcut/** - plugins/global-shortcut/**
tauri-plugin-opener:
- .github/workflows/test-rust.yml
- Cargo.toml
- plugins/opener/**
tauri-plugin-haptics: tauri-plugin-haptics:
- .github/workflows/test-rust.yml - .github/workflows/test-rust.yml
- Cargo.toml - Cargo.toml
@@ -167,32 +167,32 @@ jobs:
- { - {
target: x86_64-pc-windows-msvc, target: x86_64-pc-windows-msvc,
os: windows-latest, os: windows-latest,
runner: "cargo", runner: 'cargo',
command: "test", command: 'test'
} }
- { - {
target: x86_64-unknown-linux-gnu, target: x86_64-unknown-linux-gnu,
os: ubuntu-latest, os: ubuntu-22.04,
runner: "cargo", runner: 'cargo',
command: "test", command: 'test'
} }
- { - {
target: aarch64-apple-darwin, target: aarch64-apple-darwin,
os: macos-latest, os: macos-latest,
runner: "cargo", runner: 'cargo',
command: "test", command: 'test'
} }
- { - {
target: aarch64-apple-ios, target: aarch64-apple-ios,
os: macos-latest, os: macos-latest,
runner: "cargo", runner: 'cargo',
command: "build", command: 'build'
} }
- { - {
target: aarch64-linux-android, target: aarch64-linux-android,
os: ubuntu-latest, os: ubuntu-latest,
runner: "cross", runner: 'cross',
command: "build", command: 'build'
} }
runs-on: ${{ matrix.platform.os }} runs-on: ${{ matrix.platform.os }}
@@ -200,19 +200,13 @@ jobs:
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: install webkit2gtk and libudev for [authenticator] - name: install webkit2gtk
if: contains(matrix.platform.target, 'unknown-linux') if: contains(matrix.platform.target, 'unknown-linux')
run: | run: |
sudo apt-get update sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev libudev-dev sudo apt-get install -y libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev
- name: install openssl - uses: dtolnay/rust-toolchain@1.77.2
if: ${{ matrix.platform.os == 'windows-latest' && matrix.package == 'tauri-plugin-authenticator' }}
run: |
echo "VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT" | Out-File -FilePath $env:GITHUB_ENV -Append
vcpkg install openssl:x64-windows-static-md
- uses: dtolnay/rust-toolchain@1.75.0
with: with:
targets: ${{ matrix.platform.target }} targets: ${{ matrix.platform.target }}
@@ -220,30 +214,14 @@ jobs:
with: with:
key: cache-${{ matrix.package }}-${{ matrix.platform.target }} key: cache-${{ matrix.package }}-${{ matrix.platform.target }}
- name: create dummy dist
working-directory: examples/api
run: mkdir dist
- name: install cross - name: install cross
if: ${{ matrix.platform.runner == 'cross' }} if: ${{ matrix.platform.runner == 'cross' }}
run: cargo +stable install cross --git https://github.com/cross-rs/cross run: cargo +stable install cross --git https://github.com/cross-rs/cross
- name: test ${{ matrix.package }} - name: test ${{ matrix.package }}
if: matrix.package != 'tauri-plugin-sql' && matrix.package != 'tauri-plugin-http' if: matrix.package != 'tauri-plugin-http'
run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --all-features run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --all-features
- name: test ${{ matrix.package }} - name: test ${{ matrix.package }}
if: matrix.package == 'tauri-plugin-http' if: matrix.package == 'tauri-plugin-http'
run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets 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
- name: test ${{ matrix.package }} postgres
if: matrix.package == 'tauri-plugin-sql'
run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --features postgres
+57 -7
View File
@@ -1,8 +1,58 @@
target # dependency directories
node_modules node_modules/
dist-js target/
dist
# Optional npm and yarn cache directory
.npm/
.yarn/
# Output of 'npm pack'
*.tgz
# dotenv environment variables file
.env
# .vscode workspace settings file
.vscode/settings.json
# npm, yarn and bun lock files
package-lock.json
yarn.lock
bun.lockb
# rust compiled folders
target/
# compiled plugins
dist-js/
# plugins .tauri directory
/plugins/*/.tauri
# examples
examples/*/dist
plugins/*/examples/*/dist
examples/*/src-tauri/gen/schemas
plugins/*/examples/*/src-tauri/gen/schemas
# logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# runtime data
pids
*.pid
*.seed
*.pid.lock
# miscellaneous
/.vs
.DS_Store
.Thumbs.db
*.sublime*
.idea .idea
.vscode debug.log
.gradle TODO.md
**/capabilities/schemas
+23 -8
View File
@@ -1,12 +1,27 @@
target /.changes
node_modules /.vscode
dist
dist-js # dependcies and artifacts directories
node_modules/
target/
dist-js/
dist/
# lock files
pnpm-lock.yaml pnpm-lock.yaml
Cargo.lock
.build # examples gen directory
build examples/*/src-tauri/gen/
plugins/*/examples/*/src-tauri/gen/
# autogenerated files
**/autogenerated/**/*.md
api-iife.js api-iife.js
init-iife.js init-iife.js
intermediates/ CHANGELOG.md
*schema.json *schema.json
# mobile build
**/ios/.build
**/.tauri
plugins/*/android/build
+5
View File
@@ -0,0 +1,5 @@
{
"singleQuote": true,
"semi": false,
"trailingComma": "none"
}
+59 -59
View File
@@ -2,129 +2,129 @@
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
import fs from "fs"; import fs from 'fs'
import path from "path"; import path from 'path'
import readline from "readline"; import readline from 'readline'
const header = `Copyright 2019-2023 Tauri Programme within The Commons Conservancy const header = `Copyright 2019-2023 Tauri Programme within The Commons Conservancy
SPDX-License-Identifier: Apache-2.0 SPDX-License-Identifier: Apache-2.0
SPDX-License-Identifier: MIT`; SPDX-License-Identifier: MIT`
const ignoredLicenses = [ const ignoredLicenses = [
"// Copyright 2021 Flavio Oliveira", '// Copyright 2021 Flavio Oliveira',
"// Copyright 2021 Jonas Kruckenberg", '// Copyright 2021 Jonas Kruckenberg',
"// Copyright 2018-2023 the Deno authors.", '// Copyright 2018-2023 the Deno authors.'
]; ]
const extensions = [".rs", ".js", ".ts", ".yml", ".swift", ".kt"]; const extensions = ['.rs', '.js', '.ts', '.yml', '.swift', '.kt']
const ignore = [ const ignore = [
"target", 'target',
"templates", 'templates',
"node_modules", 'node_modules',
"gen", 'gen',
"dist", 'dist',
"dist-js", 'dist-js',
".svelte-kit", '.svelte-kit',
"api-iife.js", 'api-iife.js',
"init-iife.js", 'init-iife.js',
".build", '.build',
"notify_rust", 'notify_rust'
]; ]
async function checkFile(file) { async function checkFile(file) {
if ( if (
extensions.some((e) => file.endsWith(e)) && extensions.some((e) => file.endsWith(e)) &&
!ignore.some((i) => file.includes(`${path.sep}${i}`)) !ignore.some((i) => file.includes(`${path.sep}${i}`))
) { ) {
const fileStream = fs.createReadStream(file); const fileStream = fs.createReadStream(file)
const rl = readline.createInterface({ const rl = readline.createInterface({
input: fileStream, input: fileStream,
crlfDelay: Infinity, crlfDelay: Infinity
}); })
let contents = ``; let contents = ``
let i = 0; let i = 0
for await (let line of rl) { for await (let line of rl) {
// ignore empty lines, allow shebang, swift-tools-version and bundler license // ignore empty lines, allow shebang, swift-tools-version and bundler license
if ( if (
line.length === 0 || line.length === 0 ||
line.startsWith("#!") || line.startsWith('#!') ||
line.startsWith("// swift-tools-version:") || line.startsWith('// swift-tools-version:') ||
ignoredLicenses.includes(line) ignoredLicenses.includes(line)
) { ) {
continue; continue
} }
// strip comment marker // strip comment marker
if (line.startsWith("// ")) { if (line.startsWith('// ')) {
line = line.substring(3); line = line.substring(3)
} else if (line.startsWith("# ")) { } else if (line.startsWith('# ')) {
line = line.substring(2); line = line.substring(2)
} }
contents += line; contents += line
if (++i === 3) { if (++i === 3) {
break; break
} }
contents += "\n"; contents += '\n'
} }
if (contents !== header) { if (contents !== header) {
return true; return true
} }
} }
return false; return false
} }
async function check(src) { async function check(src) {
const missingHeader = []; const missingHeader = []
for (const entry of fs.readdirSync(src, { for (const entry of fs.readdirSync(src, {
withFileTypes: true, withFileTypes: true
})) { })) {
const p = path.join(src, entry.name); const p = path.join(src, entry.name)
if (entry.isSymbolicLink() || ignore.includes(entry.name)) { if (entry.isSymbolicLink() || ignore.includes(entry.name)) {
continue; continue
} }
if (entry.isDirectory()) { if (entry.isDirectory()) {
const missing = await check(p); const missing = await check(p)
missingHeader.push(...missing); missingHeader.push(...missing)
} else { } else {
const isMissing = await checkFile(p); const isMissing = await checkFile(p)
if (isMissing) { if (isMissing) {
missingHeader.push(p); missingHeader.push(p)
} }
} }
} }
return missingHeader; return missingHeader
} }
const [_bin, _script, ...files] = process.argv; const [_bin, _script, ...files] = process.argv
if (files.length > 0) { if (files.length > 0) {
async function run() { async function run() {
const missing = []; const missing = []
for (const f of files) { for (const f of files) {
const isMissing = await checkFile(f); const isMissing = await checkFile(f)
if (isMissing) { if (isMissing) {
missing.push(f); missing.push(f)
} }
} }
if (missing.length > 0) { if (missing.length > 0) {
console.log(missing.join("\n")); console.log(missing.join('\n'))
process.exit(1); process.exit(1)
} }
} }
run(); run()
} else { } else {
check(path.resolve(new URL(import.meta.url).pathname, "../../..")).then( check(path.resolve(new URL(import.meta.url).pathname, '../../..')).then(
(missing) => { (missing) => {
if (missing.length > 0) { if (missing.length > 0) {
console.log(missing.join("\n")); console.log(missing.join('\n'))
process.exit(1); process.exit(1)
} }
}, }
); )
} }
+8
View File
@@ -0,0 +1,8 @@
{
"recommendations": [
"rust-lang.rust-analyzer",
"EditorConfig.EditorConfig",
"esbenp.prettier-vscode",
"tamasfe.even-better-toml"
]
}
Generated
+1459 -1254
View File
File diff suppressed because it is too large Load Diff
+9 -6
View File
@@ -10,24 +10,27 @@ resolver = "2"
[workspace.dependencies] [workspace.dependencies]
serde = { version = "1", features = ["derive"] } serde = { version = "1", features = ["derive"] }
tracing = "0.1"
log = "0.4" log = "0.4"
tauri = { version = "2.0.0-rc.3", default-features = false } tauri = { version = "2", default-features = false }
tauri-build = "2.0.0-rc.3" tauri-build = "2"
tauri-plugin = "2.0.0-rc.3" tauri-plugin = "2"
tauri-utils = "2.0.0-rc.3" tauri-utils = "2"
serde_json = "1" serde_json = "1"
thiserror = "1" thiserror = "2"
url = "2" url = "2"
schemars = "0.8" schemars = "0.8"
dunce = "1" dunce = "1"
specta = "=2.0.0-rc.20" specta = "=2.0.0-rc.20"
glob = "0.3"
zbus = "4"
#tauri-specta = "=2.0.0-rc.11" #tauri-specta = "=2.0.0-rc.11"
[workspace.package] [workspace.package]
edition = "2021" edition = "2021"
authors = ["Tauri Programme within The Commons Conservancy"] authors = ["Tauri Programme within The Commons Conservancy"]
license = "Apache-2.0 OR MIT" license = "Apache-2.0 OR MIT"
rust-version = "1.75" rust-version = "1.77.2"
repository = "https://github.com/tauri-apps/plugins-workspace" repository = "https://github.com/tauri-apps/plugins-workspace"
# default to small, optimized release binaries # default to small, optimized release binaries
+39 -31
View File
@@ -1,37 +1,45 @@
# Official Tauri Plugins
This repo and all plugins require a Rust version of at least **1.77.2**
## Plugins Found Here ## Plugins Found Here
| | | Win | Mac | Lin | iOS | And | | | | Win | Mac | Lin | iOS | And |
| ----------------------------------------------- | ------------------------------------------------------ | --- | --- | --- | --- | --- | | ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | --- | --- | --- | --- |
| [authenticator](plugins/authenticator) | Interface with hardware security keys. | ✅ | ✅ | ✅ | ? | ? | | [autostart](plugins/autostart) | Automatically launch your app at system startup. | ✅ | ✅ | ✅ | | |
| [autostart](plugins/autostart) | Automatically launch your app at system startup. | ✅ | ✅ | | ? | ? | | [barcode-scanner](plugins/barcode-scanner) | Allows your mobile application to use the camera to scan QR codes, EAN-13 and other kinds of barcodes. | ? | ? | ? | ✅ | ✅ |
| [barcode-scanner](plugins/barcode-scanner) | Allows your mobile application to use the camera to scan QR codes, EAN-13 and other kinds of barcodes. | ? | ? | ? | ✅ | ✅ | | [biometric](plugins/biometric) | Prompt the user for biometric authentication on Android and iOS. | ? | ? | ? | ✅ | ✅ |
| [biometric](plugins/biometric) | Prompt the user for biometric authentication on Android and iOS. | ? | ? | ? | | | | [cli](plugins/cli) | Parse arguments from your Command Line Interface | | | | | |
| [cli](plugins/cli) | Parse arguments from your Command Line Interface | ✅ | ✅ | ✅ | ? | ? | | [clipboard-manager](plugins/clipboard-manager) | Read and write to the system clipboard. | ✅ | ✅ | ✅ | | |
| [clipboard-manager](plugins/clipboard-manager) | Read and write to the system clipboard. | ✅ | ✅ | ✅ | ✅ | ✅ | | [deep-link](plugins/deep-link) | Set your Tauri application as the default handler for an URL. | ✅ | ✅ | ✅ | ✅ | ✅ |
| [deep-link](plugins/deep-link) | Set your Tauri application as the default handler for an URL. | ✅ | ✅ | ✅ | ✅ | ✅ | | [dialog](plugins/dialog) | Native system dialogs for opening and saving files along with message dialogs. | ✅ | ✅ | ✅ | ✅ | ✅ |
| [dialog](plugins/dialog) | Native system dialogs for opening and saving files along with message dialogs. | ✅ | ✅ | ✅ | | | | [fs](plugins/fs) | Access the file system. | ✅ | ✅ | ✅ | ? | ? |
| [fs](plugins/fs) | Access the file system. | | | | ? | ? | | [geolocation](plugins/geolocation) | Get and track current device position. | ? | ? | ? | | |
| [global-shortcut](plugins/global-shortcut) | Register global shortcuts. | ✅ | ✅ | ✅ | ? | ? | | [global-shortcut](plugins/global-shortcut) | Register global shortcuts. | ✅ | ✅ | ✅ | ? | ? |
| [http](plugins/http) | Access the HTTP client written in Rust. | | | | ✅ | ✅ | | [haptics](plugins/haptics) | Haptic feedback and vibrations. | ? | ? | ? | ✅ | ✅ |
| [localhost](plugins/localhost) | Use a localhost server in production apps. | ✅ | ✅ | ✅ | ? | ? | | [http](plugins/http) | Access the HTTP client written in Rust. | ✅ | ✅ | ✅ | ✅ | |
| [log](plugins/log) | Configurable logging. | ✅ | ✅ | ✅ | ✅ | | | [localhost](plugins/localhost) | Use a localhost server in production apps. | ✅ | ✅ | ✅ | ? | ? |
| [nfc](plugins/nfc) | Read and write NFC tags on Android and iOS. | ? | ? | ? | ✅ | ✅ | | [log](plugins/log) | Configurable logging. | ✅ | ✅ | ✅ | ✅ | ✅ |
| [notification](plugins/notification) | Send message notifications (brief auto-expiring OS window element) to your user. Can also be used with the Notification Web API. | | | | ✅ | ✅ | | [nfc](plugins/nfc) | Read and write NFC tags on Android and iOS. | ? | ? | ? | ✅ | ✅ |
| [os](plugins/os) | Read information about the operating system. | ✅ | ✅ | ✅ | ✅ | ✅ | | [notification](plugins/notification) | Send message notifications (brief auto-expiring OS window element) to your user. Can also be used with the Notification Web API. | ✅ | ✅ | ✅ | ✅ | ✅ |
| [persisted-scope](plugins/persisted-scope) | Persist runtime scope changes on the filesystem. | ✅ | ✅ | ✅ | ? | ? | | [opener](plugins/opener) | Open files and URLs using their default application. | ✅ | ✅ | ✅ | ? | ? |
| [positioner](plugins/positioner) | Move windows to common locations. | ✅ | ✅ | ✅ | ? | ? | | [os](plugins/os) | Read information about the operating system. | ✅ | ✅ | ✅ | ✅ | |
| [process](plugins/process) | This plugin provides APIs to access the current process. To spawn child processes, see the [`shell`](https://github.com/tauri-apps/tauri-plugin-shell) plugin. | ✅ | ✅ | ✅ | ? | ? | | [persisted-scope](plugins/persisted-scope) | Persist runtime scope changes on the filesystem. | ✅ | ✅ | ✅ | ? | ? |
| [shell](plugins/shell) | Access the system shell. Allows you to spawn child processes and manage files and URLs using their default application. | ✅ | ✅ | ✅ | ? | ? | | [positioner](plugins/positioner) | Move windows to common locations. | ✅ | ✅ | ✅ | | |
| [single-instance](plugins/single-instance) | Ensure a single instance of your tauri app is running. | ✅ | ? | ✅ | ? | ? | | [process](plugins/process) | This plugin provides APIs to access the current process. To spawn child processes, see the [`shell`](https://github.com/tauri-apps/tauri-plugin-shell) plugin. | ✅ | | ✅ | ? | ? |
| [sql](plugins/sql) | Interface with SQL databases. | ✅ | ✅ | ✅ | ? | ? | | [shell](plugins/shell) | Access the system shell. Allows you to spawn child processes and manage files and URLs using their default application. | ✅ | ✅ | ✅ | ? | ? |
| [store](plugins/store) | Persistent key value storage. | ✅ | ✅ | ✅ | | | | [single-instance](plugins/single-instance) | Ensure a single instance of your tauri app is running. | ✅ | ✅ | ✅ | | |
| [stronghold](plugins/stronghold) | Encrypted, secure database. | ✅ | ✅ | ✅ | ? | ? | | [sql](plugins/sql) | Interface with SQL databases. | ✅ | ✅ | ✅ | ? | |
| [updater](plugins/updater) | In-app updates for Tauri applications. | ✅ | ✅ | ✅ | ? | ? | | [store](plugins/store) | Persistent key value storage. | ✅ | ✅ | ✅ | ✅ | |
| [upload](plugins/upload) | Tauri plugin for file uploads through HTTP. | ✅ | ✅ | ✅ | ? | ? | | [stronghold](plugins/stronghold) | Encrypted, secure database. | ✅ | ✅ | ✅ | ? | ? |
| [websocket](plugins/websocket) | Open a WebSocket connection using a Rust client in JS. | ✅ | ✅ | ✅ | ? | ? | | [updater](plugins/updater) | In-app updates for Tauri applications. | ✅ | ✅ | ✅ | | |
| [window-state](plugins/window-state) | Persist window sizes and positions. | ✅ | ✅ | ✅ | ? | ? | | [upload](plugins/upload) | Tauri plugin for file uploads through HTTP. | ✅ | ✅ | ✅ | ? | ? |
| [websocket](plugins/websocket) | Open a WebSocket connection using a Rust client in JS. | ✅ | ✅ | ✅ | ? | ? |
| [window-state](plugins/window-state) | Persist window sizes and positions. | ✅ | ✅ | ✅ | ❌ | ❌ |
_This repo and all plugins require a Rust version of at least **1.75**_ - ✅: (Partially) Supported
- ❌: Not supported
- `?` : Unknown/Untested or Planned
## Contributing ## Contributing
+23 -22
View File
@@ -2,28 +2,29 @@
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
import eslint from "@eslint/js"; import eslint from '@eslint/js'
import eslintConfigPrettier from "eslint-config-prettier"; import eslintConfigPrettier from 'eslint-config-prettier'
import eslintPluginSecurity from "eslint-plugin-security"; import eslintPluginSecurity from 'eslint-plugin-security'
import tseslint from "typescript-eslint"; import tseslint from 'typescript-eslint'
export default tseslint.config( export default tseslint.config(
{ {
ignores: [ ignores: [
"**/target", '**/target',
"**/node_modules", '**/node_modules',
"**/examples", '**/examples',
"**/dist", '**/dist',
"**/dist-js", '**/dist-js',
"**/build", '**/build',
"**/api-iife.js", '**/api-iife.js',
"**/init-iife.js", '**/init-iife.js',
"**/init.js", '**/init.js',
"**/rollup.config.js", '**/rollup.config.js',
"**/bindings.ts", '**/bindings.ts',
".scripts", '**/.test-server',
"eslint.config.js", '.scripts',
], 'eslint.config.js'
]
}, },
eslint.configs.recommended, eslint.configs.recommended,
eslintConfigPrettier, eslintConfigPrettier,
@@ -31,7 +32,7 @@ export default tseslint.config(
...tseslint.configs.recommendedTypeChecked, ...tseslint.configs.recommendedTypeChecked,
{ {
languageOptions: { languageOptions: {
parserOptions: { project: true, tsconfigRootDir: import.meta.dirname }, parserOptions: { project: true, tsconfigRootDir: import.meta.dirname }
}, }
}, }
); )
-4
View File
@@ -1,4 +0,0 @@
/node_modules/
/.vscode/
.DS_Store
.cargo
+79
View File
@@ -1,5 +1,84 @@
# Changelog # Changelog
## \[2.0.2]
### Dependencies
- Upgraded to `fs-js@2.0.2`
## \[2.0.1]
### Dependencies
- Upgraded to `dialog-js@2.0.1`
- Upgraded to `fs-js@2.0.1`
- Upgraded to `http-js@2.0.1`
- Upgraded to `shell-js@2.0.1`
- Upgraded to `store-js@2.1.0`
## \[2.0.0]
- [`e2c4dfb6`](https://github.com/tauri-apps/plugins-workspace/commit/e2c4dfb6af43e5dd8d9ceba232c315f5febd55c1) Update to tauri v2 stable release.
### Dependencies
- Upgraded to `barcode-scanner-js@2.0.0`
- Upgraded to `biometric-js@2.0.0`
- Upgraded to `cli-js@2.0.0`
- Upgraded to `clipboard-manager-js@2.0.0`
- Upgraded to `fs-js@2.0.0`
- Upgraded to `dialog-js@2.0.0`
- Upgraded to `global-shortcut-js@2.0.0`
- Upgraded to `http-js@2.0.0`
- Upgraded to `log-js@2.0.0`
- Upgraded to `nfc-js@2.0.0`
- Upgraded to `notification-js@2.0.0`
- Upgraded to `os-js@2.0.0`
- Upgraded to `process-js@2.0.0`
- Upgraded to `shell-js@2.0.0`
- Upgraded to `store-js@2.0.0`
- Upgraded to `updater-js@2.0.0`
## \[2.0.0-rc.5]
### Dependencies
- Upgraded to `store-js@2.0.0-rc.2`
## \[2.0.0-rc.4]
### Dependencies
- Upgraded to `barcode-scanner-js@2.0.0-rc.2`
- Upgraded to `clipboard-manager-js@2.0.0-rc.2`
## \[2.0.0-rc.3]
### Dependencies
- Upgraded to `updater-js@2.0.0-rc.2`
## \[2.0.0-rc.2]
### Dependencies
- Upgraded to `barcode-scanner-js@2.0.0-rc.1`
- Upgraded to `notification-js@2.0.0-rc.1`
- Upgraded to `dialog-js@2.0.0-rc.1`
- Upgraded to `biometric-js@2.0.0-rc.1`
- Upgraded to `cli-js@2.0.0-rc.1`
- Upgraded to `clipboard-manager-js@2.0.0-rc.1`
- Upgraded to `fs-js@2.0.0-rc.2`
- Upgraded to `global-shortcut-js@2.0.0-rc.1`
- Upgraded to `http-js@2.0.0-rc.2`
- Upgraded to `log-js@2.0.0-rc.1`
- Upgraded to `nfc-js@2.0.0-rc.1`
- Upgraded to `os-js@2.0.0-rc.1`
- Upgraded to `process-js@2.0.0-rc.1`
- Upgraded to `shell-js@2.0.0-rc.1`
- Upgraded to `store-js@2.0.0-rc.1`
- Upgraded to `updater-js@2.0.0-rc.1`
## \[2.0.0-rc.1] ## \[2.0.0-rc.1]
### Dependencies ### Dependencies
+2 -2
View File
@@ -3,5 +3,5 @@
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
window.__TAURI_ISOLATION_HOOK__ = (payload) => { window.__TAURI_ISOLATION_HOOK__ = (payload) => {
return payload; return payload
}; }
+4 -6
View File
@@ -1,14 +1,14 @@
{ {
"compilerOptions": { "compilerOptions": {
"moduleResolution": "node", "moduleResolution": "bundler",
"target": "esnext", "target": "ESNext",
"module": "esnext", "module": "ESNext",
/** /**
* svelte-preprocess cannot figure out whether you have * svelte-preprocess cannot figure out whether you have
* a value or a type, so tell TypeScript to enforce using * a value or a type, so tell TypeScript to enforce using
* `import type` instead of `import` for Types. * `import type` instead of `import` for Types.
*/ */
"importsNotUsedAsValues": "error", "verbatimModuleSyntax": true,
"isolatedModules": true, "isolatedModules": true,
"resolveJsonModule": true, "resolveJsonModule": true,
/** /**
@@ -18,8 +18,6 @@
"sourceMap": true, "sourceMap": true,
"esModuleInterop": true, "esModuleInterop": true,
"skipLibCheck": true, "skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"baseUrl": ".",
/** /**
* Typecheck JS in `.svelte` and `.js` files by default. * Typecheck JS in `.svelte` and `.js` files by default.
* Disable this if you'd like to use dynamic types. * Disable this if you'd like to use dynamic types.
+30 -25
View File
@@ -1,39 +1,44 @@
{ {
"name": "svelte-app", "name": "api",
"private": true, "private": true,
"version": "2.0.0-rc.1", "version": "2.0.2",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite --clearScreen false", "dev": "vite --clearScreen false",
"build": "vite build", "build": "vite build",
"serve": "vite preview" "serve": "vite preview",
"tauri": "tauri"
}, },
"dependencies": { "dependencies": {
"@tauri-apps/api": "2.0.0-rc.1", "@tauri-apps/api": "2.1.1",
"@tauri-apps/plugin-barcode-scanner": "2.0.0-rc.0", "@tauri-apps/plugin-barcode-scanner": "2.0.0",
"@tauri-apps/plugin-biometric": "2.0.0-rc.0", "@tauri-apps/plugin-biometric": "2.0.0",
"@tauri-apps/plugin-cli": "2.0.0-rc.0", "@tauri-apps/plugin-cli": "2.0.0",
"@tauri-apps/plugin-clipboard-manager": "2.0.0-rc.0", "@tauri-apps/plugin-clipboard-manager": "2.0.0",
"@tauri-apps/plugin-dialog": "2.0.0-rc.0", "@tauri-apps/plugin-dialog": "2.0.1",
"@tauri-apps/plugin-fs": "2.0.0-rc.1", "@tauri-apps/plugin-fs": "2.0.2",
"@tauri-apps/plugin-global-shortcut": "2.0.0-rc.0", "@tauri-apps/plugin-geolocation": "2.0.0",
"@tauri-apps/plugin-http": "2.0.0-rc.1", "@tauri-apps/plugin-global-shortcut": "2.0.0",
"@tauri-apps/plugin-nfc": "2.0.0-rc.0", "@tauri-apps/plugin-opener": "1.0.0",
"@tauri-apps/plugin-notification": "2.0.0-rc.0", "@tauri-apps/plugin-haptics": "2.0.0",
"@tauri-apps/plugin-os": "2.0.0-rc.0", "@tauri-apps/plugin-http": "2.0.1",
"@tauri-apps/plugin-process": "2.0.0-rc.0", "@tauri-apps/plugin-nfc": "2.0.0",
"@tauri-apps/plugin-shell": "2.0.0-rc.0", "@tauri-apps/plugin-notification": "2.0.0",
"@tauri-apps/plugin-updater": "2.0.0-rc.0", "@tauri-apps/plugin-os": "2.0.0",
"@zerodevx/svelte-json-view": "1.0.9" "@tauri-apps/plugin-process": "2.0.0",
"@tauri-apps/plugin-shell": "2.0.1",
"@tauri-apps/plugin-store": "2.1.0",
"@tauri-apps/plugin-updater": "2.0.0",
"@zerodevx/svelte-json-view": "1.0.11"
}, },
"devDependencies": { "devDependencies": {
"@iconify-json/codicon": "^1.1.37", "@iconify-json/codicon": "^1.1.37",
"@iconify-json/ph": "^1.1.8", "@iconify-json/ph": "^1.1.8",
"@sveltejs/vite-plugin-svelte": "^3.0.1", "@sveltejs/vite-plugin-svelte": "^4.0.0",
"@tauri-apps/cli": "2.0.0-rc.4", "@tauri-apps/cli": "2.1.0",
"@unocss/extractor-svelte": "^0.62.0", "@unocss/extractor-svelte": "^0.64.0",
"svelte": "^4.2.8", "svelte": "^5.0.0",
"unocss": "^0.62.0", "unocss": "^0.64.0",
"vite": "^5.0.13" "vite": "^5.4.7"
} }
} }
+154
View File
@@ -1,5 +1,159 @@
# Changelog # Changelog
## \[2.0.5]
### Dependencies
- Upgraded to `clipboard-manager@2.0.2`
- Upgraded to `log-plugin@2.0.2`
## \[2.0.4]
### Dependencies
- Upgraded to `fs@2.0.3`
- Upgraded to `dialog@2.0.3`
- Upgraded to `http@2.0.3`
## \[2.0.3]
### Dependencies
- Upgraded to `dialog@2.0.2`
- Upgraded to `fs@2.0.2`
- Upgraded to `http@2.0.2`
- Upgraded to `shell@2.0.2`
- Upgraded to `store@2.1.0`
## \[2.0.2]
- [`a1a82208`](https://github.com/tauri-apps/plugins-workspace/commit/a1a82208ed4ab87f83310be0dc95428aec9ab241) ([#1873](https://github.com/tauri-apps/plugins-workspace/pull/1873) by [@lucasfernog](https://github.com/tauri-apps/plugins-workspace/../../lucasfernog)) Downgrade MSRV to 1.77.2 to support Windows 7.
### Dependencies
- Upgraded to `barcode-scanner@2.0.1`
- Upgraded to `biometric@2.0.1`
- Upgraded to `cli@2.0.1`
- Upgraded to `clipboard-manager@2.0.1`
- Upgraded to `fs@2.0.1`
- Upgraded to `dialog@2.0.1`
- Upgraded to `geolocation@2.0.1`
- Upgraded to `global-shortcut@2.0.1`
- Upgraded to `haptics@2.0.1`
- Upgraded to `http@2.0.1`
- Upgraded to `log-plugin@2.0.1`
- Upgraded to `nfc@2.0.1`
- Upgraded to `notification@2.0.1`
- Upgraded to `os@2.0.1`
- Upgraded to `process@2.0.1`
- Upgraded to `shell@2.0.1`
- Upgraded to `store@2.0.1`
- Upgraded to `updater@2.0.2`
## \[2.0.1]
### Dependencies
- Upgraded to `updater@2.0.1`
## \[2.0.0]
- [`e2c4dfb6`](https://github.com/tauri-apps/plugins-workspace/commit/e2c4dfb6af43e5dd8d9ceba232c315f5febd55c1) Update to tauri v2 stable release.
### Dependencies
- Upgraded to `barcode-scanner@2.0.0`
- Upgraded to `biometric@2.0.0`
- Upgraded to `cli@2.0.0`
- Upgraded to `clipboard-manager@2.0.0`
- Upgraded to `fs@2.0.0`
- Upgraded to `dialog@2.0.0`
- Upgraded to `global-shortcut@2.0.0`
- Upgraded to `http@2.0.0`
- Upgraded to `log-plugin@2.0.0`
- Upgraded to `nfc@2.0.0`
- Upgraded to `notification@2.0.0`
- Upgraded to `os@2.0.0`
- Upgraded to `process@2.0.0`
- Upgraded to `shell@2.0.0`
- Upgraded to `store@2.0.0`
- Upgraded to `updater@2.0.0`
## \[2.0.0-rc.8]
### Dependencies
- Upgraded to `cli@2.0.0-rc.2`
- Upgraded to `dialog@2.0.0-rc.8`
- Upgraded to `fs@2.0.0-rc.6`
- Upgraded to `shell@2.0.0-rc.4`
- Upgraded to `store@2.0.0-rc.4`
- Upgraded to `updater@2.0.0-rc.4`
- Upgraded to `http@2.0.0-rc.6`
## \[2.0.0-rc.7]
### Dependencies
- Upgraded to `clipboard-manager@2.0.0-rc.4`
- Upgraded to `fs@2.0.0-rc.5`
- Upgraded to `notification@2.0.0-rc.5`
- Upgraded to `dialog@2.0.0-rc.7`
- Upgraded to `http@2.0.0-rc.5`
## \[2.0.0-rc.6]
### Dependencies
- Upgraded to `dialog@2.0.0-rc.6`
- Upgraded to `fs@2.0.0-rc.4`
- Upgraded to `http@2.0.0-rc.4`
## \[2.0.0-rc.5]
### Dependencies
- Upgraded to `barcode-scanner@2.0.0-rc.4`
- Upgraded to `notification@2.0.0-rc.4`
## \[2.0.0-rc.4]
### Dependencies
- Upgraded to `fs@2.0.0-rc.3`
- Upgraded to `dialog@2.0.0-rc.5`
- Upgraded to `updater@2.0.0-rc.3`
- Upgraded to `http@2.0.0-rc.3`
## \[2.0.0-rc.3]
### Dependencies
- Upgraded to `fs@2.0.0-rc.2`
- Upgraded to `dialog@2.0.0-rc.4`
- Upgraded to `http@2.0.0-rc.2`
## \[2.0.0-rc.2]
### Dependencies
- Upgraded to `barcode-scanner@2.0.0-rc.3`
- Upgraded to `notification@2.0.0-rc.3`
- Upgraded to `dialog@2.0.0-rc.3`
- Upgraded to `fs@2.0.0-rc.1`
- Upgraded to `global-shortcut@2.0.0-rc.2`
- Upgraded to `store@2.0.0-rc.3`
- Upgraded to `biometric@2.0.0-rc.3`
- Upgraded to `cli@2.0.0-rc.1`
- Upgraded to `clipboard-manager@2.0.0-rc.3`
- Upgraded to `http@2.0.0-rc.1`
- Upgraded to `log-plugin@2.0.0-rc.2`
- Upgraded to `nfc@2.0.0-rc.3`
- Upgraded to `os@2.0.0-rc.1`
- Upgraded to `process@2.0.0-rc.1`
- Upgraded to `shell@2.0.0-rc.3`
- Upgraded to `updater@2.0.0-rc.2`
## \[2.0.0-rc.1] ## \[2.0.0-rc.1]
### Dependencies ### Dependencies
+21 -19
View File
@@ -1,7 +1,7 @@
[package] [package]
name = "api" name = "api"
publish = false publish = false
version = "2.0.0-rc.1" version = "2.0.5"
description = "An example Tauri Application showcasing the api" description = "An example Tauri Application showcasing the api"
edition = "2021" edition = "2021"
rust-version = { workspace = true } rust-version = { workspace = true }
@@ -19,21 +19,23 @@ serde_json = { workspace = true }
serde = { workspace = true } serde = { workspace = true }
tiny_http = "0.12" tiny_http = "0.12"
log = { workspace = true } log = { workspace = true }
tauri-plugin-log = { path = "../../../plugins/log", version = "2.0.0-rc.1" } tauri-plugin-log = { path = "../../../plugins/log", version = "2.0.2" }
tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.0.0-rc.0", features = [ tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.0.3", features = [
"watch", "watch",
] } ] }
tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.0.0-rc.2" } tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.0.2" }
tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.0.0-rc.2" } tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.0.3" }
tauri-plugin-http = { path = "../../../plugins/http", features = [ tauri-plugin-http = { path = "../../../plugins/http", features = [
"multipart", "multipart",
], version = "2.0.0-rc.0" } ], version = "2.0.3" }
tauri-plugin-notification = { path = "../../../plugins/notification", version = "2.0.0-rc.2", features = [ tauri-plugin-notification = { path = "../../../plugins/notification", version = "2.0.1", features = [
"windows7-compat", "windows7-compat",
] } ] }
tauri-plugin-os = { path = "../../../plugins/os", version = "2.0.0-rc.0" } tauri-plugin-os = { path = "../../../plugins/os", version = "2.0.1" }
tauri-plugin-process = { path = "../../../plugins/process", version = "2.0.0-rc.0" } tauri-plugin-process = { path = "../../../plugins/process", version = "2.0.1" }
tauri-plugin-shell = { path = "../../../plugins/shell", version = "2.0.0-rc.2" } tauri-plugin-opener = { path = "../../../plugins/opener", version = "1.0.0" }
tauri-plugin-shell = { path = "../../../plugins/shell", version = "2.0.2" }
tauri-plugin-store = { path = "../../../plugins/store", version = "2.1.0" }
[dependencies.tauri] [dependencies.tauri]
workspace = true workspace = true
@@ -49,17 +51,17 @@ features = [
] ]
[target."cfg(any(target_os = \"macos\", windows, target_os = \"linux\", target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\"))".dependencies] [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-rc.0" } tauri-plugin-cli = { path = "../../../plugins/cli", version = "2.0.1" }
tauri-plugin-global-shortcut = { path = "../../../plugins/global-shortcut", version = "2.0.0-rc.1" } tauri-plugin-global-shortcut = { path = "../../../plugins/global-shortcut", version = "2.0.1" }
tauri-plugin-updater = { path = "../../../plugins/updater", version = "2.0.0-rc.1" } tauri-plugin-updater = { path = "../../../plugins/updater", version = "2.0.2" }
tauri-plugin-window-state = { path = "../../../plugins/window-state", version = "2.0.0" }
[target."cfg(any(target_os = \"android\", target_os = \"ios\"))".dependencies] [target."cfg(any(target_os = \"android\", target_os = \"ios\"))".dependencies]
tauri-plugin-barcode-scanner = { path = "../../../plugins/barcode-scanner/", version = "2.0.0-rc.2" } tauri-plugin-barcode-scanner = { path = "../../../plugins/barcode-scanner/", version = "2.0.1" }
tauri-plugin-nfc = { path = "../../../plugins/nfc", version = "2.0.0-rc.2" } tauri-plugin-nfc = { path = "../../../plugins/nfc", version = "2.0.1" }
tauri-plugin-biometric = { path = "../../../plugins/biometric/", version = "2.0.0-rc.2" } tauri-plugin-biometric = { path = "../../../plugins/biometric/", version = "2.0.1" }
tauri-plugin-geolocation = { path = "../../../plugins/geolocation/", version = "2.0.1" }
[target."cfg(target_os = \"windows\")".dependencies] tauri-plugin-haptics = { path = "../../../plugins/haptics/", version = "2.0.1" }
window-shadows = "0.2"
[features] [features]
prod = ["tauri/custom-protocol"] prod = ["tauri/custom-protocol"]
+10 -6
View File
@@ -1,10 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>NSCameraUsageDescription</key> <key>NSCameraUsageDescription</key>
<string>Request camera access for WebRTC</string> <string>Request camera access for WebRTC</string>
<key>NSMicrophoneUsageDescription</key> <key>NSMicrophoneUsageDescription</key>
<string>Request microphone access for WebRTC</string> <string>Request microphone access for WebRTC</string>
</dict> <key>NSFaceIDUsageDescription</key>
<string>Authenticate with biometrics</string>
<key>NFCReaderUsageDescription</key>
<string>Read and write to NFC tags for testing</string>
</dict>
</plist> </plist>
@@ -53,6 +53,7 @@
} }
] ]
}, },
"shell:allow-open",
"shell:allow-kill", "shell:allow-kill",
"shell:allow-stdin-write", "shell:allow-stdin-write",
"process:allow-exit", "process:allow-exit",
@@ -61,6 +62,9 @@
"clipboard-manager:allow-write-text", "clipboard-manager:allow-write-text",
"clipboard-manager:allow-read-image", "clipboard-manager:allow-read-image",
"clipboard-manager:allow-write-image", "clipboard-manager:allow-write-image",
"fs:allow-open",
"fs:allow-write",
"fs:allow-read",
"fs:allow-rename", "fs:allow-rename",
"fs:allow-mkdir", "fs:allow-mkdir",
"fs:allow-remove", "fs:allow-remove",
@@ -75,6 +79,12 @@
} }
], ],
"deny": ["$APPDATA/db/*.stronghold"] "deny": ["$APPDATA/db/*.stronghold"]
},
"store:default",
"opener:default",
{
"identifier": "opener:allow-open-path",
"allow": [{ "path": "$APPDATA" }, { "path": "$APPDATA/**" }]
} }
] ]
} }
@@ -9,6 +9,8 @@
"updater:default", "updater:default",
"global-shortcut:allow-unregister", "global-shortcut:allow-unregister",
"global-shortcut:allow-register", "global-shortcut:allow-register",
"global-shortcut:allow-unregister-all" "global-shortcut:allow-unregister-all",
{ "identifier": "fs:allow-watch", "allow": ["*", "**/*"] },
"fs:allow-unwatch"
] ]
} }
@@ -11,6 +11,14 @@
"barcode-scanner:allow-scan", "barcode-scanner:allow-scan",
"barcode-scanner:allow-cancel", "barcode-scanner:allow-cancel",
"barcode-scanner:allow-request-permissions", "barcode-scanner:allow-request-permissions",
"barcode-scanner:allow-check-permissions" "barcode-scanner:allow-check-permissions",
"geolocation:allow-check-permissions",
"geolocation:allow-request-permissions",
"geolocation:allow-watch-position",
"geolocation:allow-get-current-position",
"haptics:allow-impact-feedback",
"haptics:allow-notification-feedback",
"haptics:allow-selection-feedback",
"haptics:allow-vibrate"
] ]
} }
+4 -1
View File
@@ -19,7 +19,7 @@
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" /> <option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
<option name="modules"> <option name="modules">
<set> <set>
<option value="$USER_HOME$/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tauri-2.0.0-rc.2/mobile/android" /> <option value="$USER_HOME$/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tauri-2.0.2/mobile/android" />
<option value="$PROJECT_DIR$" /> <option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" /> <option value="$PROJECT_DIR$/app" />
<option value="$PROJECT_DIR$/buildSrc" /> <option value="$PROJECT_DIR$/buildSrc" />
@@ -27,6 +27,9 @@
<option value="$PROJECT_DIR$/../../../../../plugins/biometric/android" /> <option value="$PROJECT_DIR$/../../../../../plugins/biometric/android" />
<option value="$PROJECT_DIR$/../../../../../plugins/clipboard-manager/android" /> <option value="$PROJECT_DIR$/../../../../../plugins/clipboard-manager/android" />
<option value="$PROJECT_DIR$/../../../../../plugins/dialog/android" /> <option value="$PROJECT_DIR$/../../../../../plugins/dialog/android" />
<option value="$PROJECT_DIR$/../../../../../plugins/fs/android" />
<option value="$PROJECT_DIR$/../../../../../plugins/geolocation/android" />
<option value="$PROJECT_DIR$/../../../../../plugins/haptics/android" />
<option value="$PROJECT_DIR$/../../../../../plugins/nfc/android" /> <option value="$PROJECT_DIR$/../../../../../plugins/nfc/android" />
<option value="$PROJECT_DIR$/../../../../../plugins/notification/android" /> <option value="$PROJECT_DIR$/../../../../../plugins/notification/android" />
<option value="$PROJECT_DIR$/../../../../../plugins/shell/android" /> <option value="$PROJECT_DIR$/../../../../../plugins/shell/android" />
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="KotlinJpsPluginSettings"> <component name="KotlinJpsPluginSettings">
<option name="version" value="1.9.10" /> <option name="version" value="1.9.25" />
</component> </component>
</project> </project>
@@ -20,6 +20,7 @@ android {
manifestPlaceholders["usesCleartextTraffic"] = "false" manifestPlaceholders["usesCleartextTraffic"] = "false"
applicationId = "com.tauri.api" applicationId = "com.tauri.api"
minSdk = 24 minSdk = 24
targetSdk = 34
versionCode = tauriProperties.getProperty("tauri.android.versionCode", "1").toInt() versionCode = tauriProperties.getProperty("tauri.android.versionCode", "1").toInt()
versionName = tauriProperties.getProperty("tauri.android.versionName", "1.0") versionName = tauriProperties.getProperty("tauri.android.versionName", "1.0")
} }
@@ -47,6 +48,9 @@ android {
kotlinOptions { kotlinOptions {
jvmTarget = "1.8" jvmTarget = "1.8"
} }
buildFeatures {
buildConfig = true
}
} }
rust { rust {
@@ -1,6 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<!-- AndroidTV support -->
<uses-feature android:name="android.software.leanback" android:required="false" />
<application <application
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:label="@string/app_name"
@@ -15,6 +19,8 @@
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
<!-- AndroidTV support -->
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter> </intent-filter>
<!-- NFC PLUGIN. AUTO-GENERATED. DO NOT REMOVE. --> <!-- NFC PLUGIN. AUTO-GENERATED. DO NOT REMOVE. -->
<intent-filter> <intent-filter>
@@ -4,8 +4,8 @@ buildscript {
mavenCentral() mavenCentral()
} }
dependencies { dependencies {
classpath("com.android.tools.build:gradle:8.3.2") classpath("com.android.tools.build:gradle:8.5.1")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.25")
} }
} }
@@ -18,6 +18,6 @@ repositories {
dependencies { dependencies {
compileOnly(gradleApi()) compileOnly(gradleApi())
implementation("com.android.tools.build:gradle:8.3.2") implementation("com.android.tools.build:gradle:8.5.1")
} }
@@ -21,5 +21,4 @@ kotlin.code.style=official
# resources declared in the library itself and none from the library's dependencies, # resources declared in the library itself and none from the library's dependencies,
# thereby reducing the size of the R class for that library # thereby reducing the size of the R class for that library
android.nonTransitiveRClass=true android.nonTransitiveRClass=true
android.defaults.buildfeatures.buildconfig=true
android.nonFinalResIds=false android.nonFinalResIds=false
@@ -1,6 +1,6 @@
#Tue May 10 19:22:52 CST 2022 #Tue May 10 19:22:52 CST 2022
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
@@ -3,6 +3,6 @@
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>method</key> <key>method</key>
<string>development</string> <string>debugging</string>
</dict> </dict>
</plist> </plist>
@@ -3,14 +3,14 @@
archiveVersion = 1; archiveVersion = 1;
classes = { classes = {
}; };
objectVersion = 54; objectVersion = 56;
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
2B78BA327A38C76093D36092 /* libapi_lib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A00E5F95D64FD14E47F85BD /* libapi_lib.a */; };
3043432501C9BC2DB6B4CB95 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 71EB788DE4662CFC0D97F567 /* CoreGraphics.framework */; }; 3043432501C9BC2DB6B4CB95 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 71EB788DE4662CFC0D97F567 /* CoreGraphics.framework */; };
328B4ADB3700C1873BEB7B10 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 90D3B673AFAB8D8AB561F616 /* main.mm */; }; 328B4ADB3700C1873BEB7B10 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 90D3B673AFAB8D8AB561F616 /* main.mm */; };
6F379F15DA085785BA2624D4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6B7E79E23E646BA7968B457C /* Assets.xcassets */; }; 6F379F15DA085785BA2624D4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6B7E79E23E646BA7968B457C /* Assets.xcassets */; };
832F9A55FEDEF3D807D8C40A /* libapp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 248286BAA086BB1A5F98B2B2 /* libapp.a */; };
9AADB041D25772D04E543F15 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62601E25FA39E62BE119B74D /* Metal.framework */; }; 9AADB041D25772D04E543F15 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62601E25FA39E62BE119B74D /* Metal.framework */; };
9DDA3BE70DD0E4013973FE38 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B6082E363D51372A7658C351 /* UIKit.framework */; }; 9DDA3BE70DD0E4013973FE38 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B6082E363D51372A7658C351 /* UIKit.framework */; };
AC8BDC2C7A63FA3FDC5967F4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4B2D1B108AE002010BDEC6D2 /* LaunchScreen.storyboard */; }; AC8BDC2C7A63FA3FDC5967F4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4B2D1B108AE002010BDEC6D2 /* LaunchScreen.storyboard */; };
@@ -22,26 +22,26 @@
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
0E96CE07CD20273DD46BF325 /* main.rs */ = {isa = PBXFileReference; path = main.rs; sourceTree = "<group>"; }; 0E96CE07CD20273DD46BF325 /* main.rs */ = {isa = PBXFileReference; lastKnownFileType = text; path = main.rs; sourceTree = "<group>"; };
1C1AB1B414CA2795AFBEDDB9 /* tray.rs */ = {isa = PBXFileReference; path = tray.rs; sourceTree = "<group>"; }; 1C1AB1B414CA2795AFBEDDB9 /* tray.rs */ = {isa = PBXFileReference; lastKnownFileType = text; path = tray.rs; sourceTree = "<group>"; };
248286BAA086BB1A5F98B2B2 /* libapp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libapp.a; sourceTree = "<group>"; };
2F63E2AA460089BB58D40C79 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; }; 2F63E2AA460089BB58D40C79 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
338E66700FD330B99D434DD7 /* MetalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalKit.framework; path = System/Library/Frameworks/MetalKit.framework; sourceTree = SDKROOT; }; 338E66700FD330B99D434DD7 /* MetalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalKit.framework; path = System/Library/Frameworks/MetalKit.framework; sourceTree = SDKROOT; };
384966E551417F94A02D2706 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; 384966E551417F94A02D2706 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
4A00E5F95D64FD14E47F85BD /* libapi_lib.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libapi_lib.a; sourceTree = "<group>"; };
4B2D1B108AE002010BDEC6D2 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; }; 4B2D1B108AE002010BDEC6D2 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
59CFE20DCF760BE67D9CE3D6 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; 59CFE20DCF760BE67D9CE3D6 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
5AC703CEBA41A121596066F3 /* api_iOS.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = api_iOS.app; sourceTree = BUILT_PRODUCTS_DIR; }; 5AC703CEBA41A121596066F3 /* Tauri API.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Tauri API.app"; sourceTree = BUILT_PRODUCTS_DIR; };
62601E25FA39E62BE119B74D /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; }; 62601E25FA39E62BE119B74D /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; };
6B7E79E23E646BA7968B457C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 6B7E79E23E646BA7968B457C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
71EB788DE4662CFC0D97F567 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 71EB788DE4662CFC0D97F567 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
74A8FDFB350B966F5AAD4A24 /* assets */ = {isa = PBXFileReference; lastKnownFileType = folder; path = assets; sourceTree = SOURCE_ROOT; }; 74A8FDFB350B966F5AAD4A24 /* assets */ = {isa = PBXFileReference; lastKnownFileType = folder; path = assets; sourceTree = SOURCE_ROOT; };
785D025E9542F7E098BF22B5 /* lib.rs */ = {isa = PBXFileReference; path = lib.rs; sourceTree = "<group>"; }; 785D025E9542F7E098BF22B5 /* lib.rs */ = {isa = PBXFileReference; lastKnownFileType = text; path = lib.rs; sourceTree = "<group>"; };
879941AE3DAA14534BBC6391 /* api_iOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = api_iOS.entitlements; sourceTree = "<group>"; }; 879941AE3DAA14534BBC6391 /* api_iOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = api_iOS.entitlements; sourceTree = "<group>"; };
90D3B673AFAB8D8AB561F616 /* main.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = "<group>"; }; 90D3B673AFAB8D8AB561F616 /* main.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = "<group>"; };
B6082E363D51372A7658C351 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; B6082E363D51372A7658C351 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
DC377692DC31A070A0188C9D /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; DC377692DC31A070A0188C9D /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
EC8C7948C50C3C9B5D96CB61 /* bindings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bindings.h; sourceTree = "<group>"; }; EC8C7948C50C3C9B5D96CB61 /* bindings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bindings.h; sourceTree = "<group>"; };
F835F52713CE8F029D5D252C /* cmd.rs */ = {isa = PBXFileReference; path = cmd.rs; sourceTree = "<group>"; }; F835F52713CE8F029D5D252C /* cmd.rs */ = {isa = PBXFileReference; lastKnownFileType = text; path = cmd.rs; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@@ -49,7 +49,7 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
2B78BA327A38C76093D36092 /* libapi_lib.a in Frameworks */, 832F9A55FEDEF3D807D8C40A /* libapp.a in Frameworks */,
3043432501C9BC2DB6B4CB95 /* CoreGraphics.framework in Frameworks */, 3043432501C9BC2DB6B4CB95 /* CoreGraphics.framework in Frameworks */,
9AADB041D25772D04E543F15 /* Metal.framework in Frameworks */, 9AADB041D25772D04E543F15 /* Metal.framework in Frameworks */,
DFFF888045C8D9D9FB69E8FD /* MetalKit.framework in Frameworks */, DFFF888045C8D9D9FB69E8FD /* MetalKit.framework in Frameworks */,
@@ -90,7 +90,7 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
71EB788DE4662CFC0D97F567 /* CoreGraphics.framework */, 71EB788DE4662CFC0D97F567 /* CoreGraphics.framework */,
4A00E5F95D64FD14E47F85BD /* libapi_lib.a */, 248286BAA086BB1A5F98B2B2 /* libapp.a */,
62601E25FA39E62BE119B74D /* Metal.framework */, 62601E25FA39E62BE119B74D /* Metal.framework */,
338E66700FD330B99D434DD7 /* MetalKit.framework */, 338E66700FD330B99D434DD7 /* MetalKit.framework */,
DC377692DC31A070A0188C9D /* QuartzCore.framework */, DC377692DC31A070A0188C9D /* QuartzCore.framework */,
@@ -104,7 +104,7 @@
4AC51E67B71E27F15B02C5CD /* Products */ = { 4AC51E67B71E27F15B02C5CD /* Products */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
5AC703CEBA41A121596066F3 /* api_iOS.app */, 5AC703CEBA41A121596066F3 /* Tauri API.app */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -172,7 +172,7 @@
); );
name = api_iOS; name = api_iOS;
productName = api_iOS; productName = api_iOS;
productReference = 5AC703CEBA41A121596066F3 /* api_iOS.app */; productReference = 5AC703CEBA41A121596066F3 /* Tauri API.app */;
productType = "com.apple.product-type.application"; productType = "com.apple.product-type.application";
}; };
/* End PBXNativeTarget section */ /* End PBXNativeTarget section */
@@ -186,7 +186,6 @@
TargetAttributes = { TargetAttributes = {
54DC6E273C78071F3BA12EF3 = { 54DC6E273C78071F3BA12EF3 = {
DevelopmentTeam = Q93MBH6S2F; DevelopmentTeam = Q93MBH6S2F;
ProvisioningStyle = Automatic;
}; };
}; };
}; };
@@ -235,9 +234,9 @@
outputFileListPaths = ( outputFileListPaths = (
); );
outputPaths = ( outputPaths = (
"$(SRCROOT)/Externals/x86_64/${CONFIGURATION}/libapi_lib.a", "$(SRCROOT)/Externals/x86_64/${CONFIGURATION}/libapp.a",
"$(SRCROOT)/Externals/arm64/${CONFIGURATION}/libapi_lib.a", "$(SRCROOT)/Externals/arm64/${CONFIGURATION}/libapp.a",
"$(SRCROOT)/Externals/arm64-sim/${CONFIGURATION}/libapi_lib.a", "$(SRCROOT)/Externals/arm64-sim/${CONFIGURATION}/libapp.a",
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
@@ -397,13 +396,32 @@
"\".\"", "\".\"",
); );
INFOPLIST_FILE = api_iOS/Info.plist; INFOPLIST_FILE = api_iOS/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
"LIBRARY_SEARCH_PATHS[arch=arm64-sim]" = "$(inherited) $(PROJECT_DIR)/Externals/arm64-sim/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"; "LIBRARY_SEARCH_PATHS[arch=arm64-sim]" = (
"LIBRARY_SEARCH_PATHS[arch=arm64]" = "$(inherited) $(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"; "$(inherited)",
"LIBRARY_SEARCH_PATHS[arch=x86_64]" = "$(inherited) $(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"; "$(PROJECT_DIR)/Externals/arm64-sim/$(CONFIGURATION)",
"$(SDKROOT)/usr/lib/swift",
"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)",
"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)",
);
"LIBRARY_SEARCH_PATHS[arch=arm64]" = (
"$(inherited)",
"$(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION)",
"$(SDKROOT)/usr/lib/swift",
"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)",
"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)",
);
"LIBRARY_SEARCH_PATHS[arch=x86_64]" = (
"$(inherited)",
"$(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION)",
"$(SDKROOT)/usr/lib/swift",
"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)",
"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)",
);
PRODUCT_BUNDLE_IDENTIFIER = com.tauri.api; PRODUCT_BUNDLE_IDENTIFIER = com.tauri.api;
PRODUCT_NAME = "Tauri API"; PRODUCT_NAME = "Tauri API";
SDKROOT = iphoneos; SDKROOT = iphoneos;
@@ -433,13 +451,32 @@
"\".\"", "\".\"",
); );
INFOPLIST_FILE = api_iOS/Info.plist; INFOPLIST_FILE = api_iOS/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
"LIBRARY_SEARCH_PATHS[arch=arm64-sim]" = "$(inherited) $(PROJECT_DIR)/Externals/arm64-sim/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"; "LIBRARY_SEARCH_PATHS[arch=arm64-sim]" = (
"LIBRARY_SEARCH_PATHS[arch=arm64]" = "$(inherited) $(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"; "$(inherited)",
"LIBRARY_SEARCH_PATHS[arch=x86_64]" = "$(inherited) $(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"; "$(PROJECT_DIR)/Externals/arm64-sim/$(CONFIGURATION)",
"$(SDKROOT)/usr/lib/swift",
"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)",
"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)",
);
"LIBRARY_SEARCH_PATHS[arch=arm64]" = (
"$(inherited)",
"$(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION)",
"$(SDKROOT)/usr/lib/swift",
"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)",
"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)",
);
"LIBRARY_SEARCH_PATHS[arch=x86_64]" = (
"$(inherited)",
"$(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION)",
"$(SDKROOT)/usr/lib/swift",
"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)",
"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)",
);
PRODUCT_BUNDLE_IDENTIFIER = com.tauri.api; PRODUCT_BUNDLE_IDENTIFIER = com.tauri.api;
PRODUCT_NAME = "Tauri API"; PRODUCT_NAME = "Tauri API";
SDKROOT = iphoneos; SDKROOT = iphoneos;
@@ -40,9 +40,13 @@
<string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string> <string>UIInterfaceOrientationLandscapeRight</string>
</array> </array>
<key>NSFaceIDUsageDescription</key>
<string>Authenticate with biometrics</string>
<key>NSCameraUsageDescription</key> <key>NSCameraUsageDescription</key>
<string>Request camera access for WebRTC</string> <string>Request camera access for WebRTC</string>
<key>NSMicrophoneUsageDescription</key> <key>NSMicrophoneUsageDescription</key>
<string>Request microphone access for WebRTC</string> <string>Request microphone access for WebRTC</string>
<key>NFCReaderUsageDescription</key>
<string>Read and write to NFC tags for testing</string>
</dict> </dict>
</plist> </plist>
+5 -6
View File
@@ -2,7 +2,7 @@ name: api
options: options:
bundleIdPrefix: com.tauri.api bundleIdPrefix: com.tauri.api
deploymentTarget: deploymentTarget:
iOS: 13.0 iOS: 14.0
fileGroups: [../../src] fileGroups: [../../src]
configs: configs:
debug: debug debug: debug
@@ -13,7 +13,6 @@ settingGroups:
PRODUCT_NAME: Tauri API PRODUCT_NAME: Tauri API
PRODUCT_BUNDLE_IDENTIFIER: com.tauri.api PRODUCT_BUNDLE_IDENTIFIER: com.tauri.api
DEVELOPMENT_TEAM: Q93MBH6S2F DEVELOPMENT_TEAM: Q93MBH6S2F
CODE_SIGN_STYLE: Automatic
targetTemplates: targetTemplates:
app: app:
type: application type: application
@@ -74,7 +73,7 @@ targets:
EXCLUDED_ARCHS[sdk=iphoneos*]: arm64-sim x86_64 EXCLUDED_ARCHS[sdk=iphoneos*]: arm64-sim x86_64
groups: [app] groups: [app]
dependencies: dependencies:
- framework: libapi_lib.a - framework: libapp.a
embed: false embed: false
- sdk: CoreGraphics.framework - sdk: CoreGraphics.framework
- sdk: Metal.framework - sdk: Metal.framework
@@ -88,6 +87,6 @@ targets:
name: Build Rust Code name: Build Rust Code
basedOnDependencyAnalysis: false basedOnDependencyAnalysis: false
outputFiles: outputFiles:
- $(SRCROOT)/Externals/x86_64/${CONFIGURATION}/libapi_lib.a - $(SRCROOT)/Externals/x86_64/${CONFIGURATION}/libapp.a
- $(SRCROOT)/Externals/arm64/${CONFIGURATION}/libapi_lib.a - $(SRCROOT)/Externals/arm64/${CONFIGURATION}/libapp.a
- $(SRCROOT)/Externals/arm64-sim/${CONFIGURATION}/libapi_lib.a - $(SRCROOT)/Externals/arm64-sim/${CONFIGURATION}/libapp.a
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+7 -1
View File
@@ -36,7 +36,9 @@ pub fn run() {
.plugin(tauri_plugin_notification::init()) .plugin(tauri_plugin_notification::init())
.plugin(tauri_plugin_os::init()) .plugin(tauri_plugin_os::init())
.plugin(tauri_plugin_process::init()) .plugin(tauri_plugin_process::init())
.plugin(tauri_plugin_opener::init())
.plugin(tauri_plugin_shell::init()) .plugin(tauri_plugin_shell::init())
.plugin(tauri_plugin_store::Builder::default().build())
.setup(move |app| { .setup(move |app| {
#[cfg(desktop)] #[cfg(desktop)]
{ {
@@ -44,6 +46,8 @@ pub fn run() {
app.handle().plugin(tauri_plugin_cli::init())?; app.handle().plugin(tauri_plugin_cli::init())?;
app.handle() app.handle()
.plugin(tauri_plugin_global_shortcut::Builder::new().build())?; .plugin(tauri_plugin_global_shortcut::Builder::new().build())?;
app.handle()
.plugin(tauri_plugin_window_state::Builder::new().build())?;
app.handle() app.handle()
.plugin(tauri_plugin_updater::Builder::new().build())?; .plugin(tauri_plugin_updater::Builder::new().build())?;
} }
@@ -52,6 +56,8 @@ pub fn run() {
app.handle().plugin(tauri_plugin_barcode_scanner::init())?; app.handle().plugin(tauri_plugin_barcode_scanner::init())?;
app.handle().plugin(tauri_plugin_nfc::init())?; app.handle().plugin(tauri_plugin_nfc::init())?;
app.handle().plugin(tauri_plugin_biometric::init())?; app.handle().plugin(tauri_plugin_biometric::init())?;
app.handle().plugin(tauri_plugin_geolocation::init())?;
app.handle().plugin(tauri_plugin_haptics::init())?;
} }
let mut webview_window_builder = let mut webview_window_builder =
@@ -63,7 +69,7 @@ pub fn run() {
.title("Tauri API Validation") .title("Tauri API Validation")
.inner_size(1000., 800.) .inner_size(1000., 800.)
.min_inner_size(600., 400.) .min_inner_size(600., 400.)
.content_protected(true); .visible(false);
} }
#[cfg(target_os = "windows")] #[cfg(target_os = "windows")]
+4 -1
View File
@@ -1,5 +1,5 @@
{ {
"$schema": "../node_modules/@tauri-apps/cli/schema.json", "$schema": "../node_modules/@tauri-apps/cli/config.schema.json",
"productName": "Tauri API", "productName": "Tauri API",
"version": "2.0.0", "version": "2.0.0",
"identifier": "com.tauri.api", "identifier": "com.tauri.api",
@@ -100,6 +100,9 @@
} }
} }
} }
},
"iOS": {
"minimumSystemVersion": "14.0"
} }
} }
} }
+225 -202
View File
@@ -1,200 +1,222 @@
<script> <script>
import { writable } from "svelte/store"; import { writable } from 'svelte/store'
import { open } from "@tauri-apps/plugin-shell"; import { getCurrentWindow } from '@tauri-apps/api/window'
import { getCurrentWindow } from "@tauri-apps/api/window"; import { getCurrentWebview } from '@tauri-apps/api/webview'
import { getCurrentWebview } from "@tauri-apps/api/webview"; import * as os from '@tauri-apps/plugin-os'
import * as os from "@tauri-apps/plugin-os";
import Welcome from "./views/Welcome.svelte"; import Welcome from './views/Welcome.svelte'
import Cli from "./views/Cli.svelte"; import Cli from './views/Cli.svelte'
import Communication from "./views/Communication.svelte"; import Communication from './views/Communication.svelte'
import Dialog from "./views/Dialog.svelte"; import Dialog from './views/Dialog.svelte'
import FileSystem from "./views/FileSystem.svelte"; import FileSystem from './views/FileSystem.svelte'
import Http from "./views/Http.svelte"; import Http from './views/Http.svelte'
import Notifications from "./views/Notifications.svelte"; import Notifications from './views/Notifications.svelte'
import Shortcuts from "./views/Shortcuts.svelte"; import Shortcuts from './views/Shortcuts.svelte'
import Shell from "./views/Shell.svelte"; import Shell from './views/Shell.svelte'
import Updater from "./views/Updater.svelte"; import Opener from './views/Opener.svelte'
import Clipboard from "./views/Clipboard.svelte"; import Store from './views/Store.svelte'
import WebRTC from "./views/WebRTC.svelte"; import Updater from './views/Updater.svelte'
import Scanner from "./views/Scanner.svelte"; import Clipboard from './views/Clipboard.svelte'
import Biometric from "./views/Biometric.svelte"; import WebRTC from './views/WebRTC.svelte'
import Scanner from './views/Scanner.svelte'
import Biometric from './views/Biometric.svelte'
import Geolocation from './views/Geolocation.svelte'
import Haptics from './views/Haptics.svelte'
import { onMount, tick } from "svelte"; import { onMount, tick } from 'svelte'
import { ask } from "@tauri-apps/plugin-dialog"; import { ask } from '@tauri-apps/plugin-dialog'
import Nfc from "./views/Nfc.svelte"; import Nfc from './views/Nfc.svelte'
const appWindow = getCurrentWindow(); const appWindow = getCurrentWindow()
if (appWindow.label !== "main") { if (appWindow.label !== 'main') {
appWindow.onCloseRequested(async (event) => { appWindow.onCloseRequested(async (event) => {
const confirmed = await confirm("Are you sure?"); const confirmed = await confirm('Are you sure?')
if (!confirmed) { if (!confirmed) {
// user did not confirm closing the window; let's prevent it // user did not confirm closing the window; let's prevent it
event.preventDefault(); event.preventDefault()
} }
}); })
} }
getCurrentWebview().onDragDropEvent((event) => { getCurrentWebview().onDragDropEvent((event) => {
onMessage(`File drop: ${JSON.stringify(event.payload)}`); onMessage(`File drop: ${JSON.stringify(event.payload)}`)
}); })
const userAgent = navigator.userAgent.toLowerCase(); const userAgent = navigator.userAgent.toLowerCase()
const isMobile = const isMobile = userAgent.includes('android') || userAgent.includes('iphone')
userAgent.includes("android") || userAgent.includes("iphone");
const views = [ const views = [
{ {
label: "Welcome", label: 'Welcome',
component: Welcome, component: Welcome,
icon: "i-ph-hand-waving", icon: 'i-ph-hand-waving'
}, },
{ {
label: "Communication", label: 'Communication',
component: Communication, component: Communication,
icon: "i-codicon-radio-tower", icon: 'i-codicon-radio-tower'
}, },
!isMobile && { !isMobile && {
label: "CLI", label: 'CLI',
component: Cli, component: Cli,
icon: "i-codicon-terminal", icon: 'i-codicon-terminal'
}, },
{ {
label: "Dialog", label: 'Dialog',
component: Dialog, component: Dialog,
icon: "i-codicon-multiple-windows", icon: 'i-codicon-multiple-windows'
}, },
{ {
label: "File system", label: 'File system',
component: FileSystem, component: FileSystem,
icon: "i-codicon-files", icon: 'i-codicon-files'
}, },
{ {
label: "HTTP", label: 'HTTP',
component: Http, component: Http,
icon: "i-ph-globe-hemisphere-west", icon: 'i-ph-globe-hemisphere-west'
}, },
{ {
label: "Notifications", label: 'Notifications',
component: Notifications, component: Notifications,
icon: "i-codicon-bell-dot", icon: 'i-codicon-bell-dot'
}, },
!isMobile && { !isMobile && {
label: "Shortcuts", label: 'Shortcuts',
component: Shortcuts, component: Shortcuts,
icon: "i-codicon-record-keys", icon: 'i-codicon-record-keys'
}, },
{ {
label: "Shell", label: 'Shell',
component: Shell, component: Shell,
icon: "i-codicon-terminal-bash", icon: 'i-codicon-terminal-bash'
},
{
label: 'Opener',
component: Opener,
icon: 'i-codicon-link-external'
},
{
label: 'Store',
component: Store,
icon: 'i-codicon-file-code'
}, },
!isMobile && { !isMobile && {
label: "Updater", label: 'Updater',
component: Updater, component: Updater,
icon: "i-codicon-cloud-download", icon: 'i-codicon-cloud-download'
}, },
{ {
label: "Clipboard", label: 'Clipboard',
component: Clipboard, component: Clipboard,
icon: "i-codicon-clippy", icon: 'i-codicon-clippy'
}, },
{ {
label: "WebRTC", label: 'WebRTC',
component: WebRTC, component: WebRTC,
icon: "i-ph-broadcast", icon: 'i-ph-broadcast'
}, },
isMobile && { isMobile && {
label: "Scanner", label: 'Scanner',
component: Scanner, component: Scanner,
icon: "i-ph-scan", icon: 'i-ph-scan'
}, },
isMobile && { isMobile && {
label: "NFC", label: 'NFC',
component: Nfc, component: Nfc,
icon: "i-ph-nfc", icon: 'i-ph-nfc'
}, },
isMobile && { isMobile && {
label: "Biometric", label: 'Biometric',
component: Biometric, component: Biometric,
icon: "i-ph-scan", icon: 'i-ph-scan'
}, },
]; isMobile && {
label: 'Geolocation',
component: Geolocation,
icon: 'i-ph-map-pin'
},
isMobile && {
label: 'Haptics',
component: Haptics,
icon: 'i-ph-vibrate'
}
]
let selected = views[0]; let selected = views[0]
function select(view) { function select(view) {
selected = view; selected = view
} }
// Window controls // Window controls
let isWindowMaximized; let isWindowMaximized
onMount(async () => { onMount(async () => {
isWindowMaximized = await appWindow.isMaximized(); isWindowMaximized = await appWindow.isMaximized()
appWindow.onResized(async () => { appWindow.onResized(async () => {
isWindowMaximized = await appWindow.isMaximized(); isWindowMaximized = await appWindow.isMaximized()
}); })
}); })
function minimize() { function minimize() {
appWindow.minimize(); appWindow.minimize()
} }
async function toggleMaximize() { async function toggleMaximize() {
(await appWindow.isMaximized()) ;(await appWindow.isMaximized())
? appWindow.unmaximize() ? appWindow.unmaximize()
: appWindow.maximize(); : appWindow.maximize()
} }
let confirmed_close = false; let confirmed_close = false
async function close() { async function close() {
if (!confirmed_close) { if (!confirmed_close) {
confirmed_close = await ask( confirmed_close = await ask(
"Are you sure that you want to close this window?", 'Are you sure that you want to close this window?',
{ {
title: "Tauri API", title: 'Tauri API'
} }
); )
if (confirmed_close) { if (confirmed_close) {
appWindow.close(); appWindow.close()
} }
} }
} }
// dark/light // dark/light
let isDark; let isDark
onMount(() => { onMount(() => {
isDark = localStorage && localStorage.getItem("theme") == "dark"; isDark = localStorage && localStorage.getItem('theme') == 'dark'
applyTheme(isDark); applyTheme(isDark)
}); })
function applyTheme(isDark) { function applyTheme(isDark) {
const html = document.querySelector("html"); const html = document.querySelector('html')
isDark ? html.classList.add("dark") : html.classList.remove("dark"); isDark ? html.classList.add('dark') : html.classList.remove('dark')
localStorage && localStorage.setItem("theme", isDark ? "dark" : ""); localStorage && localStorage.setItem('theme', isDark ? 'dark' : '')
} }
function toggleDark() { function toggleDark() {
isDark = !isDark; isDark = !isDark
applyTheme(isDark); applyTheme(isDark)
} }
// Console // Console
let messages = writable([]); let messages = writable([])
let consoleTextEl; let consoleTextEl
async function onMessage(value) { async function onMessage(value) {
messages.update((r) => [ messages.update((r) => [
...r, ...r,
{ {
html: html:
`<pre><strong class="text-accent dark:text-darkAccent">[${new Date().toLocaleTimeString()}]:</strong> ` + `<pre><strong class="text-accent dark:text-darkAccent">[${new Date().toLocaleTimeString()}]:</strong> ` +
(typeof value === "string" ? value : JSON.stringify(value, null, 1)) + (typeof value === 'string' ? value : JSON.stringify(value, null, 1)) +
"</pre>", '</pre>'
}, }
]); ])
await tick(); await tick()
if (consoleTextEl) consoleTextEl.scrollTop = consoleTextEl.scrollHeight; if (consoleTextEl) consoleTextEl.scrollTop = consoleTextEl.scrollHeight
} }
// this function is renders HTML without sanitizing it so it's insecure // this function renders HTML without sanitizing it so it's insecure
// we only use it with our own input data // we only use it with our own input data
async function insecureRenderHtml(html) { async function insecureRenderHtml(html) {
messages.update((r) => [ messages.update((r) => [
@@ -203,111 +225,109 @@
html: html:
`<pre><strong class="text-accent dark:text-darkAccent">[${new Date().toLocaleTimeString()}]:</strong> ` + `<pre><strong class="text-accent dark:text-darkAccent">[${new Date().toLocaleTimeString()}]:</strong> ` +
html + html +
"</pre>", '</pre>'
}, }
]); ])
await tick(); await tick()
if (consoleTextEl) consoleTextEl.scrollTop = consoleTextEl.scrollHeight; if (consoleTextEl) consoleTextEl.scrollTop = consoleTextEl.scrollHeight
} }
function clear() { function clear() {
messages.update(() => []); messages.update(() => [])
} }
let consoleEl, consoleH, cStartY; let consoleEl, consoleH, cStartY
let minConsoleHeight = 50; let minConsoleHeight = 50
function startResizingConsole(e) { function startResizingConsole(e) {
cStartY = e.clientY; cStartY = e.clientY
const styles = window.getComputedStyle(consoleEl); const styles = window.getComputedStyle(consoleEl)
consoleH = parseInt(styles.height, 10); consoleH = parseInt(styles.height, 10)
const moveHandler = (e) => { const moveHandler = (e) => {
const dy = e.clientY - cStartY; const dy = e.clientY - cStartY
const newH = consoleH - dy; const newH = consoleH - dy
consoleEl.style.height = `${ consoleEl.style.height = `${
newH < minConsoleHeight ? minConsoleHeight : newH newH < minConsoleHeight ? minConsoleHeight : newH
}px`; }px`
}; }
const upHandler = () => { const upHandler = () => {
document.removeEventListener("mouseup", upHandler); document.removeEventListener('mouseup', upHandler)
document.removeEventListener("mousemove", moveHandler); document.removeEventListener('mousemove', moveHandler)
}; }
document.addEventListener("mouseup", upHandler); document.addEventListener('mouseup', upHandler)
document.addEventListener("mousemove", moveHandler); document.addEventListener('mousemove', moveHandler)
} }
let isWindows; let isWindows
onMount(async () => { onMount(async () => {
isWindows = (await os.platform()) === "windows"; isWindows = (await os.platform()) === 'windows'
}); })
// mobile // mobile
let isSideBarOpen = false; let isSideBarOpen = false
let sidebar; let sidebar
let sidebarToggle; let sidebarToggle
let isDraggingSideBar = false; let isDraggingSideBar = false
let draggingStartPosX = 0; let draggingStartPosX = 0
let draggingEndPosX = 0; let draggingEndPosX = 0
const clamp = (min, num, max) => Math.min(Math.max(num, min), max); const clamp = (min, num, max) => Math.min(Math.max(num, min), max)
function toggleSidebar(sidebar, isSideBarOpen) { function toggleSidebar(sidebar, isSideBarOpen) {
sidebar.style.setProperty( sidebar.style.setProperty(
"--translate-x", '--translate-x',
`${isSideBarOpen ? "0" : "-18.75"}rem` `${isSideBarOpen ? '0' : '-18.75'}rem`
); )
} }
onMount(() => { onMount(() => {
sidebar = document.querySelector("#sidebar"); sidebar = document.querySelector('#sidebar')
sidebarToggle = document.querySelector("#sidebarToggle"); sidebarToggle = document.querySelector('#sidebarToggle')
document.addEventListener("click", (e) => { document.addEventListener('click', (e) => {
if (sidebarToggle.contains(e.target)) { if (sidebarToggle.contains(e.target)) {
isSideBarOpen = !isSideBarOpen; isSideBarOpen = !isSideBarOpen
} else if (isSideBarOpen && !sidebar.contains(e.target)) { } else if (isSideBarOpen && !sidebar.contains(e.target)) {
isSideBarOpen = false; isSideBarOpen = false
} }
}); })
document.addEventListener("touchstart", (e) => { document.addEventListener('touchstart', (e) => {
if (sidebarToggle.contains(e.target)) return; if (sidebarToggle.contains(e.target)) return
const x = e.touches[0].clientX; const x = e.touches[0].clientX
if ((0 < x && x < 20 && !isSideBarOpen) || isSideBarOpen) { if ((0 < x && x < 20 && !isSideBarOpen) || isSideBarOpen) {
isDraggingSideBar = true; isDraggingSideBar = true
draggingStartPosX = x; draggingStartPosX = x
} }
}); })
document.addEventListener("touchmove", (e) => { document.addEventListener('touchmove', (e) => {
if (isDraggingSideBar) { if (isDraggingSideBar) {
const x = e.touches[0].clientX; const x = e.touches[0].clientX
draggingEndPosX = x; draggingEndPosX = x
const delta = (x - draggingStartPosX) / 10; const delta = (x - draggingStartPosX) / 10
sidebar.style.setProperty( sidebar.style.setProperty(
"--translate-x", '--translate-x',
`-${clamp(0, isSideBarOpen ? 0 - delta : 18.75 - delta, 18.75)}rem` `-${clamp(0, isSideBarOpen ? 0 - delta : 18.75 - delta, 18.75)}rem`
); )
} }
}); })
document.addEventListener("touchend", () => { document.addEventListener('touchend', () => {
if (isDraggingSideBar) { if (isDraggingSideBar) {
const delta = (draggingEndPosX - draggingStartPosX) / 10; const delta = (draggingEndPosX - draggingStartPosX) / 10
isSideBarOpen = isSideBarOpen isSideBarOpen = isSideBarOpen ? delta > -(18.75 / 2) : delta > 18.75 / 2
? delta > -(18.75 / 2)
: delta > 18.75 / 2;
} }
isDraggingSideBar = false; isDraggingSideBar = false
}); })
}); })
$: { $: {
const sidebar = document.querySelector("#sidebar"); const sidebar = document.querySelector('#sidebar')
if (sidebar) { if (sidebar) {
toggleSidebar(sidebar, isSideBarOpen); toggleSidebar(sidebar, isSideBarOpen)
} }
} }
</script> </script>
@@ -325,42 +345,46 @@
children:h-100% children:w-12 children:inline-flex children:h-100% children:w-12 children:inline-flex
children:items-center children:justify-center" children:items-center children:justify-center"
> >
<span <button
title={isDark ? "Switch to Light mode" : "Switch to Dark mode"} aria-label="Toggle dark mode"
class="hover:bg-hoverOverlay active:bg-hoverOverlayDarker dark:hover:bg-darkHoverOverlay dark:active:bg-darkHoverOverlayDarker" title={isDark ? 'Switch to Light mode' : 'Switch to Dark mode'}
class="bg-inherit border-none hover:bg-hoverOverlay active:bg-hoverOverlayDarker dark:hover:bg-darkHoverOverlay dark:active:bg-darkHoverOverlayDarker"
on:click={toggleDark} on:click={toggleDark}
> >
{#if isDark} {#if isDark}
<div class="i-ph-sun" /> <div class="i-ph-sun"></div>
{:else} {:else}
<div class="i-ph-moon" /> <div class="i-ph-moon"></div>
{/if} {/if}
</span> </button>
<span <button
aria-label="Minimize window"
title="Minimize" title="Minimize"
class="hover:bg-hoverOverlay active:bg-hoverOverlayDarker dark:hover:bg-darkHoverOverlay dark:active:bg-darkHoverOverlayDarker" class="bg-inherit border-none hover:bg-hoverOverlay active:bg-hoverOverlayDarker dark:hover:bg-darkHoverOverlay dark:active:bg-darkHoverOverlayDarker"
on:click={minimize} on:click={minimize}
> >
<div class="i-codicon-chrome-minimize" /> <div class="i-codicon-chrome-minimize"></div>
</span> </button>
<span <button
title={isWindowMaximized ? "Restore" : "Maximize"} aria-label="Maximize window"
class="hover:bg-hoverOverlay active:bg-hoverOverlayDarker dark:hover:bg-darkHoverOverlay dark:active:bg-darkHoverOverlayDarker" title={isWindowMaximized ? 'Restore' : 'Maximize'}
class="bg-inherit border-none hover:bg-hoverOverlay active:bg-hoverOverlayDarker dark:hover:bg-darkHoverOverlay dark:active:bg-darkHoverOverlayDarker"
on:click={toggleMaximize} on:click={toggleMaximize}
> >
{#if isWindowMaximized} {#if isWindowMaximized}
<div class="i-codicon-chrome-restore" /> <div class="i-codicon-chrome-restore"></div>
{:else} {:else}
<div class="i-codicon-chrome-maximize" /> <div class="i-codicon-chrome-maximize"></div>
{/if} {/if}
</span> </button>
<span <button
aria-label="Close window"
title="Close" title="Close"
class="hover:bg-red-700 dark:hover:bg-red-700 hover:text-darkPrimaryText active:bg-red-700/90 dark:active:bg-red-700/90 active:text-darkPrimaryText" class="bg-inherit border-none hover:bg-red-700 dark:hover:bg-red-700 hover:text-darkPrimaryText active:bg-red-700/90 dark:active:bg-red-700/90 active:text-darkPrimaryText"
on:click={close} on:click={close}
> >
<div class="i-codicon-chrome-close" /> <div class="i-codicon-chrome-close"></div>
</span> </button>
</span> </span>
</div> </div>
{/if} {/if}
@@ -368,13 +392,13 @@
<!-- Sidebar toggle, only visible on small screens --> <!-- Sidebar toggle, only visible on small screens -->
<div <div
id="sidebarToggle" id="sidebarToggle"
class="z-2000 sidebar-toggle display-none lt-sm:flex justify-center absolute items-center w-8 h-8 rd-8 class="z-2000 sidebar-toggle hidden lt-sm:flex justify-center absolute items-center w-8 h-8 rd-8
bg-accent dark:bg-darkAccent active:bg-accentDark dark:active:bg-darkAccentDark" bg-accent dark:bg-darkAccent active:bg-accentDark dark:active:bg-darkAccentDark"
> >
{#if isSideBarOpen} {#if isSideBarOpen}
<span class="i-codicon-close animate-duration-300ms animate-fade-in" /> <span class="i-codicon-close animate-duration-300ms animate-fade-in"></span>
{:else} {:else}
<span class="i-codicon-menu animate-duration-300ms animate-fade-in" /> <span class="i-codicon-menu animate-duration-300ms animate-fade-in"></span>
{/if} {/if}
</div> </div>
@@ -386,24 +410,21 @@
class="lt-sm:h-screen lt-sm:shadow-lg lt-sm:shadow lt-sm:transition-transform lt-sm:absolute lt-sm:z-1999 class="lt-sm:h-screen lt-sm:shadow-lg lt-sm:shadow lt-sm:transition-transform lt-sm:absolute lt-sm:z-1999
bg-darkPrimaryLighter transition-colors-250 overflow-hidden grid select-none px-2" bg-darkPrimaryLighter transition-colors-250 overflow-hidden grid select-none px-2"
> >
<img <a href="https://tauri.app" target="_blank">
on:click={() => open("https://tauri.app/")} <img class="p-7" src="tauri_logo.png" alt="Tauri logo" />
class="self-center p-7 cursor-pointer" </a>
src="tauri_logo.png"
alt="Tauri logo"
/>
{#if !isWindows} {#if !isWindows}
<a href="##" class="nv justify-between h-8" on:click={toggleDark}> <a href="##" class="nv justify-between h-8" on:click={toggleDark}>
{#if isDark} {#if isDark}
Switch to Light mode Switch to Light mode
<div class="i-ph-sun" /> <div class="i-ph-sun"></div>
{:else} {:else}
Switch to Dark mode Switch to Dark mode
<div class="i-ph-moon" /> <div class="i-ph-moon"></div>
{/if} {/if}
</a> </a>
<br /> <br />
<div class="bg-white/5 h-2px" /> <div class="bg-white/5 h-2px"></div>
<br /> <br />
{/if} {/if}
@@ -413,7 +434,7 @@
href="https://tauri.app/v1/guides/" href="https://tauri.app/v1/guides/"
> >
Documentation Documentation
<span class="i-codicon-link-external" /> <span class="i-codicon-link-external"></span>
</a> </a>
<a <a
class="nv justify-between h-8" class="nv justify-between h-8"
@@ -421,7 +442,7 @@
href="https://github.com/tauri-apps/tauri" href="https://github.com/tauri-apps/tauri"
> >
GitHub GitHub
<span class="i-codicon-link-external" /> <span class="i-codicon-link-external"></span>
</a> </a>
<a <a
class="nv justify-between h-8" class="nv justify-between h-8"
@@ -429,10 +450,10 @@
href="https://github.com/tauri-apps/tauri/tree/dev/examples/api" href="https://github.com/tauri-apps/tauri/tree/dev/examples/api"
> >
Source Source
<span class="i-codicon-link-external" /> <span class="i-codicon-link-external"></span>
</a> </a>
<br /> <br />
<div class="bg-white/5 h-2px" /> <div class="bg-white/5 h-2px"></div>
<br /> <br />
<div <div
class="flex flex-col overflow-y-auto children-h-10 children-flex-none gap-1" class="flex flex-col overflow-y-auto children-h-10 children-flex-none gap-1"
@@ -443,11 +464,11 @@
href="##" href="##"
class="nv {selected === view ? 'nv_selected' : ''}" class="nv {selected === view ? 'nv_selected' : ''}"
on:click={() => { on:click={() => {
select(view); select(view)
isSideBarOpen = false; isSideBarOpen = false
}} }}
> >
<div class="{view.icon} mr-2" /> <div class="{view.icon} mr-2"></div>
<p>{view.label}</p></a <p>{view.label}</p></a
> >
{/if} {/if}
@@ -476,21 +497,23 @@
id="console" id="console"
class="select-none h-15rem grid grid-rows-[2px_2rem_1fr] gap-1 overflow-hidden" class="select-none h-15rem grid grid-rows-[2px_2rem_1fr] gap-1 overflow-hidden"
> >
<!-- svelte-ignore a11y_no_static_element_interactions -->
<div <div
on:mousedown={startResizingConsole} on:mousedown={startResizingConsole}
class="bg-black/20 h-2px cursor-ns-resize" class="bg-black/20 h-2px cursor-ns-resize"
/> ></div>
<div class="flex justify-between items-center px-2"> <div class="flex justify-between items-center px-2">
<p class="font-semibold">Console</p> <p class="font-semibold">Console</p>
<div <button
class="cursor-pointer h-85% rd-1 p-1 flex justify-center items-center aria-label="Clear Console"
class="cursor-pointer h-85% rd-1 p-1 flex justify-center items-center border-none bg-inherit
hover:bg-hoverOverlay dark:hover:bg-darkHoverOverlay hover:bg-hoverOverlay dark:hover:bg-darkHoverOverlay
active:bg-hoverOverlay/25 dark:active:bg-darkHoverOverlay/25 active:bg-hoverOverlay/25 dark:active:bg-darkHoverOverlay/25
" "
on:click={clear} on:click={clear}
> >
<div class="i-codicon-clear-all" /> <div class="i-codicon-clear-all"></div>
</div> </button>
</div> </div>
<div <div
bind:this={consoleTextEl} bind:this={consoleTextEl}
+1 -1
View File
@@ -5,7 +5,7 @@
* { * {
box-sizing: border-box; box-sizing: border-box;
font-family: "Rubik", sans-serif; font-family: 'Rubik', sans-serif;
} }
::-webkit-scrollbar { ::-webkit-scrollbar {
+7 -7
View File
@@ -4,12 +4,12 @@
export function arrayBufferToBase64(buffer, callback) { export function arrayBufferToBase64(buffer, callback) {
const blob = new Blob([buffer], { const blob = new Blob([buffer], {
type: "application/octet-binary", type: 'application/octet-binary'
}); })
const reader = new FileReader(); const reader = new FileReader()
reader.onload = function (evt) { reader.onload = function (evt) {
const dataurl = evt.target.result; const dataurl = evt.target.result
callback(dataurl.substr(dataurl.indexOf(",") + 1)); callback(dataurl.substr(dataurl.indexOf(',') + 1))
}; }
reader.readAsDataURL(blob); reader.readAsDataURL(blob)
} }
+8 -7
View File
@@ -2,12 +2,13 @@
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
import "uno.css"; import 'uno.css'
import "./app.css"; import './app.css'
import App from "./App.svelte"; import App from './App.svelte'
import { mount } from 'svelte'
const app = new App({ const app = mount(App, {
target: document.querySelector("#app"), target: document.querySelector('#app')
}); })
export default app; export default app
+5 -5
View File
@@ -1,14 +1,14 @@
<script> <script>
import { getMatches } from "@tauri-apps/plugin-cli"; import { getMatches } from '@tauri-apps/plugin-cli'
export let onMessage; export let onMessage
function cliMatches() { function cliMatches() {
getMatches().then(onMessage).catch(onMessage); getMatches().then(onMessage).catch(onMessage)
} }
</script> </script>
<p> <div>
This binary can be run from the terminal and takes the following arguments: This binary can be run from the terminal and takes the following arguments:
<code class="code-block flex flex-wrap my-2"> <code class="code-block flex flex-wrap my-2">
<pre> <pre>
@@ -17,7 +17,7 @@
--verbose</pre> --verbose</pre>
</code> </code>
Additionally, it has a <code>update --background</code> subcommand. Additionally, it has a <code>update --background</code> subcommand.
</p> </div>
<br /> <br />
<div class="note"> <div class="note">
Note that the arguments are only parsed, not implemented. Note that the arguments are only parsed, not implemented.
+28 -29
View File
@@ -1,59 +1,59 @@
<script> <script>
import * as clipboard from "@tauri-apps/plugin-clipboard-manager"; import * as clipboard from '@tauri-apps/plugin-clipboard-manager'
import { open } from "@tauri-apps/plugin-dialog"; import { open } from '@tauri-apps/plugin-dialog'
import { arrayBufferToBase64 } from "../lib/utils"; import { arrayBufferToBase64 } from '../lib/utils'
import { readFile } from "@tauri-apps/plugin-fs"; import { readFile } from '@tauri-apps/plugin-fs'
export let onMessage; export let onMessage
export let insecureRenderHtml; export let insecureRenderHtml
let text = "clipboard message"; let text = 'clipboard message'
function writeText() { function writeText() {
clipboard clipboard
.writeText(text) .writeText(text)
.then(() => { .then(() => {
onMessage("Wrote to the clipboard"); onMessage('Wrote to the clipboard')
}) })
.catch(onMessage); .catch(onMessage)
} }
async function writeImage() { async function writeImage() {
try { try {
const res = await open({ const path = await open({
title: "Image to write to clipboard", title: 'Image to write to clipboard',
filters: [ filters: [
{ {
name: "Clipboard IMG", name: 'Clipboard IMG',
extensions: ["png", "jpg", "jpeg"], extensions: ['png', 'jpg', 'jpeg']
}, }
], ]
}); })
const bytes = await readFile(res.path); const bytes = await readFile(path)
await clipboard.writeImage(bytes); await clipboard.writeImage(bytes)
onMessage("wrote image"); onMessage('wrote image')
} catch (e) { } catch (e) {
onMessage(e); onMessage(e)
} }
} }
async function read() { async function read() {
try { try {
const image = await clipboard.readImage(); const image = await clipboard.readImage()
arrayBufferToBase64(await image.rgba(), function (base64) { arrayBufferToBase64(await image.rgba(), function (base64) {
const src = "data:image/png;base64," + base64; const src = 'data:image/png;base64,' + base64
insecureRenderHtml('<img src="' + src + '"></img>'); insecureRenderHtml('<img src="' + src + '"></img>')
}); })
return; return
} catch (_) {} } catch (_) {}
clipboard clipboard
.readText() .readText()
.then((contents) => { .then((contents) => {
onMessage(`Clipboard contents: ${contents}`); onMessage(`Clipboard contents: ${contents}`)
}) })
.catch((e) => { .catch((e) => {
onMessage(e); onMessage(e)
}); })
} }
</script> </script>
@@ -65,6 +65,5 @@
/> />
<button class="btn" type="button" on:click={writeText}>Write</button> <button class="btn" type="button" on:click={writeText}>Write</button>
<button class="btn" type="button" on:click={writeImage}>Pick Image</button> <button class="btn" type="button" on:click={writeImage}>Pick Image</button>
<button class="btn" type="button" on:click={read}>Read</button> <button class="btn" type="button" on:click={read}>Read</button>
</div> </div>
+7 -8
View File
@@ -23,11 +23,7 @@
async function prompt() { async function prompt() {
confirm("Do you want to do something?") confirm("Do you want to do something?")
.then((res) => .then((res) => onMessage(res ? "Yes" : "No"))
onMessage(
res ? "Yes" : "No"
)
)
.catch(onMessage); .catch(onMessage);
} }
@@ -67,14 +63,15 @@
if (Array.isArray(res)) { if (Array.isArray(res)) {
onMessage(res); onMessage(res);
} else { } else {
var pathToRead = typeof res === "string" ? res : res.path; var pathToRead = res;
var isFile = pathToRead.match(/\S+\.\S+$/g); var isFile = pathToRead.match(/\S+\.\S+$/g);
readFile(pathToRead) readFile(pathToRead)
.then(function (response) { .then(function (response) {
if (isFile) { if (isFile) {
if ( if (
pathToRead.includes(".png") || pathToRead.includes(".png") ||
pathToRead.includes(".jpg") pathToRead.includes(".jpg") ||
pathToRead.includes(".jpeg")
) { ) {
arrayBufferToBase64( arrayBufferToBase64(
new Uint8Array(response), new Uint8Array(response),
@@ -144,5 +141,7 @@
>Open save dialog</button >Open save dialog</button
> >
<button class="btn" id="prompt-dialog" on:click={prompt}>Prompt</button> <button class="btn" id="prompt-dialog" on:click={prompt}>Prompt</button>
<button class="btn" id="custom-prompt-dialog" on:click={promptCustom}>Prompt (custom)</button> <button class="btn" id="custom-prompt-dialog" on:click={promptCustom}
>Prompt (custom)</button
>
<button class="btn" id="message-dialog" on:click={msg}>Message</button> <button class="btn" id="message-dialog" on:click={msg}>Message</button>
+29
View File
@@ -0,0 +1,29 @@
<script>
import {
checkPermissions,
requestPermissions,
getCurrentPosition
} from '@tauri-apps/plugin-geolocation'
export let onMessage
async function getPosition() {
let permissions = await checkPermissions()
if (
permissions.location === 'prompt' ||
permissions.location === 'prompt-with-rationale'
) {
permissions = await requestPermissions(['location'])
}
if (permissions.location === 'granted') {
getCurrentPosition().then(onMessage).catch(onMessage)
} else {
onMessage('permission denied')
}
}
</script>
<button class="btn" id="cli-matches" on:click={getPosition}>
Get Position
</button>
+46
View File
@@ -0,0 +1,46 @@
<script>
import {
vibrate,
impactFeedback,
notificationFeedback,
selectionFeedback
} from '@tauri-apps/plugin-haptics'
export let onMessage
</script>
<div>
<button
class="btn"
on:click={() => vibrate(300).then(onMessage).catch(onMessage)}
>vibrate short</button
>
<button
class="btn"
on:click={() => vibrate(1500).then(onMessage).catch(onMessage)}
>vibrate long</button
>
<button
class="btn"
on:click={() => impactFeedback('medium').then(onMessage).catch(onMessage)}
>impact medium</button
>
<button
class="btn"
on:click={() =>
notificationFeedback('warning').then(onMessage).catch(onMessage)}
>notification warning</button
>
<button
class="btn"
on:click={() => selectionFeedback().then(onMessage).catch(onMessage)}
>selection</button
>
</div>
<br />
<p>
Depending on your device settings for haptic feedback some of the buttons may
not work.
</p>
+35 -35
View File
@@ -1,69 +1,69 @@
<script> <script>
import { fetch as tauriFetch } from "@tauri-apps/plugin-http"; import { fetch as tauriFetch } from '@tauri-apps/plugin-http'
import { JsonView } from "@zerodevx/svelte-json-view"; import { JsonView } from '@zerodevx/svelte-json-view'
let httpMethod = "GET"; let httpMethod = 'GET'
let httpBody = ""; let httpBody = ''
export let onMessage; export let onMessage
async function makeHttpRequest() { async function makeHttpRequest() {
let method = httpMethod || "GET"; let method = httpMethod || 'GET'
const options = { const options = {
method: method || "GET", method: method || 'GET',
headers: {}, headers: {}
}; }
let bodyType; let bodyType
if (method !== "GET") { if (method !== 'GET') {
options.body = httpBody; options.body = httpBody
if ( if (
(httpBody.startsWith("{") && httpBody.endsWith("}")) || (httpBody.startsWith('{') && httpBody.endsWith('}')) ||
(httpBody.startsWith("[") && httpBody.endsWith("]")) (httpBody.startsWith('[') && httpBody.endsWith(']'))
) { ) {
options.headers["Content-Type"] = "application/json"; options.headers['Content-Type'] = 'application/json'
bodyType = "json"; bodyType = 'json'
} else if (httpBody !== "") { } else if (httpBody !== '') {
bodyType = "text"; bodyType = 'text'
} }
} }
const response = await tauriFetch("http://localhost:3003", options); const response = await tauriFetch('http://localhost:3003', options)
const body = const body =
bodyType === "json" ? await response.json() : await response.text(); bodyType === 'json' ? await response.json() : await response.text()
onMessage({ onMessage({
url: response.url, url: response.url,
status: response.status, status: response.status,
ok: response.ok, ok: response.ok,
headers: Object.fromEntries(response.headers.entries()), headers: Object.fromEntries(response.headers.entries()),
body, body
}); })
} }
/// http form /// http form
let foo = "baz"; let foo = 'baz'
let bar = "qux"; let bar = 'qux'
let result = null; let result = null
async function doPost() { async function doPost() {
const form = new FormData(); const form = new FormData()
form.append("foo", foo); form.append('foo', foo)
form.append("bar", bar); form.append('bar', bar)
const response = await tauriFetch("http://localhost:3003/tauri", { const response = await tauriFetch('http://localhost:3003/tauri', {
method: "POST", method: 'POST',
body: form, body: form
}); })
result = { result = {
url: response.url, url: response.url,
status: response.status, status: response.status,
ok: response.ok, ok: response.ok,
headers: Object.fromEntries(response.headers.entries()), headers: Object.fromEntries(response.headers.entries()),
body: await response.text(), body: await response.text()
}; }
} }
</script> </script>
@@ -82,7 +82,7 @@
placeholder="Request body" placeholder="Request body"
rows="5" rows="5"
bind:value={httpBody} bind:value={httpBody}
/> ></textarea>
<br /> <br />
<button class="btn" id="make-request"> Make request </button> <button class="btn" id="make-request"> Make request </button>
</form> </form>
+66
View File
@@ -0,0 +1,66 @@
<script>
import * as opener from '@tauri-apps/plugin-opener'
export let onMessage
let url = ''
let urlProgram = ''
function openUrl() {
opener.openUrl(url, urlProgram ? urlProgram : undefined).catch(onMessage)
}
let path = ''
let pathProgram = ''
function openPath() {
opener
.openPath(path, pathProgram ? pathProgram : undefined)
.catch(onMessage)
}
let revealPath = ''
function revealItemInDir() {
opener.revealItemInDir(revealPath).catch(onMessage)
}
</script>
<div class="flex flex-col gap-2">
<form
class="flex flex-row gap-2 items-center"
on:submit|preventDefault={openUrl}
>
<button class="btn" type="submit">Open URL</button>
<input
class="input grow"
placeholder="Type the URL to open..."
bind:value={url}
/>
<span> with </span>
<input class="input" bind:value={urlProgram} />
</form>
<form
class="flex flex-row gap-2 items-center"
on:submit|preventDefault={openPath}
>
<button class="btn" type="submit">Open Path</button>
<input
class="input grow"
placeholder="Type the path to open..."
bind:value={path}
/>
<span> with </span>
<input class="input" bind:value={pathProgram} />
</form>
<form
class="flex flex-row gap-2 items-center"
on:submit|preventDefault={revealItemInDir}
>
<button class="btn" type="submit">Reveal</button>
<input
class="input grow"
placeholder="Type the path to reveal..."
bind:value={revealPath}
/>
</form>
</div>
+29 -21
View File
@@ -1,38 +1,44 @@
<script> <script>
import { scan, checkPermissions, requestPermissions, Format, cancel } from "@tauri-apps/plugin-barcode-scanner"; import {
scan,
checkPermissions,
requestPermissions,
Format,
cancel
} from '@tauri-apps/plugin-barcode-scanner'
export let onMessage; export let onMessage
let scanning = false; let scanning = false
let windowed = true; let windowed = true
let formats = [Format.QRCode]; let formats = [Format.QRCode]
const supportedFormats = [Format.QRCode, Format.EAN13]; const supportedFormats = [Format.QRCode, Format.EAN13]
async function startScan() { async function startScan() {
let permission = await checkPermissions(); let permission = await checkPermissions()
if (permission === 'prompt') { if (permission === 'prompt') {
permission = await requestPermissions(); permission = await requestPermissions()
} }
if (permission === 'granted') { if (permission === 'granted') {
scanning = true; scanning = true
scan({ windowed, formats }) scan({ windowed, formats })
.then((res) => { .then((res) => {
scanning = false; scanning = false
onMessage(res); onMessage(res)
}) })
.catch((error) => { .catch((error) => {
scanning = false; scanning = false
onMessage(error); onMessage(error)
}); })
} else { } else {
onMessage('Permission denied') onMessage('Permission denied')
} }
} }
async function cancelScan() { async function cancelScan() {
await cancel(); await cancel()
scanning = false; scanning = false
onMessage("cancelled"); onMessage('cancelled')
} }
</script> </script>
@@ -59,11 +65,12 @@
<div class="barcode-scanner--area--container"> <div class="barcode-scanner--area--container">
<div class="relative"> <div class="relative">
<p>Aim your camera at a QR code</p> <p>Aim your camera at a QR code</p>
<button class="btn" type="button" on:click={cancelScan}>Cancel</button> <button class="btn" type="button" on:click={cancelScan}>Cancel</button
>
</div> </div>
<div class="square surround-cover"> <div class="square surround-cover">
<div class="barcode-scanner--area--outer surround-cover"> <div class="barcode-scanner--area--outer surround-cover">
<div class="barcode-scanner--area--inner" /> <div class="barcode-scanner--area--inner"></div>
</div> </div>
</div> </div>
</div> </div>
@@ -111,7 +118,7 @@
transition: 0.3s; transition: 0.3s;
} }
.square:after { .square:after {
content: ""; content: '';
top: 0; top: 0;
display: block; display: block;
padding-bottom: 100%; padding-bottom: 100%;
@@ -141,7 +148,8 @@
width: 100%; width: 100%;
margin: 1rem; margin: 1rem;
border: 2px solid #fff; border: 2px solid #fff;
box-shadow: 0px 0px 2px 1px rgb(0 0 0 / 0.5), box-shadow:
0px 0px 2px 1px rgb(0 0 0 / 0.5),
inset 0px 0px 2px 1px rgb(0 0 0 / 0.5); inset 0px 0px 2px 1px rgb(0 0 0 / 0.5);
border-radius: 1rem; border-radius: 1rem;
} }
+1 -1
View File
@@ -59,7 +59,7 @@
} }
function writeToStdin() { function writeToStdin() {
child.write(stdin).catch(onMessage); child.write(`${stdin}\n`).catch(onMessage);
} }
</script> </script>
+97
View File
@@ -0,0 +1,97 @@
<script>
import { LazyStore } from "@tauri-apps/plugin-store";
import { onMount } from "svelte";
export let onMessage;
let key;
let value;
let store = new LazyStore("cache.json");
let cache = {};
async function refreshEntries() {
try {
const values = await store.entries();
cache = {};
for (const [key, value] of values) {
cache[key] = value;
}
} catch (error) {
onMessage(error);
}
}
onMount(async () => {
await refreshEntries();
});
async function write(key, value) {
try {
if (value) {
await store.set(key, value);
} else {
await store.delete(key);
}
const v = await store.get(key);
if (v === undefined) {
delete cache[key];
cache = cache;
} else {
cache[key] = v;
}
} catch (error) {
onMessage(error);
}
}
async function reset() {
try {
await store.reset();
} catch (error) {
onMessage(error);
}
await refreshEntries();
}
async function close() {
try {
await store.close();
onMessage("Store is now closed, any new operations will error out");
} catch (error) {
onMessage(error);
}
}
function reopen() {
store = new LazyStore("cache.json");
onMessage("We made a new `LazyStore` instance, operations will now work");
}
</script>
<div class="flex flex-col childre:grow gap-1">
<div class="flex flex-col flex-row-md gap-4">
<div class="flex items-center gap-1">
Key:
<input class="grow input" bind:value={key} />
</div>
<div class="flex items-center gap-1">
Value:
<input class="grow input" bind:value />
</div>
<div>
<button class="btn" on:click={() => write(key, value)}>Write</button>
<button class="btn" on:click={() => reset()}>Reset</button>
<button class="btn" on:click={() => close()}>Close</button>
<button class="btn" on:click={() => reopen()}>Re-open</button>
</div>
</div>
<div>
{#each Object.entries(cache) as [k, v]}
<div>{k} = {v}</div>
{/each}
</div>
</div>
+31 -31
View File
@@ -1,56 +1,56 @@
<script> <script>
import { check } from "@tauri-apps/plugin-updater"; import { check } from '@tauri-apps/plugin-updater'
import { relaunch } from "@tauri-apps/plugin-process"; import { relaunch } from '@tauri-apps/plugin-process'
export let onMessage; export let onMessage
let isChecking, isInstalling, newUpdate; let isChecking, isInstalling, newUpdate
let totalSize = 0, let totalSize = 0,
downloadedSize = 0; downloadedSize = 0
async function checkUpdate() { async function checkUpdate() {
isChecking = true; isChecking = true
try { try {
const update = await check(); const update = await check()
onMessage(`Should update: ${update.available}`); onMessage(`Should update: ${update.available}`)
onMessage(update); onMessage(update)
newUpdate = update; newUpdate = update
} catch (e) { } catch (e) {
onMessage(e); onMessage(e)
} finally { } finally {
isChecking = false; isChecking = false
} }
} }
async function install() { async function install() {
isInstalling = true; isInstalling = true
downloadedSize = 0; downloadedSize = 0
try { try {
await newUpdate.downloadAndInstall((downloadProgress) => { await newUpdate.downloadAndInstall((downloadProgress) => {
switch (downloadProgress.event) { switch (downloadProgress.event) {
case "Started": case 'Started':
totalSize = downloadProgress.data.contentLength; totalSize = downloadProgress.data.contentLength
break; break
case "Progress": case 'Progress':
downloadedSize += downloadProgress.data.chunkLength; downloadedSize += downloadProgress.data.chunkLength
break; break
case "Finished": case 'Finished':
break; break
} }
}); })
onMessage("Installation complete, restarting..."); onMessage('Installation complete, restarting...')
await new Promise((resolve) => setTimeout(resolve, 2000)); await new Promise((resolve) => setTimeout(resolve, 2000))
await relaunch(); await relaunch()
} catch (e) { } catch (e) {
console.error(e); console.error(e)
onMessage(e); onMessage(e)
} finally { } finally {
isInstalling = false; isInstalling = false
} }
} }
$: progress = totalSize ? Math.round((downloadedSize / totalSize) * 100) : 0; $: progress = totalSize ? Math.round((downloadedSize / totalSize) * 100) : 0
</script> </script>
<div class="flex children:grow children:h10"> <div class="flex children:grow children:h10">
@@ -61,7 +61,7 @@
{:else} {:else}
<div class="progress"> <div class="progress">
<span>{progress}%</span> <span>{progress}%</span>
<div class="progress-bar" style="width: {progress}%" /> <div class="progress-bar" style="width: {progress}%"></div>
</div> </div>
{/if} {/if}
</div> </div>
+45 -45
View File
@@ -2,43 +2,43 @@
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
import { defineConfig, presetIcons, presetUno, presetWebFonts } from "unocss"; import { defineConfig, presetIcons, presetUno, presetWebFonts } from 'unocss'
import extractorSvelte from "@unocss/extractor-svelte"; import extractorSvelte from '@unocss/extractor-svelte'
export default defineConfig({ export default defineConfig({
theme: { theme: {
colors: { colors: {
primary: "#FFFFFF", primary: '#FFFFFF',
primaryLighter: "#e9ecef", primaryLighter: '#e9ecef',
darkPrimary: "#1B1B1D", darkPrimary: '#1B1B1D',
darkPrimaryLighter: "#242526", darkPrimaryLighter: '#242526',
primaryText: "#1C1E21", primaryText: '#1C1E21',
darkPrimaryText: "#E3E3E3", darkPrimaryText: '#E3E3E3',
secondaryText: "#858A91", secondaryText: '#858A91',
darkSecondaryText: "#C2C5CA", darkSecondaryText: '#C2C5CA',
accent: "#3578E5", accent: '#3578E5',
accentDark: "#306cce", accentDark: '#306cce',
accentDarker: "#2d66c3", accentDarker: '#2d66c3',
accentDarkest: "#2554a0", accentDarkest: '#2554a0',
accentLight: "#538ce9", accentLight: '#538ce9',
accentLighter: "#72a1ed", accentLighter: '#72a1ed',
accentLightest: "#9abcf2", accentLightest: '#9abcf2',
accentText: "#FFFFFF", accentText: '#FFFFFF',
darkAccent: "#67d6ed", darkAccent: '#67d6ed',
darkAccentDark: "#49cee9", darkAccentDark: '#49cee9',
darkAccentDarker: "#39cae8", darkAccentDarker: '#39cae8',
darkAccentDarkest: "#19b5d5", darkAccentDarkest: '#19b5d5',
darkAccentLight: "#85def1", darkAccentLight: '#85def1',
darkAccentLighter: "#95e2f2", darkAccentLighter: '#95e2f2',
darkAccentLightest: "#c2eff8", darkAccentLightest: '#c2eff8',
darkAccentText: "#1C1E21", darkAccentText: '#1C1E21',
code: "#d6d8da", code: '#d6d8da',
codeDark: "#282a2e", codeDark: '#282a2e',
hoverOverlay: "rgba(0,0,0,.05)", hoverOverlay: 'rgba(0,0,0,.05)',
hoverOverlayDarker: "rgba(0,0,0,.1)", hoverOverlayDarker: 'rgba(0,0,0,.1)',
darkHoverOverlay: "hsla(0,0%,100%,.05)", darkHoverOverlay: 'hsla(0,0%,100%,.05)',
darkHoverOverlayDarker: "hsla(0,0%,100%,.1)", darkHoverOverlayDarker: 'hsla(0,0%,100%,.1)'
}, }
}, },
preflights: [ preflights: [
{ {
@@ -54,7 +54,7 @@ export default defineConfig({
code { code {
font-size: ${theme.fontSize.xs[0]}; font-size: ${theme.fontSize.xs[0]};
font-family: ${theme.fontFamily.mono}; font-family: ${theme.fontFamily.mono};
border-radius: ${theme.borderRadius["DEFAULT"]}; border-radius: ${theme.borderRadius['DEFAULT']};
background-color: ${theme.colors.code}; background-color: ${theme.colors.code};
} }
@@ -66,8 +66,8 @@ export default defineConfig({
.dark code { .dark code {
background-color: ${theme.colors.codeDark}; background-color: ${theme.colors.codeDark};
} }
`, `
}, }
], ],
shortcuts: { shortcuts: {
btn: `select-none outline-none shadow-md p-2 rd-1 text-primaryText border-none font-400 dark:font-600 btn: `select-none outline-none shadow-md p-2 rd-1 text-primaryText border-none font-400 dark:font-600
@@ -81,20 +81,20 @@ export default defineConfig({
note: `decoration-none flex-inline items-center relative p-2 rd-1 note: `decoration-none flex-inline items-center relative p-2 rd-1
border-l-4 border-accent dark:border-darkAccent border-l-4 border-accent dark:border-darkAccent
bg-accent/10 dark:bg-darkAccent/10`, bg-accent/10 dark:bg-darkAccent/10`,
"note-red": 'note-red':
"note bg-red-700/10 dark:bg-red-700/10 after:bg-red-700 dark:after:bg-red-700", 'note bg-red-700/10 dark:bg-red-700/10 after:bg-red-700 dark:after:bg-red-700',
input: input:
"h-10 flex items-center outline-none border-none p-2 rd-1 shadow-md bg-primaryLighter dark:bg-darkPrimaryLighter text-primaryText dark:text-darkPrimaryText", 'h-10 flex items-center outline-none border-none p-2 rd-1 shadow-md bg-primaryLighter dark:bg-darkPrimaryLighter text-primaryText dark:text-darkPrimaryText'
}, },
presets: [ presets: [
presetUno(), presetUno(),
presetIcons(), presetIcons(),
presetWebFonts({ presetWebFonts({
fonts: { fonts: {
sans: "Rubik", sans: 'Rubik',
mono: ["Fira Code", "Fira Mono:400,700"], mono: ['Fira Code', 'Fira Mono:400,700']
}, }
}), })
], ],
extractors: [extractorSvelte], extractors: [extractorSvelte]
}); })
+13 -20
View File
@@ -2,12 +2,12 @@
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
import { defineConfig } from "vite"; import { defineConfig } from 'vite'
import Unocss from "unocss/vite"; import Unocss from 'unocss/vite'
import { svelte } from "@sveltejs/vite-plugin-svelte"; import { svelte } from '@sveltejs/vite-plugin-svelte'
import process from "process"; import process from 'process'
const host = process.env.TAURI_DEV_HOST; const host = process.env.TAURI_DEV_HOST
// https://vitejs.dev/config/ // https://vitejs.dev/config/
export default defineConfig(async () => { export default defineConfig(async () => {
@@ -18,24 +18,17 @@ export default defineConfig(async () => {
output: { output: {
entryFileNames: `assets/[name].js`, entryFileNames: `assets/[name].js`,
chunkFileNames: `assets/[name].js`, chunkFileNames: `assets/[name].js`,
assetFileNames: `assets/[name].[ext]`, assetFileNames: `assets/[name].[ext]`
}, }
}, }
}, },
server: { server: {
host: host || false, host: host || false,
port: 5173, port: 5173,
strictPort: true, strictPort: true,
hmr: host
? {
protocol: "ws",
host,
port: 5183,
}
: undefined,
fs: { fs: {
allow: [".", "../../tooling/api/dist"], allow: ['.', '../../tooling/api/dist']
}, }
}, }
}; }
}); })
+13 -12
View File
@@ -1,29 +1,30 @@
{ {
"name": "plugins-workspace", "name": "plugins-workspace",
"private": true, "private": true,
"license": "MIT or APACHE-2.0", "license": "MIT OR Apache-2.0",
"type": "module", "type": "module",
"scripts": { "scripts": {
"build": "pnpm run -r --parallel --filter !plugins-workspace --filter !\"./plugins/*/examples/**\" --filter !\"./examples/*\" build", "build": "pnpm run -r --parallel --filter !plugins-workspace --filter !\"./plugins/*/examples/**\" --filter !\"./examples/*\" build",
"lint": "eslint .", "lint": "eslint .",
"format": "prettier --write \"./**/*.{cjs,mjs,js,jsx,mts,ts,tsx,html,css,json}\" --ignore-path .prettierignore", "format": "prettier --write .",
"format-check": "prettier --check \"./**/*.{cjs,mjs,js,jsx,mts,ts,tsx,html,css,json}\" --ignore-path .prettierignore" "format:check": "prettier --check .",
"example:api:dev": "pnpm run --filter \"api\" tauri dev"
}, },
"devDependencies": { "devDependencies": {
"@eslint/js": "9.9.0", "@eslint/js": "9.15.0",
"@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-node-resolve": "15.3.0",
"@rollup/plugin-terser": "0.4.4", "@rollup/plugin-terser": "0.4.4",
"@rollup/plugin-typescript": "11.1.6", "@rollup/plugin-typescript": "11.1.6",
"@types/eslint__js": "8.42.3", "@types/eslint__js": "8.42.3",
"covector": "^0.12.0", "covector": "^0.12.3",
"eslint": "9.9.0", "eslint": "9.15.0",
"eslint-config-prettier": "9.1.0", "eslint-config-prettier": "9.1.0",
"eslint-plugin-security": "3.0.1", "eslint-plugin-security": "3.0.1",
"prettier": "3.3.3", "prettier": "3.4.0",
"rollup": "4.21.0", "rollup": "4.27.4",
"tslib": "2.6.3", "tslib": "2.8.1",
"typescript": "5.5.4", "typescript": "5.7.2",
"typescript-eslint": "8.1.0" "typescript-eslint": "8.16.0"
}, },
"resolutions": { "resolutions": {
"semver": ">=7.5.2", "semver": ">=7.5.2",
-1
View File
@@ -1 +0,0 @@
node_modules

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