Commit Graph

51 Commits

Author SHA1 Message Date
Amr Bashir
d9d2502b41 feat: add Webview::show and Webview::hide (#11140)
closes #11126
2024-09-27 08:30:29 +03:00
Amr Bashir
63649d82d2 fix(core/acl): fix core:default schema generation (#10971)
* remove dbg! in resources test

* use methods from `fs` and `env` qualified

* share `ACL_MANIFESTS_FILE_NAME` and `CAPABILITIES_FILE_NAME` consts across crates

* simplifiy `Manifest::new` code for better readability

* move reading global api scripts logic next to the function that defines it

* [tauri-build] move acl logic from lib.rs to acl.rs

* use const value for schema instead of enum value with a single variant

* remove unnecessary info from permissions hover

* move related functions next to each other & improve readability of others

* use methods from `fs` and `env` qualified

* fix warning, unused return in test

* document some functions

* improve generated schema for better scope schema completion, simplify, reorganize and document the logic

previously if you had `fs` and `http` plugins added in a project
and then try to write an extended permission for `fs:allow-app-meta`
```json
{
      "identifier": "fs:allow-app-meta",
      "allow": [ <here> ]
}
```
and even though identifier is from `fs` plugin,
the JSON schema suggests `path` and `url`.
Now it will only suggest  relevant field which is `path`

* resolve permissions from other plugins, generate `core:default` as a normal set instead of special logic

* move `PERMISSION_SCHEMAS_FOLDER_NAME` to acl module

* use gneric trait because of MSRV

* ensure `gen/schemas` dir is created

* clippy
2024-09-13 08:58:26 -03:00
Amr Bashir
36eee37220 Restructure the repository (#10796)
* Restructure the repository

* lock file

* fmt

* fix bench

* fix cli template test

* remove accidental file

* fix mv command

* clippy

* upgrade paths-filter github action

* fix cli migration tests

* lockfile

* license headers

* clippy

* scope test-core to tauri crate

* license header

* correct --manifest-path usage

* lockfile

* fix tauri-driver on macOS [skip ci]

* build target ios

* try downgrade env_logger

* downgrade 0.1.7

* try to fix bench

* bench overflow

* revert overflow fix, fix tauri_root_path

* revert env_logger downgrade

* fmt

* raise msrv to 1.71

* fmt

* delete .cargo/config.toml [skip ci]

---------

Co-authored-by: Lucas Nogueira <lucas@tauri.app>
2024-08-27 18:42:30 -03:00
Amr Bashir
ad83d41cb5 chore: cleanup and simplify examples (#10743) 2024-08-27 01:25:36 +03:00
Lucas Fernandes Nogueira
7796a8fc64 fix(cli): adapt Package.swift to work on older Swift versions (#10687)
I noticed the plugin build fails on older Swift (tested on macOS 12) because the default minimum required macOS version (10.10 in my case) is older than `v10_13` which is set by the Tauri iOS package (and also swift-rs).
So the plugins must explicitly define a minimum macOS version too.
2024-08-19 16:29:16 -03:00
Lucas Fernandes Nogueira
b6dca99fff refactor(api)!: change window label getters to be async ref #5380 (#10630) 2024-08-15 09:12:40 -03:00
AHQ
bfc49cc7a1 refactor(android): Remove targetSdk from gradle config (#10558)
* refactor: remove targetSdk as it is being removed in DSL 9.0

* note

* fix: typo

* update: changelog

Co-authored-by: Lucas Fernandes Nogueira <lucas@tauri.app>

---------

Co-authored-by: Lucas Fernandes Nogueira <lucas@tauri.app>
2024-08-11 07:06:14 -03:00
Tony
249cdde9b6 Fix Serialize impl missing TSend (#10252) 2024-07-11 11:11:15 +02:00
Lorenzo Rizzotti
b4e16f3d8e fix(android): fix Android Studio project plugin link (#10235)
* add plugin resolution to gradle settings

This is needed to make Android Studio able to link to the project

* reflect codegen edit in the plugin example
2024-07-10 14:26:06 +03:00
Tony
5878fb45ce chore: Update api example (#10144) 2024-06-28 11:21:54 +02:00
Lucas Fernandes Nogueira
80aa504987 chore(cli): update Android target SDK to 34 (#9870) 2024-05-25 07:46:34 -03:00
Lucas Fernandes Nogueira
e227fe02f9 feat(core): allow defining global API script on plugin build (#9156)
* feat(core): allow defining global API script on plugin build

Adds `tauri_plugin::Builder::global_api_script_path` so plugin authors can define the JavaScript global API bindings (supposed to be injected to `window.__TAURI__`) at compile time, so the string is only part of the binary when withGlobalTauri is true.
Currently this needs to be done manually at runtime (and it's always added to the binary via include_str).

* prefix variable

* use list of scripts instead of combining them

* static str

* header [skip ci]

* slice
2024-03-12 12:01:13 -03:00
Lucas Fernandes Nogueira
ed48e2b3c7 feat(core): expose the image module (#9122)
* feat(core): expose the image module

* code review

* fix import

* fix

* fix codegen

* jsimage owned

* fmt

---------

Co-authored-by: Amr Bashir <amr.bashir2015@gmail.com>
2024-03-07 19:23:21 -03:00
Lucas Fernandes Nogueira
6c06832246 fix(acl): scope resolution should be per window (#9068)
* fix(acl): scope resolution should be per window

* Update core/tauri-utils/src/acl/resolved.rs

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

* update snapshots

* lint

---------

Co-authored-by: Amr Bashir <amr.bashir2015@gmail.com>
2024-03-04 17:01:30 -03:00
Amr Bashir
4b75834a41 chore: update license headers 2024 (#9043) 2024-03-01 08:29:01 -03:00
Lucas Fernandes Nogueira
f5e7f3843e fix(build): app ACL should be empty if no permissions are defined (#9024) 2024-02-28 19:53:48 -03:00
Lucas Fernandes Nogueira
d7f56fef85 feat(acl): allow a permission to apply to a subset of target platforms (#9014)
* feat(acl): allow a permission to apply to a subset of target platforms

* fix cli
2024-02-28 17:23:52 -03:00
Amr Bashir
b9e6a01879 refactor(cli): use tauri/custom-protocol instead of relying on user having custom-protocol in their cargo features (#8937)
* refactor(cli): use `tauri/custom-protocol` instead of relying on user having `custom-protocol` in their cargo features

* tauri-build dev cfg

* pass build-feature when building apk

* run beforeBuildCommand before first build for plugins

* clippy

* fix

* mut

* enhance dev/prod checks

* lint [skip ci]

---------

Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
Co-authored-by: Lucas Nogueira <lucas@tauri.app>
2024-02-26 15:17:45 -03:00
Lucas Nogueira
f1d0f452a2 chore: pin tao to 0.25 2024-02-03 11:57:54 -03:00
github-actions[bot]
88a1dd17c3 Apply Version Updates From Current Changes (#8638)
* apply version updates

* promote to beta

* fix check version

* update dependencies section [skip ci]

* update npm versions

---------

Co-authored-by: lucasfernog <lucasfernog@users.noreply.github.com>
Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
2024-02-03 10:59:09 -03:00
Lucas Fernandes Nogueira
0cdfda2876 refactor: move plugin functionality from tauri-build to tauri-plugin (#8737)
* refactor: move plugin functionality from tauri-build to tauri-plugin

* fixes

* fix build

* move docs function

* autogenerated

* fix path
2024-02-03 08:48:57 -03:00
Amr Bashir
e8d3793c3c feat(tauri-build): add config-json feature flag (#8732)
* feat(tauri-build): add `config-json` feature flag

This allows disabling rebuilding when `tauri.conf.json` when using another config format

see https://github.com/tauri-apps/tauri/issues/8721

* document feature flag

* Update .changes/tauri-build-config-json.md [skip ci]

* Update core/tauri/src/lib.rs [skip ci]

* disable default features for tauri-build on tauri, plugins

* fmt

---------

Co-authored-by: Lucas Fernandes Nogueira <lucas@tauri.app>
Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
2024-02-02 14:11:59 -03:00
Lucas Fernandes Nogueira
3e5c28ff4f feat(tauri-plugin): generate permissions reference markdown file for plugin (#8729)
* feat(acl): generate reference markdown file

* lint

* generate plugin docs instead
2024-02-01 17:14:23 -03:00
Lucas Fernandes Nogueira
7315189e76 chore: preserve order on schemas (#8724) 2024-02-01 09:16:10 -03:00
Lucas Fernandes Nogueira
aa758a850f refactor(core): delete the command module (#8716) 2024-01-31 14:02:52 -03:00
Amr Bashir
58fe2e812a fix: improvements and ipc fixes for loading window content using custom protocol (#8670)
* fix: improvements and ipc fixes for loading window content using custom protocol

closes #5478

* Discard changes to tooling/cli/Cargo.lock

* clippy

* fix tests

* typo

* fix webviewurl deserialize

* resolve todo, fixes

* fmt

---------

Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
2024-01-31 09:38:25 -03:00
Lucas Fernandes Nogueira
57e3d43d96 feat(acl): generate schema for scope (#8690)
* feat(acl): generate schema for scope

* allow plugin to define its global scope schema

* refactor to use schemas folder instead of individual files

* change signature

* delete .schema.json files
2024-01-29 13:36:31 -03:00
Lucas Fernandes Nogueira
30a64a9cda refactor: global scope error handling, fix usage with multiple plugins (#8669)
* refactor: global scope error handling, fix usage with multiple plugins

* lint
2024-01-24 20:57:46 -03:00
tweidinger
3c2f79f6f3 Tauri ACL/Allowlist v2 Implementation and Plugin System Refactor (#8428)
* tauri-plugin concept

* wip

* move command module to its own directory

* wip: new command traits and generated code

* wip: whip

* wip: static dispatch

there is a man standing behind me

* wip

* re-add authority

* fix build [skip ci]

* parse plugin permissions

* merge permission files [skip ci]

* parse capabilities [skip ci]

* resolve acl (untested) [skip ci]

* split functionality, add some docs

* remove command2 stuff

* actually check runtime authority

* small fixes [skip ci]

* add function to auto generate basic permission for a command [skip ci]

* retrieve command scope, implement CommandArg [skip ci]

* fix tests [skip ci]

* global scope

* lint

* license headers [skip ci]

* skip canonicalize

* separate scope type in example

* remove inlinedpermission struct [skip ci]

* permission file schema

* capabilities schema

* move items from tauri-plugin to tauri-utils

this allows tauri-plugin to depend on tauri directly again
which will be used by the runtime feature as a superset to
existing plugin traits

* enable schema and glob [skip ci]

* fix glob [skip ci]

* fix capability schema [skip ci]

* enhance schema for permission set possible values [skip ci]

* permission set can reference other sets [skip ci]

* setup tests for resolving ACL

* fixture for permission set [skip ci]

* remote context test and small fix[skip ci]

* ignore empty scope [skip ci]

* code review [skip ci]

* lint [skip ci]

* runtime fixes

* readd schema feature on tauri-config-schema [skip ci]

* remove plugin example from workspace, it breaks workspace features resolution [skip ci]

* scope as array, add test [skip ci]

* accept new shapshot [skip ci]

* core plugin permissions, default is now a set

* license headers

* fix  on windows

* update global api

* glob is no longer optional on tauri-utils

* add missing permissions on api example [skip ci]

* remove ipc scope and dangerous remote access config

* lint

* fix asset scope usage

* create out dir [skip ci]

* reuse cargo_pkg_name [skip ci]

* capability window glob pattern [skip ci]

* add platforms for capability [skip ci]

* per platform schema [skip ci]

* lint [skip ci]

* rename allowlist build mod [skip ci]

* check restricted visibility

* simplify capability target [skip ci]

* hide codegen build behind tauri-build::try_run

* optimize build scripts [skip ci]

* fix tests

* tests for RuntimeAuthority::resolve_access

* remote domain glob pattern

* lint

---------

Co-authored-by: Chip Reed <chip@chip.sh>
Co-authored-by: Lucas Nogueira <lucas@tauri.app>
Co-authored-by: Lucas Nogueira <lucas@crabnebula.dev>
Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
2024-01-22 21:24:15 -03:00
Olivier Lemasle
9ed400a85c chore(ci): Replace unmaintained actions-rs GH actions, closes #8078 (#8093)
Co-authored-by: Lucas Nogueira <lucas@tauri.app>
2023-10-26 15:27:52 -03:00
Lucas Fernandes Nogueira
198abe3c2c feat(plugins): typed invoke arguments for mobile plugins (#8076) 2023-10-23 14:09:42 -03:00
Lucas Fernandes Nogueira
fbeb5b9185 refactor(core): use webview's URI schemes for IPC (#7170)
Co-authored-by: chip <chip@chip.sh>
2023-08-10 10:12:38 -03:00
Jeffrey Hutchins
3a2c3e7471 feat: Add ordered navigation handler for plugins, closes #7306 (#7439)
Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
2023-07-24 14:36:16 -03:00
Lucas Fernandes Nogueira
59db76af4c refactor(android): fix race conditions processing Android plugin project as dependency (#6968) 2023-05-16 10:22:46 -03:00
Lucas Fernandes Nogueira
dfa407ffcb feat(mobile): add plugin config to the Plugin class (#6763) 2023-04-23 09:15:13 -03:00
Lucas Fernandes Nogueira
db4c9dc655 feat(core): add option to configure Android's minimum SDK version (#6651) 2023-04-07 11:21:42 -03:00
Lucas Fernandes Nogueira
9c8276fe03 refactor(mobile): use shared .tauri folder to inject dependencies (#6495) 2023-03-19 08:51:01 -03:00
Lucas Fernandes Nogueira
56b528e481 refactor(build): change tauri-api dependency path to skip rebuilds (#6490)
* refactor(build): change tauri-api dependency path to skip rebuilds

The tauri-api Swift package cannot be injected inside the iOS plugin project because swift-rs reruns when the project folder changes. We will now inject the project in the parent folder instead.

* revert tauri-plugin-log [skip ci]
2023-03-18 11:31:11 -03:00
Lucas Fernandes Nogueira
6a8888dc85 refactor(ios): add macro to generate plugin glue fn, pass name parameter (#6489) 2023-03-18 10:57:05 -03:00
Lucas Nogueira
a6fea4644e refactor(android): rename PluginMethod to Command 2023-03-17 15:20:39 -03:00
Lucas Fernandes Nogueira
5d94eaa3bc feat(core): update swift-rs (#6355)
* feat(core): update swift-rs

* update tauri-plugin-log

* use env var for min iOS version

* test x86_64-apple-ios

* Revert "test x86_64-apple-ios"

This reverts commit 3ae6b79e5f.

* chore: swift min version 5.3 [skip ci]

* fix build [skip ci]

* fix cgrect usage

* test CI

* Revert "test CI"

This reverts commit 76ce0c5992.

* update swift-rs to 1.0.1

* lint

* lint [skip ci]
2023-03-16 09:34:41 -03:00
Lucas Nogueira
1fd329935e Merge branch 'dev' into next 2023-02-19 11:34:02 -03:00
Lucas Fernandes Nogueira
897a1547a1 feat(cli): update plugin template including trait to access mobile APIs (#6293) 2023-02-17 12:12:05 -03:00
Lucas Fernandes Nogueira
6aaba83476 refactor(plugin): add PluginApi and PluginHandle, expose on setup hook (#6291) 2023-02-16 13:33:50 -03:00
Lucas Fernandes Nogueira
d42fd0710c feat(ios): expose UIViewController (#6281) 2023-02-15 11:42:47 -03:00
Lucas Fernandes Nogueira
bce87c1a67 feat(android): implement plugin permissions and startActivityForResult (#6272) 2023-02-14 21:36:44 -03:00
Lucas Fernandes Nogueira
65e487f344 fix(cli): adjust plugin template to use correct package name (#6258) 2023-02-13 10:54:48 -03:00
Lucas Fernandes Nogueira
bef4ef51bc feat(android): enable minify on release, add proguard rules (#6257) 2023-02-13 10:22:03 -03:00
Lucas Fernandes Nogueira
96b5e92169 refactor(core): inject API project on plugin's Android and iOS projects (#6246) 2023-02-12 15:29:34 -03:00
Lucas Fernandes Nogueira
05dad08768 feat: initial work for iOS plugins (#6205) 2023-02-11 10:30:44 -03:00