+
+| Identifier |
+Description |
+
+
+
+
+|
+
+`native-tts:allow-get-all-voices`
+
+ |
+
+
+Enables the get_all_voices command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:deny-get-all-voices`
+
+ |
+
+
+Denies the get_all_voices command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:allow-get-granularities`
+
+ |
+
+
+Enables the get_granularities command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:deny-get-granularities`
+
+ |
+
+
+Denies the get_granularities command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:allow-get-speaking-lang`
+
+ |
+
+
+Enables the get_speaking_lang command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:deny-get-speaking-lang`
+
+ |
+
+
+Denies the get_speaking_lang command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:allow-get-voice-id`
+
+ |
+
+
+Enables the get_voice_id command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:deny-get-voice-id`
+
+ |
+
+
+Denies the get_voice_id command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:allow-get-voices`
+
+ |
+
+
+Enables the get_voices command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:deny-get-voices`
+
+ |
+
+
+Denies the get_voices command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:allow-init`
+
+ |
+
+
+Enables the init command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:deny-init`
+
+ |
+
+
+Denies the init command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:allow-pause`
+
+ |
+
+
+Enables the pause command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:deny-pause`
+
+ |
+
+
+Denies the pause command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:allow-resume`
+
+ |
+
+
+Enables the resume command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:deny-resume`
+
+ |
+
+
+Denies the resume command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:allow-set-pitch`
+
+ |
+
+
+Enables the set_pitch command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:deny-set-pitch`
+
+ |
+
+
+Denies the set_pitch command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:allow-set-primary-lang`
+
+ |
+
+
+Enables the set_primary_lang command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:deny-set-primary-lang`
+
+ |
+
+
+Denies the set_primary_lang command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:allow-set-rate`
+
+ |
+
+
+Enables the set_rate command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:deny-set-rate`
+
+ |
+
+
+Denies the set_rate command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:allow-set-voice`
+
+ |
+
+
+Enables the set_voice command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:deny-set-voice`
+
+ |
+
+
+Denies the set_voice command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:allow-speak`
+
+ |
+
+
+Enables the speak command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:deny-speak`
+
+ |
+
+
+Denies the speak command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:allow-stop`
+
+ |
+
+
+Enables the stop command without any pre-configured scope.
+
+ |
+
+
+
+|
+
+`native-tts:deny-stop`
+
+ |
+
+
+Denies the stop command without any pre-configured scope.
+
+ |
+
+
diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-native-tts/permissions/default.toml b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-tts/permissions/default.toml
new file mode 100644
index 00000000..c03b1de4
--- /dev/null
+++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-tts/permissions/default.toml
@@ -0,0 +1,18 @@
+[default]
+description = "Default permissions for the plugin"
+permissions = [
+ "allow-init",
+ "allow-speak",
+ "allow-stop",
+ "allow-pause",
+ "allow-resume",
+ "allow-set-rate",
+ "allow-set-pitch",
+ "allow-set-voice",
+ "allow-set-primary-lang",
+ "allow-get-voices",
+ "allow-get-voice-id",
+ "allow-get-all-voices",
+ "allow-get-granularities",
+ "allow-get-speaking-lang",
+]
diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-native-tts/permissions/schemas/schema.json b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-tts/permissions/schemas/schema.json
new file mode 100644
index 00000000..56b85518
--- /dev/null
+++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-tts/permissions/schemas/schema.json
@@ -0,0 +1,474 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "title": "PermissionFile",
+ "description": "Permission file that can define a default permission, a set of permissions or a list of inlined permissions.",
+ "type": "object",
+ "properties": {
+ "default": {
+ "description": "The default permission set for the plugin",
+ "anyOf": [
+ {
+ "$ref": "#/definitions/DefaultPermission"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "set": {
+ "description": "A list of permissions sets defined",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/PermissionSet"
+ }
+ },
+ "permission": {
+ "description": "A list of inlined permissions",
+ "default": [],
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Permission"
+ }
+ }
+ },
+ "definitions": {
+ "DefaultPermission": {
+ "description": "The default permission set of the plugin.\n\nWorks similarly to a permission with the \"default\" identifier.",
+ "type": "object",
+ "required": [
+ "permissions"
+ ],
+ "properties": {
+ "version": {
+ "description": "The version of the permission.",
+ "type": [
+ "integer",
+ "null"
+ ],
+ "format": "uint64",
+ "minimum": 1.0
+ },
+ "description": {
+ "description": "Human-readable description of what the permission does. Tauri convention is to use `