+13
-13
README.md
+13
-13
README.md
···
1
# VRChat Photo Manager (BETA)
2
3
-
Install [here](https://cdn.phaz.uk/vrcpm/vrcpm-installer.exe) (Windows)
4
5
-
Install [COMING SOON](about:blank) (Linux)
6
-
7
-
This is the rust rewrite.
8
9
## Feedback / Bug Reports
10
···
12
13
Also for bug reports if you can, please try replicating the issue with a debug variant of the app and sending the logs along with your issue
14
15
-
You can download the debug EXEs using this url format:
16
-
https://cdn.phaz.uk/vrcpm/builds/debug/vrcpm-[YOUR-APP-VERSION]-debug.exe
17
18
You can find your app version under appllication settings.
19
-
20
-
(Please note that there are not debug releases for versions: 0.1.0, 0.1.1, 0.1.2, 0.1.3)
21
22
## A photo manager for VRChat.
23
24
-

25
26
-
Support for:
27
-
- Files with VRCX metadata 
28
-
- Fetches world information from
29
-
- Searching for photos taken in specific worlds / with specific users 
···
1
# VRChat Photo Manager (BETA)
2
3
+
Windows users: Download the setup.exe file [here](https://github.com/phaze-the-dumb/VRChat-Photo-Manager/releases/latest)
4
5
+
Linux Users:
6
+
- I publish .deb, .rpm and .AppImage files [here](https://github.com/phaze-the-dumb/VRChat-Photo-Manager/releases/latest)
7
+
- I also publish an [AUR](https://aur.archlinux.org/packages/vrchat-photo-manager) package
8
9
## Feedback / Bug Reports
10
···
12
13
Also for bug reports if you can, please try replicating the issue with a debug variant of the app and sending the logs along with your issue
14
15
+
You can download the debug EXEs [here](https://github.com/phaze-the-dumb/VRChat-Photo-Manager/releases)
16
17
You can find your app version under appllication settings.
18
19
## A photo manager for VRChat.
20
21
+
<img width="1352" height="739" alt="image" src="https://github.com/user-attachments/assets/bc702ee6-8891-463d-a987-c2db1dc24678" />
22
+
23
+
Files with VRCX metadata + Fetches world information from VRChat:
24
+
25
+
<img width="1352" height="739" alt="image" src="https://github.com/user-attachments/assets/aae88c53-aab6-4520-bb89-d6f2bca1c51a" />
26
+
27
+
Searching for photos taken in specific worlds / with specific users:
28
29
+
<img width="1352" height="739" alt="image" src="https://github.com/user-attachments/assets/f9af1724-5bb2-4276-bc32-e818dab31750" />
+24
build-release.sh
+24
build-release.sh
···
···
1
+
#!/bin/bash
2
+
3
+
VERSION=0.2.7-hot1
4
+
5
+
# Linux builds
6
+
NO_STRIP=true pnpm tauri build
7
+
8
+
# Windows builds
9
+
pnpm tauri build --runner cargo-xwin --target x86_64-pc-windows-msvc
10
+
pnpm tauri build --debug --runner cargo-xwin --target x86_64-pc-windows-msvc
11
+
12
+
# Move Files
13
+
14
+
mkdir builds
15
+
mkdir builds/$VERSION
16
+
17
+
mv "src-tauri/target/release/bundle/appimage/VRChat Photo Manager_0.0.1_amd64.AppImage" builds/$VERSION/vrcpm-$VERSION.AppImage
18
+
mv "src-tauri/target/release/bundle/deb/VRChat Photo Manager_0.0.1_amd64.deb" builds/$VERSION/vrcpm-$VERSION.deb
19
+
mv "src-tauri/target/release/bundle/rpm/VRChat Photo Manager-0.0.1-1.x86_64.rpm" builds/$VERSION/vrcpm-$VERSION.rpm
20
+
21
+
mv src-tauri/target/x86_64-pc-windows-msvc/release/VRChatPhotoManager.exe builds/$VERSION/vrcpm-$VERSION.exe
22
+
mv src-tauri/target/x86_64-pc-windows-msvc/debug/VRChatPhotoManager.exe builds/$VERSION/vrcpm-$VERSION-debug.exe
23
+
24
+
mv "src-tauri/target/x86_64-pc-windows-msvc/release/bundle/nsis/VRChat Photo Manager_0.0.1_x64-setup.exe" builds/$VERSION/vrcpm-$VERSION-setup.exe
+48
-3
changelog
+48
-3
changelog
···
78
v0.2.4:
79
- Refactor loading system to not load all photos at the start
80
(should help with large numbers of photos)
81
-
- Update UI to work on linux
82
- Opening files on linux now works
83
-
- Fixed not rendering properly on linux
84
- Switch world data api to vrchat
85
- Photos are in the correct order on linux now
86
87
Dev Stuff:
88
-
- Implemented a view transition handler, should help with transitions when the app is scaled
···
78
v0.2.4:
79
- Refactor loading system to not load all photos at the start
80
(should help with large numbers of photos)
81
+
- Update UI to work on webkitgtk
82
- Opening files on linux now works
83
+
- Fixed not rendering properly when using webkitgtk
84
- Switch world data api to vrchat
85
+
- Fixed icons being MASSIVE when using webkitgtk
86
- Photos are in the correct order on linux now
87
+
- Fixed photos not rendering if the window isn't resized or reopened when using webkitgtk
88
+
- Fixed scrolling being more and more snappy when the window is closed and reopened when using webkitgtk
89
+
- Fixed render being called multiple times per frame when using webkitgtk
90
91
Dev Stuff:
92
+
- Implemented a view transition handler, should help with transitions when the app is scaled
93
+
94
+
v0.2.5:
95
+
- Fixed the "Start with windows" button appearing on linux
96
+
- Fixed linux tray icon title
97
+
- Fixed build-release.sh script outputting the wrong names for windows builds
98
+
- Fixed clipboard on linux ( and sped it up on windows )
99
+
- Fixed some icons not fading out when moving to the settings menu
100
+
- Removed the auto updater
101
+
- Removed account login stuff
102
+
- Fixed app name on windows
103
+
- Update styles
104
+
- Fixed filters removing photos without metadata
105
+
106
+
v0.2.6:
107
+
- Fixed photos not being loaded if they're too low resolution
108
+
- Fixed "Open in folder" not selecting files on linux
109
+
- Fixed scroll to top button not animating out
110
+
- Fixed scroll to top button being ontop of filters menu
111
+
- Fixed photo ordering
112
+
- Fixed broken legacy named photos
113
+
- Fixed photos being loaded with the wrong resolution
114
+
115
+
- Added support for multilayer photos
116
+
- Added close to tray toggle
117
+
- Added update available prompt
118
+
119
+
- Remove all sync stuff
120
+
- Removed automatic updates
121
+
122
+
Hotfix 1:
123
+
- Fixed loading when an image file is corrupted
124
+
- Fixed update prompt when not connected to internet
125
+
126
+
v0.2.7:
127
+
- Fixed image resizing when window is thinner than image
128
+
- Fixed closing settings with keybinds
129
+
- Fixed the behaviour of changing the photo path
130
+
- Fixed loading photos in folders that aren't VRChat folders
131
+
132
+
Hotfix 1:
133
+
- Fixed resizing images (again)
+12
-12
package.json
+12
-12
package.json
···
12
},
13
"license": "MIT",
14
"dependencies": {
15
-
"@tauri-apps/api": "2.0.0-rc.0",
16
-
"@tauri-apps/plugin-deep-link": "^2.4.1",
17
-
"@tauri-apps/plugin-http": "2.0.0-rc.1",
18
-
"@tauri-apps/plugin-process": "2.0.0-rc.0",
19
-
"@tauri-apps/plugin-shell": "2.0.0-rc.0",
20
-
"@types/animejs": "^3.1.13",
21
-
"animejs": "^3.2.2",
22
-
"solid-js": "^1.9.7"
23
},
24
"devDependencies": {
25
-
"@tauri-apps/cli": "2.0.0-rc.5",
26
-
"typescript": "^5.8.3",
27
-
"vite": "^5.4.19",
28
-
"vite-plugin-solid": "^2.11.8"
29
}
30
}
···
12
},
13
"license": "MIT",
14
"dependencies": {
15
+
"@tauri-apps/api": "2.9.0",
16
+
"@tauri-apps/plugin-deep-link": "^2.4.5",
17
+
"@tauri-apps/plugin-http": "2.5.4",
18
+
"@tauri-apps/plugin-process": "2.3.1",
19
+
"@tauri-apps/plugin-shell": "2.3.3",
20
+
"animejs": "^4.2.2",
21
+
"solid-js": "^1.9.10"
22
},
23
"devDependencies": {
24
+
"@tauri-apps/cli": "2.9.3",
25
+
"@types/animejs": "^3.1.13",
26
+
"typescript": "^5.9.3",
27
+
"vite": "^7.2.2",
28
+
"vite-plugin-solid": "^2.11.10"
29
}
30
}
+562
-464
pnpm-lock.yaml
+562
-464
pnpm-lock.yaml
···
9
.:
10
dependencies:
11
'@tauri-apps/api':
12
-
specifier: 2.0.0-rc.0
13
-
version: 2.0.0-rc.0
14
'@tauri-apps/plugin-deep-link':
15
-
specifier: ^2.4.1
16
-
version: 2.4.1
17
'@tauri-apps/plugin-http':
18
-
specifier: 2.0.0-rc.1
19
-
version: 2.0.0-rc.1
20
'@tauri-apps/plugin-process':
21
-
specifier: 2.0.0-rc.0
22
-
version: 2.0.0-rc.0
23
'@tauri-apps/plugin-shell':
24
-
specifier: 2.0.0-rc.0
25
-
version: 2.0.0-rc.0
26
-
'@types/animejs':
27
-
specifier: ^3.1.13
28
-
version: 3.1.13
29
animejs:
30
-
specifier: ^3.2.2
31
-
version: 3.2.2
32
solid-js:
33
-
specifier: ^1.9.7
34
-
version: 1.9.7
35
devDependencies:
36
'@tauri-apps/cli':
37
-
specifier: 2.0.0-rc.5
38
-
version: 2.0.0-rc.5
39
typescript:
40
-
specifier: ^5.8.3
41
-
version: 5.8.3
42
vite:
43
-
specifier: ^5.4.19
44
-
version: 5.4.19
45
vite-plugin-solid:
46
-
specifier: ^2.11.8
47
-
version: 2.11.8(solid-js@1.9.7)(vite@5.4.19)
48
49
packages:
50
51
-
'@ampproject/remapping@2.3.0':
52
-
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
53
-
engines: {node: '>=6.0.0'}
54
-
55
'@babel/code-frame@7.27.1':
56
resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
57
engines: {node: '>=6.9.0'}
58
59
-
'@babel/compat-data@7.28.0':
60
-
resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==}
61
engines: {node: '>=6.9.0'}
62
63
-
'@babel/core@7.28.0':
64
-
resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==}
65
engines: {node: '>=6.9.0'}
66
67
-
'@babel/generator@7.28.0':
68
-
resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==}
69
engines: {node: '>=6.9.0'}
70
71
'@babel/helper-compilation-targets@7.27.2':
···
84
resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==}
85
engines: {node: '>=6.9.0'}
86
87
-
'@babel/helper-module-transforms@7.27.3':
88
-
resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==}
89
engines: {node: '>=6.9.0'}
90
peerDependencies:
91
'@babel/core': ^7.0.0
···
98
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
99
engines: {node: '>=6.9.0'}
100
101
-
'@babel/helper-validator-identifier@7.27.1':
102
-
resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
103
engines: {node: '>=6.9.0'}
104
105
'@babel/helper-validator-option@7.27.1':
106
resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
107
engines: {node: '>=6.9.0'}
108
109
-
'@babel/helpers@7.28.2':
110
-
resolution: {integrity: sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==}
111
engines: {node: '>=6.9.0'}
112
113
-
'@babel/parser@7.28.0':
114
-
resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==}
115
engines: {node: '>=6.0.0'}
116
hasBin: true
117
···
125
resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
126
engines: {node: '>=6.9.0'}
127
128
-
'@babel/traverse@7.28.0':
129
-
resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==}
130
engines: {node: '>=6.9.0'}
131
132
-
'@babel/types@7.28.2':
133
-
resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==}
134
engines: {node: '>=6.9.0'}
135
136
-
'@esbuild/aix-ppc64@0.21.5':
137
-
resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
138
-
engines: {node: '>=12'}
139
cpu: [ppc64]
140
os: [aix]
141
142
-
'@esbuild/android-arm64@0.21.5':
143
-
resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
144
-
engines: {node: '>=12'}
145
cpu: [arm64]
146
os: [android]
147
148
-
'@esbuild/android-arm@0.21.5':
149
-
resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
150
-
engines: {node: '>=12'}
151
cpu: [arm]
152
os: [android]
153
154
-
'@esbuild/android-x64@0.21.5':
155
-
resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
156
-
engines: {node: '>=12'}
157
cpu: [x64]
158
os: [android]
159
160
-
'@esbuild/darwin-arm64@0.21.5':
161
-
resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
162
-
engines: {node: '>=12'}
163
cpu: [arm64]
164
os: [darwin]
165
166
-
'@esbuild/darwin-x64@0.21.5':
167
-
resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
168
-
engines: {node: '>=12'}
169
cpu: [x64]
170
os: [darwin]
171
172
-
'@esbuild/freebsd-arm64@0.21.5':
173
-
resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
174
-
engines: {node: '>=12'}
175
cpu: [arm64]
176
os: [freebsd]
177
178
-
'@esbuild/freebsd-x64@0.21.5':
179
-
resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
180
-
engines: {node: '>=12'}
181
cpu: [x64]
182
os: [freebsd]
183
184
-
'@esbuild/linux-arm64@0.21.5':
185
-
resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
186
-
engines: {node: '>=12'}
187
cpu: [arm64]
188
os: [linux]
189
190
-
'@esbuild/linux-arm@0.21.5':
191
-
resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
192
-
engines: {node: '>=12'}
193
cpu: [arm]
194
os: [linux]
195
196
-
'@esbuild/linux-ia32@0.21.5':
197
-
resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
198
-
engines: {node: '>=12'}
199
cpu: [ia32]
200
os: [linux]
201
202
-
'@esbuild/linux-loong64@0.21.5':
203
-
resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
204
-
engines: {node: '>=12'}
205
cpu: [loong64]
206
os: [linux]
207
208
-
'@esbuild/linux-mips64el@0.21.5':
209
-
resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
210
-
engines: {node: '>=12'}
211
cpu: [mips64el]
212
os: [linux]
213
214
-
'@esbuild/linux-ppc64@0.21.5':
215
-
resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
216
-
engines: {node: '>=12'}
217
cpu: [ppc64]
218
os: [linux]
219
220
-
'@esbuild/linux-riscv64@0.21.5':
221
-
resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
222
-
engines: {node: '>=12'}
223
cpu: [riscv64]
224
os: [linux]
225
226
-
'@esbuild/linux-s390x@0.21.5':
227
-
resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
228
-
engines: {node: '>=12'}
229
cpu: [s390x]
230
os: [linux]
231
232
-
'@esbuild/linux-x64@0.21.5':
233
-
resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
234
-
engines: {node: '>=12'}
235
cpu: [x64]
236
os: [linux]
237
238
-
'@esbuild/netbsd-x64@0.21.5':
239
-
resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
240
-
engines: {node: '>=12'}
241
cpu: [x64]
242
os: [netbsd]
243
244
-
'@esbuild/openbsd-x64@0.21.5':
245
-
resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
246
-
engines: {node: '>=12'}
247
cpu: [x64]
248
os: [openbsd]
249
250
-
'@esbuild/sunos-x64@0.21.5':
251
-
resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
252
-
engines: {node: '>=12'}
253
cpu: [x64]
254
os: [sunos]
255
256
-
'@esbuild/win32-arm64@0.21.5':
257
-
resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
258
-
engines: {node: '>=12'}
259
cpu: [arm64]
260
os: [win32]
261
262
-
'@esbuild/win32-ia32@0.21.5':
263
-
resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
264
-
engines: {node: '>=12'}
265
cpu: [ia32]
266
os: [win32]
267
268
-
'@esbuild/win32-x64@0.21.5':
269
-
resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
270
-
engines: {node: '>=12'}
271
cpu: [x64]
272
os: [win32]
273
274
-
'@jridgewell/gen-mapping@0.3.12':
275
-
resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==}
276
277
'@jridgewell/resolve-uri@3.1.2':
278
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
279
engines: {node: '>=6.0.0'}
280
281
-
'@jridgewell/sourcemap-codec@1.5.4':
282
-
resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==}
283
284
-
'@jridgewell/trace-mapping@0.3.29':
285
-
resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==}
286
287
-
'@rollup/rollup-android-arm-eabi@4.46.2':
288
-
resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==}
289
cpu: [arm]
290
os: [android]
291
292
-
'@rollup/rollup-android-arm64@4.46.2':
293
-
resolution: {integrity: sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==}
294
cpu: [arm64]
295
os: [android]
296
297
-
'@rollup/rollup-darwin-arm64@4.46.2':
298
-
resolution: {integrity: sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==}
299
cpu: [arm64]
300
os: [darwin]
301
302
-
'@rollup/rollup-darwin-x64@4.46.2':
303
-
resolution: {integrity: sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==}
304
cpu: [x64]
305
os: [darwin]
306
307
-
'@rollup/rollup-freebsd-arm64@4.46.2':
308
-
resolution: {integrity: sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==}
309
cpu: [arm64]
310
os: [freebsd]
311
312
-
'@rollup/rollup-freebsd-x64@4.46.2':
313
-
resolution: {integrity: sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==}
314
cpu: [x64]
315
os: [freebsd]
316
317
-
'@rollup/rollup-linux-arm-gnueabihf@4.46.2':
318
-
resolution: {integrity: sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==}
319
cpu: [arm]
320
os: [linux]
321
322
-
'@rollup/rollup-linux-arm-musleabihf@4.46.2':
323
-
resolution: {integrity: sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==}
324
cpu: [arm]
325
os: [linux]
326
327
-
'@rollup/rollup-linux-arm64-gnu@4.46.2':
328
-
resolution: {integrity: sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==}
329
cpu: [arm64]
330
os: [linux]
331
332
-
'@rollup/rollup-linux-arm64-musl@4.46.2':
333
-
resolution: {integrity: sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==}
334
cpu: [arm64]
335
os: [linux]
336
337
-
'@rollup/rollup-linux-loongarch64-gnu@4.46.2':
338
-
resolution: {integrity: sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==}
339
cpu: [loong64]
340
os: [linux]
341
342
-
'@rollup/rollup-linux-ppc64-gnu@4.46.2':
343
-
resolution: {integrity: sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==}
344
cpu: [ppc64]
345
os: [linux]
346
347
-
'@rollup/rollup-linux-riscv64-gnu@4.46.2':
348
-
resolution: {integrity: sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==}
349
cpu: [riscv64]
350
os: [linux]
351
352
-
'@rollup/rollup-linux-riscv64-musl@4.46.2':
353
-
resolution: {integrity: sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==}
354
cpu: [riscv64]
355
os: [linux]
356
357
-
'@rollup/rollup-linux-s390x-gnu@4.46.2':
358
-
resolution: {integrity: sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==}
359
cpu: [s390x]
360
os: [linux]
361
362
-
'@rollup/rollup-linux-x64-gnu@4.46.2':
363
-
resolution: {integrity: sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==}
364
cpu: [x64]
365
os: [linux]
366
367
-
'@rollup/rollup-linux-x64-musl@4.46.2':
368
-
resolution: {integrity: sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==}
369
cpu: [x64]
370
os: [linux]
371
372
-
'@rollup/rollup-win32-arm64-msvc@4.46.2':
373
-
resolution: {integrity: sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==}
374
cpu: [arm64]
375
os: [win32]
376
377
-
'@rollup/rollup-win32-ia32-msvc@4.46.2':
378
-
resolution: {integrity: sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==}
379
cpu: [ia32]
380
os: [win32]
381
382
-
'@rollup/rollup-win32-x64-msvc@4.46.2':
383
-
resolution: {integrity: sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==}
384
cpu: [x64]
385
os: [win32]
386
387
-
'@tauri-apps/api@2.0.0-rc.0':
388
-
resolution: {integrity: sha512-v454Qs3REHc3Za59U+/eSmBsdmF+3NE5+76+lFDaitVqN4ZglDHENDaMARYKGJVZuxiSkzyqG0SeG7lLQjVkPA==}
389
-
engines: {node: '>= 18.18', npm: '>= 6.6.0', yarn: '>= 1.19.1'}
390
391
-
'@tauri-apps/api@2.7.0':
392
-
resolution: {integrity: sha512-v7fVE8jqBl8xJFOcBafDzXFc8FnicoH3j8o8DNNs0tHuEBmXUDqrCOAzMRX0UkfpwqZLqvrvK0GNQ45DfnoVDg==}
393
394
-
'@tauri-apps/cli-darwin-arm64@2.0.0-rc.5':
395
-
resolution: {integrity: sha512-EoduJ5SeMfBKCe7I291JBH+lkrf2E0+mQF1rP+Jq4CjWPer11OeEcUSFtHURB3Z3ItzObQ7ALPulMGhMe6E9rg==}
396
engines: {node: '>= 10'}
397
cpu: [arm64]
398
os: [darwin]
399
400
-
'@tauri-apps/cli-darwin-x64@2.0.0-rc.5':
401
-
resolution: {integrity: sha512-GdphvNgQWAbVGoD6e2Z5auWFXBcmmbhiwf9UNoKpBQPLfFO6EEJHjXbACr/hAZsqT0nNpZLRoh/5v5HGTmU0XQ==}
402
engines: {node: '>= 10'}
403
cpu: [x64]
404
os: [darwin]
405
406
-
'@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.5':
407
-
resolution: {integrity: sha512-S47KwAfyRsO2qTqSoadHP4a1cjO9kfQi4QWkoaDjb0BEETdrhPM94qp43cnKP7QWW+msOToMTdlks9HYlhRUww==}
408
engines: {node: '>= 10'}
409
cpu: [arm]
410
os: [linux]
411
412
-
'@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.5':
413
-
resolution: {integrity: sha512-Ii9aP/24Rtlci5MaeSaqb6JOLt3cUBA4z4XmGz5VOLLZ+ntRxpfd3xNpLki04V2MOgbAu9BxLAp5UTzELc1/Rg==}
414
engines: {node: '>= 10'}
415
cpu: [arm64]
416
os: [linux]
417
418
-
'@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.5':
419
-
resolution: {integrity: sha512-noV2sDusI+DsEHl0uMOZ04sQmj65Jo9yjfSg2iv1fnfjBYVbwi6Qj/MaCqyApXESQrpv1XZB3kYI+CkyPnjj2Q==}
420
engines: {node: '>= 10'}
421
cpu: [arm64]
422
os: [linux]
423
424
-
'@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.5':
425
-
resolution: {integrity: sha512-iTe9gKO+qgFRjU1sxBvbI8bIRbkOedWvFm/yh8RFi1iJcFwbVnsHWQ8z7BwoNMJLnL2dseZgrGntmS5n9/xSSQ==}
426
engines: {node: '>= 10'}
427
cpu: [x64]
428
os: [linux]
429
430
-
'@tauri-apps/cli-linux-x64-musl@2.0.0-rc.5':
431
-
resolution: {integrity: sha512-R7EyfvfdMtRAKC3QxPn5jVGEH56R4g6hSnR5xXkFnEpioND7SNru5UMBGgseGJ22h/hdjFfqS2vc19291gkVsg==}
432
engines: {node: '>= 10'}
433
cpu: [x64]
434
os: [linux]
435
436
-
'@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.5':
437
-
resolution: {integrity: sha512-EE7CF//hMWsVZpu9IWXGLDDdMhAiNfHwfLnW4Na1INHKBBb/ynhOd4gKRC3Mi/kgcMfXJAq0nBJFw1mal1q7jg==}
438
engines: {node: '>= 10'}
439
cpu: [arm64]
440
os: [win32]
441
442
-
'@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.5':
443
-
resolution: {integrity: sha512-zJosPEw1X1H9nTNsrYVSypRLdMLOiLAY8hlBrgsmw7dmN61lOMLyItWsbiAezYeKIpaFeADurR+5qMHHwzbqeg==}
444
engines: {node: '>= 10'}
445
cpu: [ia32]
446
os: [win32]
447
448
-
'@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.5':
449
-
resolution: {integrity: sha512-PqxbL/e6GraazdwEKN1oX33gYCRf0ns6yuaxHafHM5+Zsv0MZpyPTPLDot/JLKvNBefk6QXZn5fKAIETVtQaGg==}
450
engines: {node: '>= 10'}
451
cpu: [x64]
452
os: [win32]
453
454
-
'@tauri-apps/cli@2.0.0-rc.5':
455
-
resolution: {integrity: sha512-JtFfJg8ZNOrj+S+8RKpcrNIcU5hw0X8JSNs2tUjQq0OZgqIGnRSILYjg7BaZDPEakQXUKsDEufbjbYVNJDIp8g==}
456
engines: {node: '>= 10'}
457
hasBin: true
458
459
-
'@tauri-apps/plugin-deep-link@2.4.1':
460
-
resolution: {integrity: sha512-I8Bo+spcAKGhIIJ1qN/gapp/Ot3mosQL98znxr975Zn2ODAkUZ++BQ9FnTpR7PDwfIl5ANSGdIW/YU01zVTcJw==}
461
462
-
'@tauri-apps/plugin-http@2.0.0-rc.1':
463
-
resolution: {integrity: sha512-j4WdTEKx0CFa6u8ubke0mo75pCrnu6XtrFtvjsh+zjuNYgMG/l0+A1woWXHm73f2Levskhs+KbKcLQA/nr8k2w==}
464
465
-
'@tauri-apps/plugin-process@2.0.0-rc.0':
466
-
resolution: {integrity: sha512-Z12D/kmQzG1vCVf+jLXPhPDUA0pEjFrsg4p0uwO2sotVLM9287IuTM+aIz9cuAYOxFLKcsnDG7amSCL9IfA1gw==}
467
468
-
'@tauri-apps/plugin-shell@2.0.0-rc.0':
469
-
resolution: {integrity: sha512-bhUcQcrqZoK8H1DFXapr5r1Z75oh6Kd5Tltz97XpZFLREEqp+KhN2Fvyh8r/fKAyenYsTYUIsDsyGdjdueuF9g==}
470
471
'@types/animejs@3.1.13':
472
resolution: {integrity: sha512-yWg9l1z7CAv/TKpty4/vupEh24jDGUZXv4r26StRkpUPQm04ztJaftgpto8vwdFs8SiTq6XfaPKCSI+wjzNMvQ==}
···
480
'@types/babel__template@7.4.4':
481
resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
482
483
-
'@types/babel__traverse@7.20.7':
484
-
resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==}
485
486
'@types/estree@1.0.8':
487
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
488
489
-
animejs@3.2.2:
490
-
resolution: {integrity: sha512-Ao95qWLpDPXXM+WrmwcKbl6uNlC5tjnowlaRYtuVDHHoygjtIPfDUoK9NthrlZsQSKjZXlmji2TrBUAVbiH0LQ==}
491
492
-
babel-plugin-jsx-dom-expressions@0.39.8:
493
-
resolution: {integrity: sha512-/MVOIIjonylDXnrWmG23ZX82m9mtKATsVHB7zYlPfDR9Vdd/NBE48if+wv27bSkBtyO7EPMUlcUc4J63QwuACQ==}
494
peerDependencies:
495
'@babel/core': ^7.20.12
496
497
-
babel-preset-solid@1.9.6:
498
-
resolution: {integrity: sha512-HXTK9f93QxoH8dYn1M2mJdOlWgMsR88Lg/ul6QCZGkNTktjTE5HAf93YxQumHoCudLEtZrU1cFCMFOVho6GqFg==}
499
peerDependencies:
500
'@babel/core': ^7.0.0
501
502
-
browserslist@4.25.1:
503
-
resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==}
504
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
505
hasBin: true
506
507
-
caniuse-lite@1.0.30001731:
508
-
resolution: {integrity: sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==}
509
510
convert-source-map@2.0.0:
511
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
···
513
csstype@3.1.3:
514
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
515
516
-
debug@4.4.1:
517
-
resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
518
engines: {node: '>=6.0'}
519
peerDependencies:
520
supports-color: '*'
···
522
supports-color:
523
optional: true
524
525
-
electron-to-chromium@1.5.193:
526
-
resolution: {integrity: sha512-eePuBZXM9OVCwfYUhd2OzESeNGnWmLyeu0XAEjf7xjijNjHFdeJSzuRUGN4ueT2tEYo5YqjHramKEFxz67p3XA==}
527
528
entities@6.0.1:
529
resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
530
engines: {node: '>=0.12'}
531
532
-
esbuild@0.21.5:
533
-
resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
534
-
engines: {node: '>=12'}
535
hasBin: true
536
537
escalade@3.2.0:
538
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
539
engines: {node: '>=6'}
540
541
fsevents@2.3.3:
542
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
···
582
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
583
hasBin: true
584
585
-
node-releases@2.0.19:
586
-
resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
587
588
parse5@7.3.0:
589
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
···
591
picocolors@1.1.1:
592
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
593
594
postcss@8.5.6:
595
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
596
engines: {node: ^10 || ^12 || >=14}
597
598
-
rollup@4.46.2:
599
-
resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==}
600
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
601
hasBin: true
602
···
604
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
605
hasBin: true
606
607
-
seroval-plugins@1.3.2:
608
-
resolution: {integrity: sha512-0QvCV2lM3aj/U3YozDiVwx9zpH0q8A60CTWIv4Jszj/givcudPb48B+rkU5D51NJ0pTpweGMttHjboPa9/zoIQ==}
609
engines: {node: '>=10'}
610
peerDependencies:
611
seroval: ^1.0
···
614
resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==}
615
engines: {node: '>=10'}
616
617
-
solid-js@1.9.7:
618
-
resolution: {integrity: sha512-/saTKi8iWEM233n5OSi1YHCCuh66ZIQ7aK2hsToPe4tqGm7qAejU1SwNuTPivbWAYq7SjuHVVYxxuZQNRbICiw==}
619
620
solid-refresh@0.6.3:
621
resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==}
···
626
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
627
engines: {node: '>=0.10.0'}
628
629
-
typescript@5.8.3:
630
-
resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==}
631
engines: {node: '>=14.17'}
632
hasBin: true
633
634
-
update-browserslist-db@1.1.3:
635
-
resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==}
636
hasBin: true
637
peerDependencies:
638
browserslist: '>= 4.21.0'
639
640
-
validate-html-nesting@1.2.3:
641
-
resolution: {integrity: sha512-kdkWdCl6eCeLlRShJKbjVOU2kFKxMF8Ghu50n+crEoyx+VKm3FxAxF9z4DCy6+bbTOqNW0+jcIYRnjoIRzigRw==}
642
-
643
-
vite-plugin-solid@2.11.8:
644
-
resolution: {integrity: sha512-hFrCxBfv3B1BmFqnJF4JOCYpjrmi/zwyeKjcomQ0khh8HFyQ8SbuBWQ7zGojfrz6HUOBFrJBNySDi/JgAHytWg==}
645
peerDependencies:
646
'@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.*
647
solid-js: ^1.7.2
···
650
'@testing-library/jest-dom':
651
optional: true
652
653
-
vite@5.4.19:
654
-
resolution: {integrity: sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==}
655
-
engines: {node: ^18.0.0 || >=20.0.0}
656
hasBin: true
657
peerDependencies:
658
-
'@types/node': ^18.0.0 || >=20.0.0
659
-
less: '*'
660
lightningcss: ^1.21.0
661
-
sass: '*'
662
-
sass-embedded: '*'
663
-
stylus: '*'
664
-
sugarss: '*'
665
-
terser: ^5.4.0
666
peerDependenciesMeta:
667
'@types/node':
668
optional: true
669
less:
670
optional: true
···
679
sugarss:
680
optional: true
681
terser:
682
optional: true
683
684
vitefu@1.1.1:
···
694
695
snapshots:
696
697
-
'@ampproject/remapping@2.3.0':
698
-
dependencies:
699
-
'@jridgewell/gen-mapping': 0.3.12
700
-
'@jridgewell/trace-mapping': 0.3.29
701
-
702
'@babel/code-frame@7.27.1':
703
dependencies:
704
-
'@babel/helper-validator-identifier': 7.27.1
705
js-tokens: 4.0.0
706
picocolors: 1.1.1
707
708
-
'@babel/compat-data@7.28.0': {}
709
710
-
'@babel/core@7.28.0':
711
dependencies:
712
-
'@ampproject/remapping': 2.3.0
713
'@babel/code-frame': 7.27.1
714
-
'@babel/generator': 7.28.0
715
'@babel/helper-compilation-targets': 7.27.2
716
-
'@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0)
717
-
'@babel/helpers': 7.28.2
718
-
'@babel/parser': 7.28.0
719
'@babel/template': 7.27.2
720
-
'@babel/traverse': 7.28.0
721
-
'@babel/types': 7.28.2
722
convert-source-map: 2.0.0
723
-
debug: 4.4.1
724
gensync: 1.0.0-beta.2
725
json5: 2.2.3
726
semver: 6.3.1
727
transitivePeerDependencies:
728
- supports-color
729
730
-
'@babel/generator@7.28.0':
731
dependencies:
732
-
'@babel/parser': 7.28.0
733
-
'@babel/types': 7.28.2
734
-
'@jridgewell/gen-mapping': 0.3.12
735
-
'@jridgewell/trace-mapping': 0.3.29
736
jsesc: 3.1.0
737
738
'@babel/helper-compilation-targets@7.27.2':
739
dependencies:
740
-
'@babel/compat-data': 7.28.0
741
'@babel/helper-validator-option': 7.27.1
742
-
browserslist: 4.25.1
743
lru-cache: 5.1.1
744
semver: 6.3.1
745
···
747
748
'@babel/helper-module-imports@7.18.6':
749
dependencies:
750
-
'@babel/types': 7.28.2
751
752
'@babel/helper-module-imports@7.27.1':
753
dependencies:
754
-
'@babel/traverse': 7.28.0
755
-
'@babel/types': 7.28.2
756
transitivePeerDependencies:
757
- supports-color
758
759
-
'@babel/helper-module-transforms@7.27.3(@babel/core@7.28.0)':
760
dependencies:
761
-
'@babel/core': 7.28.0
762
'@babel/helper-module-imports': 7.27.1
763
-
'@babel/helper-validator-identifier': 7.27.1
764
-
'@babel/traverse': 7.28.0
765
transitivePeerDependencies:
766
- supports-color
767
···
769
770
'@babel/helper-string-parser@7.27.1': {}
771
772
-
'@babel/helper-validator-identifier@7.27.1': {}
773
774
'@babel/helper-validator-option@7.27.1': {}
775
776
-
'@babel/helpers@7.28.2':
777
dependencies:
778
'@babel/template': 7.27.2
779
-
'@babel/types': 7.28.2
780
781
-
'@babel/parser@7.28.0':
782
dependencies:
783
-
'@babel/types': 7.28.2
784
785
-
'@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.0)':
786
dependencies:
787
-
'@babel/core': 7.28.0
788
'@babel/helper-plugin-utils': 7.27.1
789
790
'@babel/template@7.27.2':
791
dependencies:
792
'@babel/code-frame': 7.27.1
793
-
'@babel/parser': 7.28.0
794
-
'@babel/types': 7.28.2
795
796
-
'@babel/traverse@7.28.0':
797
dependencies:
798
'@babel/code-frame': 7.27.1
799
-
'@babel/generator': 7.28.0
800
'@babel/helper-globals': 7.28.0
801
-
'@babel/parser': 7.28.0
802
'@babel/template': 7.27.2
803
-
'@babel/types': 7.28.2
804
-
debug: 4.4.1
805
transitivePeerDependencies:
806
- supports-color
807
808
-
'@babel/types@7.28.2':
809
dependencies:
810
'@babel/helper-string-parser': 7.27.1
811
-
'@babel/helper-validator-identifier': 7.27.1
812
813
-
'@esbuild/aix-ppc64@0.21.5':
814
optional: true
815
816
-
'@esbuild/android-arm64@0.21.5':
817
optional: true
818
819
-
'@esbuild/android-arm@0.21.5':
820
optional: true
821
822
-
'@esbuild/android-x64@0.21.5':
823
optional: true
824
825
-
'@esbuild/darwin-arm64@0.21.5':
826
optional: true
827
828
-
'@esbuild/darwin-x64@0.21.5':
829
optional: true
830
831
-
'@esbuild/freebsd-arm64@0.21.5':
832
optional: true
833
834
-
'@esbuild/freebsd-x64@0.21.5':
835
optional: true
836
837
-
'@esbuild/linux-arm64@0.21.5':
838
optional: true
839
840
-
'@esbuild/linux-arm@0.21.5':
841
optional: true
842
843
-
'@esbuild/linux-ia32@0.21.5':
844
optional: true
845
846
-
'@esbuild/linux-loong64@0.21.5':
847
optional: true
848
849
-
'@esbuild/linux-mips64el@0.21.5':
850
optional: true
851
852
-
'@esbuild/linux-ppc64@0.21.5':
853
optional: true
854
855
-
'@esbuild/linux-riscv64@0.21.5':
856
optional: true
857
858
-
'@esbuild/linux-s390x@0.21.5':
859
optional: true
860
861
-
'@esbuild/linux-x64@0.21.5':
862
optional: true
863
864
-
'@esbuild/netbsd-x64@0.21.5':
865
optional: true
866
867
-
'@esbuild/openbsd-x64@0.21.5':
868
optional: true
869
870
-
'@esbuild/sunos-x64@0.21.5':
871
optional: true
872
873
-
'@esbuild/win32-arm64@0.21.5':
874
optional: true
875
876
-
'@esbuild/win32-ia32@0.21.5':
877
optional: true
878
879
-
'@esbuild/win32-x64@0.21.5':
880
optional: true
881
882
-
'@jridgewell/gen-mapping@0.3.12':
883
dependencies:
884
-
'@jridgewell/sourcemap-codec': 1.5.4
885
-
'@jridgewell/trace-mapping': 0.3.29
886
887
'@jridgewell/resolve-uri@3.1.2': {}
888
889
-
'@jridgewell/sourcemap-codec@1.5.4': {}
890
891
-
'@jridgewell/trace-mapping@0.3.29':
892
dependencies:
893
'@jridgewell/resolve-uri': 3.1.2
894
-
'@jridgewell/sourcemap-codec': 1.5.4
895
896
-
'@rollup/rollup-android-arm-eabi@4.46.2':
897
optional: true
898
899
-
'@rollup/rollup-android-arm64@4.46.2':
900
optional: true
901
902
-
'@rollup/rollup-darwin-arm64@4.46.2':
903
optional: true
904
905
-
'@rollup/rollup-darwin-x64@4.46.2':
906
optional: true
907
908
-
'@rollup/rollup-freebsd-arm64@4.46.2':
909
optional: true
910
911
-
'@rollup/rollup-freebsd-x64@4.46.2':
912
optional: true
913
914
-
'@rollup/rollup-linux-arm-gnueabihf@4.46.2':
915
optional: true
916
917
-
'@rollup/rollup-linux-arm-musleabihf@4.46.2':
918
optional: true
919
920
-
'@rollup/rollup-linux-arm64-gnu@4.46.2':
921
optional: true
922
923
-
'@rollup/rollup-linux-arm64-musl@4.46.2':
924
optional: true
925
926
-
'@rollup/rollup-linux-loongarch64-gnu@4.46.2':
927
optional: true
928
929
-
'@rollup/rollup-linux-ppc64-gnu@4.46.2':
930
optional: true
931
932
-
'@rollup/rollup-linux-riscv64-gnu@4.46.2':
933
optional: true
934
935
-
'@rollup/rollup-linux-riscv64-musl@4.46.2':
936
optional: true
937
938
-
'@rollup/rollup-linux-s390x-gnu@4.46.2':
939
optional: true
940
941
-
'@rollup/rollup-linux-x64-gnu@4.46.2':
942
optional: true
943
944
-
'@rollup/rollup-linux-x64-musl@4.46.2':
945
optional: true
946
947
-
'@rollup/rollup-win32-arm64-msvc@4.46.2':
948
optional: true
949
950
-
'@rollup/rollup-win32-ia32-msvc@4.46.2':
951
optional: true
952
953
-
'@rollup/rollup-win32-x64-msvc@4.46.2':
954
optional: true
955
956
-
'@tauri-apps/api@2.0.0-rc.0': {}
957
958
-
'@tauri-apps/api@2.7.0': {}
959
960
-
'@tauri-apps/cli-darwin-arm64@2.0.0-rc.5':
961
optional: true
962
963
-
'@tauri-apps/cli-darwin-x64@2.0.0-rc.5':
964
optional: true
965
966
-
'@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.5':
967
optional: true
968
969
-
'@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.5':
970
optional: true
971
972
-
'@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.5':
973
optional: true
974
975
-
'@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.5':
976
optional: true
977
978
-
'@tauri-apps/cli-linux-x64-musl@2.0.0-rc.5':
979
optional: true
980
981
-
'@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.5':
982
optional: true
983
984
-
'@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.5':
985
optional: true
986
987
-
'@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.5':
988
optional: true
989
990
-
'@tauri-apps/cli@2.0.0-rc.5':
991
optionalDependencies:
992
-
'@tauri-apps/cli-darwin-arm64': 2.0.0-rc.5
993
-
'@tauri-apps/cli-darwin-x64': 2.0.0-rc.5
994
-
'@tauri-apps/cli-linux-arm-gnueabihf': 2.0.0-rc.5
995
-
'@tauri-apps/cli-linux-arm64-gnu': 2.0.0-rc.5
996
-
'@tauri-apps/cli-linux-arm64-musl': 2.0.0-rc.5
997
-
'@tauri-apps/cli-linux-x64-gnu': 2.0.0-rc.5
998
-
'@tauri-apps/cli-linux-x64-musl': 2.0.0-rc.5
999
-
'@tauri-apps/cli-win32-arm64-msvc': 2.0.0-rc.5
1000
-
'@tauri-apps/cli-win32-ia32-msvc': 2.0.0-rc.5
1001
-
'@tauri-apps/cli-win32-x64-msvc': 2.0.0-rc.5
1002
1003
-
'@tauri-apps/plugin-deep-link@2.4.1':
1004
dependencies:
1005
-
'@tauri-apps/api': 2.7.0
1006
1007
-
'@tauri-apps/plugin-http@2.0.0-rc.1':
1008
dependencies:
1009
-
'@tauri-apps/api': 2.7.0
1010
1011
-
'@tauri-apps/plugin-process@2.0.0-rc.0':
1012
dependencies:
1013
-
'@tauri-apps/api': 2.0.0-rc.0
1014
1015
-
'@tauri-apps/plugin-shell@2.0.0-rc.0':
1016
dependencies:
1017
-
'@tauri-apps/api': 2.0.0-rc.0
1018
1019
'@types/animejs@3.1.13': {}
1020
1021
'@types/babel__core@7.20.5':
1022
dependencies:
1023
-
'@babel/parser': 7.28.0
1024
-
'@babel/types': 7.28.2
1025
'@types/babel__generator': 7.27.0
1026
'@types/babel__template': 7.4.4
1027
-
'@types/babel__traverse': 7.20.7
1028
1029
'@types/babel__generator@7.27.0':
1030
dependencies:
1031
-
'@babel/types': 7.28.2
1032
1033
'@types/babel__template@7.4.4':
1034
dependencies:
1035
-
'@babel/parser': 7.28.0
1036
-
'@babel/types': 7.28.2
1037
1038
-
'@types/babel__traverse@7.20.7':
1039
dependencies:
1040
-
'@babel/types': 7.28.2
1041
1042
'@types/estree@1.0.8': {}
1043
1044
-
animejs@3.2.2: {}
1045
1046
-
babel-plugin-jsx-dom-expressions@0.39.8(@babel/core@7.28.0):
1047
dependencies:
1048
-
'@babel/core': 7.28.0
1049
'@babel/helper-module-imports': 7.18.6
1050
-
'@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0)
1051
-
'@babel/types': 7.28.2
1052
html-entities: 2.3.3
1053
parse5: 7.3.0
1054
-
validate-html-nesting: 1.2.3
1055
1056
-
babel-preset-solid@1.9.6(@babel/core@7.28.0):
1057
dependencies:
1058
-
'@babel/core': 7.28.0
1059
-
babel-plugin-jsx-dom-expressions: 0.39.8(@babel/core@7.28.0)
1060
1061
-
browserslist@4.25.1:
1062
dependencies:
1063
-
caniuse-lite: 1.0.30001731
1064
-
electron-to-chromium: 1.5.193
1065
-
node-releases: 2.0.19
1066
-
update-browserslist-db: 1.1.3(browserslist@4.25.1)
1067
1068
-
caniuse-lite@1.0.30001731: {}
1069
1070
convert-source-map@2.0.0: {}
1071
1072
csstype@3.1.3: {}
1073
1074
-
debug@4.4.1:
1075
dependencies:
1076
ms: 2.1.3
1077
1078
-
electron-to-chromium@1.5.193: {}
1079
1080
entities@6.0.1: {}
1081
1082
-
esbuild@0.21.5:
1083
optionalDependencies:
1084
-
'@esbuild/aix-ppc64': 0.21.5
1085
-
'@esbuild/android-arm': 0.21.5
1086
-
'@esbuild/android-arm64': 0.21.5
1087
-
'@esbuild/android-x64': 0.21.5
1088
-
'@esbuild/darwin-arm64': 0.21.5
1089
-
'@esbuild/darwin-x64': 0.21.5
1090
-
'@esbuild/freebsd-arm64': 0.21.5
1091
-
'@esbuild/freebsd-x64': 0.21.5
1092
-
'@esbuild/linux-arm': 0.21.5
1093
-
'@esbuild/linux-arm64': 0.21.5
1094
-
'@esbuild/linux-ia32': 0.21.5
1095
-
'@esbuild/linux-loong64': 0.21.5
1096
-
'@esbuild/linux-mips64el': 0.21.5
1097
-
'@esbuild/linux-ppc64': 0.21.5
1098
-
'@esbuild/linux-riscv64': 0.21.5
1099
-
'@esbuild/linux-s390x': 0.21.5
1100
-
'@esbuild/linux-x64': 0.21.5
1101
-
'@esbuild/netbsd-x64': 0.21.5
1102
-
'@esbuild/openbsd-x64': 0.21.5
1103
-
'@esbuild/sunos-x64': 0.21.5
1104
-
'@esbuild/win32-arm64': 0.21.5
1105
-
'@esbuild/win32-ia32': 0.21.5
1106
-
'@esbuild/win32-x64': 0.21.5
1107
1108
escalade@3.2.0: {}
1109
1110
fsevents@2.3.3:
1111
optional: true
1112
···
1134
1135
nanoid@3.3.11: {}
1136
1137
-
node-releases@2.0.19: {}
1138
1139
parse5@7.3.0:
1140
dependencies:
···
1142
1143
picocolors@1.1.1: {}
1144
1145
postcss@8.5.6:
1146
dependencies:
1147
nanoid: 3.3.11
1148
picocolors: 1.1.1
1149
source-map-js: 1.2.1
1150
1151
-
rollup@4.46.2:
1152
dependencies:
1153
'@types/estree': 1.0.8
1154
optionalDependencies:
1155
-
'@rollup/rollup-android-arm-eabi': 4.46.2
1156
-
'@rollup/rollup-android-arm64': 4.46.2
1157
-
'@rollup/rollup-darwin-arm64': 4.46.2
1158
-
'@rollup/rollup-darwin-x64': 4.46.2
1159
-
'@rollup/rollup-freebsd-arm64': 4.46.2
1160
-
'@rollup/rollup-freebsd-x64': 4.46.2
1161
-
'@rollup/rollup-linux-arm-gnueabihf': 4.46.2
1162
-
'@rollup/rollup-linux-arm-musleabihf': 4.46.2
1163
-
'@rollup/rollup-linux-arm64-gnu': 4.46.2
1164
-
'@rollup/rollup-linux-arm64-musl': 4.46.2
1165
-
'@rollup/rollup-linux-loongarch64-gnu': 4.46.2
1166
-
'@rollup/rollup-linux-ppc64-gnu': 4.46.2
1167
-
'@rollup/rollup-linux-riscv64-gnu': 4.46.2
1168
-
'@rollup/rollup-linux-riscv64-musl': 4.46.2
1169
-
'@rollup/rollup-linux-s390x-gnu': 4.46.2
1170
-
'@rollup/rollup-linux-x64-gnu': 4.46.2
1171
-
'@rollup/rollup-linux-x64-musl': 4.46.2
1172
-
'@rollup/rollup-win32-arm64-msvc': 4.46.2
1173
-
'@rollup/rollup-win32-ia32-msvc': 4.46.2
1174
-
'@rollup/rollup-win32-x64-msvc': 4.46.2
1175
fsevents: 2.3.3
1176
1177
semver@6.3.1: {}
1178
1179
-
seroval-plugins@1.3.2(seroval@1.3.2):
1180
dependencies:
1181
seroval: 1.3.2
1182
1183
seroval@1.3.2: {}
1184
1185
-
solid-js@1.9.7:
1186
dependencies:
1187
csstype: 3.1.3
1188
seroval: 1.3.2
1189
-
seroval-plugins: 1.3.2(seroval@1.3.2)
1190
1191
-
solid-refresh@0.6.3(solid-js@1.9.7):
1192
dependencies:
1193
-
'@babel/generator': 7.28.0
1194
'@babel/helper-module-imports': 7.27.1
1195
-
'@babel/types': 7.28.2
1196
-
solid-js: 1.9.7
1197
transitivePeerDependencies:
1198
- supports-color
1199
1200
source-map-js@1.2.1: {}
1201
1202
-
typescript@5.8.3: {}
1203
1204
-
update-browserslist-db@1.1.3(browserslist@4.25.1):
1205
dependencies:
1206
-
browserslist: 4.25.1
1207
escalade: 3.2.0
1208
picocolors: 1.1.1
1209
1210
-
validate-html-nesting@1.2.3: {}
1211
-
1212
-
vite-plugin-solid@2.11.8(solid-js@1.9.7)(vite@5.4.19):
1213
dependencies:
1214
-
'@babel/core': 7.28.0
1215
'@types/babel__core': 7.20.5
1216
-
babel-preset-solid: 1.9.6(@babel/core@7.28.0)
1217
merge-anything: 5.1.7
1218
-
solid-js: 1.9.7
1219
-
solid-refresh: 0.6.3(solid-js@1.9.7)
1220
-
vite: 5.4.19
1221
-
vitefu: 1.1.1(vite@5.4.19)
1222
transitivePeerDependencies:
1223
- supports-color
1224
1225
-
vite@5.4.19:
1226
dependencies:
1227
-
esbuild: 0.21.5
1228
postcss: 8.5.6
1229
-
rollup: 4.46.2
1230
optionalDependencies:
1231
fsevents: 2.3.3
1232
1233
-
vitefu@1.1.1(vite@5.4.19):
1234
optionalDependencies:
1235
-
vite: 5.4.19
1236
1237
yallist@3.1.1: {}
···
9
.:
10
dependencies:
11
'@tauri-apps/api':
12
+
specifier: 2.9.0
13
+
version: 2.9.0
14
'@tauri-apps/plugin-deep-link':
15
+
specifier: ^2.4.5
16
+
version: 2.4.5
17
'@tauri-apps/plugin-http':
18
+
specifier: 2.5.4
19
+
version: 2.5.4
20
'@tauri-apps/plugin-process':
21
+
specifier: 2.3.1
22
+
version: 2.3.1
23
'@tauri-apps/plugin-shell':
24
+
specifier: 2.3.3
25
+
version: 2.3.3
26
animejs:
27
+
specifier: ^4.2.2
28
+
version: 4.2.2
29
solid-js:
30
+
specifier: ^1.9.10
31
+
version: 1.9.10
32
devDependencies:
33
'@tauri-apps/cli':
34
+
specifier: 2.9.3
35
+
version: 2.9.3
36
+
'@types/animejs':
37
+
specifier: ^3.1.13
38
+
version: 3.1.13
39
typescript:
40
+
specifier: ^5.9.3
41
+
version: 5.9.3
42
vite:
43
+
specifier: ^7.2.2
44
+
version: 7.2.2
45
vite-plugin-solid:
46
+
specifier: ^2.11.10
47
+
version: 2.11.10(solid-js@1.9.10)(vite@7.2.2)
48
49
packages:
50
51
'@babel/code-frame@7.27.1':
52
resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
53
engines: {node: '>=6.9.0'}
54
55
+
'@babel/compat-data@7.28.5':
56
+
resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==}
57
engines: {node: '>=6.9.0'}
58
59
+
'@babel/core@7.28.5':
60
+
resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==}
61
engines: {node: '>=6.9.0'}
62
63
+
'@babel/generator@7.28.5':
64
+
resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==}
65
engines: {node: '>=6.9.0'}
66
67
'@babel/helper-compilation-targets@7.27.2':
···
80
resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==}
81
engines: {node: '>=6.9.0'}
82
83
+
'@babel/helper-module-transforms@7.28.3':
84
+
resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==}
85
engines: {node: '>=6.9.0'}
86
peerDependencies:
87
'@babel/core': ^7.0.0
···
94
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
95
engines: {node: '>=6.9.0'}
96
97
+
'@babel/helper-validator-identifier@7.28.5':
98
+
resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
99
engines: {node: '>=6.9.0'}
100
101
'@babel/helper-validator-option@7.27.1':
102
resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
103
engines: {node: '>=6.9.0'}
104
105
+
'@babel/helpers@7.28.4':
106
+
resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==}
107
engines: {node: '>=6.9.0'}
108
109
+
'@babel/parser@7.28.5':
110
+
resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==}
111
engines: {node: '>=6.0.0'}
112
hasBin: true
113
···
121
resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
122
engines: {node: '>=6.9.0'}
123
124
+
'@babel/traverse@7.28.5':
125
+
resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==}
126
engines: {node: '>=6.9.0'}
127
128
+
'@babel/types@7.28.5':
129
+
resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
130
engines: {node: '>=6.9.0'}
131
132
+
'@esbuild/aix-ppc64@0.25.12':
133
+
resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==}
134
+
engines: {node: '>=18'}
135
cpu: [ppc64]
136
os: [aix]
137
138
+
'@esbuild/android-arm64@0.25.12':
139
+
resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==}
140
+
engines: {node: '>=18'}
141
cpu: [arm64]
142
os: [android]
143
144
+
'@esbuild/android-arm@0.25.12':
145
+
resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==}
146
+
engines: {node: '>=18'}
147
cpu: [arm]
148
os: [android]
149
150
+
'@esbuild/android-x64@0.25.12':
151
+
resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==}
152
+
engines: {node: '>=18'}
153
cpu: [x64]
154
os: [android]
155
156
+
'@esbuild/darwin-arm64@0.25.12':
157
+
resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==}
158
+
engines: {node: '>=18'}
159
cpu: [arm64]
160
os: [darwin]
161
162
+
'@esbuild/darwin-x64@0.25.12':
163
+
resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==}
164
+
engines: {node: '>=18'}
165
cpu: [x64]
166
os: [darwin]
167
168
+
'@esbuild/freebsd-arm64@0.25.12':
169
+
resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==}
170
+
engines: {node: '>=18'}
171
cpu: [arm64]
172
os: [freebsd]
173
174
+
'@esbuild/freebsd-x64@0.25.12':
175
+
resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==}
176
+
engines: {node: '>=18'}
177
cpu: [x64]
178
os: [freebsd]
179
180
+
'@esbuild/linux-arm64@0.25.12':
181
+
resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==}
182
+
engines: {node: '>=18'}
183
cpu: [arm64]
184
os: [linux]
185
186
+
'@esbuild/linux-arm@0.25.12':
187
+
resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==}
188
+
engines: {node: '>=18'}
189
cpu: [arm]
190
os: [linux]
191
192
+
'@esbuild/linux-ia32@0.25.12':
193
+
resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==}
194
+
engines: {node: '>=18'}
195
cpu: [ia32]
196
os: [linux]
197
198
+
'@esbuild/linux-loong64@0.25.12':
199
+
resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==}
200
+
engines: {node: '>=18'}
201
cpu: [loong64]
202
os: [linux]
203
204
+
'@esbuild/linux-mips64el@0.25.12':
205
+
resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==}
206
+
engines: {node: '>=18'}
207
cpu: [mips64el]
208
os: [linux]
209
210
+
'@esbuild/linux-ppc64@0.25.12':
211
+
resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==}
212
+
engines: {node: '>=18'}
213
cpu: [ppc64]
214
os: [linux]
215
216
+
'@esbuild/linux-riscv64@0.25.12':
217
+
resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==}
218
+
engines: {node: '>=18'}
219
cpu: [riscv64]
220
os: [linux]
221
222
+
'@esbuild/linux-s390x@0.25.12':
223
+
resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==}
224
+
engines: {node: '>=18'}
225
cpu: [s390x]
226
os: [linux]
227
228
+
'@esbuild/linux-x64@0.25.12':
229
+
resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==}
230
+
engines: {node: '>=18'}
231
cpu: [x64]
232
os: [linux]
233
234
+
'@esbuild/netbsd-arm64@0.25.12':
235
+
resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==}
236
+
engines: {node: '>=18'}
237
+
cpu: [arm64]
238
+
os: [netbsd]
239
+
240
+
'@esbuild/netbsd-x64@0.25.12':
241
+
resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==}
242
+
engines: {node: '>=18'}
243
cpu: [x64]
244
os: [netbsd]
245
246
+
'@esbuild/openbsd-arm64@0.25.12':
247
+
resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==}
248
+
engines: {node: '>=18'}
249
+
cpu: [arm64]
250
+
os: [openbsd]
251
+
252
+
'@esbuild/openbsd-x64@0.25.12':
253
+
resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==}
254
+
engines: {node: '>=18'}
255
cpu: [x64]
256
os: [openbsd]
257
258
+
'@esbuild/openharmony-arm64@0.25.12':
259
+
resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==}
260
+
engines: {node: '>=18'}
261
+
cpu: [arm64]
262
+
os: [openharmony]
263
+
264
+
'@esbuild/sunos-x64@0.25.12':
265
+
resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==}
266
+
engines: {node: '>=18'}
267
cpu: [x64]
268
os: [sunos]
269
270
+
'@esbuild/win32-arm64@0.25.12':
271
+
resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==}
272
+
engines: {node: '>=18'}
273
cpu: [arm64]
274
os: [win32]
275
276
+
'@esbuild/win32-ia32@0.25.12':
277
+
resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==}
278
+
engines: {node: '>=18'}
279
cpu: [ia32]
280
os: [win32]
281
282
+
'@esbuild/win32-x64@0.25.12':
283
+
resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==}
284
+
engines: {node: '>=18'}
285
cpu: [x64]
286
os: [win32]
287
288
+
'@jridgewell/gen-mapping@0.3.13':
289
+
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
290
+
291
+
'@jridgewell/remapping@2.3.5':
292
+
resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
293
294
'@jridgewell/resolve-uri@3.1.2':
295
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
296
engines: {node: '>=6.0.0'}
297
298
+
'@jridgewell/sourcemap-codec@1.5.5':
299
+
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
300
301
+
'@jridgewell/trace-mapping@0.3.31':
302
+
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
303
304
+
'@rollup/rollup-android-arm-eabi@4.52.5':
305
+
resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==}
306
cpu: [arm]
307
os: [android]
308
309
+
'@rollup/rollup-android-arm64@4.52.5':
310
+
resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==}
311
cpu: [arm64]
312
os: [android]
313
314
+
'@rollup/rollup-darwin-arm64@4.52.5':
315
+
resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==}
316
cpu: [arm64]
317
os: [darwin]
318
319
+
'@rollup/rollup-darwin-x64@4.52.5':
320
+
resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==}
321
cpu: [x64]
322
os: [darwin]
323
324
+
'@rollup/rollup-freebsd-arm64@4.52.5':
325
+
resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==}
326
cpu: [arm64]
327
os: [freebsd]
328
329
+
'@rollup/rollup-freebsd-x64@4.52.5':
330
+
resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==}
331
cpu: [x64]
332
os: [freebsd]
333
334
+
'@rollup/rollup-linux-arm-gnueabihf@4.52.5':
335
+
resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==}
336
cpu: [arm]
337
os: [linux]
338
339
+
'@rollup/rollup-linux-arm-musleabihf@4.52.5':
340
+
resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==}
341
cpu: [arm]
342
os: [linux]
343
344
+
'@rollup/rollup-linux-arm64-gnu@4.52.5':
345
+
resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==}
346
cpu: [arm64]
347
os: [linux]
348
349
+
'@rollup/rollup-linux-arm64-musl@4.52.5':
350
+
resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==}
351
cpu: [arm64]
352
os: [linux]
353
354
+
'@rollup/rollup-linux-loong64-gnu@4.52.5':
355
+
resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==}
356
cpu: [loong64]
357
os: [linux]
358
359
+
'@rollup/rollup-linux-ppc64-gnu@4.52.5':
360
+
resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==}
361
cpu: [ppc64]
362
os: [linux]
363
364
+
'@rollup/rollup-linux-riscv64-gnu@4.52.5':
365
+
resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==}
366
cpu: [riscv64]
367
os: [linux]
368
369
+
'@rollup/rollup-linux-riscv64-musl@4.52.5':
370
+
resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==}
371
cpu: [riscv64]
372
os: [linux]
373
374
+
'@rollup/rollup-linux-s390x-gnu@4.52.5':
375
+
resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==}
376
cpu: [s390x]
377
os: [linux]
378
379
+
'@rollup/rollup-linux-x64-gnu@4.52.5':
380
+
resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==}
381
cpu: [x64]
382
os: [linux]
383
384
+
'@rollup/rollup-linux-x64-musl@4.52.5':
385
+
resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==}
386
cpu: [x64]
387
os: [linux]
388
389
+
'@rollup/rollup-openharmony-arm64@4.52.5':
390
+
resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==}
391
+
cpu: [arm64]
392
+
os: [openharmony]
393
+
394
+
'@rollup/rollup-win32-arm64-msvc@4.52.5':
395
+
resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==}
396
cpu: [arm64]
397
os: [win32]
398
399
+
'@rollup/rollup-win32-ia32-msvc@4.52.5':
400
+
resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==}
401
cpu: [ia32]
402
os: [win32]
403
404
+
'@rollup/rollup-win32-x64-gnu@4.52.5':
405
+
resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==}
406
cpu: [x64]
407
os: [win32]
408
409
+
'@rollup/rollup-win32-x64-msvc@4.52.5':
410
+
resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==}
411
+
cpu: [x64]
412
+
os: [win32]
413
414
+
'@tauri-apps/api@2.9.0':
415
+
resolution: {integrity: sha512-qD5tMjh7utwBk9/5PrTA/aGr3i5QaJ/Mlt7p8NilQ45WgbifUNPyKWsA63iQ8YfQq6R8ajMapU+/Q8nMcPRLNw==}
416
417
+
'@tauri-apps/cli-darwin-arm64@2.9.3':
418
+
resolution: {integrity: sha512-W8FQXZXQmQ0Fmj9UJXNrm2mLdIaLLriKVY7o/FzmizyIKTPIvHjfZALTNybbpTQRbJvKoGHLrW1DNzAWVDWJYg==}
419
engines: {node: '>= 10'}
420
cpu: [arm64]
421
os: [darwin]
422
423
+
'@tauri-apps/cli-darwin-x64@2.9.3':
424
+
resolution: {integrity: sha512-zDwu40rlshijt3TU6aRvzPUyVpapsx1sNfOlreDMTaMelQLHl6YoQzSRpLHYwrHrhimxyX2uDqnKIiuGel0Lhg==}
425
engines: {node: '>= 10'}
426
cpu: [x64]
427
os: [darwin]
428
429
+
'@tauri-apps/cli-linux-arm-gnueabihf@2.9.3':
430
+
resolution: {integrity: sha512-+Oc2OfcTRwYtW93VJqd/HOk77buORwC9IToj/qsEvM7bTMq6Kda4alpZprzwrCHYANSw+zD8PgjJdljTpe4p+g==}
431
engines: {node: '>= 10'}
432
cpu: [arm]
433
os: [linux]
434
435
+
'@tauri-apps/cli-linux-arm64-gnu@2.9.3':
436
+
resolution: {integrity: sha512-59GqU/J1n9wFyAtleoQOaU0oVIo+kwQynEw4meFDoKRXszKGor6lTsbsS3r0QKLSPbc0o/yYGJhqqCtkYjb/eg==}
437
engines: {node: '>= 10'}
438
cpu: [arm64]
439
os: [linux]
440
441
+
'@tauri-apps/cli-linux-arm64-musl@2.9.3':
442
+
resolution: {integrity: sha512-fzvG+jEn5/iYGNH6Z2IRMheYFC4pJdXa19BR9fFm6Bdn2cuajRLDKdUcEME/DCtwqclphXtFZTrT4oezY5vI/A==}
443
engines: {node: '>= 10'}
444
cpu: [arm64]
445
os: [linux]
446
447
+
'@tauri-apps/cli-linux-riscv64-gnu@2.9.3':
448
+
resolution: {integrity: sha512-qV8DZXI/fZwawk6T3Th1g6smiNC2KeQTk7XFgKvqZ6btC01z3UTsQmNGvI602zwm3Ld1TBZb4+rEWu2QmQimmw==}
449
+
engines: {node: '>= 10'}
450
+
cpu: [riscv64]
451
+
os: [linux]
452
+
453
+
'@tauri-apps/cli-linux-x64-gnu@2.9.3':
454
+
resolution: {integrity: sha512-tquyEONCNRfqEBWEe4eAHnxFN5yY5lFkCuD4w79XLIovUxVftQ684+xLp7zkhntkt4y20SMj2AgJa/+MOlx4Kg==}
455
engines: {node: '>= 10'}
456
cpu: [x64]
457
os: [linux]
458
459
+
'@tauri-apps/cli-linux-x64-musl@2.9.3':
460
+
resolution: {integrity: sha512-v2cBIB/6ji8DL+aiL5QUykU3ZO8OoJGyx50/qv2HQVzkf85KdaYSis3D/oVRemN/pcDz+vyCnnL3XnzFnDl4JQ==}
461
engines: {node: '>= 10'}
462
cpu: [x64]
463
os: [linux]
464
465
+
'@tauri-apps/cli-win32-arm64-msvc@2.9.3':
466
+
resolution: {integrity: sha512-ZGvBy7nvrHPbE0HeKp/ioaiw8bNgAHxWnb7JRZ4/G0A+oFj0SeSFxl9k5uU6FKnM7bHM23Gd1oeaDex9g5Fceg==}
467
engines: {node: '>= 10'}
468
cpu: [arm64]
469
os: [win32]
470
471
+
'@tauri-apps/cli-win32-ia32-msvc@2.9.3':
472
+
resolution: {integrity: sha512-UsgIwOnpCoY9NK9/65QiwgmWVIE80LE7SwRYVblGtmlY9RYfsYvpbItwsovA/AcHMTiO+OCvS/q9yLeqS3m6Sg==}
473
engines: {node: '>= 10'}
474
cpu: [ia32]
475
os: [win32]
476
477
+
'@tauri-apps/cli-win32-x64-msvc@2.9.3':
478
+
resolution: {integrity: sha512-fmw7NrrHE5m49idCvJAx9T9bsupjdJ0a3p3DPCNCZRGANU6R1tA1L+KTlVuUtdAldX2NqU/9UPo2SCslYKgJHQ==}
479
engines: {node: '>= 10'}
480
cpu: [x64]
481
os: [win32]
482
483
+
'@tauri-apps/cli@2.9.3':
484
+
resolution: {integrity: sha512-BQ7iLUXTQcyG1PpzLWeVSmBCedYDpnA/6Cm/kRFGtqjTf/eVUlyYO5S2ee07tLum3nWwDBWTGFZeruO8yEukfA==}
485
engines: {node: '>= 10'}
486
hasBin: true
487
488
+
'@tauri-apps/plugin-deep-link@2.4.5':
489
+
resolution: {integrity: sha512-Zf2RTj1D9IQQ45/jqW8XTKvql24HqlPjcpv0mV/O2jHQkNe11HOTZBVj6IK37qs+MWV7xZzcmazx/QVZnhAwaQ==}
490
491
+
'@tauri-apps/plugin-http@2.5.4':
492
+
resolution: {integrity: sha512-/i4U/9za3mrytTgfRn5RHneKubZE/dwRmshYwyMvNRlkWjvu1m4Ma72kcbVJMZFGXpkbl+qLyWMGrihtWB76Zg==}
493
494
+
'@tauri-apps/plugin-process@2.3.1':
495
+
resolution: {integrity: sha512-nCa4fGVaDL/B9ai03VyPOjfAHRHSBz5v6F/ObsB73r/dA3MHHhZtldaDMIc0V/pnUw9ehzr2iEG+XkSEyC0JJA==}
496
497
+
'@tauri-apps/plugin-shell@2.3.3':
498
+
resolution: {integrity: sha512-Xod+pRcFxmOWFWEnqH5yZcA7qwAMuaaDkMR1Sply+F8VfBj++CGnj2xf5UoialmjZ2Cvd8qrvSCbU+7GgNVsKQ==}
499
500
'@types/animejs@3.1.13':
501
resolution: {integrity: sha512-yWg9l1z7CAv/TKpty4/vupEh24jDGUZXv4r26StRkpUPQm04ztJaftgpto8vwdFs8SiTq6XfaPKCSI+wjzNMvQ==}
···
509
'@types/babel__template@7.4.4':
510
resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
511
512
+
'@types/babel__traverse@7.28.0':
513
+
resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==}
514
515
'@types/estree@1.0.8':
516
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
517
518
+
animejs@4.2.2:
519
+
resolution: {integrity: sha512-Ys3RuvLdAeI14fsdKCQy7ytu4057QX6Bb7m4jwmfd6iKmUmLquTwk1ut0e4NtRQgCeq/s2Lv5+oMBjz6c7ZuIg==}
520
521
+
babel-plugin-jsx-dom-expressions@0.40.3:
522
+
resolution: {integrity: sha512-5HOwwt0BYiv/zxl7j8Pf2bGL6rDXfV6nUhLs8ygBX+EFJXzBPHM/euj9j/6deMZ6wa52Wb2PBaAV5U/jKwIY1w==}
523
peerDependencies:
524
'@babel/core': ^7.20.12
525
526
+
babel-preset-solid@1.9.10:
527
+
resolution: {integrity: sha512-HCelrgua/Y+kqO8RyL04JBWS/cVdrtUv/h45GntgQY+cJl4eBcKkCDV3TdMjtKx1nXwRaR9QXslM/Npm1dxdZQ==}
528
peerDependencies:
529
'@babel/core': ^7.0.0
530
+
solid-js: ^1.9.10
531
+
peerDependenciesMeta:
532
+
solid-js:
533
+
optional: true
534
535
+
baseline-browser-mapping@2.8.25:
536
+
resolution: {integrity: sha512-2NovHVesVF5TXefsGX1yzx1xgr7+m9JQenvz6FQY3qd+YXkKkYiv+vTCc7OriP9mcDZpTC5mAOYN4ocd29+erA==}
537
+
hasBin: true
538
+
539
+
browserslist@4.27.0:
540
+
resolution: {integrity: sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==}
541
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
542
hasBin: true
543
544
+
caniuse-lite@1.0.30001754:
545
+
resolution: {integrity: sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==}
546
547
convert-source-map@2.0.0:
548
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
···
550
csstype@3.1.3:
551
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
552
553
+
debug@4.4.3:
554
+
resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
555
engines: {node: '>=6.0'}
556
peerDependencies:
557
supports-color: '*'
···
559
supports-color:
560
optional: true
561
562
+
electron-to-chromium@1.5.248:
563
+
resolution: {integrity: sha512-zsur2yunphlyAO4gIubdJEXCK6KOVvtpiuDfCIqbM9FjcnMYiyn0ICa3hWfPr0nc41zcLWobgy1iL7VvoOyA2Q==}
564
565
entities@6.0.1:
566
resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
567
engines: {node: '>=0.12'}
568
569
+
esbuild@0.25.12:
570
+
resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
571
+
engines: {node: '>=18'}
572
hasBin: true
573
574
escalade@3.2.0:
575
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
576
engines: {node: '>=6'}
577
+
578
+
fdir@6.5.0:
579
+
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
580
+
engines: {node: '>=12.0.0'}
581
+
peerDependencies:
582
+
picomatch: ^3 || ^4
583
+
peerDependenciesMeta:
584
+
picomatch:
585
+
optional: true
586
587
fsevents@2.3.3:
588
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
···
628
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
629
hasBin: true
630
631
+
node-releases@2.0.27:
632
+
resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
633
634
parse5@7.3.0:
635
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
···
637
picocolors@1.1.1:
638
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
639
640
+
picomatch@4.0.3:
641
+
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
642
+
engines: {node: '>=12'}
643
+
644
postcss@8.5.6:
645
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
646
engines: {node: ^10 || ^12 || >=14}
647
648
+
rollup@4.52.5:
649
+
resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==}
650
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
651
hasBin: true
652
···
654
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
655
hasBin: true
656
657
+
seroval-plugins@1.3.3:
658
+
resolution: {integrity: sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w==}
659
engines: {node: '>=10'}
660
peerDependencies:
661
seroval: ^1.0
···
664
resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==}
665
engines: {node: '>=10'}
666
667
+
solid-js@1.9.10:
668
+
resolution: {integrity: sha512-Coz956cos/EPDlhs6+jsdTxKuJDPT7B5SVIWgABwROyxjY7Xbr8wkzD68Et+NxnV7DLJ3nJdAC2r9InuV/4Jew==}
669
670
solid-refresh@0.6.3:
671
resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==}
···
676
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
677
engines: {node: '>=0.10.0'}
678
679
+
tinyglobby@0.2.15:
680
+
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
681
+
engines: {node: '>=12.0.0'}
682
+
683
+
typescript@5.9.3:
684
+
resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
685
engines: {node: '>=14.17'}
686
hasBin: true
687
688
+
update-browserslist-db@1.1.4:
689
+
resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==}
690
hasBin: true
691
peerDependencies:
692
browserslist: '>= 4.21.0'
693
694
+
vite-plugin-solid@2.11.10:
695
+
resolution: {integrity: sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw==}
696
peerDependencies:
697
'@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.*
698
solid-js: ^1.7.2
···
701
'@testing-library/jest-dom':
702
optional: true
703
704
+
vite@7.2.2:
705
+
resolution: {integrity: sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==}
706
+
engines: {node: ^20.19.0 || >=22.12.0}
707
hasBin: true
708
peerDependencies:
709
+
'@types/node': ^20.19.0 || >=22.12.0
710
+
jiti: '>=1.21.0'
711
+
less: ^4.0.0
712
lightningcss: ^1.21.0
713
+
sass: ^1.70.0
714
+
sass-embedded: ^1.70.0
715
+
stylus: '>=0.54.8'
716
+
sugarss: ^5.0.0
717
+
terser: ^5.16.0
718
+
tsx: ^4.8.1
719
+
yaml: ^2.4.2
720
peerDependenciesMeta:
721
'@types/node':
722
+
optional: true
723
+
jiti:
724
optional: true
725
less:
726
optional: true
···
735
sugarss:
736
optional: true
737
terser:
738
+
optional: true
739
+
tsx:
740
+
optional: true
741
+
yaml:
742
optional: true
743
744
vitefu@1.1.1:
···
754
755
snapshots:
756
757
'@babel/code-frame@7.27.1':
758
dependencies:
759
+
'@babel/helper-validator-identifier': 7.28.5
760
js-tokens: 4.0.0
761
picocolors: 1.1.1
762
763
+
'@babel/compat-data@7.28.5': {}
764
765
+
'@babel/core@7.28.5':
766
dependencies:
767
'@babel/code-frame': 7.27.1
768
+
'@babel/generator': 7.28.5
769
'@babel/helper-compilation-targets': 7.27.2
770
+
'@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5)
771
+
'@babel/helpers': 7.28.4
772
+
'@babel/parser': 7.28.5
773
'@babel/template': 7.27.2
774
+
'@babel/traverse': 7.28.5
775
+
'@babel/types': 7.28.5
776
+
'@jridgewell/remapping': 2.3.5
777
convert-source-map: 2.0.0
778
+
debug: 4.4.3
779
gensync: 1.0.0-beta.2
780
json5: 2.2.3
781
semver: 6.3.1
782
transitivePeerDependencies:
783
- supports-color
784
785
+
'@babel/generator@7.28.5':
786
dependencies:
787
+
'@babel/parser': 7.28.5
788
+
'@babel/types': 7.28.5
789
+
'@jridgewell/gen-mapping': 0.3.13
790
+
'@jridgewell/trace-mapping': 0.3.31
791
jsesc: 3.1.0
792
793
'@babel/helper-compilation-targets@7.27.2':
794
dependencies:
795
+
'@babel/compat-data': 7.28.5
796
'@babel/helper-validator-option': 7.27.1
797
+
browserslist: 4.27.0
798
lru-cache: 5.1.1
799
semver: 6.3.1
800
···
802
803
'@babel/helper-module-imports@7.18.6':
804
dependencies:
805
+
'@babel/types': 7.28.5
806
807
'@babel/helper-module-imports@7.27.1':
808
dependencies:
809
+
'@babel/traverse': 7.28.5
810
+
'@babel/types': 7.28.5
811
transitivePeerDependencies:
812
- supports-color
813
814
+
'@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)':
815
dependencies:
816
+
'@babel/core': 7.28.5
817
'@babel/helper-module-imports': 7.27.1
818
+
'@babel/helper-validator-identifier': 7.28.5
819
+
'@babel/traverse': 7.28.5
820
transitivePeerDependencies:
821
- supports-color
822
···
824
825
'@babel/helper-string-parser@7.27.1': {}
826
827
+
'@babel/helper-validator-identifier@7.28.5': {}
828
829
'@babel/helper-validator-option@7.27.1': {}
830
831
+
'@babel/helpers@7.28.4':
832
dependencies:
833
'@babel/template': 7.27.2
834
+
'@babel/types': 7.28.5
835
836
+
'@babel/parser@7.28.5':
837
dependencies:
838
+
'@babel/types': 7.28.5
839
840
+
'@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)':
841
dependencies:
842
+
'@babel/core': 7.28.5
843
'@babel/helper-plugin-utils': 7.27.1
844
845
'@babel/template@7.27.2':
846
dependencies:
847
'@babel/code-frame': 7.27.1
848
+
'@babel/parser': 7.28.5
849
+
'@babel/types': 7.28.5
850
851
+
'@babel/traverse@7.28.5':
852
dependencies:
853
'@babel/code-frame': 7.27.1
854
+
'@babel/generator': 7.28.5
855
'@babel/helper-globals': 7.28.0
856
+
'@babel/parser': 7.28.5
857
'@babel/template': 7.27.2
858
+
'@babel/types': 7.28.5
859
+
debug: 4.4.3
860
transitivePeerDependencies:
861
- supports-color
862
863
+
'@babel/types@7.28.5':
864
dependencies:
865
'@babel/helper-string-parser': 7.27.1
866
+
'@babel/helper-validator-identifier': 7.28.5
867
+
868
+
'@esbuild/aix-ppc64@0.25.12':
869
+
optional: true
870
+
871
+
'@esbuild/android-arm64@0.25.12':
872
+
optional: true
873
+
874
+
'@esbuild/android-arm@0.25.12':
875
+
optional: true
876
877
+
'@esbuild/android-x64@0.25.12':
878
optional: true
879
880
+
'@esbuild/darwin-arm64@0.25.12':
881
optional: true
882
883
+
'@esbuild/darwin-x64@0.25.12':
884
optional: true
885
886
+
'@esbuild/freebsd-arm64@0.25.12':
887
optional: true
888
889
+
'@esbuild/freebsd-x64@0.25.12':
890
optional: true
891
892
+
'@esbuild/linux-arm64@0.25.12':
893
optional: true
894
895
+
'@esbuild/linux-arm@0.25.12':
896
optional: true
897
898
+
'@esbuild/linux-ia32@0.25.12':
899
optional: true
900
901
+
'@esbuild/linux-loong64@0.25.12':
902
optional: true
903
904
+
'@esbuild/linux-mips64el@0.25.12':
905
optional: true
906
907
+
'@esbuild/linux-ppc64@0.25.12':
908
optional: true
909
910
+
'@esbuild/linux-riscv64@0.25.12':
911
optional: true
912
913
+
'@esbuild/linux-s390x@0.25.12':
914
optional: true
915
916
+
'@esbuild/linux-x64@0.25.12':
917
optional: true
918
919
+
'@esbuild/netbsd-arm64@0.25.12':
920
optional: true
921
922
+
'@esbuild/netbsd-x64@0.25.12':
923
optional: true
924
925
+
'@esbuild/openbsd-arm64@0.25.12':
926
optional: true
927
928
+
'@esbuild/openbsd-x64@0.25.12':
929
optional: true
930
931
+
'@esbuild/openharmony-arm64@0.25.12':
932
optional: true
933
934
+
'@esbuild/sunos-x64@0.25.12':
935
optional: true
936
937
+
'@esbuild/win32-arm64@0.25.12':
938
optional: true
939
940
+
'@esbuild/win32-ia32@0.25.12':
941
optional: true
942
943
+
'@esbuild/win32-x64@0.25.12':
944
optional: true
945
946
+
'@jridgewell/gen-mapping@0.3.13':
947
dependencies:
948
+
'@jridgewell/sourcemap-codec': 1.5.5
949
+
'@jridgewell/trace-mapping': 0.3.31
950
+
951
+
'@jridgewell/remapping@2.3.5':
952
+
dependencies:
953
+
'@jridgewell/gen-mapping': 0.3.13
954
+
'@jridgewell/trace-mapping': 0.3.31
955
956
'@jridgewell/resolve-uri@3.1.2': {}
957
958
+
'@jridgewell/sourcemap-codec@1.5.5': {}
959
960
+
'@jridgewell/trace-mapping@0.3.31':
961
dependencies:
962
'@jridgewell/resolve-uri': 3.1.2
963
+
'@jridgewell/sourcemap-codec': 1.5.5
964
965
+
'@rollup/rollup-android-arm-eabi@4.52.5':
966
optional: true
967
968
+
'@rollup/rollup-android-arm64@4.52.5':
969
optional: true
970
971
+
'@rollup/rollup-darwin-arm64@4.52.5':
972
optional: true
973
974
+
'@rollup/rollup-darwin-x64@4.52.5':
975
optional: true
976
977
+
'@rollup/rollup-freebsd-arm64@4.52.5':
978
optional: true
979
980
+
'@rollup/rollup-freebsd-x64@4.52.5':
981
optional: true
982
983
+
'@rollup/rollup-linux-arm-gnueabihf@4.52.5':
984
optional: true
985
986
+
'@rollup/rollup-linux-arm-musleabihf@4.52.5':
987
optional: true
988
989
+
'@rollup/rollup-linux-arm64-gnu@4.52.5':
990
optional: true
991
992
+
'@rollup/rollup-linux-arm64-musl@4.52.5':
993
optional: true
994
995
+
'@rollup/rollup-linux-loong64-gnu@4.52.5':
996
optional: true
997
998
+
'@rollup/rollup-linux-ppc64-gnu@4.52.5':
999
optional: true
1000
1001
+
'@rollup/rollup-linux-riscv64-gnu@4.52.5':
1002
optional: true
1003
1004
+
'@rollup/rollup-linux-riscv64-musl@4.52.5':
1005
optional: true
1006
1007
+
'@rollup/rollup-linux-s390x-gnu@4.52.5':
1008
optional: true
1009
1010
+
'@rollup/rollup-linux-x64-gnu@4.52.5':
1011
optional: true
1012
1013
+
'@rollup/rollup-linux-x64-musl@4.52.5':
1014
optional: true
1015
1016
+
'@rollup/rollup-openharmony-arm64@4.52.5':
1017
optional: true
1018
1019
+
'@rollup/rollup-win32-arm64-msvc@4.52.5':
1020
optional: true
1021
1022
+
'@rollup/rollup-win32-ia32-msvc@4.52.5':
1023
optional: true
1024
1025
+
'@rollup/rollup-win32-x64-gnu@4.52.5':
1026
+
optional: true
1027
1028
+
'@rollup/rollup-win32-x64-msvc@4.52.5':
1029
+
optional: true
1030
1031
+
'@tauri-apps/api@2.9.0': {}
1032
+
1033
+
'@tauri-apps/cli-darwin-arm64@2.9.3':
1034
optional: true
1035
1036
+
'@tauri-apps/cli-darwin-x64@2.9.3':
1037
optional: true
1038
1039
+
'@tauri-apps/cli-linux-arm-gnueabihf@2.9.3':
1040
optional: true
1041
1042
+
'@tauri-apps/cli-linux-arm64-gnu@2.9.3':
1043
optional: true
1044
1045
+
'@tauri-apps/cli-linux-arm64-musl@2.9.3':
1046
optional: true
1047
1048
+
'@tauri-apps/cli-linux-riscv64-gnu@2.9.3':
1049
optional: true
1050
1051
+
'@tauri-apps/cli-linux-x64-gnu@2.9.3':
1052
+
optional: true
1053
+
1054
+
'@tauri-apps/cli-linux-x64-musl@2.9.3':
1055
optional: true
1056
1057
+
'@tauri-apps/cli-win32-arm64-msvc@2.9.3':
1058
optional: true
1059
1060
+
'@tauri-apps/cli-win32-ia32-msvc@2.9.3':
1061
optional: true
1062
1063
+
'@tauri-apps/cli-win32-x64-msvc@2.9.3':
1064
optional: true
1065
1066
+
'@tauri-apps/cli@2.9.3':
1067
optionalDependencies:
1068
+
'@tauri-apps/cli-darwin-arm64': 2.9.3
1069
+
'@tauri-apps/cli-darwin-x64': 2.9.3
1070
+
'@tauri-apps/cli-linux-arm-gnueabihf': 2.9.3
1071
+
'@tauri-apps/cli-linux-arm64-gnu': 2.9.3
1072
+
'@tauri-apps/cli-linux-arm64-musl': 2.9.3
1073
+
'@tauri-apps/cli-linux-riscv64-gnu': 2.9.3
1074
+
'@tauri-apps/cli-linux-x64-gnu': 2.9.3
1075
+
'@tauri-apps/cli-linux-x64-musl': 2.9.3
1076
+
'@tauri-apps/cli-win32-arm64-msvc': 2.9.3
1077
+
'@tauri-apps/cli-win32-ia32-msvc': 2.9.3
1078
+
'@tauri-apps/cli-win32-x64-msvc': 2.9.3
1079
1080
+
'@tauri-apps/plugin-deep-link@2.4.5':
1081
dependencies:
1082
+
'@tauri-apps/api': 2.9.0
1083
1084
+
'@tauri-apps/plugin-http@2.5.4':
1085
dependencies:
1086
+
'@tauri-apps/api': 2.9.0
1087
1088
+
'@tauri-apps/plugin-process@2.3.1':
1089
dependencies:
1090
+
'@tauri-apps/api': 2.9.0
1091
1092
+
'@tauri-apps/plugin-shell@2.3.3':
1093
dependencies:
1094
+
'@tauri-apps/api': 2.9.0
1095
1096
'@types/animejs@3.1.13': {}
1097
1098
'@types/babel__core@7.20.5':
1099
dependencies:
1100
+
'@babel/parser': 7.28.5
1101
+
'@babel/types': 7.28.5
1102
'@types/babel__generator': 7.27.0
1103
'@types/babel__template': 7.4.4
1104
+
'@types/babel__traverse': 7.28.0
1105
1106
'@types/babel__generator@7.27.0':
1107
dependencies:
1108
+
'@babel/types': 7.28.5
1109
1110
'@types/babel__template@7.4.4':
1111
dependencies:
1112
+
'@babel/parser': 7.28.5
1113
+
'@babel/types': 7.28.5
1114
1115
+
'@types/babel__traverse@7.28.0':
1116
dependencies:
1117
+
'@babel/types': 7.28.5
1118
1119
'@types/estree@1.0.8': {}
1120
1121
+
animejs@4.2.2: {}
1122
1123
+
babel-plugin-jsx-dom-expressions@0.40.3(@babel/core@7.28.5):
1124
dependencies:
1125
+
'@babel/core': 7.28.5
1126
'@babel/helper-module-imports': 7.18.6
1127
+
'@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5)
1128
+
'@babel/types': 7.28.5
1129
html-entities: 2.3.3
1130
parse5: 7.3.0
1131
1132
+
babel-preset-solid@1.9.10(@babel/core@7.28.5)(solid-js@1.9.10):
1133
dependencies:
1134
+
'@babel/core': 7.28.5
1135
+
babel-plugin-jsx-dom-expressions: 0.40.3(@babel/core@7.28.5)
1136
+
optionalDependencies:
1137
+
solid-js: 1.9.10
1138
1139
+
baseline-browser-mapping@2.8.25: {}
1140
+
1141
+
browserslist@4.27.0:
1142
dependencies:
1143
+
baseline-browser-mapping: 2.8.25
1144
+
caniuse-lite: 1.0.30001754
1145
+
electron-to-chromium: 1.5.248
1146
+
node-releases: 2.0.27
1147
+
update-browserslist-db: 1.1.4(browserslist@4.27.0)
1148
1149
+
caniuse-lite@1.0.30001754: {}
1150
1151
convert-source-map@2.0.0: {}
1152
1153
csstype@3.1.3: {}
1154
1155
+
debug@4.4.3:
1156
dependencies:
1157
ms: 2.1.3
1158
1159
+
electron-to-chromium@1.5.248: {}
1160
1161
entities@6.0.1: {}
1162
1163
+
esbuild@0.25.12:
1164
optionalDependencies:
1165
+
'@esbuild/aix-ppc64': 0.25.12
1166
+
'@esbuild/android-arm': 0.25.12
1167
+
'@esbuild/android-arm64': 0.25.12
1168
+
'@esbuild/android-x64': 0.25.12
1169
+
'@esbuild/darwin-arm64': 0.25.12
1170
+
'@esbuild/darwin-x64': 0.25.12
1171
+
'@esbuild/freebsd-arm64': 0.25.12
1172
+
'@esbuild/freebsd-x64': 0.25.12
1173
+
'@esbuild/linux-arm': 0.25.12
1174
+
'@esbuild/linux-arm64': 0.25.12
1175
+
'@esbuild/linux-ia32': 0.25.12
1176
+
'@esbuild/linux-loong64': 0.25.12
1177
+
'@esbuild/linux-mips64el': 0.25.12
1178
+
'@esbuild/linux-ppc64': 0.25.12
1179
+
'@esbuild/linux-riscv64': 0.25.12
1180
+
'@esbuild/linux-s390x': 0.25.12
1181
+
'@esbuild/linux-x64': 0.25.12
1182
+
'@esbuild/netbsd-arm64': 0.25.12
1183
+
'@esbuild/netbsd-x64': 0.25.12
1184
+
'@esbuild/openbsd-arm64': 0.25.12
1185
+
'@esbuild/openbsd-x64': 0.25.12
1186
+
'@esbuild/openharmony-arm64': 0.25.12
1187
+
'@esbuild/sunos-x64': 0.25.12
1188
+
'@esbuild/win32-arm64': 0.25.12
1189
+
'@esbuild/win32-ia32': 0.25.12
1190
+
'@esbuild/win32-x64': 0.25.12
1191
1192
escalade@3.2.0: {}
1193
1194
+
fdir@6.5.0(picomatch@4.0.3):
1195
+
optionalDependencies:
1196
+
picomatch: 4.0.3
1197
+
1198
fsevents@2.3.3:
1199
optional: true
1200
···
1222
1223
nanoid@3.3.11: {}
1224
1225
+
node-releases@2.0.27: {}
1226
1227
parse5@7.3.0:
1228
dependencies:
···
1230
1231
picocolors@1.1.1: {}
1232
1233
+
picomatch@4.0.3: {}
1234
+
1235
postcss@8.5.6:
1236
dependencies:
1237
nanoid: 3.3.11
1238
picocolors: 1.1.1
1239
source-map-js: 1.2.1
1240
1241
+
rollup@4.52.5:
1242
dependencies:
1243
'@types/estree': 1.0.8
1244
optionalDependencies:
1245
+
'@rollup/rollup-android-arm-eabi': 4.52.5
1246
+
'@rollup/rollup-android-arm64': 4.52.5
1247
+
'@rollup/rollup-darwin-arm64': 4.52.5
1248
+
'@rollup/rollup-darwin-x64': 4.52.5
1249
+
'@rollup/rollup-freebsd-arm64': 4.52.5
1250
+
'@rollup/rollup-freebsd-x64': 4.52.5
1251
+
'@rollup/rollup-linux-arm-gnueabihf': 4.52.5
1252
+
'@rollup/rollup-linux-arm-musleabihf': 4.52.5
1253
+
'@rollup/rollup-linux-arm64-gnu': 4.52.5
1254
+
'@rollup/rollup-linux-arm64-musl': 4.52.5
1255
+
'@rollup/rollup-linux-loong64-gnu': 4.52.5
1256
+
'@rollup/rollup-linux-ppc64-gnu': 4.52.5
1257
+
'@rollup/rollup-linux-riscv64-gnu': 4.52.5
1258
+
'@rollup/rollup-linux-riscv64-musl': 4.52.5
1259
+
'@rollup/rollup-linux-s390x-gnu': 4.52.5
1260
+
'@rollup/rollup-linux-x64-gnu': 4.52.5
1261
+
'@rollup/rollup-linux-x64-musl': 4.52.5
1262
+
'@rollup/rollup-openharmony-arm64': 4.52.5
1263
+
'@rollup/rollup-win32-arm64-msvc': 4.52.5
1264
+
'@rollup/rollup-win32-ia32-msvc': 4.52.5
1265
+
'@rollup/rollup-win32-x64-gnu': 4.52.5
1266
+
'@rollup/rollup-win32-x64-msvc': 4.52.5
1267
fsevents: 2.3.3
1268
1269
semver@6.3.1: {}
1270
1271
+
seroval-plugins@1.3.3(seroval@1.3.2):
1272
dependencies:
1273
seroval: 1.3.2
1274
1275
seroval@1.3.2: {}
1276
1277
+
solid-js@1.9.10:
1278
dependencies:
1279
csstype: 3.1.3
1280
seroval: 1.3.2
1281
+
seroval-plugins: 1.3.3(seroval@1.3.2)
1282
1283
+
solid-refresh@0.6.3(solid-js@1.9.10):
1284
dependencies:
1285
+
'@babel/generator': 7.28.5
1286
'@babel/helper-module-imports': 7.27.1
1287
+
'@babel/types': 7.28.5
1288
+
solid-js: 1.9.10
1289
transitivePeerDependencies:
1290
- supports-color
1291
1292
source-map-js@1.2.1: {}
1293
1294
+
tinyglobby@0.2.15:
1295
+
dependencies:
1296
+
fdir: 6.5.0(picomatch@4.0.3)
1297
+
picomatch: 4.0.3
1298
1299
+
typescript@5.9.3: {}
1300
+
1301
+
update-browserslist-db@1.1.4(browserslist@4.27.0):
1302
dependencies:
1303
+
browserslist: 4.27.0
1304
escalade: 3.2.0
1305
picocolors: 1.1.1
1306
1307
+
vite-plugin-solid@2.11.10(solid-js@1.9.10)(vite@7.2.2):
1308
dependencies:
1309
+
'@babel/core': 7.28.5
1310
'@types/babel__core': 7.20.5
1311
+
babel-preset-solid: 1.9.10(@babel/core@7.28.5)(solid-js@1.9.10)
1312
merge-anything: 5.1.7
1313
+
solid-js: 1.9.10
1314
+
solid-refresh: 0.6.3(solid-js@1.9.10)
1315
+
vite: 7.2.2
1316
+
vitefu: 1.1.1(vite@7.2.2)
1317
transitivePeerDependencies:
1318
- supports-color
1319
1320
+
vite@7.2.2:
1321
dependencies:
1322
+
esbuild: 0.25.12
1323
+
fdir: 6.5.0(picomatch@4.0.3)
1324
+
picomatch: 4.0.3
1325
postcss: 8.5.6
1326
+
rollup: 4.52.5
1327
+
tinyglobby: 0.2.15
1328
optionalDependencies:
1329
fsevents: 2.3.3
1330
1331
+
vitefu@1.1.1(vite@7.2.2):
1332
optionalDependencies:
1333
+
vite: 7.2.2
1334
1335
yallist@3.1.1: {}
+1
-1
public/icon/angle-down-solid.svg
+1
-1
public/icon/angle-down-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z"/></svg>
+1
-1
public/icon/angle-up-solid.svg
+1
-1
public/icon/angle-up-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z"/></svg>
+1
-1
public/icon/arrow-left-solid.svg
+1
-1
public/icon/arrow-left-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"/></svg>
+1
-1
public/icon/arrow-right-solid.svg
+1
-1
public/icon/arrow-right-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"/></svg>
+1
-1
public/icon/arrows-rotate-solid.svg
+1
-1
public/icon/arrows-rotate-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160H352c-17.7 0-32 14.3-32 32s14.3 32 32 32H463.5c0 0 0 0 0 0h.4c17.7 0 32-14.3 32-32V80c0-17.7-14.3-32-32-32s-32 14.3-32 32v35.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1V432c0 17.7 14.3 32 32 32s32-14.3 32-32V396.9l17.6 17.5 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352H160c17.7 0 32-14.3 32-32s-14.3-32-32-32H48.4c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160H352c-17.7 0-32 14.3-32 32s14.3 32 32 32H463.5c0 0 0 0 0 0h.4c17.7 0 32-14.3 32-32V80c0-17.7-14.3-32-32-32s-32 14.3-32 32v35.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1V432c0 17.7 14.3 32 32 32s32-14.3 32-32V396.9l17.6 17.5 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352H160c17.7 0 32-14.3 32-32s-14.3-32-32-32H48.4c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z"/></svg>
+1
-1
public/icon/caret-down-solid.svg
+1
-1
public/icon/caret-down-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z"/></svg>
+1
-1
public/icon/check-solid.svg
+1
-1
public/icon/check-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"/></svg>
+1
-1
public/icon/clock-regular.svg
+1
-1
public/icon/clock-regular.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM232 120l0 136c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2 280 120c0-13.3-10.7-24-24-24s-24 10.7-24 24z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM232 120l0 136c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2 280 120c0-13.3-10.7-24-24-24s-24 10.7-24 24z"/></svg>
+1
-1
public/icon/copy-solid.svg
+1
-1
public/icon/copy-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M208 0H332.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V336c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM48 128h80v64H64V448H256V416h64v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M208 0H332.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V336c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM48 128h80v64H64V448H256V416h64v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48z"/></svg>
+1
public/icon/download-solid-full.svg
+1
public/icon/download-solid-full.svg
···
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path fill="#fff" d="M352 96C352 78.3 337.7 64 320 64C302.3 64 288 78.3 288 96L288 306.7L246.6 265.3C234.1 252.8 213.8 252.8 201.3 265.3C188.8 277.8 188.8 298.1 201.3 310.6L297.3 406.6C309.8 419.1 330.1 419.1 342.6 406.6L438.6 310.6C451.1 298.1 451.1 277.8 438.6 265.3C426.1 252.8 405.8 252.8 393.3 265.3L352 306.7L352 96zM160 384C124.7 384 96 412.7 96 448L96 480C96 515.3 124.7 544 160 544L480 544C515.3 544 544 515.3 544 480L544 448C544 412.7 515.3 384 480 384L433.1 384L376.5 440.6C345.3 471.8 294.6 471.8 263.4 440.6L206.9 384L160 384zM464 440C477.3 440 488 450.7 488 464C488 477.3 477.3 488 464 488C450.7 488 440 477.3 440 464C440 450.7 450.7 440 464 440z"/></svg>
+1
public/icon/gear-solid-full.svg
+1
public/icon/gear-solid-full.svg
···
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path fill="#fff" d="M259.1 73.5C262.1 58.7 275.2 48 290.4 48L350.2 48C365.4 48 378.5 58.7 381.5 73.5L396 143.5C410.1 149.5 423.3 157.2 435.3 166.3L503.1 143.8C517.5 139 533.3 145 540.9 158.2L570.8 210C578.4 223.2 575.7 239.8 564.3 249.9L511 297.3C511.9 304.7 512.3 312.3 512.3 320C512.3 327.7 511.8 335.3 511 342.7L564.4 390.2C575.8 400.3 578.4 417 570.9 430.1L541 481.9C533.4 495 517.6 501.1 503.2 496.3L435.4 473.8C423.3 482.9 410.1 490.5 396.1 496.6L381.7 566.5C378.6 581.4 365.5 592 350.4 592L290.6 592C275.4 592 262.3 581.3 259.3 566.5L244.9 496.6C230.8 490.6 217.7 482.9 205.6 473.8L137.5 496.3C123.1 501.1 107.3 495.1 99.7 481.9L69.8 430.1C62.2 416.9 64.9 400.3 76.3 390.2L129.7 342.7C128.8 335.3 128.4 327.7 128.4 320C128.4 312.3 128.9 304.7 129.7 297.3L76.3 249.8C64.9 239.7 62.3 223 69.8 209.9L99.7 158.1C107.3 144.9 123.1 138.9 137.5 143.7L205.3 166.2C217.4 157.1 230.6 149.5 244.6 143.4L259.1 73.5zM320.3 400C364.5 399.8 400.2 363.9 400 319.7C399.8 275.5 363.9 239.8 319.7 240C275.5 240.2 239.8 276.1 240 320.3C240.2 364.5 276.1 400.2 320.3 400z"/></svg>
+1
public/icon/layer-group-solid-full.svg
+1
public/icon/layer-group-solid-full.svg
···
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path fill="#fff" d="M296.5 69.2C311.4 62.3 328.6 62.3 343.5 69.2L562.1 170.2C570.6 174.1 576 182.6 576 192C576 201.4 570.6 209.9 562.1 213.8L343.5 314.8C328.6 321.7 311.4 321.7 296.5 314.8L77.9 213.8C69.4 209.8 64 201.3 64 192C64 182.7 69.4 174.1 77.9 170.2L296.5 69.2zM112.1 282.4L276.4 358.3C304.1 371.1 336 371.1 363.7 358.3L528 282.4L562.1 298.2C570.6 302.1 576 310.6 576 320C576 329.4 570.6 337.9 562.1 341.8L343.5 442.8C328.6 449.7 311.4 449.7 296.5 442.8L77.9 341.8C69.4 337.8 64 329.3 64 320C64 310.7 69.4 302.1 77.9 298.2L112 282.4zM77.9 426.2L112 410.4L276.3 486.3C304 499.1 335.9 499.1 363.6 486.3L527.9 410.4L562 426.2C570.5 430.1 575.9 438.6 575.9 448C575.9 457.4 570.5 465.9 562 469.8L343.4 570.8C328.5 577.7 311.3 577.7 296.4 570.8L77.9 469.8C69.4 465.8 64 457.3 64 448C64 438.7 69.4 430.1 77.9 426.2z"/></svg>
+1
-1
public/icon/minus-solid.svg
+1
-1
public/icon/minus-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z"/></svg>
+1
-1
public/icon/sliders-solid.svg
+1
-1
public/icon/sliders-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M0 416c0 17.7 14.3 32 32 32l54.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-246.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 384c-17.7 0-32 14.3-32 32zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32-80c-32.8 0-61 19.7-73.3 48L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l246.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48l54.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-54.7 0c-12.3-28.3-40.5-48-73.3-48zM192 128a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm73.3-64C253 35.7 224.8 16 192 16s-61 19.7-73.3 48L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l86.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L265.3 64z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M0 416c0 17.7 14.3 32 32 32l54.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-246.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 384c-17.7 0-32 14.3-32 32zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32-80c-32.8 0-61 19.7-73.3 48L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l246.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48l54.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-54.7 0c-12.3-28.3-40.5-48-73.3-48zM192 128a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm73.3-64C253 35.7 224.8 16 192 16s-61 19.7-73.3 48L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l86.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L265.3 64z"/></svg>
+1
-1
public/icon/square-regular.svg
+1
-1
public/icon/square-regular.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M384 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H384zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M384 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H384zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z"/></svg>
+1
-1
public/icon/trash-solid.svg
+1
-1
public/icon/trash-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>
+1
-1
public/icon/user-solid.svg
+1
-1
public/icon/user-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304l-91.4 0z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path fill="#fff" d="M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304l-91.4 0z"/></svg>
+1
-1
public/icon/x-solid.svg
+1
-1
public/icon/x-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z"/></svg>
+26
-9
src/Components/App.tsx
+26
-9
src/Components/App.tsx
···
1
-
import { onMount } from "solid-js";
2
-
import anime from "animejs";
3
-
import { invoke } from '@tauri-apps/api/core';
4
5
-
import NavBar from "./NavBar";
6
import PhotoList from "./PhotoList";
7
import PhotoViewer from "./PhotoViewer";
8
import SettingsMenu from "./SettingsMenu";
9
10
-
function App() {
11
-
invoke('close_splashscreen')
12
13
onMount(() => {
14
-
anime.set('.settings',
15
{
16
display: 'none',
17
opacity: 0,
18
translateX: '500px'
19
})
20
})
21
22
return (
23
<div class="container">
24
-
<NavBar />
25
-
26
<PhotoList />
27
<PhotoViewer />
28
29
<SettingsMenu />
30
31
<div class="copy-notif">Image Copied!</div>
32
</div>
33
);
34
}
···
1
+
import { createSignal, onMount } from "solid-js";
2
3
import PhotoList from "./PhotoList";
4
import PhotoViewer from "./PhotoViewer";
5
import SettingsMenu from "./SettingsMenu";
6
+
import { animate, utils } from "animejs";
7
+
import { listen } from "@tauri-apps/api/event";
8
9
+
let App = () => {
10
+
let [ errorText, setErrorText ] = createSignal('');
11
12
onMount(() => {
13
+
utils.set('.settings',
14
{
15
display: 'none',
16
opacity: 0,
17
translateX: '500px'
18
})
19
+
20
+
listen<string>('vrcpm-error', ( ev ) => {
21
+
setErrorText(ev.payload);
22
+
23
+
utils.set('.error-notif', { translateX: '-50%', translateY: '-100px' });
24
+
animate('.error-notif', {
25
+
ease: 'outElastic',
26
+
opacity: 1,
27
+
translateY: '0px'
28
+
});
29
+
30
+
setTimeout(() => {
31
+
animate('.error-notif', {
32
+
ease: 'outElastic',
33
+
opacity: 0,
34
+
translateY: '-100px'
35
+
});
36
+
}, 2000);
37
+
});
38
})
39
40
return (
41
<div class="container">
42
<PhotoList />
43
<PhotoViewer />
44
45
<SettingsMenu />
46
47
<div class="copy-notif">Image Copied!</div>
48
+
<div class="error-notif">{ errorText() }</div>
49
</div>
50
);
51
}
-133
src/Components/Managers/AccountManager.tsx
-133
src/Components/Managers/AccountManager.tsx
···
1
-
import { invoke } from "@tauri-apps/api/core";
2
-
3
-
import { ProfileData } from "../Structs/ProfileData";
4
-
import { StorageData } from "../Structs/StorageData";
5
-
import { Accessor, createSignal, Setter } from "solid-js";
6
-
7
-
import { listen } from "@tauri-apps/api/event";
8
-
import { fetch } from "@tauri-apps/plugin-http";
9
-
10
-
export class AccountManager{
11
-
public Profile: Accessor<ProfileData | null>;
12
-
public Storage: Accessor<StorageData | null>;
13
-
14
-
public hasAccount: Accessor<boolean>;
15
-
public isLoading: Accessor<boolean>;
16
-
17
-
private _setProfile: Setter<ProfileData | null>;
18
-
private _setStorage: Setter<StorageData | null>;
19
-
20
-
private _setHasAccount: Setter<boolean>;
21
-
private _setIsLoading: Setter<boolean>;
22
-
23
-
private _loginEventCallbacks: Array<() => void> = [];
24
-
25
-
private _emitLoginCallbacks(){
26
-
this._loginEventCallbacks.forEach(e => e());
27
-
}
28
-
29
-
constructor(){
30
-
let [ hasAccount, setHasAccount ] = createSignal(false);
31
-
let [ isLoading, setIsLoading ] = createSignal(true);
32
-
33
-
let [ profile, setProfile ] = createSignal<ProfileData | null>(null);
34
-
let [ storage, setStorage ] = createSignal<StorageData | null>(null);
35
-
36
-
this.Profile = profile;
37
-
this.Storage = storage;
38
-
39
-
this.hasAccount = hasAccount;
40
-
this.isLoading = isLoading;
41
-
42
-
this._setProfile = setProfile;
43
-
this._setStorage = setStorage;
44
-
45
-
this._setHasAccount = setHasAccount;
46
-
this._setIsLoading = setIsLoading;
47
-
48
-
invoke('get_config_value_string', { key: 'token' })
49
-
.then(( token: any ) => {
50
-
this.verifyToken(token);
51
-
})
52
-
53
-
listen('auth-callback', ( event: any ) => {
54
-
window.LoadingManager.SetLoading("");
55
-
56
-
let token = event.payload;
57
-
this.verifyToken(token);
58
-
})
59
-
60
-
listen('auth-denied', () => {
61
-
window.LoadingManager.SetLoading("");
62
-
console.warn('Authetication Denied');
63
-
})
64
-
}
65
-
66
-
private async verifyToken( token: string ){
67
-
if(!token){
68
-
this._setHasAccount(false);
69
-
this._setIsLoading(false);
70
-
71
-
return this._emitLoginCallbacks();
72
-
}
73
-
74
-
let dat = await fetch('https://photos.phazed.xyz/api/v1/account?token='+token);
75
-
if(dat.status !== 200){
76
-
this._setHasAccount(false);
77
-
this._setIsLoading(false);
78
-
79
-
return this._emitLoginCallbacks();
80
-
}
81
-
82
-
let json = await dat.json();
83
-
84
-
let profile = new ProfileData();
85
-
let storage = new StorageData();
86
-
87
-
profile.id = json.user._id;
88
-
profile.username = json.user.username;
89
-
profile.avatar = json.user.avatar;
90
-
profile.serverVersion = json.user.serverVersion;
91
-
92
-
storage.used = json.user.used;
93
-
storage.total = json.user.storage;
94
-
storage.isSyncing = json.user.settings.enableSync;
95
-
96
-
this._setProfile(profile);
97
-
this._setStorage(storage);
98
-
99
-
this._setHasAccount(true);
100
-
this._setIsLoading(false);
101
-
102
-
this._emitLoginCallbacks();
103
-
}
104
-
105
-
public login(){
106
-
window.LoadingManager.SetLoading("Waiting for Authentication");
107
-
invoke('start_user_auth');
108
-
}
109
-
110
-
public async logout(){
111
-
let dat = await fetch('https://photos.phazed.xyz/api/v1/deauth?token='+(await invoke('get_config_value_string', { key: 'token' }))!)
112
-
if(dat.status !== 200)
113
-
throw new Error(dat.statusText);
114
-
115
-
let json = await dat.json();
116
-
if(!json.ok)
117
-
throw new Error(json.error);
118
-
119
-
invoke('set_config_value_string', { key: 'token', value: '' });
120
-
window.location.reload();
121
-
122
-
return json;
123
-
}
124
-
125
-
public async Refresh(){
126
-
let token: string = await invoke('get_config_value_string', { key: 'token' });
127
-
await this.verifyToken(token);
128
-
}
129
-
130
-
public onLoginFinish( cb: () => void ){
131
-
this._loginEventCallbacks.push(cb);
132
-
}
133
-
}
···
+19
-3
src/Components/Managers/PhotoListRenderingManager.tsx
+19
-3
src/Components/Managers/PhotoListRenderingManager.tsx
···
5
6
const MONTHS = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
7
8
export class PhotoListRenderingManager{
9
private _layout: PhotoListRow[] = [];
10
private _canvas!: HTMLCanvasElement;
···
22
23
let lastDateString = null;
24
let row = new PhotoListRow();
25
-
row.Height = 100;
26
27
for (let i = 0; i < window.PhotoManager.FilteredPhotos.length; i++) {
28
let photo = window.PhotoManager.FilteredPhotos[i];
···
60
61
public Render( ctx: CanvasRenderingContext2D, canvas: HTMLCanvasElement, scroll: number ){
62
let currentY = 0;
63
-
64
// Loop through each row
65
for (let i = 0; i < this._layout.length; i++) {
66
let row = this._layout[i];
···
124
// ctx.strokeStyle = '#f00';
125
// ctx.strokeRect((rowXPos - row.Width / 2) + canvas.width / 2, currentY - scroll, photo.scaledWidth!, row.Height);
126
127
-
if(!photo.loaded)
128
// If the photo is not loaded, start a new task and load it in that task
129
setTimeout(() => photo.loadImage(), 1);
130
else{
···
136
// Photo is already loaded so we should draw it on the application
137
ctx.globalAlpha = photo.frames / 100;
138
ctx.drawImage(photo.image!, (rowXPos - row.Width / 2) + canvas.width / 2, currentY - scroll, photo.scaledWidth!, photo.scaledHeight!);
139
140
if(photo.frames < 100)
141
photo.frames += 10;
···
5
6
const MONTHS = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
7
8
+
let multilayerIcon = new Image();
9
+
multilayerIcon.src = '/icon/layer-group-solid-full.svg';
10
+
11
export class PhotoListRenderingManager{
12
private _layout: PhotoListRow[] = [];
13
private _canvas!: HTMLCanvasElement;
···
25
26
let lastDateString = null;
27
let row = new PhotoListRow();
28
+
row.Height = 0;
29
30
for (let i = 0; i < window.PhotoManager.FilteredPhotos.length; i++) {
31
let photo = window.PhotoManager.FilteredPhotos[i];
···
63
64
public Render( ctx: CanvasRenderingContext2D, canvas: HTMLCanvasElement, scroll: number ){
65
let currentY = 0;
66
+
67
// Loop through each row
68
for (let i = 0; i < this._layout.length; i++) {
69
let row = this._layout[i];
···
127
// ctx.strokeStyle = '#f00';
128
// ctx.strokeRect((rowXPos - row.Width / 2) + canvas.width / 2, currentY - scroll, photo.scaledWidth!, row.Height);
129
130
+
if(photo.error){
131
+
ctx.fillStyle = '#fff';
132
+
ctx.textAlign = 'center';
133
+
ctx.textBaseline = 'middle';
134
+
135
+
photo.x = (rowXPos - row.Width / 2) + canvas.width / 2;
136
+
photo.y = currentY - scroll;
137
+
138
+
ctx.font = '18px Rubik'
139
+
ctx.fillText('Error loading image.', photo.x + photo.scaledWidth! / 2, photo.y + photo.scaledHeight! / 2);
140
+
} else if(!photo.loaded)
141
// If the photo is not loaded, start a new task and load it in that task
142
setTimeout(() => photo.loadImage(), 1);
143
else{
···
149
// Photo is already loaded so we should draw it on the application
150
ctx.globalAlpha = photo.frames / 100;
151
ctx.drawImage(photo.image!, (rowXPos - row.Width / 2) + canvas.width / 2, currentY - scroll, photo.scaledWidth!, photo.scaledHeight!);
152
+
153
+
if(photo.isMultiLayer)
154
+
ctx.drawImage(multilayerIcon, ((rowXPos - row.Width / 2) + canvas.width / 2) + 5, (currentY - scroll) + 5, 20, 20);
155
156
if(photo.frames < 100)
157
photo.frames += 10;
+86
-24
src/Components/Managers/PhotoManager.tsx
+86
-24
src/Components/Managers/PhotoManager.tsx
···
35
36
let setHasBeenIndexed;
37
[ this._hasBeenIndexed, setHasBeenIndexed ] = createSignal(false);
38
-
console.log(this._hasBeenIndexed())
39
40
listen('photos_loaded', ( event: any ) => {
41
let photoPaths = event.payload.photos.reverse();
···
44
setPhotoCount(photoPaths.length);
45
setPhotoSize(event.payload.size);
46
47
-
let doesHaveLegacy = false;
48
-
49
if(photoPaths.length <= Vars.MAX_PHOTOS_BULK_LOAD)
50
setHasBeenIndexed(true);
51
52
photoPaths.forEach(( path: string, i: number ) => {
53
let photo
54
55
-
if(path.slice(0, 9) === "legacy://"){
56
photo = new Photo(path.slice(9), true, i);
57
-
doesHaveLegacy = true;
58
-
} else
59
photo = new Photo(path, false, i);
60
61
-
this.Photos.push(photo);
62
63
if(photoPaths.length <= Vars.MAX_PHOTOS_BULK_LOAD)
64
photo.loadMeta();
65
})
66
67
this.Photos = MergeSort(this.Photos);
68
69
console.log(this.Photos.length + ' Photos found.');
70
if(this.Photos.length === 0 || photoPaths.length > Vars.MAX_PHOTOS_BULK_LOAD){
71
console.log('No photos found or over bulk load limit, Skipping loading stage.');
72
···
75
76
this._finishedLoadingCallbacks.forEach(cb => cb());
77
}
78
-
79
-
console.log(this._hasBeenIndexed())
80
});
81
82
listen('photo_meta_loaded', ( event: any ) => {
83
let data: PhotoMetadata = event.payload;
84
-
85
let photo = this.Photos.find(x => x.path === data.path);
86
if(!photo)return console.error('Cannot find photo.', data);
87
88
this._lastLoaded = photo.index;
89
90
if(this._onLoadedMeta[photo.index]){
···
102
103
photo.metadata = data.metadata.split('\u0000').filter(x => x !== '')[1];
104
this._amountLoaded++;
105
-
106
photo.metaLoaded = true;
107
photo.onMetaLoaded();
108
109
if(this._amountLoaded === this.Photos.length - 1 && !this.HasFirstLoaded){
110
this.FilteredPhotos = this.Photos;
···
116
117
listen('photo_create', async ( event: any ) => {
118
let photo = new Photo(event.payload, false, 0);
119
-
120
-
this.Photos.forEach(p => p.index++); // Probably a really dumb way of doing this
121
-
this.Photos.splice(0, 0, photo);
122
123
photo.onMetaLoaded = () => this.ReloadFilters();
124
photo.loadMeta();
125
-
126
-
if(!window.SyncManager.IsSyncing() && window.AccountManager.Storage()?.isSyncing){
127
-
window.SyncManager.TriggerSync();
128
-
}
129
})
130
-
131
listen('photo_remove', ( event: any ) => {
132
this.Photos = this.Photos.filter(x => x.path !== event.payload);
133
-
this.FilteredPhotos = this.FilteredPhotos.filter(x => x.path !== event.payload);
134
-
135
if(event.payload === window.PhotoViewerManager.CurrentPhoto()?.path)
136
window.PhotoViewerManager.Close()
137
···
174
public ReloadFilters(){
175
this.FilteredPhotos = [];
176
177
switch(this._filterType){
178
case FilterType.USER:
179
this.Photos.map(p => {
180
if(p.metadata){
181
try{
182
let meta = JSON.parse(p.metadata);
183
-
let photo = meta.players.find(( y: any ) => y.displayName.toLowerCase().includes(this._filter) || y.id === this._filter);
184
185
if(photo)this.FilteredPhotos.push(p);
186
} catch(e){}
···
192
if(p.metadata){
193
try{
194
let meta = JSON.parse(p.metadata);
195
-
let photo = meta.world.name.toLowerCase().includes(this._filter) || meta.world.id === this._filter;
196
-
197
if(photo)this.FilteredPhotos.push(p);
198
} catch(e){}
199
}
···
35
36
let setHasBeenIndexed;
37
[ this._hasBeenIndexed, setHasBeenIndexed ] = createSignal(false);
38
39
listen('photos_loaded', ( event: any ) => {
40
let photoPaths = event.payload.photos.reverse();
···
43
setPhotoCount(photoPaths.length);
44
setPhotoSize(event.payload.size);
45
46
if(photoPaths.length <= Vars.MAX_PHOTOS_BULK_LOAD)
47
setHasBeenIndexed(true);
48
49
+
let photoLayers: Photo[] = [];
50
+
51
photoPaths.forEach(( path: string, i: number ) => {
52
let photo
53
54
+
if(path.slice(0, 9) === "legacy://")
55
photo = new Photo(path.slice(9), true, i);
56
+
else
57
photo = new Photo(path, false, i);
58
59
+
if(!photo.legacy && photo.splitPath[4]){
60
+
photoLayers.push(photo);
61
+
} else
62
+
this.Photos.push(photo);
63
64
if(photoPaths.length <= Vars.MAX_PHOTOS_BULK_LOAD)
65
photo.loadMeta();
66
})
67
68
+
photoLayers.forEach(photo => {
69
+
let type = photo.splitPath[4];
70
+
photo.splitPath.pop();
71
+
72
+
let mainPhotoPath = photo.splitPath.join('_') + '.png';
73
+
let mainPhoto = this.Photos.find(x => x.path === mainPhotoPath);
74
+
75
+
if(!mainPhoto)
76
+
this.Photos.push(photo);
77
+
else{
78
+
mainPhoto.isMultiLayer = true;
79
+
80
+
switch(type){
81
+
case 'Player.png':
82
+
mainPhoto.playerLayer = photo;
83
+
break;
84
+
case 'Environment.png':
85
+
mainPhoto.environmentLayer = photo;
86
+
break;
87
+
}
88
+
}
89
+
});
90
+
91
this.Photos = MergeSort(this.Photos);
92
+
console.log(this.Photos[0]);
93
94
console.log(this.Photos.length + ' Photos found.');
95
+
96
if(this.Photos.length === 0 || photoPaths.length > Vars.MAX_PHOTOS_BULK_LOAD){
97
console.log('No photos found or over bulk load limit, Skipping loading stage.');
98
···
101
102
this._finishedLoadingCallbacks.forEach(cb => cb());
103
}
104
});
105
106
listen('photo_meta_loaded', ( event: any ) => {
107
let data: PhotoMetadata = event.payload;
108
+
109
let photo = this.Photos.find(x => x.path === data.path);
110
if(!photo)return console.error('Cannot find photo.', data);
111
+
// NOTE: this is triggered by multilayer photo layers loading their metadata
112
+
// we don't need to store metadata of those photos as they inherit this
113
+
// data from the main photo.
114
115
+
photo.error = data.error;
116
this._lastLoaded = photo.index;
117
118
if(this._onLoadedMeta[photo.index]){
···
130
131
photo.metadata = data.metadata.split('\u0000').filter(x => x !== '')[1];
132
this._amountLoaded++;
133
+
134
+
photo.loadingMeta = false;
135
photo.metaLoaded = true;
136
photo.onMetaLoaded();
137
+
138
+
window.PhotoListRenderingManager.ComputeLayout();
139
140
if(this._amountLoaded === this.Photos.length - 1 && !this.HasFirstLoaded){
141
this.FilteredPhotos = this.Photos;
···
147
148
listen('photo_create', async ( event: any ) => {
149
let photo = new Photo(event.payload, false, 0);
150
+
151
+
if(photo.splitPath[4]){
152
+
let type = photo.splitPath[4];
153
+
photo.splitPath.pop();
154
+
155
+
let mainPhotoPath = photo.splitPath.join('_') + '.png';
156
+
let mainPhoto = this.Photos.find(x => x.path === mainPhotoPath);
157
+
158
+
if(!mainPhoto){
159
+
this.Photos.forEach(p => p.index++); // Probably a really dumb way of doing this
160
+
this.Photos.splice(0, 0, photo);
161
+
} else{
162
+
mainPhoto.isMultiLayer = true;
163
+
164
+
switch(type){
165
+
case 'Player.png':
166
+
mainPhoto.playerLayer = photo;
167
+
break;
168
+
case 'Environment.png':
169
+
mainPhoto.environmentLayer = photo;
170
+
break;
171
+
}
172
+
}
173
+
} else{
174
+
this.Photos.forEach(p => p.index++); // Probably a really dumb way of doing this
175
+
this.Photos.splice(0, 0, photo);
176
+
}
177
178
photo.onMetaLoaded = () => this.ReloadFilters();
179
photo.loadMeta();
180
})
181
+
182
listen('photo_remove', ( event: any ) => {
183
this.Photos = this.Photos.filter(x => x.path !== event.payload);
184
+
185
if(event.payload === window.PhotoViewerManager.CurrentPhoto()?.path)
186
window.PhotoViewerManager.Close()
187
···
224
public ReloadFilters(){
225
this.FilteredPhotos = [];
226
227
+
if(this._filter === ''){
228
+
this.FilteredPhotos = this.Photos;
229
+
window.PhotoListRenderingManager.ComputeLayout();
230
+
231
+
return;
232
+
}
233
+
234
switch(this._filterType){
235
case FilterType.USER:
236
this.Photos.map(p => {
237
if(p.metadata){
238
try{
239
let meta = JSON.parse(p.metadata);
240
+
let photo = meta.players.find(( y: any ) =>
241
+
y.displayName.toLowerCase().includes(this._filter) ||
242
+
y.id === this._filter
243
+
);
244
245
if(photo)this.FilteredPhotos.push(p);
246
} catch(e){}
···
252
if(p.metadata){
253
try{
254
let meta = JSON.parse(p.metadata);
255
+
let photo =
256
+
meta.world.name.toLowerCase().includes(this._filter) ||
257
+
meta.world.id === this._filter;
258
+
259
if(photo)this.FilteredPhotos.push(p);
260
} catch(e){}
261
}
-56
src/Components/Managers/SyncManager.tsx
-56
src/Components/Managers/SyncManager.tsx
···
1
-
import { invoke } from "@tauri-apps/api/core";
2
-
import { listen } from "@tauri-apps/api/event";
3
-
import { Accessor, createSignal, Setter } from "solid-js";
4
-
5
-
export class SyncManager{
6
-
private _setIsSyncing: Setter<boolean>;
7
-
private _setSyncPhotoTotal: Setter<number>;
8
-
private _setSyncPhotoTransfers: Setter<number>;
9
-
private _setSyncType: Setter<string>;
10
-
private _setSyncError: Setter<string>;
11
-
12
-
public IsSyncing: Accessor<boolean>;
13
-
public SyncPhotoTotal: Accessor<number>;
14
-
public SyncPhotoTransfers: Accessor<number>
15
-
public SyncType: Accessor<string>;
16
-
public SyncError: Accessor<string>;
17
-
18
-
constructor(){
19
-
[ this.IsSyncing, this._setIsSyncing ] = createSignal(false);
20
-
[ this.SyncPhotoTotal, this._setSyncPhotoTotal ] = createSignal(-1);
21
-
[ this.SyncPhotoTransfers, this._setSyncPhotoTransfers ] = createSignal(-1);
22
-
[ this.SyncType, this._setSyncType ] = createSignal("");
23
-
[ this.SyncError, this._setSyncError ] = createSignal("");
24
-
25
-
listen('photos-upload-meta', ( e: any ) => {
26
-
this._setIsSyncing(true);
27
-
this._setSyncPhotoTotal(e.payload.photos_total);
28
-
this._setSyncPhotoTransfers(e.payload.photos_total - e.payload.photos_uploading);
29
-
this._setSyncType('Upload');
30
-
31
-
console.log(e.payload)
32
-
})
33
-
34
-
listen('photos-download-meta', ( e: any ) => {
35
-
this._setIsSyncing(true);
36
-
this._setSyncPhotoTotal(e.payload.photos_total);
37
-
this._setSyncPhotoTransfers(e.payload.photos_total - e.payload.photos_uploading);
38
-
this._setSyncType('Download');
39
-
40
-
console.log(e.payload)
41
-
})
42
-
43
-
listen('sync-finished', () => {
44
-
this._setIsSyncing(false);
45
-
})
46
-
47
-
listen('sync-failed', ( e: any ) => {
48
-
this._setSyncError(e.payload);
49
-
})
50
-
}
51
-
52
-
public async TriggerSync(){
53
-
this._setIsSyncing(true);
54
-
invoke('sync_photos', { token: (await invoke('get_config_value_string', { key: 'token' })) });
55
-
}
56
-
}
···
+1
src/Components/Managers/ViewManager.tsx
+1
src/Components/Managers/ViewManager.tsx
···
9
private _eventListeners: { from: ViewState, to: ViewState, cb: () => void }[] = [];
10
11
public ChangeState( state: ViewState ){
12
+
console.log('From: ' + this._state + ' To: ' + state);
13
this._eventListeners.filter(x => x.from === this._state && x.to === state).forEach(c => c.cb());
14
this._state = state;
15
}
+111
-77
src/Components/PhotoList.tsx
+111
-77
src/Components/PhotoList.tsx
···
1
-
import { onCleanup, onMount } from "solid-js";
2
import { listen } from '@tauri-apps/api/event';
3
import { Window } from "@tauri-apps/api/window";
4
5
-
import anime from "animejs";
6
import FilterMenu from "./FilterMenu";
7
import { ViewState } from "./Managers/ViewManager";
8
9
enum ListPopup{
10
FILTERS,
···
12
}
13
14
let PhotoList = () => {
15
-
let photoTreeLoadingContainer: HTMLElement;
16
-
17
let scrollToTop: HTMLElement;
18
let scrollToTopActive = false;
19
20
let photoContainer: HTMLCanvasElement;
21
-
let photoContainerBG: HTMLCanvasElement;
22
23
let filterContainer: HTMLDivElement;
24
25
let ctx: CanvasRenderingContext2D;
26
-
let ctxBG: CanvasRenderingContext2D;
27
28
let scroll: number = 0;
29
let targetScroll: number = 0;
···
32
33
let currentPopup = ListPopup.NONE;
34
35
Window.getCurrent().isVisible().then(visible => {
36
quitRender = !visible;
37
})
38
39
40
window.ViewManager.OnStateTransition(ViewState.PHOTO_LIST, ViewState.SETTINGS, () => {
41
-
anime({ targets: photoContainer, opacity: 0, easing: 'easeInOutQuad', duration: 100 });
42
});
43
44
window.ViewManager.OnStateTransition(ViewState.SETTINGS, ViewState.PHOTO_LIST, () => {
45
-
anime({ targets: photoContainer, opacity: 1, easing: 'easeInOutQuad', duration: 100 });
46
});
47
48
49
window.ViewManager.OnStateTransition(ViewState.PHOTO_LIST, ViewState.PHOTO_VIEWER, () => {
50
-
anime({ targets: photoContainer, opacity: 0, easing: 'easeInOutQuad', duration: 100 });
51
-
anime({ targets: '.filter-options', opacity: 0, easing: 'easeInOutQuad', duration: 100 });
52
-
anime({ targets: '.reload-photos', opacity: 0, easing: 'easeInOutQuad', duration: 100 });
53
});
54
55
window.ViewManager.OnStateTransition(ViewState.PHOTO_VIEWER, ViewState.PHOTO_LIST, () => {
56
-
anime({ targets: photoContainer, opacity: 1, easing: 'easeInOutQuad', duration: 100 });
57
-
anime({ targets: '.filter-options', opacity: 1, easing: 'easeInOutQuad', duration: 100 });
58
-
anime({ targets: '.reload-photos', opacity: 1, easing: 'easeInOutQuad', duration: 100 });
59
});
60
61
···
65
}
66
}
67
68
let closeCurrentPopup = () => {
69
switch(currentPopup){
70
case ListPopup.FILTERS:
71
-
anime({
72
-
targets: filterContainer!,
73
opacity: 0,
74
easing: 'easeInOutQuad',
75
duration: 100,
76
-
complete: () => {
77
filterContainer!.style.display = 'none';
78
currentPopup = ListPopup.NONE;
79
}
···
83
}
84
}
85
86
-
let render = () => {
87
if(!quitRender)
88
requestAnimationFrame(render);
89
else
···
91
92
if(!scrollToTopActive && scroll > photoContainer.height){
93
scrollToTop.style.display = 'flex';
94
-
anime({ targets: scrollToTop, opacity: 1, translateY: '0px', easing: 'easeInOutQuad', duration: 100 });
95
96
scrollToTopActive = true;
97
} else if(scrollToTopActive && scroll < photoContainer.height){
98
-
anime({ targets: scrollToTop, opacity: 0, translateY: '-10px', complete: () => scrollToTop.style.display = 'none', easing: 'easeInOutQuad', duration: 100 });
99
scrollToTopActive = false;
100
}
101
102
-
if(!ctx || !ctxBG)return;
103
ctx.clearRect(0, 0, photoContainer.width, photoContainer.height);
104
-
ctxBG.clearRect(0, 0, photoContainerBG.width, photoContainerBG.height);
105
106
-
scroll = scroll + (targetScroll - scroll) * 0.2;
107
108
window.PhotoListRenderingManager.Render(ctx, photoContainer!, scroll);
109
···
116
117
ctx.fillText("It's looking empty in here! You have no photos :O", photoContainer.width / 2, photoContainer.height / 2);
118
}
119
-
120
-
ctxBG.drawImage(photoContainer, 0, 0);
121
}
122
123
listen('hide-window', () => {
124
-
console.log('Hide Window');
125
quitRender = true;
126
})
127
128
listen('show-window', () => {
129
console.log('Shown Window');
130
-
quitRender = false;
131
132
-
if(window.PhotoManager.HasFirstLoaded)
133
requestAnimationFrame(render);
134
})
135
136
window.PhotoManager.OnLoadingFinished(() => {
137
-
anime({
138
-
targets: photoTreeLoadingContainer,
139
-
height: 0,
140
-
easing: 'easeInOutQuad',
141
-
duration: 500,
142
-
opacity: 0,
143
-
complete: () => {
144
-
photoTreeLoadingContainer.style.display = 'none';
145
-
}
146
-
})
147
148
-
anime({
149
-
targets: '.reload-photos',
150
opacity: 1,
151
duration: 150,
152
easing: 'easeInOutQuad'
153
})
154
155
window.PhotoListRenderingManager.SetCanvas(photoContainer!);
156
-
window.PhotoListRenderingManager.ComputeLayout();
157
-
158
render();
159
});
160
161
onMount(() => {
162
ctx = photoContainer.getContext('2d')!;
163
-
ctxBG = photoContainerBG.getContext('2d')!;
164
165
window.PhotoManager.Load();
166
167
-
anime.set(scrollToTop, { opacity: 0, translateY: '-10px', display: 'none' });
168
169
-
photoContainer.addEventListener('wheel', ( e: WheelEvent ) => {
170
-
targetScroll += e.deltaY;
171
172
if(targetScroll < 0)
173
targetScroll = 0;
174
-
});
175
176
window.addEventListener('keyup', closeWithKey);
177
178
photoContainer.width = window.innerWidth;
179
photoContainer.height = window.innerHeight;
180
181
-
photoContainerBG.width = window.innerWidth;
182
-
photoContainerBG.height = window.innerHeight;
183
-
184
-
window.addEventListener('resize', () => {
185
-
photoContainer.width = window.innerWidth;
186
-
photoContainer.height = window.innerHeight;
187
-
188
-
photoContainerBG.width = window.innerWidth;
189
-
photoContainerBG.height = window.innerHeight;
190
-
191
-
window.PhotoListRenderingManager.ComputeLayout();
192
-
})
193
-
194
-
photoContainer.addEventListener('click', ( e: MouseEvent ) => {
195
let photo = window.PhotoManager.FilteredPhotos.find(x =>
196
e.clientX > x.x &&
197
e.clientY > x.y &&
···
204
window.PhotoViewerManager.OpenPhoto(photo);
205
// else
206
// currentPhotoIndex = -1;
207
-
})
208
})
209
210
onCleanup(() => {
211
window.removeEventListener('keyup', closeWithKey);
212
})
213
214
return (
215
<div class="photo-list">
216
-
<div ref={filterContainer!} class="filter-container" style={{
217
-
height: window.PhotoManager.HasBeenIndexed() ? '83px' : '110px',
218
-
width: window.PhotoManager.HasBeenIndexed() ? '600px' : '650px'
219
-
}}>
220
<FilterMenu />
221
</div>
222
-
223
-
<div class="photo-tree-loading" ref={( el ) => photoTreeLoadingContainer = el}>Scanning Photo Tree...</div>
224
225
<div class="scroll-to-top" ref={( el ) => scrollToTop = el} onClick={() => targetScroll = 0}>
226
<div class="icon">
227
<img draggable="false" src="/icon/angle-up-solid.svg"></img>
228
</div>
229
</div>
230
-
<div class="reload-photos" onClick={() => window.ConfirmationBoxManager.SetConfirmationBox("Are you sure you want to reload all photos? This can cause the application to slow down while it is loading...", () => window.location.reload())}>
231
-
<div class="icon" style={{ width: '17px' }}>
232
-
<img draggable="false" width="17" height="17" src="/icon/arrows-rotate-solid.svg"></img>
233
-
</div>
234
-
</div>
235
236
<div class="filter-options">
237
<div>
···
241
242
filterContainer!.style.display = 'block';
243
244
-
anime({
245
-
targets: filterContainer!,
246
opacity: 1,
247
easing: 'easeInOutQuad',
248
duration: 100
249
});
250
-
}} class="icon" style={{ width: '20px', height: '20px', padding: '20px' }}>
251
<img draggable="false" style={{ width: "20px", height: "20px" }} src="/icon/sliders-solid.svg"></img>
252
</div>
253
<div class="icon-label">Filters</div>
254
</div>
255
</div>
256
257
<canvas class="photo-container" ref={( el ) => photoContainer = el}></canvas>
258
-
<canvas class="photo-container-bg" ref={( el ) => photoContainerBG = el}></canvas>
259
</div>
260
)
261
}
···
1
+
import { createSignal, onCleanup, onMount, Show } from "solid-js";
2
import { listen } from '@tauri-apps/api/event';
3
import { Window } from "@tauri-apps/api/window";
4
5
import FilterMenu from "./FilterMenu";
6
import { ViewState } from "./Managers/ViewManager";
7
+
import { invoke } from "@tauri-apps/api/core";
8
+
import { animate, utils } from "animejs";
9
10
enum ListPopup{
11
FILTERS,
···
13
}
14
15
let PhotoList = () => {
16
let scrollToTop: HTMLElement;
17
let scrollToTopActive = false;
18
19
let photoContainer: HTMLCanvasElement;
20
21
let filterContainer: HTMLDivElement;
22
23
let ctx: CanvasRenderingContext2D;
24
25
let scroll: number = 0;
26
let targetScroll: number = 0;
···
29
30
let currentPopup = ListPopup.NONE;
31
32
+
let [ updateAvailable, setUpdateAvailable ] = createSignal(false);
33
+
34
Window.getCurrent().isVisible().then(visible => {
35
quitRender = !visible;
36
})
37
38
39
window.ViewManager.OnStateTransition(ViewState.PHOTO_LIST, ViewState.SETTINGS, () => {
40
+
animate(photoContainer, { opacity: 0.5, filter: 'blur(10px)', easing: 'easeInOutQuad', duration: 100 });
41
+
animate('.filter-options', { opacity: 0, easing: 'easeInOutQuad', duration: 100 });
42
+
animate('.scroll-to-top', { opacity: 0, easing: 'easeInOutQuad', duration: 100 });
43
});
44
45
window.ViewManager.OnStateTransition(ViewState.SETTINGS, ViewState.PHOTO_LIST, () => {
46
+
animate(photoContainer, { opacity: 1, filter: 'blur(0px)', easing: 'easeInOutQuad', duration: 100, onComplete: () => photoContainer.style.filter = '' });
47
+
animate('.filter-options', { opacity: 1, easing: 'easeInOutQuad', duration: 100 });
48
+
animate('.scroll-to-top', { opacity: 1, easing: 'easeInOutQuad', duration: 100 });
49
});
50
51
52
window.ViewManager.OnStateTransition(ViewState.PHOTO_LIST, ViewState.PHOTO_VIEWER, () => {
53
+
animate(photoContainer, { opacity: 0.5, filter: 'blur(10px)', easing: 'easeInOutQuad', duration: 100 });
54
+
animate('.filter-options', { opacity: 0, easing: 'easeInOutQuad', duration: 100 });
55
+
animate('.scroll-to-top', { opacity: 0, easing: 'easeInOutQuad', duration: 100 });
56
});
57
58
window.ViewManager.OnStateTransition(ViewState.PHOTO_VIEWER, ViewState.PHOTO_LIST, () => {
59
+
animate(photoContainer, { opacity: 1, filter: 'blur(0px)', easing: 'easeInOutQuad', duration: 100, onComplete: () => photoContainer.style.filter = '' });
60
+
animate('.filter-options', { opacity: 1, easing: 'easeInOutQuad', duration: 100 });
61
+
animate('.scroll-to-top', { opacity: 1, easing: 'easeInOutQuad', duration: 100 });
62
});
63
64
···
68
}
69
}
70
71
+
let onResize = () => {
72
+
photoContainer.width = window.innerWidth;
73
+
photoContainer.height = window.innerHeight;
74
+
75
+
window.PhotoListRenderingManager.ComputeLayout();
76
+
}
77
+
78
let closeCurrentPopup = () => {
79
switch(currentPopup){
80
case ListPopup.FILTERS:
81
+
animate(filterContainer!, {
82
opacity: 0,
83
+
translateY: '10px',
84
easing: 'easeInOutQuad',
85
duration: 100,
86
+
onComplete: () => {
87
filterContainer!.style.display = 'none';
88
currentPopup = ListPopup.NONE;
89
}
···
93
}
94
}
95
96
+
let render = () => {
97
if(!quitRender)
98
requestAnimationFrame(render);
99
else
···
101
102
if(!scrollToTopActive && scroll > photoContainer.height){
103
scrollToTop.style.display = 'flex';
104
+
animate(scrollToTop, { opacity: 1, translateY: '0px', easing: 'easeInOutQuad', duration: 100 });
105
106
scrollToTopActive = true;
107
} else if(scrollToTopActive && scroll < photoContainer.height){
108
+
animate(scrollToTop, { opacity: 0, translateY: '-10px', onComplete: () => scrollToTop.style.display = 'none', easing: 'easeInOutQuad', duration: 100 });
109
+
110
scrollToTopActive = false;
111
}
112
113
+
if(!ctx)return;
114
ctx.clearRect(0, 0, photoContainer.width, photoContainer.height);
115
116
+
scroll = scroll + (targetScroll - scroll) * 0.1;
117
118
window.PhotoListRenderingManager.Render(ctx, photoContainer!, scroll);
119
···
126
127
ctx.fillText("It's looking empty in here! You have no photos :O", photoContainer.width / 2, photoContainer.height / 2);
128
}
129
}
130
131
listen('hide-window', () => {
132
quitRender = true;
133
+
console.log('Hide Window');
134
})
135
136
listen('show-window', () => {
137
+
if(quitRender)quitRender = false;
138
console.log('Shown Window');
139
140
+
photoContainer.width = window.innerWidth;
141
+
photoContainer.height = window.innerHeight;
142
+
143
+
if(window.PhotoManager.HasFirstLoaded){
144
requestAnimationFrame(render);
145
+
window.PhotoManager.HasFirstLoaded = false;
146
+
}
147
})
148
149
window.PhotoManager.OnLoadingFinished(() => {
150
+
invoke('close_splashscreen');
151
152
+
animate('.reload-photos', {
153
opacity: 1,
154
duration: 150,
155
easing: 'easeInOutQuad'
156
})
157
158
window.PhotoListRenderingManager.SetCanvas(photoContainer!);
159
render();
160
});
161
162
onMount(() => {
163
+
// Update Stuff
164
+
fetch('https://api.github.com/repos/phaze-the-dumb/VRChat-Photo-Manager/releases/latest')
165
+
.then(data => {
166
+
if(data.status !== 200)return;
167
+
168
+
data.json().then(async data => {
169
+
let currentVersion = await invoke('get_version');
170
+
setUpdateAvailable(data.tag_name !== currentVersion);
171
+
})
172
+
})
173
+
.catch(e => {
174
+
console.error(e);
175
+
setUpdateAvailable(false);
176
+
})
177
+
178
+
// Other Stuff
179
ctx = photoContainer.getContext('2d')!;
180
181
window.PhotoManager.Load();
182
183
+
utils.set(scrollToTop, { opacity: 0, translateY: '-10px', display: 'none' });
184
185
+
photoContainer.onwheel = ( e: WheelEvent ) => {
186
+
targetScroll += e.deltaY * 2;
187
188
if(targetScroll < 0)
189
targetScroll = 0;
190
+
};
191
192
window.addEventListener('keyup', closeWithKey);
193
+
window.addEventListener('resize', onResize);
194
195
photoContainer.width = window.innerWidth;
196
photoContainer.height = window.innerHeight;
197
198
+
photoContainer.onclick = ( e: MouseEvent ) => {
199
let photo = window.PhotoManager.FilteredPhotos.find(x =>
200
e.clientX > x.x &&
201
e.clientY > x.y &&
···
208
window.PhotoViewerManager.OpenPhoto(photo);
209
// else
210
// currentPhotoIndex = -1;
211
+
}
212
})
213
214
onCleanup(() => {
215
+
photoContainer.onwheel = () => {};
216
+
photoContainer.onclick = () => {};
217
+
218
window.removeEventListener('keyup', closeWithKey);
219
+
window.removeEventListener('resize', onResize);
220
})
221
222
return (
223
<div class="photo-list">
224
+
<div ref={filterContainer!} class="filter-container">
225
<FilterMenu />
226
</div>
227
228
<div class="scroll-to-top" ref={( el ) => scrollToTop = el} onClick={() => targetScroll = 0}>
229
<div class="icon">
230
<img draggable="false" src="/icon/angle-up-solid.svg"></img>
231
</div>
232
</div>
233
234
<div class="filter-options">
235
<div>
···
239
240
filterContainer!.style.display = 'block';
241
242
+
animate(filterContainer!, {
243
opacity: 1,
244
+
translateY: 0,
245
easing: 'easeInOutQuad',
246
duration: 100
247
});
248
+
}} class="icon">
249
<img draggable="false" style={{ width: "20px", height: "20px" }} src="/icon/sliders-solid.svg"></img>
250
</div>
251
<div class="icon-label">Filters</div>
252
</div>
253
+
254
+
<div>
255
+
<div onClick={() => {
256
+
window.location.reload();
257
+
}} class="icon">
258
+
<img draggable="false" style={{ width: "20px", height: "20px" }} src="/icon/arrows-rotate-solid.svg"></img>
259
+
</div>
260
+
<div class="icon-label">Reload Photos</div>
261
+
</div>
262
+
263
+
<div>
264
+
<div onClick={() => {
265
+
utils.set('.settings', { display: 'block' });
266
+
animate('.settings', {
267
+
opacity: 1,
268
+
translateX: '0px',
269
+
easing: 'easeInOutQuad',
270
+
duration: 250
271
+
})
272
+
273
+
window.ViewManager.ChangeState(ViewState.SETTINGS);
274
+
}} class="icon">
275
+
<img draggable="false" style={{ width: "20px", height: "20px" }} src="/icon/gear-solid-full.svg"></img>
276
+
</div>
277
+
<div class="icon-label">Settings</div>
278
+
</div>
279
+
280
+
<Show when={updateAvailable()}>
281
+
<div>
282
+
<div onClick={() => {
283
+
invoke('open_url', { url: 'https://github.com/phaze-the-dumb/VRChat-Photo-Manager/releases/latest' });
284
+
}} class="icon">
285
+
<img draggable="false" style={{ width: "20px", height: "20px" }} src="/icon/download-solid-full.svg"></img>
286
+
</div>
287
+
<div class="icon-label">Update Available</div>
288
+
</div>
289
+
</Show>
290
</div>
291
292
<canvas class="photo-container" ref={( el ) => photoContainer = el}></canvas>
293
</div>
294
)
295
}
+218
-110
src/Components/PhotoViewer.tsx
+218
-110
src/Components/PhotoViewer.tsx
···
1
import { For, Show, createEffect, onCleanup, onMount } from "solid-js";
2
import { invoke } from '@tauri-apps/api/core';
3
-
import anime from 'animejs';
4
import { WorldCache } from "./Structs/WorldCache";
5
6
let PhotoViewer = () => {
7
let viewer: HTMLElement;
···
21
let viewerContextMenuButtons: HTMLElement[] = [];
22
23
let allowedToOpenTray = false;
24
-
let trayInAnimation = false;
25
26
let authorProfileButton: HTMLDivElement;
27
28
let switchPhotoWithKey = ( e: KeyboardEvent ) => {
29
switch(e.key){
···
52
}
53
}
54
55
let openTray = () => {
56
-
if(trayOpen || trayInAnimation)return;
57
58
-
trayOpen = true;
59
-
trayInAnimation = true;
60
61
window.CloseAllPopups.forEach(p => p());
62
-
anime({ targets: photoTray, bottom: '0px', duration: 500 });
63
64
-
anime({
65
-
targets: photoControls,
66
bottom: '160px',
67
scale: '0.75',
68
opacity: 0,
69
duration: 500,
70
-
complete: () => {
71
photoControls.style.display = 'none';
72
-
trayInAnimation = false;
73
}
74
});
75
76
photoTrayCloseBtn.style.display = 'flex';
77
-
anime({
78
-
targets: photoTrayCloseBtn,
79
bottom: '160px',
80
opacity: 1,
81
scale: 1,
82
duration: 500
···
84
}
85
86
let copyImage = () => {
87
-
let canvas = document.createElement('canvas');
88
-
let ctx = canvas.getContext('2d')!;
89
-
90
-
canvas.width = window.PhotoViewerManager.CurrentPhoto()?.width || 0;
91
-
canvas.height = window.PhotoViewerManager.CurrentPhoto()?.height || 0;
92
-
93
-
ctx.drawImage(imageViewer, 0, 0);
94
-
95
-
canvas.toBlob(( blob ) => {
96
-
navigator.clipboard.write([
97
-
new ClipboardItem({
98
-
'image/png': blob!
99
-
})
100
-
]);
101
-
102
-
canvas.remove();
103
104
-
anime.set('.copy-notif', { translateX: '-50%', translateY: '-100px' });
105
-
anime({
106
-
targets: '.copy-notif',
107
-
opacity: 1,
108
-
translateY: '0px'
109
-
});
110
111
-
setTimeout(() => {
112
-
anime({
113
-
targets: '.copy-notif',
114
-
opacity: 0,
115
-
translateY: '-100px'
116
});
117
-
}, 2000);
118
-
});
119
}
120
121
let closeTray = () => {
122
-
if(!trayOpen || trayInAnimation)return;
123
-
trayInAnimation = true;
124
125
window.CloseAllPopups.forEach(p => p());
126
-
anime({ targets: photoTray, bottom: '-150px', duration: 500 });
127
128
-
anime({
129
-
targets: photoTrayCloseBtn,
130
bottom: '10px',
131
scale: '0.75',
132
opacity: 0,
133
duration: 500,
134
-
complete: () => {
135
photoTrayCloseBtn.style.display = 'none';
136
-
trayOpen = false;
137
-
trayInAnimation = false;
138
}
139
});
140
141
photoControls.style.display = 'flex';
142
-
anime({
143
-
targets: photoControls,
144
bottom: '10px',
145
opacity: 1,
146
scale: 1,
147
duration: 500,
148
})
149
}
150
151
onMount(() => {
152
-
anime.set(photoControls, { translateX: '-50%' });
153
-
anime.set(photoTrayCloseBtn, { translateX: '-50%', opacity: 0, scale: '0.75', bottom: '10px' });
154
155
window.addEventListener('keyup', switchPhotoWithKey);
156
157
let contextMenuOpen = false;
158
window.CloseAllPopups.push(() => {
159
contextMenuOpen = false;
160
-
anime.set(viewerContextMenu, { opacity: 1, rotate: '0deg' });
161
162
-
anime({
163
-
targets: viewerContextMenu,
164
opacity: 0,
165
easing: 'easeInOutQuad',
166
rotate: '30deg',
167
duration: 100,
168
-
complete: () => {
169
viewerContextMenu.style.display = 'none';
170
}
171
})
172
});
173
174
viewerContextMenuButtons[0].onclick = async () => {
175
window.CloseAllPopups.forEach(p => p());
176
// Context Menu -> Open file location
···
189
if(contextMenuOpen){
190
contextMenuOpen = false;
191
192
-
anime.set(viewerContextMenu, { opacity: 1, rotate: '0deg' });
193
194
-
anime({
195
-
targets: viewerContextMenu,
196
opacity: 0,
197
rotate: '30deg',
198
easing: 'easeInOutQuad',
199
duration: 100,
200
-
complete: () => {
201
viewerContextMenu.style.display = 'none';
202
}
203
})
···
208
viewerContextMenu.style.left = e.clientX + 'px';
209
viewerContextMenu.style.display = 'block';
210
211
-
anime.set(viewerContextMenu, { opacity: 0, rotate: '-30deg' });
212
213
-
anime({
214
-
targets: viewerContextMenu,
215
opacity: 1,
216
rotate: '0deg',
217
easing: 'easeInOutQuad',
···
230
imageViewer.src = (window.OS === "windows" ? "http://photo.localhost/" : 'photo://localhost/') + window.PhotoViewerManager.CurrentPhoto()?.path.split('\\').join('/') + "?full";
231
imageViewer.crossOrigin = 'anonymous';
232
233
-
anime({
234
-
targets: imageViewer,
235
opacity: 1,
236
delay: 50,
237
duration: 150,
···
291
let id = doc.getElementsByTagName('xmp:Author')[0]!.innerHTML;
292
293
authorProfileButton!.style.display = 'flex';
294
-
authorProfileButton!.onclick = () =>
295
invoke('open_url', { url: 'https://vrchat.com/home/user/' + id });
296
} catch(e){
297
console.error(e);
298
console.log('Couldn\'t decode metadata')
···
305
}
306
} else{
307
trayButton.style.display = 'none';
308
closeTray();
309
}
310
}
···
315
if(photo && !isOpen){
316
viewer.style.display = 'flex';
317
318
-
anime({
319
-
targets: viewer,
320
opacity: 1,
321
easing: 'easeInOutQuad',
322
duration: 150
323
});
324
-
325
-
anime({
326
-
targets: '.navbar',
327
-
top: '-50px'
328
-
})
329
330
-
anime.set('.prev-button', { left: '-50px', top: '50%' });
331
-
anime.set('.next-button', { right: '-50px', top: '50%' });
332
333
-
anime({ targets: '.prev-button', left: '0', easing: 'easeInOutQuad', duration: 100 });
334
-
anime({ targets: '.next-button', right: '0', easing: 'easeInOutQuad', duration: 100 });
335
336
window.CloseAllPopups.forEach(p => p());
337
} else if(!photo && isOpen){
338
-
anime({
339
-
targets: viewer,
340
opacity: 0,
341
easing: 'easeInOutQuad',
342
duration: 150,
343
-
complete: () => {
344
viewer.style.display = 'none';
345
}
346
});
347
-
348
-
anime({
349
-
targets: '.navbar',
350
-
top: '0px'
351
-
})
352
353
window.CloseAllPopups.forEach(p => p());
354
355
-
anime({ targets: '.prev-button', top: '75%', easing: 'easeInOutQuad', duration: 100 });
356
-
anime({ targets: '.next-button', top: '75%', easing: 'easeInOutQuad', duration: 100 });
357
}
358
359
isOpen = photo != null;
···
394
)
395
}
396
397
return (
398
<div class="photo-viewer" ref={( el ) => viewer = el}>
399
<div class="photo-context-menu" ref={( el ) => viewerContextMenu = el}>
400
<div ref={( el ) => viewerContextMenuButtons.push(el)}>Open file location</div>
401
<div ref={( el ) => viewerContextMenuButtons.push(el)}>Copy image</div>
402
</div>
403
404
<div class="viewer-close viewer-button" onClick={() => window.PhotoViewerManager.Close()}>
405
-
<div class="icon" style={{ width: '10px', margin: '0' }}>
406
<img draggable="false" src="/icon/x-solid.svg"></img>
407
</div>
408
</div>
409
-
<img class="image-container" ref={( el ) => imageViewer = el} />
410
411
<div class="prev-button" onClick={() => {
412
window.CloseAllPopups.forEach(p => p());
413
window.PhotoViewerManager.PreviousPhoto();
414
}}>
415
-
<div class="icon" style={{ width: '15px', margin: '0' }}>
416
<img draggable="false" src="/icon/arrow-left-solid.svg"></img>
417
</div>
418
</div>
···
421
window.CloseAllPopups.forEach(p => p());
422
window.PhotoViewerManager.NextPhoto();
423
}}>
424
-
<div class="icon" style={{ width: '15px', margin: '0' }}>
425
<img draggable="false" src="/icon/arrow-right-solid.svg"></img>
426
</div>
427
</div>
···
432
onClick={() => closeTray()}
433
ref={( el ) => photoTrayCloseBtn = el}
434
>
435
-
<div class="icon" style={{ width: '12px', margin: '0' }}>
436
<img draggable="false" src="/icon/angle-down-solid.svg"></img>
437
</div>
438
</div>
439
440
<div class="control-buttons" ref={( el ) => photoControls = el}>
441
<div class="viewer-button"
442
-
onMouseOver={( el ) => anime({ targets: el.currentTarget, width: '40px', height: '40px', 'margin-left': '15px', 'margin-right': '15px', 'margin-top': '-10px' })}
443
-
onMouseLeave={( el ) => anime({ targets: el.currentTarget, width: '30px', height: '30px', 'margin-left': '20px', 'margin-right': '20px', 'margin-top': '0px' })}
444
onClick={() => { copyImage(); }}>
445
-
<div class="icon" style={{ width: '12px', margin: '0' }}>
446
<img draggable="false" src="/icon/copy-solid.svg"></img>
447
</div>
448
</div>
449
<div class="viewer-button" style={{ width: '50px' }}
450
-
onMouseOver={( el ) => anime({ targets: el.currentTarget, width: '70px', height: '30px', 'margin-left': '10px', 'margin-right': '10px' })}
451
-
onMouseLeave={( el ) => anime({ targets: el.currentTarget, width: '50px', height: '30px', 'margin-left': '20px', 'margin-right': '20px' })}
452
ref={( el ) => trayButton = el}
453
onClick={() => openTray()}
454
>
455
-
<div class="icon" style={{ width: '12px', margin: '0' }}>
456
<img draggable="false" src="/icon/angle-up-solid.svg"></img>
457
</div>
458
</div>
459
460
<div class="viewer-button"
461
ref={authorProfileButton!}
462
-
onMouseOver={( el ) => anime({ targets: el.currentTarget, width: '40px', height: '40px', 'margin-left': '15px', 'margin-right': '15px', 'margin-top': '-10px' })}
463
-
onMouseLeave={( el ) => anime({ targets: el.currentTarget, width: '30px', height: '30px', 'margin-left': '20px', 'margin-right': '20px', 'margin-top': '0px' })}
464
>
465
-
<div class="icon" style={{ width: '12px', margin: '0' }}>
466
<img draggable="false" src="/icon/user-solid.svg"></img>
467
</div>
468
</div>
469
470
<div class="viewer-button"
471
-
onMouseOver={( el ) => anime({ targets: el.currentTarget, width: '40px', height: '40px', 'margin-left': '15px', 'margin-right': '15px', 'margin-top': '-10px' })}
472
-
onMouseLeave={( el ) => anime({ targets: el.currentTarget, width: '30px', height: '30px', 'margin-left': '20px', 'margin-right': '20px', 'margin-top': '0px' })}
473
-
onClick={() => window.ConfirmationBoxManager.SetConfirmationBox("Are you sure you want to delete this photo?", async () => { invoke("delete_photo", {
474
-
path: window.PhotoViewerManager.CurrentPhoto()?.path,
475
-
token: (await invoke('get_config_value_string', { key: 'token' })) || "none",
476
-
isSyncing: window.AccountManager.hasAccount() ? window.AccountManager.Storage()?.isSyncing : false
477
-
});
478
})}>
479
-
<div class="icon" style={{ width: '12px', margin: '0' }}>
480
<img draggable="false" src="/icon/trash-solid.svg"></img>
481
</div>
482
</div>
···
1
import { For, Show, createEffect, onCleanup, onMount } from "solid-js";
2
import { invoke } from '@tauri-apps/api/core';
3
import { WorldCache } from "./Structs/WorldCache";
4
+
import { animate, JSAnimation, utils } from "animejs";
5
6
let PhotoViewer = () => {
7
let viewer: HTMLElement;
···
21
let viewerContextMenuButtons: HTMLElement[] = [];
22
23
let allowedToOpenTray = false;
24
25
let authorProfileButton: HTMLDivElement;
26
+
27
+
let photoLayerManager!: HTMLDivElement;
28
29
let switchPhotoWithKey = ( e: KeyboardEvent ) => {
30
switch(e.key){
···
53
}
54
}
55
56
+
let trayAnimation: JSAnimation[] = [];
57
+
58
let openTray = () => {
59
+
if(trayOpen)return;
60
+
trayOpen = true;
61
62
+
trayAnimation.forEach(anim => anim.cancel());
63
64
window.CloseAllPopups.forEach(p => p());
65
+
trayAnimation[0] = animate(photoTray, { bottom: '-150px', duration: 500, ease: 'outElastic' });
66
67
+
trayAnimation[1] = animate(photoControls, {
68
bottom: '160px',
69
+
ease: 'outElastic',
70
scale: '0.75',
71
opacity: 0,
72
duration: 500,
73
+
onComplete: () => {
74
photoControls.style.display = 'none';
75
}
76
});
77
78
photoTrayCloseBtn.style.display = 'flex';
79
+
trayAnimation[2] = animate(photoTrayCloseBtn, {
80
bottom: '160px',
81
+
ease: 'outElastic',
82
opacity: 1,
83
scale: 1,
84
duration: 500
···
86
}
87
88
let copyImage = () => {
89
+
let path;
90
+
let photo = window.PhotoViewerManager.CurrentPhoto()!;
91
92
+
switch(layerManagerViewing){
93
+
case LayerManagerView.DEFAULT:
94
+
path = photo.path;
95
+
break;
96
+
case LayerManagerView.ENVIRONMENT:
97
+
path = photo.environmentLayer!.path;
98
+
break;
99
+
case LayerManagerView.PLAYER:
100
+
path = photo.playerLayer!.path;
101
+
break;
102
+
}
103
104
+
invoke('copy_image', { path })
105
+
.then(() => {
106
+
utils.set('.copy-notif', { translateX: '-50%', translateY: '-100px' });
107
+
animate('.copy-notif', {
108
+
ease: 'outElastic',
109
+
opacity: 1,
110
+
translateY: '0px'
111
});
112
+
113
+
setTimeout(() => {
114
+
animate('.copy-notif', {
115
+
ease: 'outElastic',
116
+
opacity: 0,
117
+
translateY: '-100px'
118
+
});
119
+
}, 2000);
120
+
})
121
}
122
123
let closeTray = () => {
124
+
if(!trayOpen)return;
125
+
trayOpen = false;
126
+
127
+
trayAnimation.forEach(anim => anim.cancel());
128
129
window.CloseAllPopups.forEach(p => p());
130
+
trayAnimation[0] = animate(photoTray, { bottom: '-300px', duration: 500, ease: 'outElastic' });
131
132
+
trayAnimation[2] = animate(photoTrayCloseBtn, {
133
bottom: '10px',
134
scale: '0.75',
135
+
ease: 'outElastic',
136
opacity: 0,
137
duration: 500,
138
+
onComplete: () => {
139
photoTrayCloseBtn.style.display = 'none';
140
}
141
});
142
143
photoControls.style.display = 'flex';
144
+
trayAnimation[1] = animate(photoControls, {
145
bottom: '10px',
146
+
ease: 'outElastic',
147
opacity: 1,
148
scale: 1,
149
duration: 500,
150
})
151
}
152
153
+
let resizeImage = () => {
154
+
let dstWidth;
155
+
let dstHeight;
156
+
157
+
let imgHeight = imageViewer.naturalHeight;
158
+
let imgWidth = imageViewer.naturalWidth;
159
+
160
+
if(
161
+
imgWidth / window.innerWidth <
162
+
imgHeight / window.innerHeight
163
+
) {
164
+
dstWidth = imgWidth * (window.innerHeight / imgHeight);
165
+
dstHeight = window.innerHeight;
166
+
} else{
167
+
dstWidth = window.innerWidth;
168
+
dstHeight = imgHeight * (window.innerWidth / imgWidth);
169
+
}
170
+
171
+
imageViewer.style.width = dstWidth + 'px';
172
+
imageViewer.style.height = dstHeight + 'px';
173
+
}
174
+
175
onMount(() => {
176
+
utils.set(photoControls, { translateX: '-50%' });
177
+
utils.set(photoTrayCloseBtn, { translateX: '-50%', opacity: 0, scale: '0.75', bottom: '10px' });
178
+
utils.set(photoLayerManager, { translateY: '20px', opacity: 0, display: 'none' });
179
180
window.addEventListener('keyup', switchPhotoWithKey);
181
+
window.addEventListener('resize', () => resizeImage());
182
183
let contextMenuOpen = false;
184
window.CloseAllPopups.push(() => {
185
contextMenuOpen = false;
186
+
utils.set(viewerContextMenu, { opacity: 1, rotate: '0deg' });
187
188
+
animate(viewerContextMenu, {
189
opacity: 0,
190
easing: 'easeInOutQuad',
191
rotate: '30deg',
192
duration: 100,
193
+
onComplete: () => {
194
viewerContextMenu.style.display = 'none';
195
}
196
})
197
});
198
199
+
window.CloseAllPopups.push(() => {
200
+
layerManagerOpen = false;
201
+
if(layerManagerAnimation)layerManagerAnimation.cancel();
202
+
203
+
layerManagerAnimation = animate(photoLayerManager, { translateY: '20px', opacity: 0, duration: 100, onComplete: () => utils.set(photoLayerManager, { display: 'none' }) });
204
+
});
205
+
206
viewerContextMenuButtons[0].onclick = async () => {
207
window.CloseAllPopups.forEach(p => p());
208
// Context Menu -> Open file location
···
221
if(contextMenuOpen){
222
contextMenuOpen = false;
223
224
+
utils.set(viewerContextMenu, { opacity: 1, rotate: '0deg' });
225
226
+
animate(viewerContextMenu, {
227
opacity: 0,
228
rotate: '30deg',
229
easing: 'easeInOutQuad',
230
duration: 100,
231
+
onComplete: () => {
232
viewerContextMenu.style.display = 'none';
233
}
234
})
···
239
viewerContextMenu.style.left = e.clientX + 'px';
240
viewerContextMenu.style.display = 'block';
241
242
+
utils.set(viewerContextMenu, { opacity: 0, rotate: '-30deg' });
243
244
+
animate(viewerContextMenu, {
245
opacity: 1,
246
rotate: '0deg',
247
easing: 'easeInOutQuad',
···
260
imageViewer.src = (window.OS === "windows" ? "http://photo.localhost/" : 'photo://localhost/') + window.PhotoViewerManager.CurrentPhoto()?.path.split('\\').join('/') + "?full";
261
imageViewer.crossOrigin = 'anonymous';
262
263
+
imageViewer.onload = () => { resizeImage(); }
264
+
265
+
animate(imageViewer, {
266
opacity: 1,
267
delay: 50,
268
duration: 150,
···
322
let id = doc.getElementsByTagName('xmp:Author')[0]!.innerHTML;
323
324
authorProfileButton!.style.display = 'flex';
325
+
authorProfileButton!.onclick = () => {
326
+
console.log(id);
327
invoke('open_url', { url: 'https://vrchat.com/home/user/' + id });
328
+
}
329
} catch(e){
330
console.error(e);
331
console.log('Couldn\'t decode metadata')
···
338
}
339
} else{
340
trayButton.style.display = 'none';
341
+
authorProfileButton!.style.display = 'none';
342
+
343
closeTray();
344
}
345
}
···
350
if(photo && !isOpen){
351
viewer.style.display = 'flex';
352
353
+
animate(viewer, {
354
opacity: 1,
355
easing: 'easeInOutQuad',
356
duration: 150
357
});
358
359
+
utils.set('.prev-button', { left: '-50px', top: '50%' });
360
+
utils.set('.next-button', { right: '-50px', top: '50%' });
361
362
+
animate('.prev-button', { left: '0', easing: 'easeInOutQuad', duration: 100 });
363
+
animate('.next-button', { right: '0', easing: 'easeInOutQuad', duration: 100 });
364
365
window.CloseAllPopups.forEach(p => p());
366
} else if(!photo && isOpen){
367
+
animate(viewer, {
368
opacity: 0,
369
easing: 'easeInOutQuad',
370
duration: 150,
371
+
onComplete: () => {
372
viewer.style.display = 'none';
373
}
374
});
375
376
window.CloseAllPopups.forEach(p => p());
377
378
+
animate('.prev-button', { top: '75%', easing: 'easeInOutQuad', duration: 100 });
379
+
animate('.next-button', { top: '75%', easing: 'easeInOutQuad', duration: 100 });
380
}
381
382
isOpen = photo != null;
···
417
)
418
}
419
420
+
enum LayerManagerView{
421
+
DEFAULT,
422
+
PLAYER,
423
+
ENVIRONMENT
424
+
}
425
+
426
+
let layerManagerOpen = false;
427
+
let layerManagerAnimation: null | JSAnimation = null;
428
+
let layerManagerViewing = LayerManagerView.DEFAULT;
429
+
430
+
let toggleLayerManager = () => {
431
+
if(layerManagerOpen){
432
+
// Close
433
+
layerManagerOpen = false;
434
+
if(layerManagerAnimation)layerManagerAnimation.cancel();
435
+
436
+
layerManagerAnimation = animate(photoLayerManager, { translateY: '20px', opacity: 0, duration: 100, onComplete: () => utils.set(photoLayerManager, { display: 'none' }) });
437
+
} else{
438
+
// Open
439
+
layerManagerOpen = true;
440
+
if(layerManagerAnimation)layerManagerAnimation.cancel();
441
+
442
+
utils.set(photoLayerManager, { display: 'block' });
443
+
layerManagerAnimation = animate(photoLayerManager, { translateY: '0px', opacity: 1, duration: 100 });
444
+
}
445
+
}
446
+
447
return (
448
<div class="photo-viewer" ref={( el ) => viewer = el}>
449
+
<div class="photo-layer-manager" ref={photoLayerManager}>
450
+
<Show when={window.PhotoViewerManager.CurrentPhoto()?.playerLayer}>
451
+
<div class="photo-layer-manager-layer" onClick={() => {
452
+
let photo = window.PhotoViewerManager.CurrentPhoto()?.playerLayer;
453
+
if(!photo)return;
454
+
455
+
layerManagerViewing = LayerManagerView.PLAYER;
456
+
457
+
imageViewer.src = (window.OS === "windows" ? "http://photo.localhost/" : 'photo://localhost/') + photo.path.split('\\').join('/') + "?full";
458
+
imageViewer.crossOrigin = 'anonymous';
459
+
}}>Player Layer</div>
460
+
</Show>
461
+
<Show when={window.PhotoViewerManager.CurrentPhoto()?.environmentLayer}>
462
+
<div class="photo-layer-manager-layer" onClick={() => {
463
+
let photo = window.PhotoViewerManager.CurrentPhoto()?.environmentLayer;
464
+
if(!photo)return;
465
+
466
+
layerManagerViewing = LayerManagerView.ENVIRONMENT;
467
+
468
+
imageViewer.src = (window.OS === "windows" ? "http://photo.localhost/" : 'photo://localhost/') + photo.path.split('\\').join('/') + "?full";
469
+
imageViewer.crossOrigin = 'anonymous';
470
+
}}>Environment Layer</div>
471
+
</Show>
472
+
<div class="photo-layer-manager-layer" onClick={() => {
473
+
let photo = window.PhotoViewerManager.CurrentPhoto();
474
+
if(!photo)return;
475
+
476
+
layerManagerViewing = LayerManagerView.DEFAULT;
477
+
478
+
imageViewer.src = (window.OS === "windows" ? "http://photo.localhost/" : 'photo://localhost/') + photo.path.split('\\').join('/') + "?full";
479
+
imageViewer.crossOrigin = 'anonymous';
480
+
}}>Default Layer</div>
481
+
</div>
482
+
483
<div class="photo-context-menu" ref={( el ) => viewerContextMenu = el}>
484
<div ref={( el ) => viewerContextMenuButtons.push(el)}>Open file location</div>
485
<div ref={( el ) => viewerContextMenuButtons.push(el)}>Copy image</div>
486
</div>
487
488
<div class="viewer-close viewer-button" onClick={() => window.PhotoViewerManager.Close()}>
489
+
<div class="icon-small" style={{ width: '10px', margin: '0' }}>
490
<img draggable="false" src="/icon/x-solid.svg"></img>
491
</div>
492
</div>
493
+
494
+
<div style={{
495
+
width: '100%',
496
+
height: '100%',
497
+
display: 'flex',
498
+
"justify-content": 'center',
499
+
'align-items': 'center'
500
+
}}>
501
+
<img class="image-container" ref={( el ) => imageViewer = el} />
502
+
</div>
503
504
<div class="prev-button" onClick={() => {
505
window.CloseAllPopups.forEach(p => p());
506
window.PhotoViewerManager.PreviousPhoto();
507
}}>
508
+
<div class="icon-small" style={{ width: '15px', margin: '0' }}>
509
<img draggable="false" src="/icon/arrow-left-solid.svg"></img>
510
</div>
511
</div>
···
514
window.CloseAllPopups.forEach(p => p());
515
window.PhotoViewerManager.NextPhoto();
516
}}>
517
+
<div class="icon-small" style={{ width: '15px', margin: '0' }}>
518
<img draggable="false" src="/icon/arrow-right-solid.svg"></img>
519
</div>
520
</div>
···
525
onClick={() => closeTray()}
526
ref={( el ) => photoTrayCloseBtn = el}
527
>
528
+
<div class="icon-small" style={{ width: '12px', margin: '0' }}>
529
<img draggable="false" src="/icon/angle-down-solid.svg"></img>
530
</div>
531
</div>
532
533
<div class="control-buttons" ref={( el ) => photoControls = el}>
534
<div class="viewer-button"
535
+
onMouseOver={( el ) => animate(el.currentTarget, { width: '40px', height: '40px', 'margin-left': '15px', 'margin-right': '15px', 'margin-top': '-10px' })}
536
+
onMouseLeave={( el ) => animate(el.currentTarget, { width: '30px', height: '30px', 'margin-left': '20px', 'margin-right': '20px', 'margin-top': '0px' })}
537
onClick={() => { copyImage(); }}>
538
+
<div class="icon-small" style={{ width: '12px', margin: '0' }}>
539
<img draggable="false" src="/icon/copy-solid.svg"></img>
540
</div>
541
</div>
542
<div class="viewer-button" style={{ width: '50px' }}
543
+
onMouseOver={( el ) => animate(el.currentTarget, { width: '70px', height: '30px', 'margin-left': '10px', 'margin-right': '10px' })}
544
+
onMouseLeave={( el ) => animate(el.currentTarget, { width: '50px', height: '30px', 'margin-left': '20px', 'margin-right': '20px' })}
545
ref={( el ) => trayButton = el}
546
onClick={() => openTray()}
547
>
548
+
<div class="icon-small" style={{ width: '12px', margin: '0' }}>
549
<img draggable="false" src="/icon/angle-up-solid.svg"></img>
550
</div>
551
</div>
552
553
<div class="viewer-button"
554
ref={authorProfileButton!}
555
+
onMouseOver={( el ) => animate(el.currentTarget, { width: '40px', height: '40px', 'margin-left': '15px', 'margin-right': '15px', 'margin-top': '-10px' })}
556
+
onMouseLeave={( el ) => animate(el.currentTarget, { width: '30px', height: '30px', 'margin-left': '20px', 'margin-right': '20px', 'margin-top': '0px' })}
557
>
558
+
<div class="icon-small" style={{ width: '12px', margin: '0' }}>
559
<img draggable="false" src="/icon/user-solid.svg"></img>
560
</div>
561
</div>
562
563
+
<Show when={window.PhotoViewerManager.CurrentPhoto()?.isMultiLayer}>
564
+
<div class="viewer-button"
565
+
onClick={toggleLayerManager}
566
+
onMouseOver={( el ) => animate(el.currentTarget, { width: '40px', height: '40px', 'margin-left': '15px', 'margin-right': '15px', 'margin-top': '-10px' })}
567
+
onMouseLeave={( el ) => animate(el.currentTarget, { width: '30px', height: '30px', 'margin-left': '20px', 'margin-right': '20px', 'margin-top': '0px' })}
568
+
>
569
+
<div class="icon-small" style={{ width: '17px', margin: '0' }}>
570
+
<img draggable="false" src="/icon/layer-group-solid-full.svg"></img>
571
+
</div>
572
+
</div>
573
+
</Show>
574
+
575
<div class="viewer-button"
576
+
onMouseOver={( el ) => animate(el.currentTarget, { width: '40px', height: '40px', 'margin-left': '15px', 'margin-right': '15px', 'margin-top': '-10px' })}
577
+
onMouseLeave={( el ) => animate(el.currentTarget, { width: '30px', height: '30px', 'margin-left': '20px', 'margin-right': '20px', 'margin-top': '0px' })}
578
+
onClick={() => window.ConfirmationBoxManager.SetConfirmationBox("Are you sure you want to delete this photo?", async () => {
579
+
let photo = window.PhotoViewerManager.CurrentPhoto();
580
+
if(!photo)return;
581
+
582
+
invoke("delete_photo", { path: photo.path });
583
+
584
+
if(photo.playerLayer)invoke("delete_photo", { path: photo.playerLayer.path });
585
+
if(photo.environmentLayer)invoke("delete_photo", { path: photo.environmentLayer.path });
586
})}>
587
+
<div class="icon-small" style={{ width: '12px', margin: '0' }}>
588
<img draggable="false" src="/icon/trash-solid.svg"></img>
589
</div>
590
</div>
+191
-208
src/Components/SettingsMenu.tsx
+191
-208
src/Components/SettingsMenu.tsx
···
1
import { onCleanup, onMount, Show } from "solid-js";
2
import { bytesToFormatted } from "../utils";
3
import { invoke } from '@tauri-apps/api/core';
4
-
import anime from "animejs";
5
import { ViewState } from "./Managers/ViewManager";
6
7
let SettingsMenu = () => {
8
-
let sliderBar: HTMLElement;
9
-
let settingsContainer: HTMLElement;
10
-
let currentButton = 0;
11
-
let lastClickedButton = -1;
12
let finalPathConfirm: HTMLElement;
13
let finalPathInput: HTMLElement;
14
let finalPathData: string;
···
17
let closeWithKey = ( e: KeyboardEvent ) => {
18
if(e.key === 'Escape'){
19
window.ViewManager.ChangeState(ViewState.PHOTO_LIST);
20
-
anime({
21
-
targets: '.settings',
22
opacity: 0,
23
translateX: '500px',
24
easing: 'easeInOutQuad',
25
duration: 250,
26
-
complete: () => {
27
-
anime.set('.settings', { display: 'none' });
28
}
29
})
30
}
···
34
if(await invoke('get_config_value_string', { key: 'transparent' }) === "true"){
35
invoke('set_config_value_string', { key: 'transparent', value: 'true' });
36
37
-
anime({ targets: document.body, background: 'rgba(0, 0, 0, 0.5)', easing: 'linear', duration: 100 });
38
-
anime({ targets: '.settings', background: 'rgba(0, 0, 0, 0.5)', easing: 'linear', duration: 100 });
39
} else{
40
invoke('set_config_value_string', { key: 'transparent', value: 'false' });
41
42
-
anime({ targets: document.body, background: 'rgba(0, 0, 0, 1)', easing: 'linear', duration: 100 });
43
-
anime({ targets: '.settings', background: 'rgba(0, 0, 0, 0)', easing: 'linear', duration: 100 });
44
}
45
46
-
let sliderMouseDown = false;
47
-
let mouseStartX = 0;
48
49
-
let width = window.innerWidth;
50
-
let buttons = [ 370, 680 ];
51
52
-
let sliderPos = width / 2 - buttons[currentButton];
53
-
let sliderScale = width / (buttons[1] - buttons[0]);
54
55
-
let render = () => {
56
-
requestAnimationFrame(render);
57
58
-
if(!sliderMouseDown){
59
-
sliderPos = sliderPos + (width / 2 - buttons[currentButton] - sliderPos) * 0.25;
60
-
anime.set(sliderBar, { translateX: sliderPos });
61
62
-
settingsContainer.style.left = (sliderPos - (width / 2 - buttons[0])) * sliderScale + 'px';
63
-
}
64
-
}
65
66
-
render();
67
-
anime.set(sliderBar, { translateX: sliderPos });
68
69
-
sliderBar.addEventListener('touchstart', ( e: TouchEvent ) => {
70
-
sliderMouseDown = true;
71
-
mouseStartX = e.touches[0].clientX;
72
-
})
73
74
-
window.addEventListener('touchmove', ( e: TouchEvent ) => {
75
-
if(sliderMouseDown){
76
-
anime.set(sliderBar, { translateX: sliderPos - (mouseStartX - e.touches[0].clientX) });
77
-
settingsContainer.style.left = (sliderPos - (mouseStartX - e.touches[0].clientX) - (width / 2 - buttons[0])) * sliderScale + 'px';
78
-
}
79
-
})
80
81
window.addEventListener('keyup', closeWithKey);
82
83
-
window.addEventListener('touchend', ( e: TouchEvent ) => {
84
-
if(sliderMouseDown){
85
-
sliderPos = sliderPos - (mouseStartX - e.touches[0].clientX);
86
87
-
anime.set(sliderBar, { translateX: sliderPos - (mouseStartX - e.touches[0].clientX) });
88
-
sliderMouseDown = false;
89
90
-
if(Math.abs(mouseStartX - e.touches[0].clientX) > 50){
91
-
let shortestDistance = 0;
92
-
let selectedButton = -1;
93
94
-
buttons.forEach(( pos, indx ) => {
95
-
let dis = Math.abs(sliderPos - (width / 2 - pos));
96
97
-
if(selectedButton === -1){
98
-
shortestDistance = dis;
99
-
selectedButton = indx;
100
-
} else if(shortestDistance > dis){
101
-
shortestDistance = dis;
102
-
selectedButton = indx;
103
-
}
104
-
})
105
106
-
currentButton = selectedButton;
107
-
} else if(lastClickedButton != -1){
108
-
currentButton = lastClickedButton;
109
-
lastClickedButton = -1
110
-
}
111
-
}
112
-
})
113
114
-
sliderBar.addEventListener('mousedown', ( e: MouseEvent ) => {
115
-
sliderMouseDown = true;
116
-
mouseStartX = e.clientX;
117
-
});
118
119
-
window.addEventListener('mousemove', ( e: MouseEvent ) => {
120
-
if(sliderMouseDown){
121
-
anime.set(sliderBar, { translateX: sliderPos - (mouseStartX - e.clientX) });
122
-
settingsContainer.style.left = sliderPos - (mouseStartX - e.clientX) + 'px';
123
-
settingsContainer.style.left = (sliderPos - (mouseStartX - e.clientX) - (width / 2 - buttons[0])) * sliderScale + 'px';
124
-
}
125
-
})
126
127
-
window.addEventListener('mouseup', ( e: MouseEvent ) => {
128
-
if(sliderMouseDown){
129
-
sliderPos = sliderPos - (mouseStartX - e.clientX);
130
131
-
anime.set(sliderBar, { translateX: sliderPos - (mouseStartX - e.clientX) });
132
-
sliderMouseDown = false;
133
134
-
if(Math.abs(mouseStartX - e.clientX) > 50){
135
-
let shortestDistance = 0;
136
-
let selectedButton = -1;
137
138
-
buttons.forEach(( pos, indx ) => {
139
-
let dis = Math.abs(sliderPos - (width / 2 - pos));
140
141
-
if(selectedButton === -1){
142
-
shortestDistance = dis;
143
-
selectedButton = indx;
144
-
} else if(shortestDistance > dis){
145
-
shortestDistance = dis;
146
-
selectedButton = indx;
147
-
}
148
-
})
149
150
-
currentButton = selectedButton;
151
-
} else if(lastClickedButton != -1){
152
-
currentButton = lastClickedButton;
153
-
lastClickedButton = -1
154
-
}
155
-
}
156
-
})
157
158
-
window.addEventListener('resize', () => {
159
-
width = window.innerWidth;
160
-
sliderPos = width / 2 - buttons[currentButton];
161
-
sliderScale = width / (buttons[1] - buttons[0]);
162
163
-
anime.set(sliderBar, { translateX: sliderPos });
164
-
})
165
166
-
sliderBar.addEventListener('wheel', ( e: WheelEvent ) => {
167
-
if(e.deltaY > 0){
168
-
if(buttons[currentButton + 1])
169
-
currentButton++;
170
-
} else{
171
-
if(buttons[currentButton - 1])
172
-
currentButton--;
173
-
}
174
-
})
175
})
176
177
onCleanup(() => {
···
180
181
return (
182
<div class="settings">
183
-
<div class="settings-container" ref={( el ) => settingsContainer = el}>
184
<div class="settings-block">
185
<h1>Storage Settings</h1>
186
<p>{ window.PhotoManager.PhotoCount() } Photos ({ bytesToFormatted(window.PhotoManager.PhotoSize(), 0) })</p>
···
199
200
<label for="start-in-bg-check">
201
<div class="selection-box">
202
-
<div class="icon" style={{ width: '10px', margin: '0', display: 'inline-flex' }}>
203
<img draggable="false" width="10" height="10" src="/icon/check-solid.svg"></img>
204
</div>
205
</div>
···
207
</div>
208
209
<div class="selector">
210
-
<input type="checkbox" id="start-with-win-check" ref={async ( el ) => {
211
-
el.checked = await invoke('get_config_value_string', { key: 'start-with-win' }) === "true" ? true : false;
212
}} onChange={( el ) => {
213
if(el.target.checked){
214
-
invoke('set_config_value_string', { key: 'start-with-win', value: 'true' });
215
-
invoke("start_with_win", { start: true });
216
} else{
217
-
invoke('set_config_value_string', { key: 'start-with-win', value: 'false' });
218
-
invoke("start_with_win", { start: false });
219
}
220
}} />
221
-
Start with windows
222
223
-
<label for="start-with-win-check">
224
<div class="selection-box">
225
-
<div class="icon" style={{ width: '10px', margin: '0', display: 'inline-flex' }}>
226
<img draggable="false" width="10" height="10" src="/icon/check-solid.svg"></img>
227
</div>
228
</div>
229
</label>
230
</div>
231
232
<div class="selector">
233
<input type="checkbox" id="transparent-check" ref={async ( el ) => {
234
el.checked = await invoke('get_config_value_string', { key: 'transparent' }) === "true" ? true : false;
···
236
if(el.target.checked){
237
invoke('set_config_value_string', { key: 'transparent', value: 'true' });
238
239
-
anime({ targets: document.body, background: 'rgba(0, 0, 0, 0.5)', easing: 'linear', duration: 100 });
240
-
anime({ targets: '.settings', background: 'rgba(0, 0, 0, 0.5)', easing: 'linear', duration: 100 });
241
} else{
242
invoke('set_config_value_string', { key: 'transparent', value: 'false' });
243
244
-
anime({ targets: document.body, background: 'rgba(0, 0, 0, 1)', easing: 'linear', duration: 100 });
245
-
anime({ targets: '.settings', background: 'rgba(0, 0, 0, 0)', easing: 'linear', duration: 100 });
246
}
247
}} />
248
Window Transparency
249
250
<label for="transparent-check">
251
<div class="selection-box">
252
-
<div class="icon" style={{ width: '10px', margin: '0', display: 'inline-flex' }}>
253
<img draggable="false" width="10" height="10" src="/icon/check-solid.svg"></img>
254
</div>
255
</div>
···
274
</span>
275
<span style={{ display: 'none' }} ref={( el ) => finalPathConfirm = el}>
276
<span class="path" style={{ color: 'green' }} onClick={async () => {
277
-
finalPathPreviousData = finalPathData;
278
-
finalPathConfirm.style.display = 'none';
279
280
-
await invoke('change_final_path', { newPath: finalPathData });
281
-
await invoke('relaunch');
282
283
-
anime({
284
-
targets: '.settings',
285
-
opacity: 0,
286
-
translateX: '500px',
287
-
easing: 'easeInOutQuad',
288
-
duration: 250,
289
-
complete: () => {
290
-
anime.set('.settings', { display: 'none' });
291
-
}
292
-
})
293
294
-
window.location.reload();
295
}}>
296
Save
297
</span>
···
314
<br />
315
<p>VRChat Photo Manager supports photos with extra metadata provided by VRCX.</p>
316
</div>
317
-
<div class="settings-block">
318
-
<h1>Account Settings</h1>
319
-
320
-
<Show when={window.AccountManager.hasAccount()} fallback={
321
-
<div>
322
-
You aren't logged in. To enable cloud sync and sharing features you need to login to your PhazeID.<br /><br />
323
-
<div class="button" onClick={() => {
324
-
window.AccountManager.login();
325
-
}}>Login</div>
326
-
</div>
327
-
}>
328
-
<div class="account-profile">
329
-
<div class="account-pfp" style={{ background: `url('https://cdn.phazed.xyz/id/avatars/${window.AccountManager.Profile()?.id}/${window.AccountManager.Profile()?.avatar}.png')` }}></div>
330
-
<div class="account-desc">
331
-
<div class="reload-photos" onClick={() => window.AccountManager.Refresh()} style={{ opacity: 1 }}>
332
-
<div class="icon" style={{ width: '17px' }}>
333
-
<img draggable="false" width="17" height="17" src="/icon/arrows-rotate-solid.svg"></img>
334
-
</div>
335
-
</div>
336
-
<h2>{ window.AccountManager.Profile()?.username }</h2>
337
-
338
-
<Show when={window.AccountManager.Storage()?.isSyncing}>
339
-
<div class="storage-bar">
340
-
<div class="storage-bar-inner" style={{ width: ((window.AccountManager.Storage()!.used / window.AccountManager.Storage()!.total) * 100) + '%' }}></div>
341
-
</div>
342
-
343
-
<div>
344
-
{ bytesToFormatted(window.AccountManager.Storage()!.used, 0) } / { bytesToFormatted(window.AccountManager.Storage()!.total, 0) }<br /><br />
345
-
346
-
<span style={{ 'font-size': '10px' }}>Server Version: { window.AccountManager.Profile()?.serverVersion }</span>
347
-
</div>
348
-
</Show>
349
-
</div>
350
-
</div>
351
-
352
-
<div class="account-notice">To enable cloud storage or get more storage please contact "_phaz" on discord</div>
353
-
354
-
<div class="account-notice" style={{ display: 'flex' }}>
355
-
<Show when={false} fallback={ "We are deleting your photos, please leave this window open while we delete them." }>
356
-
<div class="button-danger" onClick={() => window.ConfirmationBoxManager.SetConfirmationBox("You are about to delete all your photos from the cloud, and disable syncing. This will NOT delete any local files.", async () => {
357
-
// TODO: Rework all of this
358
-
359
-
// props.setStorageInfo({ used: 0, storage: 0, sync: false });
360
-
// setDeletingPhotos(true);
361
-
362
-
// fetch('https://photos-cdn.phazed.xyz/api/v1/allphotos', {
363
-
// method: 'DELETE',
364
-
// headers: { auth: (await invoke('get_config_value_string', { key: 'token' }))! }
365
-
// })
366
-
// .then(data => data.json())
367
-
// .then(data => {
368
-
// console.log(data);
369
-
// setDeletingPhotos(false);
370
-
// })
371
-
})}>Delete All Photos.</div> <div>This deletes all photos stored in the cloud and disables syncing.</div>
372
-
</Show>
373
-
</div>
374
-
</Show>
375
-
</div>
376
</div>
377
378
-
<div class="slide-bar-tri"></div>
379
<div class="slide-bar">
380
<div class="inner-slide-bar" ref={( el ) => sliderBar = el}>
381
<div class="slider-dot"></div>
···
386
<div class="slider-text" onMouseDown={() => lastClickedButton = 0}>Program Settings</div>
387
<div class="slider-dot"></div>
388
<div class="slider-dot"></div>
389
-
<div class="slider-text" onMouseDown={() => lastClickedButton = 1}>Account Settings</div>
390
<div class="slider-dot"></div>
391
<div class="slider-dot"></div>
392
<div class="slider-dot"></div>
393
<div class="slider-dot"></div>
394
<div class="slider-dot"></div>
395
</div>
396
-
</div>
397
</div>
398
)
399
}
···
1
import { onCleanup, onMount, Show } from "solid-js";
2
import { bytesToFormatted } from "../utils";
3
import { invoke } from '@tauri-apps/api/core';
4
import { ViewState } from "./Managers/ViewManager";
5
+
import { animate, utils } from "animejs";
6
7
let SettingsMenu = () => {
8
+
// let sliderBar: HTMLElement;
9
+
// let settingsContainer: HTMLElement;
10
+
// let currentButton = 0;
11
+
// let lastClickedButton = -1;
12
let finalPathConfirm: HTMLElement;
13
let finalPathInput: HTMLElement;
14
let finalPathData: string;
···
17
let closeWithKey = ( e: KeyboardEvent ) => {
18
if(e.key === 'Escape'){
19
window.ViewManager.ChangeState(ViewState.PHOTO_LIST);
20
+
console.log('h');
21
+
animate('.settings',{
22
opacity: 0,
23
translateX: '500px',
24
easing: 'easeInOutQuad',
25
duration: 250,
26
+
onComplete: () => {
27
+
console.log('h');
28
+
utils.set('.settings', { display: 'none' });
29
}
30
})
31
}
···
35
if(await invoke('get_config_value_string', { key: 'transparent' }) === "true"){
36
invoke('set_config_value_string', { key: 'transparent', value: 'true' });
37
38
+
animate(document.body, { background: 'rgba(0, 0, 0, 0.5)', easing: 'linear', duration: 100 });
39
+
animate('.settings', { background: 'rgba(0, 0, 0, 0.5)', easing: 'linear', duration: 100 });
40
} else{
41
invoke('set_config_value_string', { key: 'transparent', value: 'false' });
42
43
+
animate(document.body, { background: 'rgba(0, 0, 0, 1)', easing: 'linear', duration: 100 });
44
+
animate('.settings', { background: 'rgba(0, 0, 0, 0)', easing: 'linear', duration: 100 });
45
}
46
47
+
// let sliderMouseDown = false;
48
+
// let mouseStartX = 0;
49
50
+
// let width = window.innerWidth;
51
+
// let buttons = [ 370, 680 ];
52
53
+
// let sliderPos = width / 2 - buttons[currentButton];
54
+
// let sliderScale = width / (buttons[1] - buttons[0]);
55
56
+
// let render = () => {
57
+
// requestAnimationFrame(render);
58
59
+
// if(!sliderMouseDown){
60
+
// sliderPos = sliderPos + (width / 2 - buttons[currentButton] - sliderPos) * 0.25;
61
+
// utils.set(sliderBar, { translateX: sliderPos });
62
63
+
// settingsContainer.style.left = (sliderPos - (width / 2 - buttons[0])) * sliderScale + 'px';
64
+
// }
65
+
// }
66
67
+
// render();
68
+
// utils.set(sliderBar, { translateX: sliderPos });
69
70
+
// sliderBar.addEventListener('touchstart', ( e: TouchEvent ) => {
71
+
// sliderMouseDown = true;
72
+
// mouseStartX = e.touches[0].clientX;
73
+
// })
74
75
+
// window.addEventListener('touchmove', ( e: TouchEvent ) => {
76
+
// if(sliderMouseDown){
77
+
// utils.set(sliderBar, { translateX: sliderPos - (mouseStartX - e.touches[0].clientX) });
78
+
// settingsContainer.style.left = (sliderPos - (mouseStartX - e.touches[0].clientX) - (width / 2 - buttons[0])) * sliderScale + 'px';
79
+
// }
80
+
// })
81
82
window.addEventListener('keyup', closeWithKey);
83
84
+
// window.addEventListener('touchend', ( e: TouchEvent ) => {
85
+
// if(sliderMouseDown){
86
+
// sliderPos = sliderPos - (mouseStartX - e.touches[0].clientX);
87
88
+
// utils.set(sliderBar, { translateX: sliderPos - (mouseStartX - e.touches[0].clientX) });
89
+
// sliderMouseDown = false;
90
91
+
// if(Math.abs(mouseStartX - e.touches[0].clientX) > 50){
92
+
// let shortestDistance = 0;
93
+
// let selectedButton = -1;
94
95
+
// buttons.forEach(( pos, indx ) => {
96
+
// let dis = Math.abs(sliderPos - (width / 2 - pos));
97
98
+
// if(selectedButton === -1){
99
+
// shortestDistance = dis;
100
+
// selectedButton = indx;
101
+
// } else if(shortestDistance > dis){
102
+
// shortestDistance = dis;
103
+
// selectedButton = indx;
104
+
// }
105
+
// })
106
107
+
// currentButton = selectedButton;
108
+
// } else if(lastClickedButton != -1){
109
+
// currentButton = lastClickedButton;
110
+
// lastClickedButton = -1
111
+
// }
112
+
// }
113
+
// })
114
115
+
// sliderBar.addEventListener('mousedown', ( e: MouseEvent ) => {
116
+
// sliderMouseDown = true;
117
+
// mouseStartX = e.clientX;
118
+
// });
119
120
+
// window.addEventListener('mousemove', ( e: MouseEvent ) => {
121
+
// if(sliderMouseDown){
122
+
// utils.set(sliderBar, { translateX: sliderPos - (mouseStartX - e.clientX) });
123
+
// settingsContainer.style.left = sliderPos - (mouseStartX - e.clientX) + 'px';
124
+
// settingsContainer.style.left = (sliderPos - (mouseStartX - e.clientX) - (width / 2 - buttons[0])) * sliderScale + 'px';
125
+
// }
126
+
// })
127
128
+
// window.addEventListener('mouseup', ( e: MouseEvent ) => {
129
+
// if(sliderMouseDown){
130
+
// sliderPos = sliderPos - (mouseStartX - e.clientX);
131
132
+
// utils.set(sliderBar, { translateX: sliderPos - (mouseStartX - e.clientX) });
133
+
// sliderMouseDown = false;
134
135
+
// if(Math.abs(mouseStartX - e.clientX) > 50){
136
+
// let shortestDistance = 0;
137
+
// let selectedButton = -1;
138
139
+
// buttons.forEach(( pos, indx ) => {
140
+
// let dis = Math.abs(sliderPos - (width / 2 - pos));
141
142
+
// if(selectedButton === -1){
143
+
// shortestDistance = dis;
144
+
// selectedButton = indx;
145
+
// } else if(shortestDistance > dis){
146
+
// shortestDistance = dis;
147
+
// selectedButton = indx;
148
+
// }
149
+
// })
150
151
+
// currentButton = selectedButton;
152
+
// } else if(lastClickedButton != -1){
153
+
// currentButton = lastClickedButton;
154
+
// lastClickedButton = -1
155
+
// }
156
+
// }
157
+
// })
158
159
+
// window.addEventListener('resize', () => {
160
+
// width = window.innerWidth;
161
+
// sliderPos = width / 2 - buttons[currentButton];
162
+
// sliderScale = width / (buttons[1] - buttons[0]);
163
164
+
// utils.set(sliderBar, { translateX: sliderPos });
165
+
// })
166
167
+
// sliderBar.addEventListener('wheel', ( e: WheelEvent ) => {
168
+
// if(e.deltaY > 0){
169
+
// if(buttons[currentButton + 1])
170
+
// currentButton++;
171
+
// } else{
172
+
// if(buttons[currentButton - 1])
173
+
// currentButton--;
174
+
// }
175
+
// })
176
})
177
178
onCleanup(() => {
···
181
182
return (
183
<div class="settings">
184
+
<div class="settings-close" onClick={() => {
185
+
window.ViewManager.ChangeState(ViewState.PHOTO_LIST);
186
+
animate('.settings',
187
+
{
188
+
opacity: 0,
189
+
translateX: '500px',
190
+
easing: 'easeInOutQuad',
191
+
duration: 250,
192
+
onComplete: () => {
193
+
utils.set('.settings', { display: 'none' });
194
+
}
195
+
})
196
+
}}>
197
+
<div class="icon"><img draggable="false" src="/icon/x-solid.svg"></img></div>
198
+
</div>
199
+
{/* <div class="settings-container" ref={( el ) => settingsContainer = el}> */}
200
+
<div class="settings-container">
201
<div class="settings-block">
202
<h1>Storage Settings</h1>
203
<p>{ window.PhotoManager.PhotoCount() } Photos ({ bytesToFormatted(window.PhotoManager.PhotoSize(), 0) })</p>
···
216
217
<label for="start-in-bg-check">
218
<div class="selection-box">
219
+
<div class="icon-small" style={{ margin: '0', display: 'inline-flex' }}>
220
<img draggable="false" width="10" height="10" src="/icon/check-solid.svg"></img>
221
</div>
222
</div>
···
224
</div>
225
226
<div class="selector">
227
+
<input type="checkbox" id="close-to-tray-check" ref={async ( el ) => {
228
+
el.checked = await invoke('get_config_value_string', { key: 'close-to-tray' }) === "true" ? true : false;
229
}} onChange={( el ) => {
230
if(el.target.checked){
231
+
invoke('set_config_value_string', { key: 'close-to-tray', value: 'true' });
232
} else{
233
+
invoke('set_config_value_string', { key: 'close-to-tray', value: 'false' });
234
}
235
}} />
236
+
Close to tray
237
238
+
<label for="close-to-tray-check">
239
<div class="selection-box">
240
+
<div class="icon-small" style={{ margin: '0', display: 'inline-flex' }}>
241
<img draggable="false" width="10" height="10" src="/icon/check-solid.svg"></img>
242
</div>
243
</div>
244
</label>
245
</div>
246
247
+
<Show when={window.OS === 'windows'}>
248
+
<div class="selector">
249
+
<input type="checkbox" id="start-with-win-check" ref={async ( el ) => {
250
+
el.checked = await invoke('get_config_value_string', { key: 'start-with-win' }) === "true" ? true : false;
251
+
}} onChange={( el ) => {
252
+
if(el.target.checked){
253
+
invoke('set_config_value_string', { key: 'start-with-win', value: 'true' });
254
+
invoke("start_with_win", { start: true });
255
+
} else{
256
+
invoke('set_config_value_string', { key: 'start-with-win', value: 'false' });
257
+
invoke("start_with_win", { start: false });
258
+
}
259
+
}} />
260
+
Start with windows
261
+
262
+
<label for="start-with-win-check">
263
+
<div class="selection-box">
264
+
<div class="icon-small" style={{ margin: '0', display: 'inline-flex' }}>
265
+
<img draggable="false" width="10" height="10" src="/icon/check-solid.svg"></img>
266
+
</div>
267
+
</div>
268
+
</label>
269
+
</div>
270
+
</Show>
271
+
272
<div class="selector">
273
<input type="checkbox" id="transparent-check" ref={async ( el ) => {
274
el.checked = await invoke('get_config_value_string', { key: 'transparent' }) === "true" ? true : false;
···
276
if(el.target.checked){
277
invoke('set_config_value_string', { key: 'transparent', value: 'true' });
278
279
+
animate(document.body, { background: 'rgba(0, 0, 0, 0.5)', easing: 'linear', duration: 100 });
280
+
animate('.settings', { background: 'rgba(0, 0, 0, 0.5)', easing: 'linear', duration: 100 });
281
} else{
282
invoke('set_config_value_string', { key: 'transparent', value: 'false' });
283
284
+
animate(document.body, { background: 'rgba(0, 0, 0, 1)', easing: 'linear', duration: 100 });
285
+
animate('.settings', { background: 'rgba(0, 0, 0, 0)', easing: 'linear', duration: 100 });
286
}
287
}} />
288
Window Transparency
289
290
<label for="transparent-check">
291
<div class="selection-box">
292
+
<div class="icon-small" style={{ margin: '0', display: 'inline-flex' }}>
293
<img draggable="false" width="10" height="10" src="/icon/check-solid.svg"></img>
294
</div>
295
</div>
···
314
</span>
315
<span style={{ display: 'none' }} ref={( el ) => finalPathConfirm = el}>
316
<span class="path" style={{ color: 'green' }} onClick={async () => {
317
+
let changed = await invoke('change_final_path', { newPath: finalPathData });
318
319
+
if(changed){
320
+
finalPathPreviousData = finalPathData;
321
+
finalPathConfirm.style.display = 'none';
322
323
+
window.location.reload();
324
325
+
animate('.settings', {
326
+
opacity: 0,
327
+
translateX: '500px',
328
+
easing: 'easeInOutQuad',
329
+
duration: 250,
330
+
onComplete: () => {
331
+
utils.set('.settings', { display: 'none' });
332
+
}
333
+
})
334
+
335
+
window.location.reload();
336
+
}
337
}}>
338
Save
339
</span>
···
356
<br />
357
<p>VRChat Photo Manager supports photos with extra metadata provided by VRCX.</p>
358
</div>
359
</div>
360
361
+
{/* <div class="slide-bar-tri"></div>
362
<div class="slide-bar">
363
<div class="inner-slide-bar" ref={( el ) => sliderBar = el}>
364
<div class="slider-dot"></div>
···
369
<div class="slider-text" onMouseDown={() => lastClickedButton = 0}>Program Settings</div>
370
<div class="slider-dot"></div>
371
<div class="slider-dot"></div>
372
+
<div class="slider-text" onMouseDown={() => lastClickedButton = 1}>Sync Settings</div>
373
<div class="slider-dot"></div>
374
<div class="slider-dot"></div>
375
<div class="slider-dot"></div>
376
<div class="slider-dot"></div>
377
<div class="slider-dot"></div>
378
</div>
379
+
</div> */}
380
</div>
381
)
382
}
+43
-16
src/Components/Structs/Photo.ts
+43
-16
src/Components/Structs/Photo.ts
···
6
export class Photo{
7
path: string;
8
loaded: boolean = false;
9
loading: boolean = false;
10
metaLoaded: boolean = false;
11
image?: HTMLCanvasElement;
···
14
height?: number;
15
loadingRotate: number = 0;
16
metadata: any;
17
18
frames: number = 0;
19
shown: boolean = false;
···
29
legacy: boolean = false;
30
index: number = 0;
31
32
public onMetaLoaded: () => void = () => {};
33
34
constructor( path: string, isLegacy: boolean = false, i: number ){
···
37
this.index = i;
38
39
let split = this.path.split('_');
40
41
if(this.legacy)
42
this.dateString = split[2];
43
else
44
this.dateString = split[1];
45
46
let splitDateString = this.dateString.split('-');
47
48
this.date = new Date();
49
···
51
this.date.setMonth(parseInt(splitDateString[1]));
52
this.date.setDate(parseInt(splitDateString[2]));
53
54
-
let resSplit = split[3].split('x');
55
56
-
let width = parseInt(resSplit[0]);
57
-
let height = parseInt(resSplit[1]);
58
59
-
if(!isNaN(width) || !isNaN(height)){
60
-
this.width = width;
61
-
this.height = height;
62
-
63
-
let scale = Vars.PHOTO_HEIGHT / this.height;
64
-
65
-
this.scaledWidth = this.width * scale;
66
-
this.scaledHeight = Vars.PHOTO_HEIGHT;
67
-
}
68
}
69
70
loadMeta(){
71
invoke('load_photo_meta', { photo: this.path });
72
}
73
74
loadImage(){
75
-
if(this.loading || this.loaded || imagesLoading >= Vars.MAX_IMAGE_LOAD)return;
76
-
77
-
// this.loadMeta();
78
if(!this.metaLoaded)return this.loadMeta();
79
80
this.loading = true;
81
-
82
imagesLoading++;
83
84
this.image = document.createElement('canvas');
···
98
this.loading = false;
99
100
imagesLoading--;
101
}
102
}
103
}
···
6
export class Photo{
7
path: string;
8
loaded: boolean = false;
9
+
loadingMeta: boolean = false;
10
loading: boolean = false;
11
metaLoaded: boolean = false;
12
image?: HTMLCanvasElement;
···
15
height?: number;
16
loadingRotate: number = 0;
17
metadata: any;
18
+
19
+
error: boolean = false;
20
21
frames: number = 0;
22
shown: boolean = false;
···
32
legacy: boolean = false;
33
index: number = 0;
34
35
+
splitPath: string[];
36
+
37
+
playerLayer: Photo | null = null;
38
+
environmentLayer: Photo | null = null;
39
+
isMultiLayer = false;
40
+
41
public onMetaLoaded: () => void = () => {};
42
43
constructor( path: string, isLegacy: boolean = false, i: number ){
···
46
this.index = i;
47
48
let split = this.path.split('_');
49
+
this.splitPath = split;
50
51
if(this.legacy)
52
this.dateString = split[2];
53
else
54
this.dateString = split[1];
55
56
+
let timeString;
57
+
if(this.legacy)
58
+
timeString = split[3];
59
+
else
60
+
timeString = split[2];
61
+
62
let splitDateString = this.dateString.split('-');
63
+
let splitTimeString = timeString.split('-');
64
65
this.date = new Date();
66
···
68
this.date.setMonth(parseInt(splitDateString[1]));
69
this.date.setDate(parseInt(splitDateString[2]));
70
71
+
this.date.setHours(parseInt(splitTimeString[0]));
72
+
this.date.setMinutes(parseInt(splitTimeString[1]));
73
+
this.date.setSeconds(parseInt(splitTimeString[2]));
74
+
75
+
let resSplit;
76
+
if(this.legacy)
77
+
resSplit = split[0].split('x')
78
+
else
79
+
resSplit = split[3].split('x')
80
+
81
+
// let width = parseInt(resSplit[0]);
82
+
// let height = parseInt(resSplit[1]);
83
+
84
+
// if(!isNaN(width) || !isNaN(height)){
85
+
// this.width = width;
86
+
// this.height = height;
87
88
+
// let scale = Vars.PHOTO_HEIGHT / this.height;
89
90
+
// this.scaledWidth = this.width * scale;
91
+
// this.scaledHeight = Vars.PHOTO_HEIGHT;
92
+
// }
93
}
94
95
loadMeta(){
96
+
this.loadingMeta = true;
97
invoke('load_photo_meta', { photo: this.path });
98
}
99
100
loadImage(){
101
+
if(this.loadingMeta || this.loading || this.loaded || imagesLoading >= Vars.MAX_IMAGE_LOAD)return;
102
if(!this.metaLoaded)return this.loadMeta();
103
104
this.loading = true;
105
imagesLoading++;
106
107
this.image = document.createElement('canvas');
···
121
this.loading = false;
122
123
imagesLoading--;
124
+
}
125
+
126
+
this.imageEl.onerror = () => {
127
+
console.log('Cannot load image');
128
}
129
}
130
}
-15
src/Components/Structs/PhotoListElements/PhotoListPhoto.ts
-15
src/Components/Structs/PhotoListElements/PhotoListPhoto.ts
···
1
-
<<<<<<< HEAD
2
import { Photo } from "../Photo";
3
import { PhotoListElement } from "../PhotoListElement";
4
import { PhotoListElementType } from "../PhotoListElementType";
···
11
this.Type = PhotoListElementType.PHOTO;
12
this.Photo = photo;
13
}
14
-
=======
15
-
import { Photo } from "../Photo";
16
-
import { PhotoListElement } from "../PhotoListElement";
17
-
import { PhotoListElementType } from "../PhotoListElementType";
18
-
19
-
export class PhotoListPhoto extends PhotoListElement{
20
-
public Photo!: Photo;
21
-
22
-
constructor( photo: Photo ){
23
-
super();
24
-
this.Type = PhotoListElementType.PHOTO;
25
-
this.Photo = photo;
26
-
}
27
-
>>>>>>> e612756 (stuff)
28
}
+1
src/Components/Structs/PhotoMetadata.ts
+1
src/Components/Structs/PhotoMetadata.ts
+72
src/css/filters.css
+72
src/css/filters.css
···
···
1
+
2
+
.filter-options{
3
+
position: fixed;
4
+
top: 10px;
5
+
left: 10px;
6
+
}
7
+
8
+
.filter-container{
9
+
display: none;
10
+
position: fixed;
11
+
bottom: 0;
12
+
left: 0;
13
+
width: 100vw;
14
+
padding: 10px 200px;
15
+
background: rgba(85, 85, 85, 0.904);
16
+
transform: translateY(10px);
17
+
color: #fff;
18
+
text-align: center;
19
+
box-shadow: #0005 0 0 10px;
20
+
opacity: 0;
21
+
z-index: 150;
22
+
}
23
+
24
+
.filter-container > .filter-title{
25
+
font-size: 30px;
26
+
}
27
+
28
+
.filter-type-select{
29
+
display: flex;
30
+
justify-content: center;
31
+
align-items: center;
32
+
width: 75%;
33
+
margin: auto;
34
+
}
35
+
36
+
.filter-type-select > div{
37
+
width: 100%;
38
+
border: #fff 4px solid;
39
+
border-left: #fff 2px solid;
40
+
border-right: #fff 2px solid;
41
+
padding: 5px 0;
42
+
cursor: pointer;
43
+
user-select: none;
44
+
-webkit-user-select: none;
45
+
}
46
+
47
+
.filter-type-select > div:first-child{
48
+
border-left: #fff 4px solid;
49
+
border-radius: 10px 0 0 10px;
50
+
}
51
+
52
+
.filter-type-select > div:last-child{
53
+
border-right: #fff 4px solid;
54
+
border-radius: 0 10px 10px 0;
55
+
}
56
+
57
+
.filter-type-select > .selected-filter{
58
+
background: #00ccff55;
59
+
}
60
+
61
+
.filter-search{
62
+
margin-top: 10px;
63
+
padding: 5px;
64
+
border: #fff 4px solid;
65
+
border-radius: 10px;
66
+
background: #0008;
67
+
outline: none;
68
+
color: white;
69
+
font-size: 15px;
70
+
font-family: 'Rubik';
71
+
width: calc(75% - 18px);
72
+
}
+38
src/css/icons.css
+38
src/css/icons.css
···
···
1
+
.icon{
2
+
width: 40px;
3
+
height: 40px;
4
+
padding: 10px;
5
+
display: flex;
6
+
align-items: center;
7
+
justify-content: center;
8
+
height: 100%;
9
+
cursor: pointer;
10
+
user-select: none;
11
+
-webkit-user-select: none;
12
+
}
13
+
14
+
.icon-small{
15
+
display: flex;
16
+
align-items: center;
17
+
justify-content: center;
18
+
height: 100%;
19
+
}
20
+
21
+
.icon-label{
22
+
margin-top: -20px;
23
+
margin-right: -200px;
24
+
width: 200px;
25
+
color: white;
26
+
pointer-events: none;
27
+
transform: translate(20px, -9px);
28
+
opacity: 0;
29
+
transition: 0.25s;
30
+
user-select: none;
31
+
-webkit-user-select: none;
32
+
}
33
+
34
+
.icon:hover ~ .icon-label{
35
+
opacity: 1;
36
+
transform: translate(40px, -9px);
37
+
}
38
+
+24
src/css/list.css
+24
src/css/list.css
···
···
1
+
.photo-list{
2
+
width: 100%;
3
+
height: 100%;
4
+
position: fixed;
5
+
top: 0;
6
+
left: 0;
7
+
overflow: hidden;
8
+
}
9
+
10
+
.scroll-to-top{
11
+
position: fixed;
12
+
bottom: 10px;
13
+
right: 10px;
14
+
color: white;
15
+
width: 40px;
16
+
height: 40px;
17
+
cursor: pointer;
18
+
border-radius: 50%;
19
+
border: 2px solid white;
20
+
display: flex;
21
+
justify-content: center;
22
+
align-items: center;
23
+
z-index: 100;
24
+
}
+84
src/css/settings.css
+84
src/css/settings.css
···
···
1
+
.settings{
2
+
position: fixed;
3
+
top: 0;
4
+
left: 0;
5
+
width: 100%;
6
+
height: 100%;
7
+
background: rgba(0, 0, 0, 0.4);
8
+
}
9
+
10
+
.settings-container{
11
+
position: fixed;
12
+
top: 50px;
13
+
left: 0px;
14
+
width: 200%;
15
+
height: calc(100% - 100px);
16
+
display: flex;
17
+
}
18
+
19
+
.settings-close{
20
+
position: absolute;
21
+
top: 10px;
22
+
left: 10px;
23
+
z-index: 100;
24
+
cursor: pointer;
25
+
user-select: none;
26
+
width: 40px;
27
+
height: 40px;
28
+
}
29
+
30
+
.settings-block{
31
+
width: 50%;
32
+
height: 100%;
33
+
color: white;
34
+
text-align: center;
35
+
}
36
+
37
+
.selector{
38
+
padding: 10px 20px;
39
+
border-radius: 10px;
40
+
background: #000a;
41
+
display: inline-block;
42
+
margin: 10px;
43
+
}
44
+
45
+
.selector .selection-box{
46
+
height: 20px;
47
+
background: #777a;
48
+
margin: 5px -10px 0 -10px;
49
+
border-radius: 8px;
50
+
user-select: none;
51
+
-webkit-user-select: none;
52
+
cursor: pointer;
53
+
transition: 0.25s;
54
+
color: #fff1;
55
+
}
56
+
57
+
.selector .selection-box:hover{
58
+
height: 20px;
59
+
background: #777a;
60
+
margin: 5px -10px 0 -10px;
61
+
border-radius: 8px;
62
+
user-select: none;
63
+
-webkit-user-select: none;
64
+
cursor: pointer;
65
+
transition: 0.25s;
66
+
color: #fff5;
67
+
}
68
+
69
+
.selector input{
70
+
display: none;
71
+
}
72
+
73
+
.selector input:checked ~ label .selection-box{
74
+
background: rgba(0, 146, 204, 0.705);
75
+
color: #fff;
76
+
}
77
+
78
+
.path{
79
+
padding: 5px 10px;
80
+
background: #000a;
81
+
border-radius: 5px;
82
+
margin-left: 5px;
83
+
cursor: pointer;
84
+
}
+55
src/css/slide-bar.css
+55
src/css/slide-bar.css
···
···
1
+
.slide-bar{
2
+
position: fixed;
3
+
bottom: 0;
4
+
left: 0;
5
+
width: 100%;
6
+
height: 50px;
7
+
border-top: #aaa 1px solid;
8
+
mask-image: linear-gradient(to left, #0000 0%, #000 20%, #000 80%, #0000 100%);
9
+
background: #aaa2;
10
+
box-shadow: #000 0 0 10px;
11
+
overflow: hidden;
12
+
}
13
+
14
+
.inner-slide-bar{
15
+
display: flex;
16
+
height: 50px;
17
+
width: 200%;
18
+
color: white;
19
+
align-items: center;
20
+
cursor: pointer;
21
+
user-select: none;
22
+
-webkit-user-select: none;
23
+
}
24
+
25
+
.slider-dot{
26
+
width: 5px;
27
+
height: 5px;
28
+
border-radius: 5px;
29
+
background: #aaa;
30
+
margin: auto 25px;
31
+
}
32
+
33
+
.slider-text{
34
+
width: 200px;
35
+
text-align: center;
36
+
height: 50px;
37
+
display: flex;
38
+
justify-content: center;
39
+
align-items: center;
40
+
color: #aaa;
41
+
transition: 0.25s;
42
+
}
43
+
44
+
.slider-text:hover{
45
+
color: #fff;
46
+
}
47
+
48
+
.slide-bar-tri{
49
+
position: fixed;
50
+
bottom: 40px;
51
+
left: 50%;
52
+
transform: translateX(-50%);
53
+
border: transparent solid 5px;
54
+
border-top: #fff solid 5px;
55
+
}
+82
src/css/tray.css
+82
src/css/tray.css
···
···
1
+
.photo-tray{
2
+
position: fixed;
3
+
bottom: -300px;
4
+
left: 0;
5
+
width: 100%;
6
+
height: 300px;
7
+
background: rgba(43, 43, 43, 0.76);
8
+
backdrop-filter: blur(10px);
9
+
-webkit-backdrop-filter: blur(10px);
10
+
box-shadow: #0008 0 0 10px;
11
+
padding-bottom: 150px;
12
+
}
13
+
14
+
.photo-tray-close{
15
+
position: fixed;
16
+
bottom: 160px;
17
+
left: 50%;
18
+
transform: translate(-50%);
19
+
color: white;
20
+
background: rgba(43, 43, 43, 0.76);
21
+
backdrop-filter: blur(10px);
22
+
-webkit-backdrop-filter: blur(10px);
23
+
box-shadow: #0008 0 0 10px;
24
+
display: flex;
25
+
justify-content: center;
26
+
align-items: center;
27
+
height: 30px;
28
+
width: 50px;
29
+
border-radius: 50px;
30
+
cursor: pointer;
31
+
font-size: 12px;
32
+
user-select: none;
33
+
-webkit-user-select: none;
34
+
transition: 0.25s width;
35
+
}
36
+
37
+
.photo-tray-close:hover{
38
+
width: 70px;
39
+
}
40
+
41
+
.photo-tray-columns{
42
+
width: 100%;
43
+
height: 100%;
44
+
display: flex;
45
+
color: white;
46
+
text-align: center;
47
+
}
48
+
49
+
.photo-tray-column{
50
+
height: 100%;
51
+
width: 100%;
52
+
scrollbar-width: thin;
53
+
overflow-y: auto;
54
+
overflow-x: hidden;
55
+
mask-image: linear-gradient(to bottom, #0000 0%, #000 10%, #000 90%, #0000 100%);
56
+
}
57
+
58
+
.tray-heading{
59
+
font-weight: bold;
60
+
font-size: 20px;
61
+
}
62
+
63
+
.world-tags{
64
+
display: flex;
65
+
width: 100%;
66
+
justify-content: center;
67
+
align-items: center;
68
+
}
69
+
70
+
.world-tags div{
71
+
padding: 0 10px;
72
+
color: #bbb;
73
+
transition: 0.25s;
74
+
}
75
+
76
+
.world-tags div:hover{
77
+
color: #ddd;
78
+
}
79
+
80
+
.world-name{
81
+
font-size: 17px;
82
+
}
+193
src/css/viewer.css
+193
src/css/viewer.css
···
···
1
+
2
+
.photo-container{
3
+
width: 100%;
4
+
height: 100%;
5
+
}
6
+
7
+
.photo-container-bg{
8
+
width: 100%;
9
+
height: 100%;
10
+
position: fixed;
11
+
top: 0;
12
+
left: 0;
13
+
z-index: -1;
14
+
/* filter: blur(100px); */
15
+
}
16
+
17
+
.single-photo-container{
18
+
margin: 10px;
19
+
display: inline-block;
20
+
}
21
+
22
+
.photo-viewer{
23
+
justify-content: center;
24
+
width: 100%;
25
+
height: 100%;
26
+
position: fixed;
27
+
top: 0;
28
+
left: 0;
29
+
z-index: 5;
30
+
background: #0009;
31
+
opacity: 0;
32
+
display: none;
33
+
}
34
+
35
+
.photo-context-menu{
36
+
position: fixed;
37
+
top: 0;
38
+
left: 0;
39
+
padding: 10px;
40
+
border-radius: 5px;
41
+
background: rgba(43, 43, 43, 0.76);
42
+
color: #aaa;
43
+
box-shadow: #0005 0 0 10px;
44
+
opacity: 0;
45
+
}
46
+
47
+
.photo-context-menu > div{
48
+
padding: 2px 10px;
49
+
width: 100;
50
+
text-align: center;
51
+
transition: 0.1s;
52
+
}
53
+
54
+
.photo-context-menu > div:hover{
55
+
color: #fff;
56
+
cursor: pointer;
57
+
user-select: none;
58
+
-webkit-user-select: none;
59
+
}
60
+
61
+
.image-container{
62
+
max-width: none;
63
+
max-height: none;
64
+
background-size: contain !important;
65
+
background-repeat: no-repeat !important;
66
+
background-position: center !important;
67
+
opacity: 0;
68
+
}
69
+
70
+
.viewer-button{
71
+
color: white;
72
+
width: 30px;
73
+
height: 30px;
74
+
display: flex;
75
+
justify-content: center;
76
+
align-items: center;
77
+
border-radius: 50px;
78
+
font-size: 12px;
79
+
background: #8885;
80
+
user-select: none;
81
+
-webkit-user-select: none;
82
+
cursor: pointer;
83
+
z-index: 7;
84
+
background: rgba(43, 43, 43, 0.76);
85
+
}
86
+
87
+
.viewer-close{
88
+
position: fixed;
89
+
top: 10px;
90
+
right: 10px;
91
+
width: 35px;
92
+
height: 35px;
93
+
}
94
+
95
+
.prev-button{
96
+
transition: 0.25s;
97
+
position: fixed;
98
+
top: 50%;
99
+
left: 0;
100
+
color: white;
101
+
width: 50px;
102
+
height: 150px;
103
+
display: flex;
104
+
justify-content: center;
105
+
align-items: center;
106
+
transform: translateY(-50%);
107
+
background: rgba(255, 255, 255, 0.144);
108
+
border-radius: 0 15px 15px 0;
109
+
cursor: pointer;
110
+
user-select: none;
111
+
-webkit-user-select: none;
112
+
box-shadow: #000 0 0 10px;
113
+
}
114
+
115
+
.prev-button:hover{
116
+
background: rgba(255, 255, 255, 0.349);
117
+
}
118
+
119
+
.next-button{
120
+
transition: 0.25s;
121
+
position: fixed;
122
+
top: 50%;
123
+
right: 0;
124
+
color: white;
125
+
width: 50px;
126
+
height: 150px;
127
+
display: flex;
128
+
justify-content: center;
129
+
align-items: center;
130
+
transform: translateY(-50%);
131
+
background: rgba(255, 255, 255, 0.144);
132
+
border-radius: 15px 0 0 15px;
133
+
cursor: pointer;
134
+
user-select: none;
135
+
-webkit-user-select: none;
136
+
box-shadow: #000 0 0 10px;
137
+
}
138
+
139
+
.next-button:hover{
140
+
background: rgba(255, 255, 255, 0.349);
141
+
}
142
+
143
+
.control-buttons{
144
+
position: fixed;
145
+
bottom: 10px;
146
+
left: 50%;
147
+
transform: translateX(-50%);
148
+
display: flex;
149
+
}
150
+
151
+
.control-buttons div{
152
+
margin: 0 20px;
153
+
}
154
+
155
+
.copy-notif{
156
+
position: fixed;
157
+
top: 40px;
158
+
left: 50%;
159
+
color: white;
160
+
transform: translateX(-50%) translateY(-100px);
161
+
background: rgba(43, 43, 43, 0.76);
162
+
padding: 10px 40px;
163
+
backdrop-filter: blur(10px);
164
+
-webkit-backdrop-filter: blur(10px);
165
+
border-radius: 50px;
166
+
box-shadow: #000 0 0 10px;
167
+
z-index: 12;
168
+
opacity: 0;
169
+
pointer-events: none;
170
+
}
171
+
172
+
.photo-layer-manager{
173
+
background: rgba(43, 43, 43, 0.76);
174
+
color: #fff;
175
+
padding: 10px;
176
+
backdrop-filter: blur(10px);
177
+
position: fixed;
178
+
bottom: 10px;
179
+
left: 10px;
180
+
border-radius: 10px;
181
+
}
182
+
183
+
.photo-layer-manager-layer{
184
+
cursor: pointer;
185
+
-webkit-user-select: none;
186
+
user-select: none;
187
+
padding: 5px 20px;
188
+
transition: 0.1s;
189
+
}
190
+
191
+
.photo-layer-manager-layer:hover{
192
+
color: #bbb;
193
+
}
+9
-6
src/index.tsx
+9
-6
src/index.tsx
···
3
4
declare global{
5
interface Window {
6
-
AccountManager: AccountManager;
7
LoadingManager: LoadingManager;
8
PhotoManager: PhotoManager;
9
ConfirmationBoxManager: ConfirmationBoxManager;
10
PhotoViewerManager: PhotoViewerManager;
11
WorldCacheManager: WorldCacheManager;
12
PhotoListRenderingManager: PhotoListRenderingManager;
13
-
SyncManager: SyncManager;
14
ViewManager: ViewManager;
15
16
CloseAllPopups: (() => void)[];
···
23
24
window.oncontextmenu = ( e ) => e.preventDefault();
25
26
import "./styles.css";
27
import App from "./Components/App";
28
import { invoke } from "@tauri-apps/api/core";
29
30
-
import { AccountManager } from "./Components/Managers/AccountManager";
31
import { LoadingManager } from "./Components/Managers/LoadingManager";
32
import { PhotoManager } from "./Components/Managers/PhotoManager";
33
import { ConfirmationBoxManager } from "./Components/Managers/ConfirmationBoxManager";
34
import { PhotoViewerManager } from "./Components/Managers/PhotoViewerManager";
35
import { WorldCacheManager } from "./Components/Managers/WorldCacheManager";
36
import { PhotoListRenderingManager } from "./Components/Managers/PhotoListRenderingManager";
37
-
import { SyncManager } from "./Components/Managers/SyncManager";
38
import { ViewManager } from "./Components/Managers/ViewManager";
39
40
-
window.AccountManager = new AccountManager();
41
window.LoadingManager = new LoadingManager();
42
window.PhotoManager = new PhotoManager();
43
window.ConfirmationBoxManager = new ConfirmationBoxManager();
44
window.PhotoViewerManager = new PhotoViewerManager();
45
window.WorldCacheManager = new WorldCacheManager();
46
window.PhotoListRenderingManager = new PhotoListRenderingManager();
47
-
window.SyncManager = new SyncManager();
48
window.ViewManager = new ViewManager();
49
50
(async () => {
···
3
4
declare global{
5
interface Window {
6
LoadingManager: LoadingManager;
7
PhotoManager: PhotoManager;
8
ConfirmationBoxManager: ConfirmationBoxManager;
9
PhotoViewerManager: PhotoViewerManager;
10
WorldCacheManager: WorldCacheManager;
11
PhotoListRenderingManager: PhotoListRenderingManager;
12
ViewManager: ViewManager;
13
14
CloseAllPopups: (() => void)[];
···
21
22
window.oncontextmenu = ( e ) => e.preventDefault();
23
24
+
import './css/icons.css';
25
+
import './css/tray.css';
26
+
import './css/settings.css';
27
+
import './css/slide-bar.css';
28
+
import './css/viewer.css';
29
+
import './css/filters.css';
30
+
import './css/list.css';
31
+
32
import "./styles.css";
33
+
34
import App from "./Components/App";
35
import { invoke } from "@tauri-apps/api/core";
36
37
import { LoadingManager } from "./Components/Managers/LoadingManager";
38
import { PhotoManager } from "./Components/Managers/PhotoManager";
39
import { ConfirmationBoxManager } from "./Components/Managers/ConfirmationBoxManager";
40
import { PhotoViewerManager } from "./Components/Managers/PhotoViewerManager";
41
import { WorldCacheManager } from "./Components/Managers/WorldCacheManager";
42
import { PhotoListRenderingManager } from "./Components/Managers/PhotoListRenderingManager";
43
import { ViewManager } from "./Components/Managers/ViewManager";
44
45
window.LoadingManager = new LoadingManager();
46
window.PhotoManager = new PhotoManager();
47
window.ConfirmationBoxManager = new ConfirmationBoxManager();
48
window.PhotoViewerManager = new PhotoViewerManager();
49
window.WorldCacheManager = new WorldCacheManager();
50
window.PhotoListRenderingManager = new PhotoListRenderingManager();
51
window.ViewManager = new ViewManager();
52
53
(async () => {
+11
-768
src/styles.css
+11
-768
src/styles.css
···
7
background: #000;
8
margin: 0;
9
font-family: Rubik, 'Courier New';
10
}
11
12
.loading{
···
24
align-items: center;
25
}
26
27
-
.navbar{
28
-
background: #555a;
29
-
position: fixed;
30
-
top: 0;
31
-
left: 0;
32
-
width: 100%;
33
-
margin-top: -50px;
34
-
padding-top: 50px;
35
-
height: 50px;
36
-
display: flex;
37
-
backdrop-filter: blur(10px);
38
-
-webkit-backdrop-filter: blur(10px);
39
-
z-index: 10;
40
-
box-shadow: #000 0 0 10px;
41
-
}
42
-
43
-
.navbar .tabs{
44
-
width: calc(100% - 450px);
45
-
height: 100%;
46
-
display: flex;
47
-
}
48
-
49
-
.navbar .account{
50
-
width: 100px;
51
-
height: 100%;
52
-
display: flex;
53
-
justify-content: center;
54
-
align-items: center;
55
-
transition: 0.1s;
56
-
cursor: pointer;
57
-
user-select: none;
58
-
-webkit-user-select: none;
59
-
}
60
-
61
-
.navbar .account:hover{
62
-
background: #0005;
63
-
}
64
-
65
-
.navbar .control-lights{
66
-
width: 150px;
67
-
height: 50px;
68
-
display: flex;
69
-
justify-content: center;
70
-
align-items: center;
71
-
}
72
-
73
-
.control-lights .light{
74
-
user-select: none;
75
-
-webkit-user-select: none;
76
-
font-size: 20px;
77
-
text-align: center;
78
-
color: white;
79
-
width: 100%;
80
-
cursor: pointer;
81
-
display: flex;
82
-
justify-content: center;
83
-
align-items: center;
84
-
height: 50px;
85
-
filter: invert(100%);
86
-
}
87
-
88
-
.control-lights .light:hover{
89
-
background: #fff5;
90
-
}
91
-
92
-
.control-lights .light img{
93
-
width: 25%;
94
-
}
95
-
96
-
.icon{
97
-
width: 15px;
98
-
filter: invert(100%);
99
-
display: flex;
100
-
align-items: center;
101
-
justify-content: center;
102
-
height: 100%;
103
-
}
104
-
105
-
.icon-label{
106
-
margin-top: -20px;
107
-
margin-right: -200px;
108
-
width: 200px;
109
-
color: white;
110
-
pointer-events: none;
111
-
transform: translate(40px, -19px);
112
-
opacity: 0;
113
-
transition: 0.25s;
114
-
user-select: none;
115
-
-webkit-user-select: none;
116
-
}
117
-
118
-
.icon:hover ~ .icon-label{
119
-
opacity: 1;
120
-
transform: translate(60px, -19px);
121
-
}
122
-
123
-
.user-pfp{
124
-
width: 35px;
125
-
height: 35px;
126
-
background-size: cover !important;
127
-
background-position: center !important;
128
-
border-radius: 50%;
129
-
margin-right: 10px;
130
-
}
131
-
132
-
.account-dropdown{
133
-
font-size: 20px;
134
-
color: white;
135
-
}
136
-
137
-
.nav-tab{
138
-
color: white;
139
-
width: 150px;
140
-
height: 100%;
141
-
transition: 0.1s;
142
-
cursor: pointer;
143
-
user-select: none;
144
-
-webkit-user-select: none;
145
-
justify-content: center;
146
-
align-items: center;
147
-
display: flex;
148
-
}
149
-
150
-
.nav-tab:hover{
151
-
background: #0005;
152
-
}
153
-
154
-
.dropdown{
155
-
position: fixed;
156
-
right: 125px;
157
-
top: 60px;
158
-
background: #555a;
159
-
height: 60px;
160
-
width: 150px;
161
-
border-radius: 5px;
162
-
backdrop-filter: blur(5px);
163
-
z-index: 10;
164
-
}
165
-
166
-
.dropdown-button{
167
-
width: 100%;
168
-
text-align: center;
169
-
padding: 5.5px 0;
170
-
color: #aaa;
171
-
cursor: pointer;
172
-
user-select: none;
173
-
-webkit-user-select: none;
174
-
transition: 0.1s;
175
-
}
176
-
177
-
.dropdown-button:hover{
178
-
color: #fff;
179
-
}
180
-
181
-
.photo-list{
182
-
width: 100%;
183
-
height: 100%;
184
-
position: fixed;
185
-
top: 0;
186
-
left: 0;
187
-
overflow: hidden;
188
-
}
189
-
190
-
.filter-options{
191
-
position: fixed;
192
-
top: 55px;
193
-
left: 5px;
194
-
width: 40px;
195
-
height: 50px;
196
-
}
197
-
198
-
.filter-options img{
199
-
cursor: pointer;
200
-
user-select: none;
201
-
-webkit-user-select: none;
202
-
}
203
-
204
-
.filter-container{
205
-
display: none;
206
-
position: fixed;
207
-
bottom: 0;
208
-
left: 50%;
209
-
width: 600px;
210
-
height: 83px;
211
-
transform: translate(-50%);
212
-
padding: 10px;
213
-
border-radius: 5px 5px 0 0;
214
-
backdrop-filter: blur(5px);
215
-
-webkit-backdrop-filter: blur(5px);
216
-
background: #555a;
217
-
color: #fff;
218
-
text-align: center;
219
-
box-shadow: #0005 0 0 10px;
220
-
opacity: 0;
221
-
}
222
-
223
-
.filter-container > .filter-title{
224
-
font-size: 30px;
225
-
}
226
-
227
-
.filter-type-select{
228
-
display: flex;
229
-
justify-content: center;
230
-
align-items: center;
231
-
width: 75%;
232
-
margin: auto;
233
-
}
234
-
235
-
.filter-type-select > div{
236
-
width: 100%;
237
-
border: #fff 4px solid;
238
-
border-left: #fff 2px solid;
239
-
border-right: #fff 2px solid;
240
-
padding: 5px 0;
241
-
cursor: pointer;
242
-
user-select: none;
243
-
-webkit-user-select: none;
244
-
}
245
-
246
-
.filter-type-select > div:first-child{
247
-
border-left: #fff 4px solid;
248
-
border-radius: 10px 0 0 10px;
249
-
}
250
-
251
-
.filter-type-select > div:last-child{
252
-
border-right: #fff 4px solid;
253
-
border-radius: 0 10px 10px 0;
254
-
}
255
-
256
-
.filter-type-select > .selected-filter{
257
-
background: #00ccff55;
258
-
}
259
-
260
-
.filter-search{
261
-
margin-top: 10px;
262
-
padding: 5px;
263
-
border: #fff 4px solid;
264
-
border-radius: 10px;
265
-
background: #0008;
266
-
outline: none;
267
-
color: white;
268
-
font-size: 15px;
269
-
font-family: 'Rubik';
270
-
width: calc(75% - 18px);
271
-
}
272
-
273
-
.date-list{
274
-
mask-image: linear-gradient(to bottom, #0000, #000, #0000);
275
-
overflow: auto;
276
-
scrollbar-width: thin;
277
-
height: calc(100% - 100px);
278
-
padding: 50px 0;
279
-
}
280
-
281
-
.date-list-date{
282
-
padding: 10px;
283
-
user-select: none;
284
-
-webkit-user-select: none;
285
-
cursor: pointer;
286
-
transition: 0.1s;
287
-
border-radius: 10px;
288
-
}
289
-
290
-
.date-list-date:hover{
291
-
background: #0005;
292
-
box-shadow: inset #0005 0 0 10px;
293
-
}
294
-
295
-
.photo-tree-loading{
296
-
position: fixed;
297
-
top: 0;
298
-
left: 0;
299
-
width: 100%;
300
-
height: 100%;
301
-
display: flex;
302
-
justify-content: center;
303
-
align-items: center;
304
-
color: white;
305
-
font-size: 20px;
306
-
}
307
-
308
-
.loading-bar{
309
-
width: 500px;
310
-
height: 8px;
311
-
border-radius: 12px;
312
-
background: #333;
313
-
margin-top: 10px;
314
-
padding: 2px;
315
-
}
316
-
317
-
.loading-bar-inner{
318
-
width: 0%;
319
-
height: 8px;
320
-
border-radius: 18px;
321
-
background: #00ccff;
322
-
}
323
-
324
-
.photo-container{
325
-
width: 100%;
326
-
height: 100%;
327
-
}
328
-
329
-
.photo-container-bg{
330
-
width: 100%;
331
-
height: 100%;
332
-
position: fixed;
333
-
top: 0;
334
-
left: 0;
335
-
z-index: -1;
336
-
filter: blur(100px);
337
-
-webkit-filter: blur(100px);
338
-
}
339
-
340
-
.single-photo-container{
341
-
margin: 10px;
342
-
display: inline-block;
343
-
}
344
-
345
-
.photo-viewer{
346
-
justify-content: center;
347
-
width: 100%;
348
-
height: 100%;
349
-
position: fixed;
350
-
top: 0;
351
-
left: 0;
352
-
z-index: 5;
353
-
background: #0009;
354
-
backdrop-filter: blur(75px);
355
-
-webkit-backdrop-filter: blur(75px);
356
-
opacity: 0;
357
-
display: none;
358
-
}
359
-
360
-
.photo-context-menu{
361
-
position: fixed;
362
-
top: 0;
363
-
left: 0;
364
-
padding: 10px;
365
-
border-radius: 5px;
366
-
backdrop-filter: blur(5px);
367
-
-webkit-backdrop-filter: blur(5px);
368
-
background: #555a;
369
-
color: #aaa;
370
-
box-shadow: #0005 0 0 10px;
371
-
opacity: 0;
372
-
}
373
-
374
-
.photo-context-menu > div{
375
-
padding: 2px 10px;
376
-
width: calc(100% - 10px);
377
-
text-align: center;
378
-
transition: 0.1s;
379
-
}
380
-
381
-
.photo-context-menu > div:hover{
382
-
color: #fff;
383
-
cursor: pointer;
384
-
user-select: none;
385
-
-webkit-user-select: none;
386
-
}
387
-
388
-
.image-container{
389
-
height: 100%;
390
-
background-size: contain !important;
391
-
background-repeat: no-repeat !important;
392
-
background-position: center !important;
393
-
opacity: 0;
394
-
}
395
-
396
-
.viewer-button{
397
-
color: white;
398
-
width: 30px;
399
-
height: 30px;
400
-
display: flex;
401
-
justify-content: center;
402
-
align-items: center;
403
-
border-radius: 50px;
404
-
font-size: 12px;
405
-
background: #8885;
406
-
backdrop-filter: blur(10px);
407
-
-webkit-backdrop-filter: blur(10px);
408
-
user-select: none;
409
-
-webkit-user-select: none;
410
-
cursor: pointer;
411
-
z-index: 7;
412
-
box-shadow: #0008 0 0 10px;
413
-
}
414
-
415
-
.viewer-close{
416
-
position: fixed;
417
-
top: 10px;
418
-
right: 10px;
419
-
width: 35px;
420
-
height: 35px;
421
-
}
422
-
423
-
.prev-button{
424
-
transition: 0.25s;
425
-
position: fixed;
426
-
top: 50%;
427
-
left: 0;
428
-
color: white;
429
-
width: 50px;
430
-
height: 150px;
431
-
display: flex;
432
-
justify-content: center;
433
-
align-items: center;
434
-
transform: translateY(-50%);
435
-
background: rgba(255, 255, 255, 0.144);
436
-
backdrop-filter: blur(50px);
437
-
-webkit-backdrop-filter: blur(50px);
438
-
border-radius: 0 15px 15px 0;
439
-
cursor: pointer;
440
-
user-select: none;
441
-
-webkit-user-select: none;
442
-
box-shadow: #000 0 0 10px;
443
-
}
444
-
445
-
.prev-button:hover{
446
-
background: rgba(255, 255, 255, 0.349);
447
-
}
448
-
449
-
.next-button{
450
-
transition: 0.25s;
451
-
position: fixed;
452
-
top: 50%;
453
-
right: 0;
454
-
color: white;
455
-
width: 50px;
456
-
height: 150px;
457
-
display: flex;
458
-
justify-content: center;
459
-
align-items: center;
460
-
transform: translateY(-50%);
461
-
background: rgba(255, 255, 255, 0.144);
462
-
backdrop-filter: blur(50px);
463
-
-webkit-backdrop-filter: blur(50px);
464
-
border-radius: 15px 0 0 15px;
465
-
cursor: pointer;
466
-
user-select: none;
467
-
-webkit-user-select: none;
468
-
box-shadow: #000 0 0 10px;
469
-
}
470
-
471
-
.next-button:hover{
472
-
background: rgba(255, 255, 255, 0.349);
473
-
}
474
-
475
-
.reload-photos{
476
-
position: fixed;
477
-
top: 70px;
478
-
right: 20px;
479
-
color: white;
480
-
user-select: none;
481
-
-webkit-user-select: none;
482
-
cursor: pointer;
483
-
opacity: 0;
484
-
}
485
-
486
.confirmation-box{
487
position: fixed;
488
top: 0;
···
490
width: 100%;
491
height: 100%;
492
z-index: 15;
493
-
background: #0005;
494
transition: 0.25s;
495
-
backdrop-filter: blur(10px);
496
-
-webkit-backdrop-filter: blur(10px);
497
}
498
499
.confirmation-box-container{
···
553
box-shadow: #000a inset 0 0 10px;
554
}
555
556
-
.control-buttons{
557
-
position: fixed;
558
-
bottom: 10px;
559
-
left: 50%;
560
-
transform: translateX(-50%);
561
-
display: flex;
562
-
}
563
-
564
-
.control-buttons div{
565
-
margin: 0 20px;
566
}
567
568
-
.copy-notif{
569
position: fixed;
570
top: 40px;
571
left: 50%;
572
color: white;
573
transform: translateX(-50%) translateY(-100px);
574
-
background: #8885;
575
padding: 10px 40px;
576
backdrop-filter: blur(10px);
577
-webkit-backdrop-filter: blur(10px);
···
580
z-index: 12;
581
opacity: 0;
582
pointer-events: none;
583
-
}
584
-
585
-
.photo-tray{
586
-
position: fixed;
587
-
bottom: -150px;
588
-
left: 0;
589
-
width: 100%;
590
-
height: 150px;
591
-
background: #7778;
592
-
backdrop-filter: blur(10px);
593
-
-webkit-backdrop-filter: blur(10px);
594
-
box-shadow: #0008 0 0 10px;
595
-
padding-bottom: 150px;
596
-
margin-bottom: -150px;
597
-
}
598
-
599
-
.photo-tray-close{
600
-
position: fixed;
601
-
bottom: 160px;
602
-
left: 50%;
603
-
transform: translate(-50%);
604
-
color: white;
605
-
background: #8885;
606
-
backdrop-filter: blur(10px);
607
-
-webkit-backdrop-filter: blur(10px);
608
-
box-shadow: #0008 0 0 10px;
609
-
display: flex;
610
-
justify-content: center;
611
-
align-items: center;
612
-
height: 30px;
613
-
width: 50px;
614
-
border-radius: 50px;
615
-
cursor: pointer;
616
-
font-size: 12px;
617
-
user-select: none;
618
-
-webkit-user-select: none;
619
-
transition: 0.25s width;
620
-
}
621
-
622
-
.photo-tray-close:hover{
623
-
width: 70px;
624
-
}
625
-
626
-
.photo-tray-columns{
627
-
width: 100%;
628
-
height: 100%;
629
-
display: flex;
630
-
color: white;
631
-
text-align: center;
632
-
}
633
-
634
-
.photo-tray-column{
635
-
height: 100%;
636
-
width: 100%;
637
-
scrollbar-width: thin;
638
-
overflow-y: auto;
639
-
overflow-x: hidden;
640
-
mask-image: linear-gradient(to bottom, #0000 0%, #000 10%, #000 90%, #0000 100%);
641
-
}
642
-
643
-
.tray-heading{
644
-
font-weight: bold;
645
-
font-size: 20px;
646
-
}
647
-
648
-
.world-tags{
649
-
display: flex;
650
-
width: 100%;
651
-
justify-content: center;
652
-
align-items: center;
653
-
}
654
-
655
-
.world-tags div{
656
-
padding: 0 10px;
657
-
color: #bbb;
658
-
transition: 0.25s;
659
-
}
660
-
661
-
.world-tags div:hover{
662
-
color: #ddd;
663
-
}
664
-
665
-
.world-name{
666
-
font-size: 17px;
667
-
}
668
-
669
-
.settings{
670
-
position: fixed;
671
-
top: 0;
672
-
left: 0;
673
-
width: 100%;
674
-
height: 100%;
675
-
background: rgba(0, 0, 0, 0.4);
676
-
backdrop-filter: blur(100px);
677
-
-webkit-backdrop-filter: blur(100px);
678
-
}
679
-
680
-
.slide-bar{
681
-
position: fixed;
682
-
bottom: 0;
683
-
left: 0;
684
-
width: 100%;
685
-
height: 50px;
686
-
border-top: #aaa 1px solid;
687
-
overflow-x: hidden;
688
-
mask-image: linear-gradient(to left, #0000 0%, #000 20%, #000 80%, #0000 100%);
689
-
background: #aaa2;
690
-
box-shadow: #000 0 0 10px;
691
-
}
692
-
693
-
.inner-slide-bar{
694
-
display: flex;
695
-
height: 50px;
696
-
width: 200%;
697
-
color: white;
698
-
align-items: center;
699
-
cursor: pointer;
700
-
user-select: none;
701
-
-webkit-user-select: none;
702
-
}
703
-
704
-
.slider-dot{
705
-
width: 5px;
706
-
height: 5px;
707
-
border-radius: 5px;
708
-
background: #aaa;
709
-
margin: auto 25px;
710
-
}
711
-
712
-
.slider-text{
713
-
width: 200px;
714
-
text-align: center;
715
-
height: 50px;
716
-
display: flex;
717
-
justify-content: center;
718
-
align-items: center;
719
-
color: #aaa;
720
-
transition: 0.25s;
721
-
}
722
-
723
-
.slider-text:hover{
724
-
color: #fff;
725
-
}
726
-
727
-
.slide-bar-tri{
728
-
position: fixed;
729
-
bottom: 40px;
730
-
left: 50%;
731
-
transform: translateX(-50%);
732
-
border: transparent solid 5px;
733
-
border-top: #fff solid 5px;
734
-
}
735
-
736
-
.settings-container{
737
-
position: fixed;
738
-
top: 50px;
739
-
left: 0px;
740
-
width: 200%;
741
-
height: calc(100% - 100px);
742
-
display: flex;
743
-
}
744
-
745
-
.settings-block{
746
-
width: 50%;
747
-
height: 100%;
748
-
color: white;
749
-
text-align: center;
750
-
}
751
-
752
-
.selector{
753
-
padding: 10px 20px;
754
-
border-radius: 10px;
755
-
background: #000a;
756
-
display: inline-block;
757
-
margin: 10px;
758
-
}
759
-
760
-
.selector .selection-box{
761
-
height: 20px;
762
-
background: #777a;
763
-
margin: 5px -10px 0 -10px;
764
-
border-radius: 8px;
765
-
user-select: none;
766
-
-webkit-user-select: none;
767
-
cursor: pointer;
768
-
transition: 0.25s;
769
-
color: #fff1;
770
-
}
771
-
772
-
.selector .selection-box:hover{
773
-
height: 20px;
774
-
background: #777a;
775
-
margin: 5px -10px 0 -10px;
776
-
border-radius: 8px;
777
-
user-select: none;
778
-
-webkit-user-select: none;
779
-
cursor: pointer;
780
-
transition: 0.25s;
781
-
color: #fff5;
782
-
}
783
-
784
-
.selector input{
785
-
display: none;
786
-
}
787
-
788
-
.selector input:checked ~ label .selection-box{
789
-
background: rgba(0, 146, 204, 0.705);
790
-
color: #fff;
791
-
}
792
-
793
-
.path{
794
-
padding: 5px 10px;
795
-
background: #000a;
796
-
border-radius: 5px;
797
-
margin-left: 5px;
798
-
cursor: pointer;
799
-
}
800
-
801
-
.scroll-to-top{
802
-
position: fixed;
803
-
bottom: 10px;
804
-
right: 10px;
805
-
color: white;
806
-
width: 40px;
807
-
height: 40px;
808
-
cursor: pointer;
809
-
border-radius: 50%;
810
-
border: 2px solid white;
811
-
display: flex;
812
-
justify-content: center;
813
-
align-items: center;
814
-
}
815
-
816
-
.account-profile{
817
-
margin: auto;
818
-
width: 50%;
819
-
height: 200px;
820
-
display: flex;
821
-
}
822
-
823
-
.account-pfp{
824
-
width: 200px;
825
-
height: 200px;
826
-
background-position: center !important;
827
-
background-size: cover !important;
828
-
border-radius: 50%;
829
-
box-shadow: #0005 0 0 10px;
830
-
position: relative;
831
-
z-index: 10;
832
-
}
833
-
834
-
.account-desc{
835
-
width: calc(100% - 200px);
836
-
padding-left: 100px;
837
-
height: 150px;
838
-
margin: 25px 0;
839
-
margin-left: -100px;
840
-
background: #0009;
841
-
border-radius: 10px;
842
-
box-shadow: #0005 0 0 10px;
843
-
}
844
-
845
-
.storage-bar{
846
-
width: calc(100% - 20px);
847
-
height: 10px;
848
-
margin-left: 10px;
849
-
background: #555;
850
-
border-radius: 10px;
851
-
display: flex;
852
-
justify-content: left;
853
-
align-items: center;
854
-
margin-bottom: 2px;
855
-
}
856
-
857
-
.storage-bar-inner{
858
-
margin: 2px;
859
-
height: 6px;
860
-
background: #00ccff;
861
-
border-radius: 10px;
862
-
}
863
-
864
-
.account-notice{
865
-
background: #0007;
866
-
border-radius: 5px;
867
-
box-shadow: #0005 0 0 10px;
868
-
padding: 10px;
869
-
margin: auto;
870
-
width: calc(50% - 20px);
871
-
margin-top: 25px;
872
-
}
873
-
874
-
img{
875
-
max-width: 100%;
876
-
max-height: 100%;
877
}
···
7
background: #000;
8
margin: 0;
9
font-family: Rubik, 'Courier New';
10
+
overflow: hidden;
11
+
}
12
+
13
+
* {
14
+
box-sizing: border-box;
15
}
16
17
.loading{
···
29
align-items: center;
30
}
31
32
.confirmation-box{
33
position: fixed;
34
top: 0;
···
36
width: 100%;
37
height: 100%;
38
z-index: 15;
39
+
background: rgba(0, 0, 0, 0.76);
40
transition: 0.25s;
41
}
42
43
.confirmation-box-container{
···
97
box-shadow: #000a inset 0 0 10px;
98
}
99
100
+
img{
101
+
max-width: 100%;
102
+
max-height: 100%;
103
}
104
105
+
.error-notif{
106
position: fixed;
107
top: 40px;
108
left: 50%;
109
color: white;
110
transform: translateX(-50%) translateY(-100px);
111
+
background: rgba(43, 43, 43, 0.76);
112
padding: 10px 40px;
113
backdrop-filter: blur(10px);
114
-webkit-backdrop-filter: blur(10px);
···
117
z-index: 12;
118
opacity: 0;
119
pointer-events: none;
120
}
+971
-974
src-tauri/Cargo.lock
+971
-974
src-tauri/Cargo.lock
···
3
version = 4
4
5
[[package]]
6
-
name = "addr2line"
7
-
version = "0.24.2"
8
-
source = "registry+https://github.com/rust-lang/crates.io-index"
9
-
checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
10
dependencies = [
11
-
"gimli",
12
]
13
14
[[package]]
···
19
20
[[package]]
21
name = "aho-corasick"
22
-
version = "1.1.3"
23
source = "registry+https://github.com/rust-lang/crates.io-index"
24
-
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
25
dependencies = [
26
"memchr",
27
]
···
51
]
52
53
[[package]]
54
-
name = "android-tzdata"
55
-
version = "0.1.1"
56
-
source = "registry+https://github.com/rust-lang/crates.io-index"
57
-
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
58
-
59
-
[[package]]
60
name = "android_system_properties"
61
version = "0.1.5"
62
source = "registry+https://github.com/rust-lang/crates.io-index"
···
67
68
[[package]]
69
name = "anyhow"
70
-
version = "1.0.98"
71
source = "registry+https://github.com/rust-lang/crates.io-index"
72
-
checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"
73
74
[[package]]
75
name = "arbitrary"
76
-
version = "1.4.1"
77
source = "registry+https://github.com/rust-lang/crates.io-index"
78
-
checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223"
79
80
[[package]]
81
name = "arg_enum_proc_macro"
···
85
dependencies = [
86
"proc-macro2",
87
"quote",
88
-
"syn 2.0.104",
89
]
90
91
[[package]]
···
120
121
[[package]]
122
name = "async-executor"
123
-
version = "1.13.2"
124
source = "registry+https://github.com/rust-lang/crates.io-index"
125
-
checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa"
126
dependencies = [
127
"async-task",
128
"concurrent-queue",
···
133
]
134
135
[[package]]
136
-
name = "async-fs"
137
-
version = "2.1.3"
138
-
source = "registry+https://github.com/rust-lang/crates.io-index"
139
-
checksum = "09f7e37c0ed80b2a977691c47dae8625cfb21e205827106c64f7c588766b2e50"
140
-
dependencies = [
141
-
"async-lock",
142
-
"blocking",
143
-
"futures-lite",
144
-
]
145
-
146
-
[[package]]
147
name = "async-io"
148
-
version = "2.5.0"
149
source = "registry+https://github.com/rust-lang/crates.io-index"
150
-
checksum = "19634d6336019ef220f09fd31168ce5c184b295cbf80345437cc36094ef223ca"
151
dependencies = [
152
-
"async-lock",
153
"cfg-if",
154
"concurrent-queue",
155
"futures-io",
···
158
"polling",
159
"rustix",
160
"slab",
161
-
"windows-sys 0.60.2",
162
]
163
164
[[package]]
165
name = "async-lock"
166
-
version = "3.4.0"
167
source = "registry+https://github.com/rust-lang/crates.io-index"
168
-
checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
169
dependencies = [
170
"event-listener",
171
"event-listener-strategy",
···
174
175
[[package]]
176
name = "async-process"
177
-
version = "2.4.0"
178
source = "registry+https://github.com/rust-lang/crates.io-index"
179
-
checksum = "65daa13722ad51e6ab1a1b9c01299142bc75135b337923cfa10e79bbbd669f00"
180
dependencies = [
181
"async-channel",
182
"async-io",
···
198
dependencies = [
199
"proc-macro2",
200
"quote",
201
-
"syn 2.0.104",
202
]
203
204
[[package]]
205
name = "async-signal"
206
-
version = "0.2.12"
207
source = "registry+https://github.com/rust-lang/crates.io-index"
208
-
checksum = "f567af260ef69e1d52c2b560ce0ea230763e6fbb9214a85d768760a920e3e3c1"
209
dependencies = [
210
"async-io",
211
"async-lock",
···
216
"rustix",
217
"signal-hook-registry",
218
"slab",
219
-
"windows-sys 0.60.2",
220
]
221
222
[[package]]
···
227
228
[[package]]
229
name = "async-trait"
230
-
version = "0.1.88"
231
source = "registry+https://github.com/rust-lang/crates.io-index"
232
-
checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5"
233
dependencies = [
234
"proc-macro2",
235
"quote",
236
-
"syn 2.0.104",
237
]
238
239
[[package]]
···
273
274
[[package]]
275
name = "av1-grain"
276
-
version = "0.2.4"
277
source = "registry+https://github.com/rust-lang/crates.io-index"
278
-
checksum = "4f3efb2ca85bc610acfa917b5aaa36f3fcbebed5b3182d7f877b02531c4b80c8"
279
dependencies = [
280
"anyhow",
281
"arrayvec",
···
287
288
[[package]]
289
name = "avif-serialize"
290
-
version = "0.8.5"
291
source = "registry+https://github.com/rust-lang/crates.io-index"
292
-
checksum = "2ea8ef51aced2b9191c08197f55450d830876d9933f8f48a429b354f1d496b42"
293
dependencies = [
294
"arrayvec",
295
]
296
297
[[package]]
298
-
name = "backtrace"
299
-
version = "0.3.75"
300
-
source = "registry+https://github.com/rust-lang/crates.io-index"
301
-
checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002"
302
-
dependencies = [
303
-
"addr2line",
304
-
"cfg-if",
305
-
"libc",
306
-
"miniz_oxide",
307
-
"object",
308
-
"rustc-demangle",
309
-
"windows-targets 0.52.6",
310
-
]
311
-
312
-
[[package]]
313
name = "base64"
314
version = "0.21.7"
315
source = "registry+https://github.com/rust-lang/crates.io-index"
···
323
324
[[package]]
325
name = "bit_field"
326
-
version = "0.10.2"
327
source = "registry+https://github.com/rust-lang/crates.io-index"
328
-
checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61"
329
330
[[package]]
331
name = "bitflags"
···
335
336
[[package]]
337
name = "bitflags"
338
-
version = "2.9.1"
339
source = "registry+https://github.com/rust-lang/crates.io-index"
340
-
checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
341
dependencies = [
342
-
"serde",
343
]
344
345
[[package]]
···
368
369
[[package]]
370
name = "block2"
371
-
version = "0.6.1"
372
source = "registry+https://github.com/rust-lang/crates.io-index"
373
-
checksum = "340d2f0bdb2a43c1d3cd40513185b2bd7def0aa1052f956455114bc98f82dcf2"
374
dependencies = [
375
-
"objc2 0.6.1",
376
]
377
378
[[package]]
···
390
391
[[package]]
392
name = "brotli"
393
-
version = "8.0.1"
394
source = "registry+https://github.com/rust-lang/crates.io-index"
395
-
checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d"
396
dependencies = [
397
"alloc-no-stdlib",
398
"alloc-stdlib",
···
423
424
[[package]]
425
name = "bytemuck"
426
-
version = "1.23.1"
427
source = "registry+https://github.com/rust-lang/crates.io-index"
428
-
checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422"
429
430
[[package]]
431
name = "byteorder"
···
454
source = "registry+https://github.com/rust-lang/crates.io-index"
455
checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2"
456
dependencies = [
457
-
"bitflags 2.9.1",
458
"cairo-sys-rs",
459
"glib",
460
"libc",
···
475
476
[[package]]
477
name = "camino"
478
-
version = "1.1.10"
479
source = "registry+https://github.com/rust-lang/crates.io-index"
480
-
checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab"
481
dependencies = [
482
-
"serde",
483
]
484
485
[[package]]
···
502
"semver",
503
"serde",
504
"serde_json",
505
-
"thiserror 2.0.12",
506
]
507
508
[[package]]
···
512
checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77"
513
dependencies = [
514
"serde",
515
-
"toml 0.9.4",
516
]
517
518
[[package]]
519
name = "cc"
520
-
version = "1.2.30"
521
source = "registry+https://github.com/rust-lang/crates.io-index"
522
-
checksum = "deec109607ca693028562ed836a5f1c4b8bd77755c4e132fc5ce11b0b6211ae7"
523
dependencies = [
524
"jobserver",
525
"libc",
526
"shlex",
···
555
556
[[package]]
557
name = "cfg-if"
558
-
version = "1.0.1"
559
source = "registry+https://github.com/rust-lang/crates.io-index"
560
-
checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268"
561
562
[[package]]
563
name = "cfg_aliases"
···
567
568
[[package]]
569
name = "chrono"
570
-
version = "0.4.41"
571
source = "registry+https://github.com/rust-lang/crates.io-index"
572
-
checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d"
573
dependencies = [
574
-
"android-tzdata",
575
"iana-time-zone",
576
"num-traits",
577
"serde",
578
-
"windows-link",
579
]
580
581
[[package]]
···
690
source = "registry+https://github.com/rust-lang/crates.io-index"
691
checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1"
692
dependencies = [
693
-
"bitflags 2.9.1",
694
"core-foundation 0.10.1",
695
"core-graphics-types",
696
"foreign-types 0.5.0",
···
703
source = "registry+https://github.com/rust-lang/crates.io-index"
704
checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
705
dependencies = [
706
-
"bitflags 2.9.1",
707
"core-foundation 0.10.1",
708
"libc",
709
]
···
800
checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
801
dependencies = [
802
"quote",
803
-
"syn 2.0.104",
804
]
805
806
[[package]]
···
810
checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501"
811
dependencies = [
812
"quote",
813
-
"syn 2.0.104",
814
]
815
816
[[package]]
817
name = "darling"
818
-
version = "0.20.11"
819
source = "registry+https://github.com/rust-lang/crates.io-index"
820
-
checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee"
821
dependencies = [
822
"darling_core",
823
"darling_macro",
···
825
826
[[package]]
827
name = "darling_core"
828
-
version = "0.20.11"
829
source = "registry+https://github.com/rust-lang/crates.io-index"
830
-
checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e"
831
dependencies = [
832
"fnv",
833
"ident_case",
834
"proc-macro2",
835
"quote",
836
"strsim",
837
-
"syn 2.0.104",
838
]
839
840
[[package]]
841
name = "darling_macro"
842
-
version = "0.20.11"
843
source = "registry+https://github.com/rust-lang/crates.io-index"
844
-
checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
845
dependencies = [
846
"darling_core",
847
"quote",
848
-
"syn 2.0.104",
849
]
850
851
[[package]]
852
name = "data-url"
853
-
version = "0.3.1"
854
source = "registry+https://github.com/rust-lang/crates.io-index"
855
-
checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a"
856
857
[[package]]
858
name = "deranged"
859
-
version = "0.4.0"
860
source = "registry+https://github.com/rust-lang/crates.io-index"
861
-
checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e"
862
dependencies = [
863
"powerfmt",
864
-
"serde",
865
-
]
866
-
867
-
[[package]]
868
-
name = "derivative"
869
-
version = "2.2.0"
870
-
source = "registry+https://github.com/rust-lang/crates.io-index"
871
-
checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
872
-
dependencies = [
873
-
"proc-macro2",
874
-
"quote",
875
-
"syn 1.0.109",
876
]
877
878
[[package]]
···
885
"proc-macro2",
886
"quote",
887
"rustc_version",
888
-
"syn 2.0.104",
889
]
890
891
[[package]]
···
900
901
[[package]]
902
name = "dirs"
903
-
version = "5.0.1"
904
-
source = "registry+https://github.com/rust-lang/crates.io-index"
905
-
checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
906
-
dependencies = [
907
-
"dirs-sys 0.4.1",
908
-
]
909
-
910
-
[[package]]
911
-
name = "dirs"
912
version = "6.0.0"
913
source = "registry+https://github.com/rust-lang/crates.io-index"
914
checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
915
dependencies = [
916
-
"dirs-sys 0.5.0",
917
-
]
918
-
919
-
[[package]]
920
-
name = "dirs-sys"
921
-
version = "0.4.1"
922
-
source = "registry+https://github.com/rust-lang/crates.io-index"
923
-
checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
924
-
dependencies = [
925
-
"libc",
926
-
"option-ext",
927
-
"redox_users 0.4.6",
928
-
"windows-sys 0.48.0",
929
]
930
931
[[package]]
···
936
dependencies = [
937
"libc",
938
"option-ext",
939
-
"redox_users 0.5.2",
940
-
"windows-sys 0.60.2",
941
]
942
943
[[package]]
···
952
source = "registry+https://github.com/rust-lang/crates.io-index"
953
checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec"
954
dependencies = [
955
-
"bitflags 2.9.1",
956
-
"objc2 0.6.1",
957
]
958
959
[[package]]
···
964
dependencies = [
965
"proc-macro2",
966
"quote",
967
-
"syn 2.0.104",
968
]
969
970
[[package]]
971
name = "dlopen2"
972
-
version = "0.7.0"
973
source = "registry+https://github.com/rust-lang/crates.io-index"
974
-
checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6"
975
dependencies = [
976
"dlopen2_derive",
977
"libc",
···
987
dependencies = [
988
"proc-macro2",
989
"quote",
990
-
"syn 2.0.104",
991
]
992
993
[[package]]
···
1001
1002
[[package]]
1003
name = "document-features"
1004
-
version = "0.2.11"
1005
source = "registry+https://github.com/rust-lang/crates.io-index"
1006
-
checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d"
1007
dependencies = [
1008
"litrs",
1009
]
···
1052
1053
[[package]]
1054
name = "embed-resource"
1055
-
version = "3.0.5"
1056
source = "registry+https://github.com/rust-lang/crates.io-index"
1057
-
checksum = "4c6d81016d6c977deefb2ef8d8290da019e27cc26167e102185da528e6c0ab38"
1058
dependencies = [
1059
"cc",
1060
"memchr",
1061
"rustc_version",
1062
-
"toml 0.9.4",
1063
"vswhom",
1064
"winreg",
1065
]
···
1103
dependencies = [
1104
"proc-macro2",
1105
"quote",
1106
-
"syn 2.0.104",
1107
]
1108
1109
[[package]]
···
1123
dependencies = [
1124
"proc-macro2",
1125
"quote",
1126
-
"syn 2.0.104",
1127
]
1128
1129
[[package]]
···
1134
1135
[[package]]
1136
name = "erased-serde"
1137
-
version = "0.4.6"
1138
source = "registry+https://github.com/rust-lang/crates.io-index"
1139
-
checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7"
1140
dependencies = [
1141
"serde",
1142
"typeid",
1143
]
1144
1145
[[package]]
1146
name = "errno"
1147
-
version = "0.3.13"
1148
source = "registry+https://github.com/rust-lang/crates.io-index"
1149
-
checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad"
1150
dependencies = [
1151
"libc",
1152
-
"windows-sys 0.60.2",
1153
]
1154
1155
[[package]]
1156
name = "event-listener"
1157
-
version = "5.4.0"
1158
source = "registry+https://github.com/rust-lang/crates.io-index"
1159
-
checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae"
1160
dependencies = [
1161
"concurrent-queue",
1162
"parking",
···
1190
1191
[[package]]
1192
name = "fast_image_resize"
1193
-
version = "4.2.3"
1194
source = "registry+https://github.com/rust-lang/crates.io-index"
1195
-
checksum = "43e5ce628b529e9bd2e2f378c1193215104b526fd494a572aa23414adc4e5553"
1196
dependencies = [
1197
"bytemuck",
1198
"cfg-if",
1199
"document-features",
1200
"image",
1201
"num-traits",
1202
-
"thiserror 1.0.69",
1203
]
1204
1205
[[package]]
···
1209
checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
1210
1211
[[package]]
1212
name = "fdeflate"
1213
version = "0.3.7"
1214
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1228
]
1229
1230
[[package]]
1231
-
name = "filetime"
1232
-
version = "0.2.25"
1233
source = "registry+https://github.com/rust-lang/crates.io-index"
1234
-
checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586"
1235
-
dependencies = [
1236
-
"cfg-if",
1237
-
"libc",
1238
-
"libredox",
1239
-
"windows-sys 0.59.0",
1240
-
]
1241
1242
[[package]]
1243
name = "flate2"
1244
-
version = "1.1.2"
1245
source = "registry+https://github.com/rust-lang/crates.io-index"
1246
-
checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d"
1247
dependencies = [
1248
"crc32fast",
1249
"miniz_oxide",
···
1282
dependencies = [
1283
"proc-macro2",
1284
"quote",
1285
-
"syn 2.0.104",
1286
]
1287
1288
[[package]]
···
1299
1300
[[package]]
1301
name = "form_urlencoded"
1302
-
version = "1.2.1"
1303
source = "registry+https://github.com/rust-lang/crates.io-index"
1304
-
checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
1305
dependencies = [
1306
"percent-encoding",
1307
]
···
1360
1361
[[package]]
1362
name = "futures-lite"
1363
-
version = "2.6.0"
1364
source = "registry+https://github.com/rust-lang/crates.io-index"
1365
-
checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532"
1366
dependencies = [
1367
"fastrand",
1368
"futures-core",
···
1379
dependencies = [
1380
"proc-macro2",
1381
"quote",
1382
-
"syn 2.0.104",
1383
]
1384
1385
[[package]]
···
1521
1522
[[package]]
1523
name = "generic-array"
1524
-
version = "0.14.7"
1525
source = "registry+https://github.com/rust-lang/crates.io-index"
1526
-
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
1527
dependencies = [
1528
"typenum",
1529
"version_check",
1530
]
1531
1532
[[package]]
···
1555
1556
[[package]]
1557
name = "getrandom"
1558
-
version = "0.3.3"
1559
source = "registry+https://github.com/rust-lang/crates.io-index"
1560
-
checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
1561
dependencies = [
1562
"cfg-if",
1563
"js-sys",
1564
"libc",
1565
"r-efi",
1566
-
"wasi 0.14.2+wasi-0.2.4",
1567
"wasm-bindgen",
1568
]
1569
···
1578
]
1579
1580
[[package]]
1581
-
name = "gimli"
1582
-
version = "0.31.1"
1583
-
source = "registry+https://github.com/rust-lang/crates.io-index"
1584
-
checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
1585
-
1586
-
[[package]]
1587
name = "gio"
1588
version = "0.18.4"
1589
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1621
source = "registry+https://github.com/rust-lang/crates.io-index"
1622
checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5"
1623
dependencies = [
1624
-
"bitflags 2.9.1",
1625
"futures-channel",
1626
"futures-core",
1627
"futures-executor",
···
1649
"proc-macro-error",
1650
"proc-macro2",
1651
"quote",
1652
-
"syn 2.0.104",
1653
]
1654
1655
[[package]]
···
1664
1665
[[package]]
1666
name = "glob"
1667
-
version = "0.3.2"
1668
source = "registry+https://github.com/rust-lang/crates.io-index"
1669
-
checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2"
1670
1671
[[package]]
1672
name = "gobject-sys"
···
1728
"proc-macro-error",
1729
"proc-macro2",
1730
"quote",
1731
-
"syn 2.0.104",
1732
]
1733
1734
[[package]]
1735
name = "h2"
1736
-
version = "0.4.11"
1737
source = "registry+https://github.com/rust-lang/crates.io-index"
1738
-
checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785"
1739
dependencies = [
1740
"atomic-waker",
1741
"bytes",
···
1743
"futures-core",
1744
"futures-sink",
1745
"http",
1746
-
"indexmap 2.10.0",
1747
"slab",
1748
"tokio",
1749
"tokio-util",
···
1752
1753
[[package]]
1754
name = "half"
1755
-
version = "2.6.0"
1756
source = "registry+https://github.com/rust-lang/crates.io-index"
1757
-
checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9"
1758
dependencies = [
1759
"cfg-if",
1760
"crunchy",
1761
]
1762
1763
[[package]]
···
1774
1775
[[package]]
1776
name = "hashbrown"
1777
-
version = "0.15.4"
1778
source = "registry+https://github.com/rust-lang/crates.io-index"
1779
-
checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5"
1780
1781
[[package]]
1782
name = "heck"
···
1856
1857
[[package]]
1858
name = "hyper"
1859
-
version = "1.6.0"
1860
source = "registry+https://github.com/rust-lang/crates.io-index"
1861
-
checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80"
1862
dependencies = [
1863
"bytes",
1864
"futures-channel",
1865
-
"futures-util",
1866
"h2",
1867
"http",
1868
"http-body",
1869
"httparse",
1870
"itoa",
1871
"pin-project-lite",
1872
"smallvec",
1873
"tokio",
1874
"want",
···
1909
1910
[[package]]
1911
name = "hyper-util"
1912
-
version = "0.1.16"
1913
source = "registry+https://github.com/rust-lang/crates.io-index"
1914
-
checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e"
1915
dependencies = [
1916
"base64 0.22.1",
1917
"bytes",
···
1925
"libc",
1926
"percent-encoding",
1927
"pin-project-lite",
1928
-
"socket2 0.6.0",
1929
"system-configuration",
1930
"tokio",
1931
"tower-service",
···
1935
1936
[[package]]
1937
name = "iana-time-zone"
1938
-
version = "0.1.63"
1939
source = "registry+https://github.com/rust-lang/crates.io-index"
1940
-
checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8"
1941
dependencies = [
1942
"android_system_properties",
1943
"core-foundation-sys",
···
1945
"js-sys",
1946
"log",
1947
"wasm-bindgen",
1948
-
"windows-core",
1949
]
1950
1951
[[package]]
···
1964
checksum = "cc50b891e4acf8fe0e71ef88ec43ad82ee07b3810ad09de10f1d01f072ed4b98"
1965
dependencies = [
1966
"byteorder",
1967
-
"png",
1968
]
1969
1970
[[package]]
1971
name = "icu_collections"
1972
-
version = "2.0.0"
1973
source = "registry+https://github.com/rust-lang/crates.io-index"
1974
-
checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47"
1975
dependencies = [
1976
"displaydoc",
1977
"potential_utf",
···
1982
1983
[[package]]
1984
name = "icu_locale_core"
1985
-
version = "2.0.0"
1986
source = "registry+https://github.com/rust-lang/crates.io-index"
1987
-
checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a"
1988
dependencies = [
1989
"displaydoc",
1990
"litemap",
···
1995
1996
[[package]]
1997
name = "icu_normalizer"
1998
-
version = "2.0.0"
1999
source = "registry+https://github.com/rust-lang/crates.io-index"
2000
-
checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979"
2001
dependencies = [
2002
-
"displaydoc",
2003
"icu_collections",
2004
"icu_normalizer_data",
2005
"icu_properties",
···
2010
2011
[[package]]
2012
name = "icu_normalizer_data"
2013
-
version = "2.0.0"
2014
source = "registry+https://github.com/rust-lang/crates.io-index"
2015
-
checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3"
2016
2017
[[package]]
2018
name = "icu_properties"
2019
-
version = "2.0.1"
2020
source = "registry+https://github.com/rust-lang/crates.io-index"
2021
-
checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b"
2022
dependencies = [
2023
-
"displaydoc",
2024
"icu_collections",
2025
"icu_locale_core",
2026
"icu_properties_data",
2027
"icu_provider",
2028
-
"potential_utf",
2029
"zerotrie",
2030
"zerovec",
2031
]
2032
2033
[[package]]
2034
name = "icu_properties_data"
2035
-
version = "2.0.1"
2036
source = "registry+https://github.com/rust-lang/crates.io-index"
2037
-
checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632"
2038
2039
[[package]]
2040
name = "icu_provider"
2041
-
version = "2.0.0"
2042
source = "registry+https://github.com/rust-lang/crates.io-index"
2043
-
checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af"
2044
dependencies = [
2045
"displaydoc",
2046
"icu_locale_core",
2047
-
"stable_deref_trait",
2048
-
"tinystr",
2049
"writeable",
2050
"yoke",
2051
"zerofrom",
···
2061
2062
[[package]]
2063
name = "idna"
2064
-
version = "1.0.3"
2065
source = "registry+https://github.com/rust-lang/crates.io-index"
2066
-
checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e"
2067
dependencies = [
2068
"idna_adapter",
2069
"smallvec",
···
2082
2083
[[package]]
2084
name = "image"
2085
-
version = "0.25.6"
2086
source = "registry+https://github.com/rust-lang/crates.io-index"
2087
-
checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a"
2088
dependencies = [
2089
"bytemuck",
2090
"byteorder-lite",
···
2092
"exr",
2093
"gif",
2094
"image-webp",
2095
"num-traits",
2096
-
"png",
2097
"qoi",
2098
"ravif",
2099
"rayon",
···
2105
2106
[[package]]
2107
name = "image-webp"
2108
-
version = "0.2.3"
2109
source = "registry+https://github.com/rust-lang/crates.io-index"
2110
-
checksum = "f6970fe7a5300b4b42e62c52efa0187540a5bef546c60edaf554ef595d2e6f0b"
2111
dependencies = [
2112
"byteorder-lite",
2113
"quick-error",
···
2115
2116
[[package]]
2117
name = "imgref"
2118
-
version = "1.11.0"
2119
source = "registry+https://github.com/rust-lang/crates.io-index"
2120
-
checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408"
2121
2122
[[package]]
2123
name = "indexmap"
···
2132
2133
[[package]]
2134
name = "indexmap"
2135
-
version = "2.10.0"
2136
source = "registry+https://github.com/rust-lang/crates.io-index"
2137
-
checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661"
2138
dependencies = [
2139
"equivalent",
2140
-
"hashbrown 0.15.4",
2141
"serde",
2142
]
2143
2144
[[package]]
···
2152
2153
[[package]]
2154
name = "inotify"
2155
-
version = "0.9.6"
2156
source = "registry+https://github.com/rust-lang/crates.io-index"
2157
-
checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff"
2158
dependencies = [
2159
-
"bitflags 1.3.2",
2160
"inotify-sys",
2161
"libc",
2162
]
···
2178
dependencies = [
2179
"proc-macro2",
2180
"quote",
2181
-
"syn 2.0.104",
2182
-
]
2183
-
2184
-
[[package]]
2185
-
name = "io-uring"
2186
-
version = "0.7.9"
2187
-
source = "registry+https://github.com/rust-lang/crates.io-index"
2188
-
checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4"
2189
-
dependencies = [
2190
-
"bitflags 2.9.1",
2191
-
"cfg-if",
2192
-
"libc",
2193
]
2194
2195
[[package]]
···
2200
2201
[[package]]
2202
name = "iri-string"
2203
-
version = "0.7.8"
2204
source = "registry+https://github.com/rust-lang/crates.io-index"
2205
-
checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2"
2206
dependencies = [
2207
"memchr",
2208
"serde",
···
2289
2290
[[package]]
2291
name = "jobserver"
2292
-
version = "0.1.33"
2293
source = "registry+https://github.com/rust-lang/crates.io-index"
2294
-
checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a"
2295
dependencies = [
2296
-
"getrandom 0.3.3",
2297
"libc",
2298
]
2299
2300
[[package]]
2301
-
name = "jpeg-decoder"
2302
-
version = "0.3.2"
2303
-
source = "registry+https://github.com/rust-lang/crates.io-index"
2304
-
checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07"
2305
-
2306
-
[[package]]
2307
name = "js-sys"
2308
-
version = "0.3.77"
2309
source = "registry+https://github.com/rust-lang/crates.io-index"
2310
-
checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
2311
dependencies = [
2312
"once_cell",
2313
"wasm-bindgen",
···
2341
source = "registry+https://github.com/rust-lang/crates.io-index"
2342
checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a"
2343
dependencies = [
2344
-
"bitflags 2.9.1",
2345
"serde",
2346
"unicode-segmentation",
2347
]
···
2374
dependencies = [
2375
"cssparser",
2376
"html5ever",
2377
-
"indexmap 2.10.0",
2378
"selectors",
2379
]
2380
···
2386
2387
[[package]]
2388
name = "lebe"
2389
-
version = "0.5.2"
2390
source = "registry+https://github.com/rust-lang/crates.io-index"
2391
-
checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
2392
2393
[[package]]
2394
name = "libappindicator"
···
2416
2417
[[package]]
2418
name = "libc"
2419
-
version = "0.2.174"
2420
source = "registry+https://github.com/rust-lang/crates.io-index"
2421
-
checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
2422
2423
[[package]]
2424
name = "libfuzzer-sys"
···
2442
2443
[[package]]
2444
name = "libredox"
2445
-
version = "0.1.9"
2446
source = "registry+https://github.com/rust-lang/crates.io-index"
2447
-
checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3"
2448
dependencies = [
2449
-
"bitflags 2.9.1",
2450
"libc",
2451
-
"redox_syscall",
2452
]
2453
2454
[[package]]
2455
name = "linux-raw-sys"
2456
-
version = "0.9.4"
2457
source = "registry+https://github.com/rust-lang/crates.io-index"
2458
-
checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12"
2459
2460
[[package]]
2461
name = "litemap"
2462
-
version = "0.8.0"
2463
source = "registry+https://github.com/rust-lang/crates.io-index"
2464
-
checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956"
2465
2466
[[package]]
2467
name = "litrs"
2468
-
version = "0.4.2"
2469
source = "registry+https://github.com/rust-lang/crates.io-index"
2470
-
checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed"
2471
2472
[[package]]
2473
name = "lock_api"
2474
-
version = "0.4.13"
2475
source = "registry+https://github.com/rust-lang/crates.io-index"
2476
-
checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765"
2477
dependencies = [
2478
-
"autocfg",
2479
"scopeguard",
2480
]
2481
2482
[[package]]
2483
name = "log"
2484
-
version = "0.4.27"
2485
source = "registry+https://github.com/rust-lang/crates.io-index"
2486
-
checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
2487
2488
[[package]]
2489
name = "loop9"
···
2528
dependencies = [
2529
"proc-macro2",
2530
"quote",
2531
-
"syn 2.0.104",
2532
]
2533
2534
[[package]]
···
2549
2550
[[package]]
2551
name = "memchr"
2552
-
version = "2.7.5"
2553
source = "registry+https://github.com/rust-lang/crates.io-index"
2554
-
checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
2555
2556
[[package]]
2557
name = "memoffset"
···
2569
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
2570
2571
[[package]]
2572
-
name = "minimal-lexical"
2573
-
version = "0.2.1"
2574
-
source = "registry+https://github.com/rust-lang/crates.io-index"
2575
-
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
2576
-
2577
-
[[package]]
2578
name = "miniz_oxide"
2579
version = "0.8.9"
2580
source = "registry+https://github.com/rust-lang/crates.io-index"
···
2586
2587
[[package]]
2588
name = "mio"
2589
-
version = "0.8.11"
2590
source = "registry+https://github.com/rust-lang/crates.io-index"
2591
-
checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
2592
dependencies = [
2593
"libc",
2594
"log",
2595
"wasi 0.11.1+wasi-snapshot-preview1",
2596
-
"windows-sys 0.48.0",
2597
]
2598
2599
[[package]]
2600
-
name = "mio"
2601
-
version = "1.0.4"
2602
source = "registry+https://github.com/rust-lang/crates.io-index"
2603
-
checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c"
2604
dependencies = [
2605
-
"libc",
2606
-
"wasi 0.11.1+wasi-snapshot-preview1",
2607
-
"windows-sys 0.59.0",
2608
]
2609
2610
[[package]]
···
2628
"dpi",
2629
"gtk",
2630
"keyboard-types",
2631
-
"objc2 0.6.1",
2632
"objc2-app-kit",
2633
"objc2-core-foundation",
2634
-
"objc2-foundation 0.3.1",
2635
"once_cell",
2636
-
"png",
2637
"serde",
2638
-
"thiserror 2.0.12",
2639
"windows-sys 0.60.2",
2640
]
2641
···
2662
source = "registry+https://github.com/rust-lang/crates.io-index"
2663
checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4"
2664
dependencies = [
2665
-
"bitflags 2.9.1",
2666
"jni-sys",
2667
"log",
2668
"ndk-sys",
···
2694
2695
[[package]]
2696
name = "nix"
2697
-
version = "0.27.1"
2698
source = "registry+https://github.com/rust-lang/crates.io-index"
2699
-
checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
2700
dependencies = [
2701
-
"bitflags 2.9.1",
2702
"cfg-if",
2703
"libc",
2704
"memoffset",
2705
]
···
2712
2713
[[package]]
2714
name = "nom"
2715
-
version = "7.1.3"
2716
source = "registry+https://github.com/rust-lang/crates.io-index"
2717
-
checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
2718
dependencies = [
2719
"memchr",
2720
-
"minimal-lexical",
2721
]
2722
2723
[[package]]
···
2728
2729
[[package]]
2730
name = "notify"
2731
-
version = "6.1.1"
2732
source = "registry+https://github.com/rust-lang/crates.io-index"
2733
-
checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d"
2734
dependencies = [
2735
-
"bitflags 2.9.1",
2736
-
"crossbeam-channel",
2737
-
"filetime",
2738
"fsevent-sys",
2739
"inotify",
2740
"kqueue",
2741
"libc",
2742
"log",
2743
-
"mio 0.8.11",
2744
"walkdir",
2745
-
"windows-sys 0.48.0",
2746
]
2747
2748
[[package]]
2749
name = "num-bigint"
2750
version = "0.4.6"
2751
source = "registry+https://github.com/rust-lang/crates.io-index"
···
2769
dependencies = [
2770
"proc-macro2",
2771
"quote",
2772
-
"syn 2.0.104",
2773
]
2774
2775
[[package]]
···
2803
2804
[[package]]
2805
name = "num_enum"
2806
-
version = "0.7.4"
2807
source = "registry+https://github.com/rust-lang/crates.io-index"
2808
-
checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a"
2809
dependencies = [
2810
"num_enum_derive",
2811
"rustversion",
···
2813
2814
[[package]]
2815
name = "num_enum_derive"
2816
-
version = "0.7.4"
2817
source = "registry+https://github.com/rust-lang/crates.io-index"
2818
-
checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d"
2819
dependencies = [
2820
-
"proc-macro-crate 2.0.2",
2821
"proc-macro2",
2822
"quote",
2823
-
"syn 2.0.104",
2824
]
2825
2826
[[package]]
···
2841
2842
[[package]]
2843
name = "objc2"
2844
-
version = "0.6.1"
2845
source = "registry+https://github.com/rust-lang/crates.io-index"
2846
-
checksum = "88c6597e14493ab2e44ce58f2fdecf095a51f12ca57bec060a11c57332520551"
2847
dependencies = [
2848
"objc2-encode",
2849
"objc2-exception-helper",
···
2851
2852
[[package]]
2853
name = "objc2-app-kit"
2854
-
version = "0.3.1"
2855
source = "registry+https://github.com/rust-lang/crates.io-index"
2856
-
checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc"
2857
dependencies = [
2858
-
"bitflags 2.9.1",
2859
-
"block2 0.6.1",
2860
"libc",
2861
-
"objc2 0.6.1",
2862
"objc2-cloud-kit",
2863
"objc2-core-data",
2864
"objc2-core-foundation",
2865
"objc2-core-graphics",
2866
"objc2-core-image",
2867
-
"objc2-foundation 0.3.1",
2868
-
"objc2-quartz-core 0.3.1",
2869
]
2870
2871
[[package]]
2872
name = "objc2-cloud-kit"
2873
-
version = "0.3.1"
2874
source = "registry+https://github.com/rust-lang/crates.io-index"
2875
-
checksum = "17614fdcd9b411e6ff1117dfb1d0150f908ba83a7df81b1f118005fe0a8ea15d"
2876
dependencies = [
2877
-
"bitflags 2.9.1",
2878
-
"objc2 0.6.1",
2879
-
"objc2-foundation 0.3.1",
2880
]
2881
2882
[[package]]
2883
name = "objc2-core-data"
2884
-
version = "0.3.1"
2885
source = "registry+https://github.com/rust-lang/crates.io-index"
2886
-
checksum = "291fbbf7d29287518e8686417cf7239c74700fd4b607623140a7d4a3c834329d"
2887
dependencies = [
2888
-
"bitflags 2.9.1",
2889
-
"objc2 0.6.1",
2890
-
"objc2-foundation 0.3.1",
2891
]
2892
2893
[[package]]
2894
name = "objc2-core-foundation"
2895
-
version = "0.3.1"
2896
source = "registry+https://github.com/rust-lang/crates.io-index"
2897
-
checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166"
2898
dependencies = [
2899
-
"bitflags 2.9.1",
2900
"dispatch2",
2901
-
"objc2 0.6.1",
2902
]
2903
2904
[[package]]
2905
name = "objc2-core-graphics"
2906
-
version = "0.3.1"
2907
source = "registry+https://github.com/rust-lang/crates.io-index"
2908
-
checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4"
2909
dependencies = [
2910
-
"bitflags 2.9.1",
2911
"dispatch2",
2912
-
"objc2 0.6.1",
2913
"objc2-core-foundation",
2914
"objc2-io-surface",
2915
]
2916
2917
[[package]]
2918
name = "objc2-core-image"
2919
-
version = "0.3.1"
2920
source = "registry+https://github.com/rust-lang/crates.io-index"
2921
-
checksum = "79b3dc0cc4386b6ccf21c157591b34a7f44c8e75b064f85502901ab2188c007e"
2922
dependencies = [
2923
-
"objc2 0.6.1",
2924
-
"objc2-foundation 0.3.1",
2925
]
2926
2927
[[package]]
···
2945
source = "registry+https://github.com/rust-lang/crates.io-index"
2946
checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8"
2947
dependencies = [
2948
-
"bitflags 2.9.1",
2949
"block2 0.5.1",
2950
"libc",
2951
"objc2 0.5.2",
···
2953
2954
[[package]]
2955
name = "objc2-foundation"
2956
-
version = "0.3.1"
2957
source = "registry+https://github.com/rust-lang/crates.io-index"
2958
-
checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c"
2959
dependencies = [
2960
-
"bitflags 2.9.1",
2961
-
"block2 0.6.1",
2962
"libc",
2963
-
"objc2 0.6.1",
2964
"objc2-core-foundation",
2965
]
2966
2967
[[package]]
2968
name = "objc2-io-surface"
2969
-
version = "0.3.1"
2970
source = "registry+https://github.com/rust-lang/crates.io-index"
2971
-
checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c"
2972
dependencies = [
2973
-
"bitflags 2.9.1",
2974
-
"objc2 0.6.1",
2975
"objc2-core-foundation",
2976
]
2977
···
2981
source = "registry+https://github.com/rust-lang/crates.io-index"
2982
checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6"
2983
dependencies = [
2984
-
"bitflags 2.9.1",
2985
"block2 0.5.1",
2986
"objc2 0.5.2",
2987
"objc2-foundation 0.2.2",
···
2993
source = "registry+https://github.com/rust-lang/crates.io-index"
2994
checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a"
2995
dependencies = [
2996
-
"bitflags 2.9.1",
2997
"block2 0.5.1",
2998
"objc2 0.5.2",
2999
"objc2-foundation 0.2.2",
···
3002
3003
[[package]]
3004
name = "objc2-quartz-core"
3005
-
version = "0.3.1"
3006
source = "registry+https://github.com/rust-lang/crates.io-index"
3007
-
checksum = "90ffb6a0cd5f182dc964334388560b12a57f7b74b3e2dec5e2722aa2dfb2ccd5"
3008
dependencies = [
3009
-
"bitflags 2.9.1",
3010
-
"objc2 0.6.1",
3011
-
"objc2-foundation 0.3.1",
3012
]
3013
3014
[[package]]
3015
-
name = "objc2-ui-kit"
3016
-
version = "0.3.1"
3017
source = "registry+https://github.com/rust-lang/crates.io-index"
3018
-
checksum = "25b1312ad7bc8a0e92adae17aa10f90aae1fb618832f9b993b022b591027daed"
3019
dependencies = [
3020
-
"bitflags 2.9.1",
3021
-
"objc2 0.6.1",
3022
"objc2-core-foundation",
3023
-
"objc2-foundation 0.3.1",
3024
]
3025
3026
[[package]]
3027
-
name = "objc2-web-kit"
3028
-
version = "0.3.1"
3029
source = "registry+https://github.com/rust-lang/crates.io-index"
3030
-
checksum = "91672909de8b1ce1c2252e95bbee8c1649c9ad9d14b9248b3d7b4c47903c47ad"
3031
dependencies = [
3032
-
"bitflags 2.9.1",
3033
-
"block2 0.6.1",
3034
-
"objc2 0.6.1",
3035
-
"objc2-app-kit",
3036
"objc2-core-foundation",
3037
-
"objc2-foundation 0.3.1",
3038
]
3039
3040
[[package]]
3041
-
name = "object"
3042
-
version = "0.36.7"
3043
source = "registry+https://github.com/rust-lang/crates.io-index"
3044
-
checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
3045
dependencies = [
3046
-
"memchr",
3047
]
3048
3049
[[package]]
···
3066
3067
[[package]]
3068
name = "openssl"
3069
-
version = "0.10.73"
3070
source = "registry+https://github.com/rust-lang/crates.io-index"
3071
-
checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8"
3072
dependencies = [
3073
-
"bitflags 2.9.1",
3074
"cfg-if",
3075
"foreign-types 0.3.2",
3076
"libc",
···
3087
dependencies = [
3088
"proc-macro2",
3089
"quote",
3090
-
"syn 2.0.104",
3091
]
3092
3093
[[package]]
···
3098
3099
[[package]]
3100
name = "openssl-sys"
3101
-
version = "0.9.109"
3102
source = "registry+https://github.com/rust-lang/crates.io-index"
3103
-
checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571"
3104
dependencies = [
3105
"cc",
3106
"libc",
···
3136
3137
[[package]]
3138
name = "os_pipe"
3139
-
version = "1.2.2"
3140
source = "registry+https://github.com/rust-lang/crates.io-index"
3141
-
checksum = "db335f4760b14ead6290116f2427bf33a14d4f0617d49f78a246de10c1831224"
3142
dependencies = [
3143
"libc",
3144
-
"windows-sys 0.59.0",
3145
]
3146
3147
[[package]]
···
3177
3178
[[package]]
3179
name = "parking_lot"
3180
-
version = "0.12.4"
3181
source = "registry+https://github.com/rust-lang/crates.io-index"
3182
-
checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13"
3183
dependencies = [
3184
"lock_api",
3185
"parking_lot_core",
···
3187
3188
[[package]]
3189
name = "parking_lot_core"
3190
-
version = "0.9.11"
3191
source = "registry+https://github.com/rust-lang/crates.io-index"
3192
-
checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5"
3193
dependencies = [
3194
"cfg-if",
3195
"libc",
3196
"redox_syscall",
3197
"smallvec",
3198
-
"windows-targets 0.52.6",
3199
]
3200
3201
[[package]]
···
3212
3213
[[package]]
3214
name = "percent-encoding"
3215
-
version = "2.3.1"
3216
source = "registry+https://github.com/rust-lang/crates.io-index"
3217
-
checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
3218
3219
[[package]]
3220
name = "phf"
···
3320
"phf_shared 0.11.3",
3321
"proc-macro2",
3322
"quote",
3323
-
"syn 2.0.104",
3324
]
3325
3326
[[package]]
···
3381
3382
[[package]]
3383
name = "plist"
3384
-
version = "1.7.4"
3385
source = "registry+https://github.com/rust-lang/crates.io-index"
3386
-
checksum = "3af6b589e163c5a788fab00ce0c0366f6efbb9959c2f9874b224936af7fce7e1"
3387
dependencies = [
3388
"base64 0.22.1",
3389
-
"indexmap 2.10.0",
3390
"quick-xml",
3391
"serde",
3392
"time",
···
3406
]
3407
3408
[[package]]
3409
name = "polling"
3410
-
version = "3.9.0"
3411
source = "registry+https://github.com/rust-lang/crates.io-index"
3412
-
checksum = "8ee9b2fa7a4517d2c91ff5bc6c297a427a96749d15f98fcdbb22c05571a4d4b7"
3413
dependencies = [
3414
"cfg-if",
3415
"concurrent-queue",
3416
"hermit-abi",
3417
"pin-project-lite",
3418
"rustix",
3419
-
"windows-sys 0.60.2",
3420
]
3421
3422
[[package]]
3423
name = "potential_utf"
3424
-
version = "0.1.2"
3425
source = "registry+https://github.com/rust-lang/crates.io-index"
3426
-
checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585"
3427
dependencies = [
3428
"zerovec",
3429
]
···
3470
]
3471
3472
[[package]]
3473
name = "proc-macro-error"
3474
version = "1.0.4"
3475
source = "registry+https://github.com/rust-lang/crates.io-index"
···
3501
3502
[[package]]
3503
name = "proc-macro2"
3504
-
version = "1.0.95"
3505
source = "registry+https://github.com/rust-lang/crates.io-index"
3506
-
checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
3507
dependencies = [
3508
"unicode-ident",
3509
]
···
3524
checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b"
3525
dependencies = [
3526
"quote",
3527
-
"syn 2.0.104",
3528
]
3529
3530
[[package]]
···
3544
]
3545
3546
[[package]]
3547
name = "qoi"
3548
version = "0.4.1"
3549
source = "registry+https://github.com/rust-lang/crates.io-index"
···
3560
3561
[[package]]
3562
name = "quick-xml"
3563
-
version = "0.38.0"
3564
source = "registry+https://github.com/rust-lang/crates.io-index"
3565
-
checksum = "8927b0664f5c5a98265138b7e3f90aa19a6b21353182469ace36d4ac527b7b1b"
3566
dependencies = [
3567
"memchr",
3568
]
3569
3570
[[package]]
3571
name = "quinn"
3572
-
version = "0.11.8"
3573
source = "registry+https://github.com/rust-lang/crates.io-index"
3574
-
checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8"
3575
dependencies = [
3576
"bytes",
3577
"cfg_aliases",
···
3580
"quinn-udp",
3581
"rustc-hash",
3582
"rustls",
3583
-
"socket2 0.5.10",
3584
-
"thiserror 2.0.12",
3585
"tokio",
3586
"tracing",
3587
"web-time",
···
3589
3590
[[package]]
3591
name = "quinn-proto"
3592
-
version = "0.11.12"
3593
source = "registry+https://github.com/rust-lang/crates.io-index"
3594
-
checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e"
3595
dependencies = [
3596
"bytes",
3597
-
"getrandom 0.3.3",
3598
"lru-slab",
3599
"rand 0.9.2",
3600
"ring",
···
3602
"rustls",
3603
"rustls-pki-types",
3604
"slab",
3605
-
"thiserror 2.0.12",
3606
"tinyvec",
3607
"tracing",
3608
"web-time",
···
3610
3611
[[package]]
3612
name = "quinn-udp"
3613
-
version = "0.5.13"
3614
source = "registry+https://github.com/rust-lang/crates.io-index"
3615
-
checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970"
3616
dependencies = [
3617
"cfg_aliases",
3618
"libc",
3619
"once_cell",
3620
-
"socket2 0.5.10",
3621
"tracing",
3622
-
"windows-sys 0.59.0",
3623
]
3624
3625
[[package]]
3626
name = "quote"
3627
-
version = "1.0.40"
3628
source = "registry+https://github.com/rust-lang/crates.io-index"
3629
-
checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
3630
dependencies = [
3631
"proc-macro2",
3632
]
···
3726
source = "registry+https://github.com/rust-lang/crates.io-index"
3727
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
3728
dependencies = [
3729
-
"getrandom 0.3.3",
3730
]
3731
3732
[[package]]
···
3805
3806
[[package]]
3807
name = "rayon"
3808
-
version = "1.10.0"
3809
source = "registry+https://github.com/rust-lang/crates.io-index"
3810
-
checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
3811
dependencies = [
3812
"either",
3813
"rayon-core",
···
3815
3816
[[package]]
3817
name = "rayon-core"
3818
-
version = "1.12.1"
3819
source = "registry+https://github.com/rust-lang/crates.io-index"
3820
-
checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
3821
dependencies = [
3822
"crossbeam-deque",
3823
"crossbeam-utils",
···
3825
3826
[[package]]
3827
name = "redox_syscall"
3828
-
version = "0.5.17"
3829
source = "registry+https://github.com/rust-lang/crates.io-index"
3830
-
checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77"
3831
dependencies = [
3832
-
"bitflags 2.9.1",
3833
-
]
3834
-
3835
-
[[package]]
3836
-
name = "redox_users"
3837
-
version = "0.4.6"
3838
-
source = "registry+https://github.com/rust-lang/crates.io-index"
3839
-
checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
3840
-
dependencies = [
3841
-
"getrandom 0.2.16",
3842
-
"libredox",
3843
-
"thiserror 1.0.69",
3844
]
3845
3846
[[package]]
···
3851
dependencies = [
3852
"getrandom 0.2.16",
3853
"libredox",
3854
-
"thiserror 2.0.12",
3855
]
3856
3857
[[package]]
3858
name = "ref-cast"
3859
-
version = "1.0.24"
3860
source = "registry+https://github.com/rust-lang/crates.io-index"
3861
-
checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf"
3862
dependencies = [
3863
"ref-cast-impl",
3864
]
3865
3866
[[package]]
3867
name = "ref-cast-impl"
3868
-
version = "1.0.24"
3869
source = "registry+https://github.com/rust-lang/crates.io-index"
3870
-
checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7"
3871
dependencies = [
3872
"proc-macro2",
3873
"quote",
3874
-
"syn 2.0.104",
3875
]
3876
3877
[[package]]
3878
name = "regex"
3879
-
version = "1.11.1"
3880
source = "registry+https://github.com/rust-lang/crates.io-index"
3881
-
checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
3882
dependencies = [
3883
"aho-corasick",
3884
"memchr",
···
3888
3889
[[package]]
3890
name = "regex-automata"
3891
-
version = "0.4.9"
3892
source = "registry+https://github.com/rust-lang/crates.io-index"
3893
-
checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
3894
dependencies = [
3895
"aho-corasick",
3896
"memchr",
···
3899
3900
[[package]]
3901
name = "regex-syntax"
3902
-
version = "0.8.5"
3903
source = "registry+https://github.com/rust-lang/crates.io-index"
3904
-
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
3905
3906
[[package]]
3907
name = "reqwest"
3908
-
version = "0.12.22"
3909
source = "registry+https://github.com/rust-lang/crates.io-index"
3910
-
checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531"
3911
dependencies = [
3912
"base64 0.22.1",
3913
"bytes",
···
3975
3976
[[package]]
3977
name = "rust-ini"
3978
-
version = "0.21.2"
3979
source = "registry+https://github.com/rust-lang/crates.io-index"
3980
-
checksum = "e7295b7ce3bf4806b419dc3420745998b447178b7005e2011947b38fc5aa6791"
3981
dependencies = [
3982
"cfg-if",
3983
"ordered-multimap",
3984
]
3985
-
3986
-
[[package]]
3987
-
name = "rustc-demangle"
3988
-
version = "0.1.26"
3989
-
source = "registry+https://github.com/rust-lang/crates.io-index"
3990
-
checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace"
3991
3992
[[package]]
3993
name = "rustc-hash"
···
4006
4007
[[package]]
4008
name = "rustix"
4009
-
version = "1.0.8"
4010
source = "registry+https://github.com/rust-lang/crates.io-index"
4011
-
checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"
4012
dependencies = [
4013
-
"bitflags 2.9.1",
4014
"errno",
4015
"libc",
4016
"linux-raw-sys",
4017
-
"windows-sys 0.60.2",
4018
]
4019
4020
[[package]]
4021
name = "rustls"
4022
-
version = "0.23.31"
4023
source = "registry+https://github.com/rust-lang/crates.io-index"
4024
-
checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc"
4025
dependencies = [
4026
"once_cell",
4027
"ring",
···
4033
4034
[[package]]
4035
name = "rustls-pki-types"
4036
-
version = "1.12.0"
4037
source = "registry+https://github.com/rust-lang/crates.io-index"
4038
-
checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79"
4039
dependencies = [
4040
"web-time",
4041
"zeroize",
···
4043
4044
[[package]]
4045
name = "rustls-webpki"
4046
-
version = "0.103.4"
4047
source = "registry+https://github.com/rust-lang/crates.io-index"
4048
-
checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc"
4049
dependencies = [
4050
"ring",
4051
"rustls-pki-types",
···
4054
4055
[[package]]
4056
name = "rustversion"
4057
-
version = "1.0.21"
4058
source = "registry+https://github.com/rust-lang/crates.io-index"
4059
-
checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d"
4060
4061
[[package]]
4062
name = "ryu"
···
4075
4076
[[package]]
4077
name = "schannel"
4078
-
version = "0.1.27"
4079
source = "registry+https://github.com/rust-lang/crates.io-index"
4080
-
checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d"
4081
dependencies = [
4082
-
"windows-sys 0.59.0",
4083
]
4084
4085
[[package]]
···
4111
4112
[[package]]
4113
name = "schemars"
4114
-
version = "1.0.4"
4115
source = "registry+https://github.com/rust-lang/crates.io-index"
4116
-
checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0"
4117
dependencies = [
4118
"dyn-clone",
4119
"ref-cast",
···
4130
"proc-macro2",
4131
"quote",
4132
"serde_derive_internals",
4133
-
"syn 2.0.104",
4134
]
4135
4136
[[package]]
···
4145
source = "registry+https://github.com/rust-lang/crates.io-index"
4146
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
4147
dependencies = [
4148
-
"bitflags 2.9.1",
4149
"core-foundation 0.9.4",
4150
"core-foundation-sys",
4151
"libc",
···
4154
4155
[[package]]
4156
name = "security-framework-sys"
4157
-
version = "2.14.0"
4158
source = "registry+https://github.com/rust-lang/crates.io-index"
4159
-
checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32"
4160
dependencies = [
4161
"core-foundation-sys",
4162
"libc",
···
4182
4183
[[package]]
4184
name = "semver"
4185
-
version = "1.0.26"
4186
source = "registry+https://github.com/rust-lang/crates.io-index"
4187
-
checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
4188
dependencies = [
4189
"serde",
4190
]
4191
4192
[[package]]
4193
name = "serde"
4194
-
version = "1.0.219"
4195
source = "registry+https://github.com/rust-lang/crates.io-index"
4196
-
checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
4197
dependencies = [
4198
"serde_derive",
4199
]
4200
4201
[[package]]
4202
name = "serde-untagged"
4203
-
version = "0.1.7"
4204
source = "registry+https://github.com/rust-lang/crates.io-index"
4205
-
checksum = "299d9c19d7d466db4ab10addd5703e4c615dec2a5a16dbbafe191045e87ee66e"
4206
dependencies = [
4207
"erased-serde",
4208
"serde",
4209
"typeid",
4210
]
4211
4212
[[package]]
4213
name = "serde_derive"
4214
-
version = "1.0.219"
4215
source = "registry+https://github.com/rust-lang/crates.io-index"
4216
-
checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
4217
dependencies = [
4218
"proc-macro2",
4219
"quote",
4220
-
"syn 2.0.104",
4221
]
4222
4223
[[package]]
···
4228
dependencies = [
4229
"proc-macro2",
4230
"quote",
4231
-
"syn 2.0.104",
4232
]
4233
4234
[[package]]
4235
name = "serde_json"
4236
-
version = "1.0.141"
4237
source = "registry+https://github.com/rust-lang/crates.io-index"
4238
-
checksum = "30b9eff21ebe718216c6ec64e1d9ac57087aad11efc64e32002bce4a0d4c03d3"
4239
dependencies = [
4240
"itoa",
4241
"memchr",
4242
"ryu",
4243
"serde",
4244
]
4245
4246
[[package]]
···
4251
dependencies = [
4252
"proc-macro2",
4253
"quote",
4254
-
"syn 2.0.104",
4255
]
4256
4257
[[package]]
···
4265
4266
[[package]]
4267
name = "serde_spanned"
4268
-
version = "1.0.0"
4269
source = "registry+https://github.com/rust-lang/crates.io-index"
4270
-
checksum = "40734c41988f7306bb04f0ecf60ec0f3f1caa34290e4e8ea471dcd3346483b83"
4271
dependencies = [
4272
-
"serde",
4273
]
4274
4275
[[package]]
···
4286
4287
[[package]]
4288
name = "serde_with"
4289
-
version = "3.14.0"
4290
source = "registry+https://github.com/rust-lang/crates.io-index"
4291
-
checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5"
4292
dependencies = [
4293
"base64 0.22.1",
4294
"chrono",
4295
"hex",
4296
"indexmap 1.9.3",
4297
-
"indexmap 2.10.0",
4298
"schemars 0.9.0",
4299
-
"schemars 1.0.4",
4300
-
"serde",
4301
-
"serde_derive",
4302
"serde_json",
4303
"serde_with_macros",
4304
"time",
···
4306
4307
[[package]]
4308
name = "serde_with_macros"
4309
-
version = "3.14.0"
4310
source = "registry+https://github.com/rust-lang/crates.io-index"
4311
-
checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f"
4312
dependencies = [
4313
"darling",
4314
"proc-macro2",
4315
"quote",
4316
-
"syn 2.0.104",
4317
]
4318
4319
[[package]]
4320
name = "serialize-to-javascript"
4321
-
version = "0.1.1"
4322
source = "registry+https://github.com/rust-lang/crates.io-index"
4323
-
checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb"
4324
dependencies = [
4325
"serde",
4326
"serde_json",
···
4329
4330
[[package]]
4331
name = "serialize-to-javascript-impl"
4332
-
version = "0.1.1"
4333
source = "registry+https://github.com/rust-lang/crates.io-index"
4334
-
checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763"
4335
dependencies = [
4336
"proc-macro2",
4337
"quote",
4338
-
"syn 1.0.109",
4339
]
4340
4341
[[package]]
···
4349
]
4350
4351
[[package]]
4352
-
name = "sha1"
4353
-
version = "0.10.6"
4354
-
source = "registry+https://github.com/rust-lang/crates.io-index"
4355
-
checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
4356
-
dependencies = [
4357
-
"cfg-if",
4358
-
"cpufeatures",
4359
-
"digest",
4360
-
]
4361
-
4362
-
[[package]]
4363
name = "sha2"
4364
version = "0.10.9"
4365
source = "registry+https://github.com/rust-lang/crates.io-index"
···
4410
4411
[[package]]
4412
name = "signal-hook-registry"
4413
-
version = "1.4.5"
4414
source = "registry+https://github.com/rust-lang/crates.io-index"
4415
-
checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410"
4416
dependencies = [
4417
"libc",
4418
]
···
4446
4447
[[package]]
4448
name = "slab"
4449
-
version = "0.4.10"
4450
source = "registry+https://github.com/rust-lang/crates.io-index"
4451
-
checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d"
4452
4453
[[package]]
4454
name = "smallvec"
···
4458
4459
[[package]]
4460
name = "socket2"
4461
-
version = "0.5.10"
4462
source = "registry+https://github.com/rust-lang/crates.io-index"
4463
-
checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678"
4464
dependencies = [
4465
"libc",
4466
-
"windows-sys 0.52.0",
4467
-
]
4468
-
4469
-
[[package]]
4470
-
name = "socket2"
4471
-
version = "0.6.0"
4472
-
source = "registry+https://github.com/rust-lang/crates.io-index"
4473
-
checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807"
4474
-
dependencies = [
4475
-
"libc",
4476
-
"windows-sys 0.59.0",
4477
]
4478
4479
[[package]]
···
4526
4527
[[package]]
4528
name = "stable_deref_trait"
4529
-
version = "1.2.0"
4530
source = "registry+https://github.com/rust-lang/crates.io-index"
4531
-
checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
4532
4533
[[package]]
4534
name = "static_assertions"
···
4597
4598
[[package]]
4599
name = "syn"
4600
-
version = "2.0.104"
4601
source = "registry+https://github.com/rust-lang/crates.io-index"
4602
-
checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40"
4603
dependencies = [
4604
"proc-macro2",
4605
"quote",
···
4623
dependencies = [
4624
"proc-macro2",
4625
"quote",
4626
-
"syn 2.0.104",
4627
]
4628
4629
[[package]]
···
4632
source = "registry+https://github.com/rust-lang/crates.io-index"
4633
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
4634
dependencies = [
4635
-
"bitflags 2.9.1",
4636
"core-foundation 0.9.4",
4637
"system-configuration-sys",
4638
]
···
4662
4663
[[package]]
4664
name = "tao"
4665
-
version = "0.34.0"
4666
source = "registry+https://github.com/rust-lang/crates.io-index"
4667
-
checksum = "49c380ca75a231b87b6c9dd86948f035012e7171d1a7c40a9c2890489a7ffd8a"
4668
dependencies = [
4669
-
"bitflags 2.9.1",
4670
"core-foundation 0.10.1",
4671
"core-graphics",
4672
"crossbeam-channel",
···
4683
"ndk",
4684
"ndk-context",
4685
"ndk-sys",
4686
-
"objc2 0.6.1",
4687
"objc2-app-kit",
4688
-
"objc2-foundation 0.3.1",
4689
"once_cell",
4690
"parking_lot",
4691
"raw-window-handle",
···
4694
"unicode-segmentation",
4695
"url",
4696
"windows",
4697
-
"windows-core",
4698
"windows-version",
4699
"x11-dl",
4700
]
···
4707
dependencies = [
4708
"proc-macro2",
4709
"quote",
4710
-
"syn 2.0.104",
4711
]
4712
4713
[[package]]
···
4718
4719
[[package]]
4720
name = "tauri"
4721
-
version = "2.7.0"
4722
source = "registry+https://github.com/rust-lang/crates.io-index"
4723
-
checksum = "352a4bc7bf6c25f5624227e3641adf475a6535707451b09bb83271df8b7a6ac7"
4724
dependencies = [
4725
"anyhow",
4726
"bytes",
4727
-
"dirs 6.0.0",
4728
"dunce",
4729
"embed_plist",
4730
-
"getrandom 0.3.3",
4731
"glob",
4732
"gtk",
4733
"heck 0.5.0",
···
4738
"log",
4739
"mime",
4740
"muda",
4741
-
"objc2 0.6.1",
4742
"objc2-app-kit",
4743
-
"objc2-foundation 0.3.1",
4744
"objc2-ui-kit",
4745
"percent-encoding",
4746
"plist",
4747
"raw-window-handle",
···
4756
"tauri-runtime",
4757
"tauri-runtime-wry",
4758
"tauri-utils",
4759
-
"thiserror 2.0.12",
4760
"tokio",
4761
"tray-icon",
4762
"url",
4763
-
"urlpattern",
4764
"webkit2gtk",
4765
"webview2-com",
4766
"window-vibrancy",
···
4769
4770
[[package]]
4771
name = "tauri-build"
4772
-
version = "2.3.1"
4773
source = "registry+https://github.com/rust-lang/crates.io-index"
4774
-
checksum = "182d688496c06bf08ea896459bf483eb29cdff35c1c4c115fb14053514303064"
4775
dependencies = [
4776
"anyhow",
4777
"cargo_toml",
4778
-
"dirs 6.0.0",
4779
"glob",
4780
"heck 0.5.0",
4781
"json-patch",
···
4785
"serde_json",
4786
"tauri-utils",
4787
"tauri-winres",
4788
-
"toml 0.8.2",
4789
"walkdir",
4790
]
4791
4792
[[package]]
4793
name = "tauri-codegen"
4794
-
version = "2.3.1"
4795
source = "registry+https://github.com/rust-lang/crates.io-index"
4796
-
checksum = "b54a99a6cd8e01abcfa61508177e6096a4fe2681efecee9214e962f2f073ae4a"
4797
dependencies = [
4798
"base64 0.22.1",
4799
"brotli",
4800
"ico",
4801
"json-patch",
4802
"plist",
4803
-
"png",
4804
"proc-macro2",
4805
"quote",
4806
"semver",
4807
"serde",
4808
"serde_json",
4809
"sha2",
4810
-
"syn 2.0.104",
4811
"tauri-utils",
4812
-
"thiserror 2.0.12",
4813
"time",
4814
"url",
4815
"uuid",
···
4818
4819
[[package]]
4820
name = "tauri-macros"
4821
-
version = "2.3.2"
4822
source = "registry+https://github.com/rust-lang/crates.io-index"
4823
-
checksum = "7945b14dc45e23532f2ded6e120170bbdd4af5ceaa45784a6b33d250fbce3f9e"
4824
dependencies = [
4825
"heck 0.5.0",
4826
"proc-macro2",
4827
"quote",
4828
-
"syn 2.0.104",
4829
"tauri-codegen",
4830
"tauri-utils",
4831
]
4832
4833
[[package]]
4834
name = "tauri-plugin"
4835
-
version = "2.3.1"
4836
source = "registry+https://github.com/rust-lang/crates.io-index"
4837
-
checksum = "5bd5c1e56990c70a906ef67a9851bbdba9136d26075ee9a2b19c8b46986b3e02"
4838
dependencies = [
4839
"anyhow",
4840
"glob",
···
4843
"serde",
4844
"serde_json",
4845
"tauri-utils",
4846
-
"toml 0.8.2",
4847
"walkdir",
4848
]
4849
4850
[[package]]
4851
name = "tauri-plugin-deep-link"
4852
-
version = "2.4.1"
4853
source = "registry+https://github.com/rust-lang/crates.io-index"
4854
-
checksum = "1fec67f32d7a06d80bd3dc009fdb678c35a66116d9cb8cd2bb32e406c2b5bbd2"
4855
dependencies = [
4856
"dunce",
4857
"rust-ini",
4858
"serde",
4859
"serde_json",
4860
"tauri",
4861
"tauri-plugin",
4862
"tauri-utils",
4863
-
"thiserror 2.0.12",
4864
"tracing",
4865
"url",
4866
"windows-registry",
4867
-
"windows-result",
4868
]
4869
4870
[[package]]
4871
name = "tauri-plugin-fs"
4872
-
version = "2.4.1"
4873
source = "registry+https://github.com/rust-lang/crates.io-index"
4874
-
checksum = "8c6ef84ee2f2094ce093e55106d90d763ba343fad57566992962e8f76d113f99"
4875
dependencies = [
4876
"anyhow",
4877
"dunce",
···
4884
"tauri",
4885
"tauri-plugin",
4886
"tauri-utils",
4887
-
"thiserror 2.0.12",
4888
-
"toml 0.8.2",
4889
"url",
4890
]
4891
4892
[[package]]
4893
name = "tauri-plugin-http"
4894
-
version = "2.5.1"
4895
source = "registry+https://github.com/rust-lang/crates.io-index"
4896
-
checksum = "fcde333d97e565a7765aad82f32d8672458f7bd77b6ee653830d5dded9d7b5c2"
4897
dependencies = [
4898
"bytes",
4899
"cookie_store",
···
4907
"tauri",
4908
"tauri-plugin",
4909
"tauri-plugin-fs",
4910
-
"thiserror 2.0.12",
4911
"tokio",
4912
"url",
4913
"urlpattern",
···
4915
4916
[[package]]
4917
name = "tauri-plugin-process"
4918
-
version = "2.3.0"
4919
source = "registry+https://github.com/rust-lang/crates.io-index"
4920
-
checksum = "7461c622a5ea00eb9cd9f7a08dbd3bf79484499fd5c21aa2964677f64ca651ab"
4921
dependencies = [
4922
"tauri",
4923
"tauri-plugin",
···
4925
4926
[[package]]
4927
name = "tauri-plugin-shell"
4928
-
version = "2.3.0"
4929
source = "registry+https://github.com/rust-lang/crates.io-index"
4930
-
checksum = "2b9ffadec5c3523f11e8273465cacb3d86ea7652a28e6e2a2e9b5c182f791d25"
4931
dependencies = [
4932
"encoding_rs",
4933
"log",
···
4940
"shared_child",
4941
"tauri",
4942
"tauri-plugin",
4943
-
"thiserror 2.0.12",
4944
"tokio",
4945
]
4946
4947
[[package]]
4948
name = "tauri-plugin-single-instance"
4949
-
version = "2.2.0"
4950
source = "registry+https://github.com/rust-lang/crates.io-index"
4951
-
checksum = "0f36019ee9832dc99e4450bb55a21cfad8633b19c2c18bd17c7741939b070ede"
4952
dependencies = [
4953
"serde",
4954
"serde_json",
4955
"tauri",
4956
"tauri-plugin-deep-link",
4957
-
"thiserror 2.0.12",
4958
"tracing",
4959
-
"windows-sys 0.59.0",
4960
"zbus",
4961
]
4962
4963
[[package]]
4964
name = "tauri-runtime"
4965
-
version = "2.7.1"
4966
source = "registry+https://github.com/rust-lang/crates.io-index"
4967
-
checksum = "2b1cc885be806ea15ff7b0eb47098a7b16323d9228876afda329e34e2d6c4676"
4968
dependencies = [
4969
"cookie",
4970
"dpi",
4971
"gtk",
4972
"http",
4973
"jni",
4974
-
"objc2 0.6.1",
4975
"objc2-ui-kit",
4976
"raw-window-handle",
4977
"serde",
4978
"serde_json",
4979
"tauri-utils",
4980
-
"thiserror 2.0.12",
4981
"url",
4982
"windows",
4983
]
4984
4985
[[package]]
4986
name = "tauri-runtime-wry"
4987
-
version = "2.7.2"
4988
source = "registry+https://github.com/rust-lang/crates.io-index"
4989
-
checksum = "fe653a2fbbef19fe898efc774bc52c8742576342a33d3d028c189b57eb1d2439"
4990
dependencies = [
4991
"gtk",
4992
"http",
4993
"jni",
4994
"log",
4995
-
"objc2 0.6.1",
4996
"objc2-app-kit",
4997
-
"objc2-foundation 0.3.1",
4998
"once_cell",
4999
"percent-encoding",
5000
"raw-window-handle",
···
5011
5012
[[package]]
5013
name = "tauri-utils"
5014
-
version = "2.6.0"
5015
source = "registry+https://github.com/rust-lang/crates.io-index"
5016
-
checksum = "9330c15cabfe1d9f213478c9e8ec2b0c76dab26bb6f314b8ad1c8a568c1d186e"
5017
dependencies = [
5018
"anyhow",
5019
"brotli",
···
5039
"serde_json",
5040
"serde_with",
5041
"swift-rs",
5042
-
"thiserror 2.0.12",
5043
-
"toml 0.8.2",
5044
"url",
5045
"urlpattern",
5046
"uuid",
···
5049
5050
[[package]]
5051
name = "tauri-winres"
5052
-
version = "0.3.2"
5053
source = "registry+https://github.com/rust-lang/crates.io-index"
5054
-
checksum = "7c6d9028d41d4de835e3c482c677a8cb88137ac435d6ff9a71f392d4421576c9"
5055
dependencies = [
5056
"embed-resource",
5057
-
"indexmap 2.10.0",
5058
-
"toml 0.9.4",
5059
]
5060
5061
[[package]]
5062
name = "tempfile"
5063
-
version = "3.20.0"
5064
source = "registry+https://github.com/rust-lang/crates.io-index"
5065
-
checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1"
5066
dependencies = [
5067
"fastrand",
5068
-
"getrandom 0.3.3",
5069
"once_cell",
5070
"rustix",
5071
-
"windows-sys 0.59.0",
5072
]
5073
5074
[[package]]
···
5093
5094
[[package]]
5095
name = "thiserror"
5096
-
version = "2.0.12"
5097
source = "registry+https://github.com/rust-lang/crates.io-index"
5098
-
checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708"
5099
dependencies = [
5100
-
"thiserror-impl 2.0.12",
5101
]
5102
5103
[[package]]
···
5108
dependencies = [
5109
"proc-macro2",
5110
"quote",
5111
-
"syn 2.0.104",
5112
]
5113
5114
[[package]]
5115
name = "thiserror-impl"
5116
-
version = "2.0.12"
5117
source = "registry+https://github.com/rust-lang/crates.io-index"
5118
-
checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d"
5119
dependencies = [
5120
"proc-macro2",
5121
"quote",
5122
-
"syn 2.0.104",
5123
]
5124
5125
[[package]]
5126
name = "tiff"
5127
-
version = "0.9.1"
5128
source = "registry+https://github.com/rust-lang/crates.io-index"
5129
-
checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e"
5130
dependencies = [
5131
"flate2",
5132
-
"jpeg-decoder",
5133
"weezl",
5134
]
5135
5136
[[package]]
5137
name = "time"
5138
-
version = "0.3.41"
5139
source = "registry+https://github.com/rust-lang/crates.io-index"
5140
-
checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40"
5141
dependencies = [
5142
"deranged",
5143
"itoa",
···
5150
5151
[[package]]
5152
name = "time-core"
5153
-
version = "0.1.4"
5154
source = "registry+https://github.com/rust-lang/crates.io-index"
5155
-
checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c"
5156
5157
[[package]]
5158
name = "time-macros"
5159
-
version = "0.2.22"
5160
source = "registry+https://github.com/rust-lang/crates.io-index"
5161
-
checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49"
5162
dependencies = [
5163
"num-conv",
5164
"time-core",
···
5175
5176
[[package]]
5177
name = "tinystr"
5178
-
version = "0.8.1"
5179
source = "registry+https://github.com/rust-lang/crates.io-index"
5180
-
checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b"
5181
dependencies = [
5182
"displaydoc",
5183
"zerovec",
···
5185
5186
[[package]]
5187
name = "tinyvec"
5188
-
version = "1.9.0"
5189
source = "registry+https://github.com/rust-lang/crates.io-index"
5190
-
checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71"
5191
dependencies = [
5192
"tinyvec_macros",
5193
]
···
5200
5201
[[package]]
5202
name = "tokio"
5203
-
version = "1.47.0"
5204
source = "registry+https://github.com/rust-lang/crates.io-index"
5205
-
checksum = "43864ed400b6043a4757a25c7a64a8efde741aed79a056a2fb348a406701bb35"
5206
dependencies = [
5207
-
"backtrace",
5208
"bytes",
5209
-
"io-uring",
5210
"libc",
5211
-
"mio 1.0.4",
5212
"pin-project-lite",
5213
-
"slab",
5214
-
"socket2 0.6.0",
5215
"tokio-macros",
5216
-
"windows-sys 0.59.0",
5217
]
5218
5219
[[package]]
5220
name = "tokio-macros"
5221
-
version = "2.5.0"
5222
source = "registry+https://github.com/rust-lang/crates.io-index"
5223
-
checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
5224
dependencies = [
5225
"proc-macro2",
5226
"quote",
5227
-
"syn 2.0.104",
5228
]
5229
5230
[[package]]
···
5239
5240
[[package]]
5241
name = "tokio-rustls"
5242
-
version = "0.26.2"
5243
source = "registry+https://github.com/rust-lang/crates.io-index"
5244
-
checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b"
5245
dependencies = [
5246
"rustls",
5247
"tokio",
···
5249
5250
[[package]]
5251
name = "tokio-util"
5252
-
version = "0.7.15"
5253
source = "registry+https://github.com/rust-lang/crates.io-index"
5254
-
checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df"
5255
dependencies = [
5256
"bytes",
5257
"futures-core",
···
5274
5275
[[package]]
5276
name = "toml"
5277
-
version = "0.9.4"
5278
source = "registry+https://github.com/rust-lang/crates.io-index"
5279
-
checksum = "41ae868b5a0f67631c14589f7e250c1ea2c574ee5ba21c6c8dd4b1485705a5a1"
5280
dependencies = [
5281
-
"indexmap 2.10.0",
5282
-
"serde",
5283
-
"serde_spanned 1.0.0",
5284
-
"toml_datetime 0.7.0",
5285
"toml_parser",
5286
"toml_writer",
5287
-
"winnow 0.7.12",
5288
]
5289
5290
[[package]]
···
5298
5299
[[package]]
5300
name = "toml_datetime"
5301
-
version = "0.7.0"
5302
source = "registry+https://github.com/rust-lang/crates.io-index"
5303
-
checksum = "bade1c3e902f58d73d3f294cd7f20391c1cb2fbcb643b73566bc773971df91e3"
5304
dependencies = [
5305
-
"serde",
5306
]
5307
5308
[[package]]
···
5311
source = "registry+https://github.com/rust-lang/crates.io-index"
5312
checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
5313
dependencies = [
5314
-
"indexmap 2.10.0",
5315
"toml_datetime 0.6.3",
5316
"winnow 0.5.40",
5317
]
···
5322
source = "registry+https://github.com/rust-lang/crates.io-index"
5323
checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
5324
dependencies = [
5325
-
"indexmap 2.10.0",
5326
"serde",
5327
"serde_spanned 0.6.9",
5328
"toml_datetime 0.6.3",
···
5330
]
5331
5332
[[package]]
5333
name = "toml_parser"
5334
-
version = "1.0.1"
5335
source = "registry+https://github.com/rust-lang/crates.io-index"
5336
-
checksum = "97200572db069e74c512a14117b296ba0a80a30123fbbb5aa1f4a348f639ca30"
5337
dependencies = [
5338
-
"winnow 0.7.12",
5339
]
5340
5341
[[package]]
5342
name = "toml_writer"
5343
-
version = "1.0.2"
5344
source = "registry+https://github.com/rust-lang/crates.io-index"
5345
-
checksum = "fcc842091f2def52017664b53082ecbbeb5c7731092bad69d2c63050401dfd64"
5346
5347
[[package]]
5348
name = "tower"
···
5365
source = "registry+https://github.com/rust-lang/crates.io-index"
5366
checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
5367
dependencies = [
5368
-
"bitflags 2.9.1",
5369
"bytes",
5370
"futures-util",
5371
"http",
···
5408
dependencies = [
5409
"proc-macro2",
5410
"quote",
5411
-
"syn 2.0.104",
5412
]
5413
5414
[[package]]
···
5422
5423
[[package]]
5424
name = "tray-icon"
5425
-
version = "0.21.1"
5426
source = "registry+https://github.com/rust-lang/crates.io-index"
5427
-
checksum = "a0d92153331e7d02ec09137538996a7786fe679c629c279e82a6be762b7e6fe2"
5428
dependencies = [
5429
"crossbeam-channel",
5430
-
"dirs 6.0.0",
5431
"libappindicator",
5432
"muda",
5433
-
"objc2 0.6.1",
5434
"objc2-app-kit",
5435
"objc2-core-foundation",
5436
"objc2-core-graphics",
5437
-
"objc2-foundation 0.3.1",
5438
"once_cell",
5439
-
"png",
5440
"serde",
5441
-
"thiserror 2.0.12",
5442
-
"windows-sys 0.59.0",
5443
]
5444
5445
[[package]]
···
5456
5457
[[package]]
5458
name = "typenum"
5459
-
version = "1.18.0"
5460
source = "registry+https://github.com/rust-lang/crates.io-index"
5461
-
checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
5462
5463
[[package]]
5464
name = "uds_windows"
···
5514
5515
[[package]]
5516
name = "unicode-ident"
5517
-
version = "1.0.18"
5518
source = "registry+https://github.com/rust-lang/crates.io-index"
5519
-
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
5520
5521
[[package]]
5522
name = "unicode-segmentation"
···
5532
5533
[[package]]
5534
name = "url"
5535
-
version = "2.5.4"
5536
source = "registry+https://github.com/rust-lang/crates.io-index"
5537
-
checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60"
5538
dependencies = [
5539
"form_urlencoded",
5540
"idna",
···
5568
5569
[[package]]
5570
name = "uuid"
5571
-
version = "1.17.0"
5572
source = "registry+https://github.com/rust-lang/crates.io-index"
5573
-
checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d"
5574
dependencies = [
5575
-
"getrandom 0.3.3",
5576
"js-sys",
5577
"serde",
5578
"wasm-bindgen",
···
5597
5598
[[package]]
5599
name = "version-compare"
5600
-
version = "0.2.0"
5601
source = "registry+https://github.com/rust-lang/crates.io-index"
5602
-
checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b"
5603
5604
[[package]]
5605
name = "version_check"
···
5608
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
5609
5610
[[package]]
5611
-
name = "vrcpm-rs"
5612
-
version = "0.2.4"
5613
-
dependencies = [
5614
-
"dirs 5.0.1",
5615
-
"fast_image_resize",
5616
-
"image",
5617
-
"mslnk",
5618
-
"notify",
5619
-
"open",
5620
-
"regex",
5621
-
"reqwest",
5622
-
"serde",
5623
-
"serde_json",
5624
-
"tauri",
5625
-
"tauri-build",
5626
-
"tauri-plugin-deep-link",
5627
-
"tauri-plugin-http",
5628
-
"tauri-plugin-process",
5629
-
"tauri-plugin-shell",
5630
-
"tauri-plugin-single-instance",
5631
-
]
5632
-
5633
-
[[package]]
5634
name = "vswhom"
5635
version = "0.1.0"
5636
source = "registry+https://github.com/rust-lang/crates.io-index"
···
5682
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
5683
5684
[[package]]
5685
-
name = "wasi"
5686
-
version = "0.14.2+wasi-0.2.4"
5687
source = "registry+https://github.com/rust-lang/crates.io-index"
5688
-
checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
5689
dependencies = [
5690
-
"wit-bindgen-rt",
5691
]
5692
5693
[[package]]
5694
name = "wasm-bindgen"
5695
-
version = "0.2.100"
5696
source = "registry+https://github.com/rust-lang/crates.io-index"
5697
-
checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
5698
dependencies = [
5699
"cfg-if",
5700
"once_cell",
5701
"rustversion",
5702
"wasm-bindgen-macro",
5703
-
]
5704
-
5705
-
[[package]]
5706
-
name = "wasm-bindgen-backend"
5707
-
version = "0.2.100"
5708
-
source = "registry+https://github.com/rust-lang/crates.io-index"
5709
-
checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
5710
-
dependencies = [
5711
-
"bumpalo",
5712
-
"log",
5713
-
"proc-macro2",
5714
-
"quote",
5715
-
"syn 2.0.104",
5716
"wasm-bindgen-shared",
5717
]
5718
5719
[[package]]
5720
name = "wasm-bindgen-futures"
5721
-
version = "0.4.50"
5722
source = "registry+https://github.com/rust-lang/crates.io-index"
5723
-
checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61"
5724
dependencies = [
5725
"cfg-if",
5726
"js-sys",
···
5731
5732
[[package]]
5733
name = "wasm-bindgen-macro"
5734
-
version = "0.2.100"
5735
source = "registry+https://github.com/rust-lang/crates.io-index"
5736
-
checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
5737
dependencies = [
5738
"quote",
5739
"wasm-bindgen-macro-support",
···
5741
5742
[[package]]
5743
name = "wasm-bindgen-macro-support"
5744
-
version = "0.2.100"
5745
source = "registry+https://github.com/rust-lang/crates.io-index"
5746
-
checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
5747
dependencies = [
5748
"proc-macro2",
5749
"quote",
5750
-
"syn 2.0.104",
5751
-
"wasm-bindgen-backend",
5752
"wasm-bindgen-shared",
5753
]
5754
5755
[[package]]
5756
name = "wasm-bindgen-shared"
5757
-
version = "0.2.100"
5758
source = "registry+https://github.com/rust-lang/crates.io-index"
5759
-
checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
5760
dependencies = [
5761
"unicode-ident",
5762
]
···
5776
5777
[[package]]
5778
name = "web-sys"
5779
-
version = "0.3.77"
5780
source = "registry+https://github.com/rust-lang/crates.io-index"
5781
-
checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
5782
dependencies = [
5783
"js-sys",
5784
"wasm-bindgen",
···
5840
5841
[[package]]
5842
name = "webpki-roots"
5843
-
version = "1.0.2"
5844
source = "registry+https://github.com/rust-lang/crates.io-index"
5845
-
checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2"
5846
dependencies = [
5847
"rustls-pki-types",
5848
]
···
5856
"webview2-com-macros",
5857
"webview2-com-sys",
5858
"windows",
5859
-
"windows-core",
5860
"windows-implement",
5861
"windows-interface",
5862
]
···
5869
dependencies = [
5870
"proc-macro2",
5871
"quote",
5872
-
"syn 2.0.104",
5873
]
5874
5875
[[package]]
···
5878
source = "registry+https://github.com/rust-lang/crates.io-index"
5879
checksum = "36695906a1b53a3bf5c4289621efedac12b73eeb0b89e7e1a89b517302d5d75c"
5880
dependencies = [
5881
-
"thiserror 2.0.12",
5882
"windows",
5883
-
"windows-core",
5884
]
5885
5886
[[package]]
···
5907
5908
[[package]]
5909
name = "winapi-util"
5910
-
version = "0.1.9"
5911
source = "registry+https://github.com/rust-lang/crates.io-index"
5912
-
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
5913
dependencies = [
5914
-
"windows-sys 0.59.0",
5915
]
5916
5917
[[package]]
···
5926
source = "registry+https://github.com/rust-lang/crates.io-index"
5927
checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c"
5928
dependencies = [
5929
-
"objc2 0.6.1",
5930
"objc2-app-kit",
5931
"objc2-core-foundation",
5932
-
"objc2-foundation 0.3.1",
5933
"raw-window-handle",
5934
"windows-sys 0.59.0",
5935
"windows-version",
···
5942
checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893"
5943
dependencies = [
5944
"windows-collections",
5945
-
"windows-core",
5946
"windows-future",
5947
-
"windows-link",
5948
"windows-numerics",
5949
]
5950
···
5954
source = "registry+https://github.com/rust-lang/crates.io-index"
5955
checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8"
5956
dependencies = [
5957
-
"windows-core",
5958
]
5959
5960
[[package]]
···
5965
dependencies = [
5966
"windows-implement",
5967
"windows-interface",
5968
-
"windows-link",
5969
-
"windows-result",
5970
-
"windows-strings",
5971
]
5972
5973
[[package]]
···
5976
source = "registry+https://github.com/rust-lang/crates.io-index"
5977
checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
5978
dependencies = [
5979
-
"windows-core",
5980
-
"windows-link",
5981
"windows-threading",
5982
]
5983
5984
[[package]]
5985
name = "windows-implement"
5986
-
version = "0.60.0"
5987
source = "registry+https://github.com/rust-lang/crates.io-index"
5988
-
checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
5989
dependencies = [
5990
"proc-macro2",
5991
"quote",
5992
-
"syn 2.0.104",
5993
]
5994
5995
[[package]]
5996
name = "windows-interface"
5997
-
version = "0.59.1"
5998
source = "registry+https://github.com/rust-lang/crates.io-index"
5999
-
checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
6000
dependencies = [
6001
"proc-macro2",
6002
"quote",
6003
-
"syn 2.0.104",
6004
]
6005
6006
[[package]]
···
6010
checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
6011
6012
[[package]]
6013
name = "windows-numerics"
6014
version = "0.2.0"
6015
source = "registry+https://github.com/rust-lang/crates.io-index"
6016
checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
6017
dependencies = [
6018
-
"windows-core",
6019
-
"windows-link",
6020
]
6021
6022
[[package]]
···
6025
source = "registry+https://github.com/rust-lang/crates.io-index"
6026
checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e"
6027
dependencies = [
6028
-
"windows-link",
6029
-
"windows-result",
6030
-
"windows-strings",
6031
]
6032
6033
[[package]]
···
6036
source = "registry+https://github.com/rust-lang/crates.io-index"
6037
checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
6038
dependencies = [
6039
-
"windows-link",
6040
]
6041
6042
[[package]]
···
6045
source = "registry+https://github.com/rust-lang/crates.io-index"
6046
checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
6047
dependencies = [
6048
-
"windows-link",
6049
]
6050
6051
[[package]]
6052
-
name = "windows-sys"
6053
-
version = "0.45.0"
6054
source = "registry+https://github.com/rust-lang/crates.io-index"
6055
-
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
6056
dependencies = [
6057
-
"windows-targets 0.42.2",
6058
]
6059
6060
[[package]]
6061
name = "windows-sys"
6062
-
version = "0.48.0"
6063
source = "registry+https://github.com/rust-lang/crates.io-index"
6064
-
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
6065
dependencies = [
6066
-
"windows-targets 0.48.5",
6067
]
6068
6069
[[package]]
···
6090
source = "registry+https://github.com/rust-lang/crates.io-index"
6091
checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
6092
dependencies = [
6093
-
"windows-targets 0.53.3",
6094
]
6095
6096
[[package]]
···
6110
6111
[[package]]
6112
name = "windows-targets"
6113
-
version = "0.48.5"
6114
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6115
-
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
6116
-
dependencies = [
6117
-
"windows_aarch64_gnullvm 0.48.5",
6118
-
"windows_aarch64_msvc 0.48.5",
6119
-
"windows_i686_gnu 0.48.5",
6120
-
"windows_i686_msvc 0.48.5",
6121
-
"windows_x86_64_gnu 0.48.5",
6122
-
"windows_x86_64_gnullvm 0.48.5",
6123
-
"windows_x86_64_msvc 0.48.5",
6124
-
]
6125
-
6126
-
[[package]]
6127
-
name = "windows-targets"
6128
version = "0.52.6"
6129
source = "registry+https://github.com/rust-lang/crates.io-index"
6130
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
···
6141
6142
[[package]]
6143
name = "windows-targets"
6144
-
version = "0.53.3"
6145
source = "registry+https://github.com/rust-lang/crates.io-index"
6146
-
checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91"
6147
dependencies = [
6148
-
"windows-link",
6149
-
"windows_aarch64_gnullvm 0.53.0",
6150
-
"windows_aarch64_msvc 0.53.0",
6151
-
"windows_i686_gnu 0.53.0",
6152
-
"windows_i686_gnullvm 0.53.0",
6153
-
"windows_i686_msvc 0.53.0",
6154
-
"windows_x86_64_gnu 0.53.0",
6155
-
"windows_x86_64_gnullvm 0.53.0",
6156
-
"windows_x86_64_msvc 0.53.0",
6157
]
6158
6159
[[package]]
···
6162
source = "registry+https://github.com/rust-lang/crates.io-index"
6163
checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
6164
dependencies = [
6165
-
"windows-link",
6166
]
6167
6168
[[package]]
6169
name = "windows-version"
6170
-
version = "0.1.4"
6171
source = "registry+https://github.com/rust-lang/crates.io-index"
6172
-
checksum = "e04a5c6627e310a23ad2358483286c7df260c964eb2d003d8efd6d0f4e79265c"
6173
dependencies = [
6174
-
"windows-link",
6175
]
6176
6177
[[package]]
···
6182
6183
[[package]]
6184
name = "windows_aarch64_gnullvm"
6185
-
version = "0.48.5"
6186
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6187
-
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
6188
-
6189
-
[[package]]
6190
-
name = "windows_aarch64_gnullvm"
6191
version = "0.52.6"
6192
source = "registry+https://github.com/rust-lang/crates.io-index"
6193
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
6194
6195
[[package]]
6196
name = "windows_aarch64_gnullvm"
6197
-
version = "0.53.0"
6198
source = "registry+https://github.com/rust-lang/crates.io-index"
6199
-
checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
6200
6201
[[package]]
6202
name = "windows_aarch64_msvc"
···
6206
6207
[[package]]
6208
name = "windows_aarch64_msvc"
6209
-
version = "0.48.5"
6210
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6211
-
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
6212
-
6213
-
[[package]]
6214
-
name = "windows_aarch64_msvc"
6215
version = "0.52.6"
6216
source = "registry+https://github.com/rust-lang/crates.io-index"
6217
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
6218
6219
[[package]]
6220
name = "windows_aarch64_msvc"
6221
-
version = "0.53.0"
6222
source = "registry+https://github.com/rust-lang/crates.io-index"
6223
-
checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
6224
6225
[[package]]
6226
name = "windows_i686_gnu"
···
6230
6231
[[package]]
6232
name = "windows_i686_gnu"
6233
-
version = "0.48.5"
6234
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6235
-
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
6236
-
6237
-
[[package]]
6238
-
name = "windows_i686_gnu"
6239
version = "0.52.6"
6240
source = "registry+https://github.com/rust-lang/crates.io-index"
6241
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
6242
6243
[[package]]
6244
name = "windows_i686_gnu"
6245
-
version = "0.53.0"
6246
source = "registry+https://github.com/rust-lang/crates.io-index"
6247
-
checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
6248
6249
[[package]]
6250
name = "windows_i686_gnullvm"
···
6254
6255
[[package]]
6256
name = "windows_i686_gnullvm"
6257
-
version = "0.53.0"
6258
source = "registry+https://github.com/rust-lang/crates.io-index"
6259
-
checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
6260
6261
[[package]]
6262
name = "windows_i686_msvc"
···
6266
6267
[[package]]
6268
name = "windows_i686_msvc"
6269
-
version = "0.48.5"
6270
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6271
-
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
6272
-
6273
-
[[package]]
6274
-
name = "windows_i686_msvc"
6275
version = "0.52.6"
6276
source = "registry+https://github.com/rust-lang/crates.io-index"
6277
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
6278
6279
[[package]]
6280
name = "windows_i686_msvc"
6281
-
version = "0.53.0"
6282
source = "registry+https://github.com/rust-lang/crates.io-index"
6283
-
checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
6284
6285
[[package]]
6286
name = "windows_x86_64_gnu"
···
6290
6291
[[package]]
6292
name = "windows_x86_64_gnu"
6293
-
version = "0.48.5"
6294
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6295
-
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
6296
-
6297
-
[[package]]
6298
-
name = "windows_x86_64_gnu"
6299
version = "0.52.6"
6300
source = "registry+https://github.com/rust-lang/crates.io-index"
6301
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
6302
6303
[[package]]
6304
name = "windows_x86_64_gnu"
6305
-
version = "0.53.0"
6306
source = "registry+https://github.com/rust-lang/crates.io-index"
6307
-
checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
6308
6309
[[package]]
6310
name = "windows_x86_64_gnullvm"
···
6314
6315
[[package]]
6316
name = "windows_x86_64_gnullvm"
6317
-
version = "0.48.5"
6318
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6319
-
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
6320
-
6321
-
[[package]]
6322
-
name = "windows_x86_64_gnullvm"
6323
version = "0.52.6"
6324
source = "registry+https://github.com/rust-lang/crates.io-index"
6325
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
6326
6327
[[package]]
6328
name = "windows_x86_64_gnullvm"
6329
-
version = "0.53.0"
6330
source = "registry+https://github.com/rust-lang/crates.io-index"
6331
-
checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
6332
6333
[[package]]
6334
name = "windows_x86_64_msvc"
···
6338
6339
[[package]]
6340
name = "windows_x86_64_msvc"
6341
-
version = "0.48.5"
6342
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6343
-
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
6344
-
6345
-
[[package]]
6346
-
name = "windows_x86_64_msvc"
6347
version = "0.52.6"
6348
source = "registry+https://github.com/rust-lang/crates.io-index"
6349
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
6350
6351
[[package]]
6352
name = "windows_x86_64_msvc"
6353
-
version = "0.53.0"
6354
source = "registry+https://github.com/rust-lang/crates.io-index"
6355
-
checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
6356
6357
[[package]]
6358
name = "winnow"
···
6365
6366
[[package]]
6367
name = "winnow"
6368
-
version = "0.7.12"
6369
source = "registry+https://github.com/rust-lang/crates.io-index"
6370
-
checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95"
6371
6372
[[package]]
6373
name = "winreg"
···
6380
]
6381
6382
[[package]]
6383
-
name = "wit-bindgen-rt"
6384
-
version = "0.39.0"
6385
source = "registry+https://github.com/rust-lang/crates.io-index"
6386
-
checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
6387
-
dependencies = [
6388
-
"bitflags 2.9.1",
6389
-
]
6390
6391
[[package]]
6392
name = "writeable"
6393
-
version = "0.6.1"
6394
source = "registry+https://github.com/rust-lang/crates.io-index"
6395
-
checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb"
6396
6397
[[package]]
6398
name = "wry"
6399
-
version = "0.52.1"
6400
source = "registry+https://github.com/rust-lang/crates.io-index"
6401
-
checksum = "12a714d9ba7075aae04a6e50229d6109e3d584774b99a6a8c60de1698ca111b9"
6402
dependencies = [
6403
"base64 0.22.1",
6404
-
"block2 0.6.1",
6405
"cookie",
6406
"crossbeam-channel",
6407
"dpi",
6408
"dunce",
6409
"gdkx11",
···
6415
"kuchikiki",
6416
"libc",
6417
"ndk",
6418
-
"objc2 0.6.1",
6419
"objc2-app-kit",
6420
"objc2-core-foundation",
6421
-
"objc2-foundation 0.3.1",
6422
"objc2-ui-kit",
6423
"objc2-web-kit",
6424
"once_cell",
···
6427
"sha2",
6428
"soup3",
6429
"tao-macros",
6430
-
"thiserror 2.0.12",
6431
"url",
6432
"webkit2gtk",
6433
"webkit2gtk-sys",
6434
"webview2-com",
6435
"windows",
6436
-
"windows-core",
6437
"windows-version",
6438
"x11-dl",
6439
]
···
6460
]
6461
6462
[[package]]
6463
-
name = "xdg-home"
6464
-
version = "1.3.0"
6465
source = "registry+https://github.com/rust-lang/crates.io-index"
6466
-
checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6"
6467
dependencies = [
6468
-
"libc",
6469
-
"windows-sys 0.59.0",
6470
]
6471
6472
[[package]]
6473
name = "yoke"
6474
-
version = "0.8.0"
6475
source = "registry+https://github.com/rust-lang/crates.io-index"
6476
-
checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc"
6477
dependencies = [
6478
-
"serde",
6479
"stable_deref_trait",
6480
"yoke-derive",
6481
"zerofrom",
···
6483
6484
[[package]]
6485
name = "yoke-derive"
6486
-
version = "0.8.0"
6487
source = "registry+https://github.com/rust-lang/crates.io-index"
6488
-
checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6"
6489
dependencies = [
6490
"proc-macro2",
6491
"quote",
6492
-
"syn 2.0.104",
6493
"synstructure",
6494
]
6495
6496
[[package]]
6497
name = "zbus"
6498
-
version = "4.0.1"
6499
source = "registry+https://github.com/rust-lang/crates.io-index"
6500
-
checksum = "7b8e3d6ae3342792a6cc2340e4394334c7402f3d793b390d2c5494a4032b3030"
6501
dependencies = [
6502
"async-broadcast",
6503
"async-executor",
6504
-
"async-fs",
6505
"async-io",
6506
"async-lock",
6507
"async-process",
···
6509
"async-task",
6510
"async-trait",
6511
"blocking",
6512
-
"derivative",
6513
"enumflags2",
6514
"event-listener",
6515
"futures-core",
6516
-
"futures-sink",
6517
-
"futures-util",
6518
"hex",
6519
"nix",
6520
"ordered-stream",
6521
-
"rand 0.8.5",
6522
"serde",
6523
"serde_repr",
6524
-
"sha1",
6525
-
"static_assertions",
6526
"tracing",
6527
"uds_windows",
6528
-
"windows-sys 0.52.0",
6529
-
"xdg-home",
6530
"zbus_macros",
6531
"zbus_names",
6532
"zvariant",
···
6534
6535
[[package]]
6536
name = "zbus_macros"
6537
-
version = "4.0.1"
6538
source = "registry+https://github.com/rust-lang/crates.io-index"
6539
-
checksum = "b7a3e850ff1e7217a3b7a07eba90d37fe9bb9e89a310f718afcde5885ca9b6d7"
6540
dependencies = [
6541
-
"proc-macro-crate 1.3.1",
6542
"proc-macro2",
6543
"quote",
6544
-
"regex",
6545
-
"syn 1.0.109",
6546
"zvariant_utils",
6547
]
6548
6549
[[package]]
6550
name = "zbus_names"
6551
-
version = "3.0.0"
6552
source = "registry+https://github.com/rust-lang/crates.io-index"
6553
-
checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c"
6554
dependencies = [
6555
"serde",
6556
"static_assertions",
6557
"zvariant",
6558
]
6559
6560
[[package]]
6561
name = "zerocopy"
6562
-
version = "0.8.26"
6563
source = "registry+https://github.com/rust-lang/crates.io-index"
6564
-
checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f"
6565
dependencies = [
6566
"zerocopy-derive",
6567
]
6568
6569
[[package]]
6570
name = "zerocopy-derive"
6571
-
version = "0.8.26"
6572
source = "registry+https://github.com/rust-lang/crates.io-index"
6573
-
checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181"
6574
dependencies = [
6575
"proc-macro2",
6576
"quote",
6577
-
"syn 2.0.104",
6578
]
6579
6580
[[package]]
···
6594
dependencies = [
6595
"proc-macro2",
6596
"quote",
6597
-
"syn 2.0.104",
6598
"synstructure",
6599
]
6600
6601
[[package]]
6602
name = "zeroize"
6603
-
version = "1.8.1"
6604
source = "registry+https://github.com/rust-lang/crates.io-index"
6605
-
checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
6606
6607
[[package]]
6608
name = "zerotrie"
6609
-
version = "0.2.2"
6610
source = "registry+https://github.com/rust-lang/crates.io-index"
6611
-
checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595"
6612
dependencies = [
6613
"displaydoc",
6614
"yoke",
···
6617
6618
[[package]]
6619
name = "zerovec"
6620
-
version = "0.11.2"
6621
source = "registry+https://github.com/rust-lang/crates.io-index"
6622
-
checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428"
6623
dependencies = [
6624
"yoke",
6625
"zerofrom",
···
6628
6629
[[package]]
6630
name = "zerovec-derive"
6631
-
version = "0.11.1"
6632
source = "registry+https://github.com/rust-lang/crates.io-index"
6633
-
checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f"
6634
dependencies = [
6635
"proc-macro2",
6636
"quote",
6637
-
"syn 2.0.104",
6638
]
6639
6640
[[package]]
···
6654
6655
[[package]]
6656
name = "zune-jpeg"
6657
-
version = "0.4.20"
6658
source = "registry+https://github.com/rust-lang/crates.io-index"
6659
-
checksum = "fc1f7e205ce79eb2da3cd71c5f55f3589785cb7c79f6a03d1c8d1491bda5d089"
6660
dependencies = [
6661
"zune-core",
6662
]
6663
6664
[[package]]
6665
name = "zvariant"
6666
-
version = "4.0.0"
6667
source = "registry+https://github.com/rust-lang/crates.io-index"
6668
-
checksum = "4e09e8be97d44eeab994d752f341e67b3b0d80512a8b315a0671d47232ef1b65"
6669
dependencies = [
6670
"endi",
6671
"enumflags2",
6672
"serde",
6673
-
"static_assertions",
6674
"zvariant_derive",
6675
]
6676
6677
[[package]]
6678
name = "zvariant_derive"
6679
-
version = "4.0.0"
6680
source = "registry+https://github.com/rust-lang/crates.io-index"
6681
-
checksum = "72a5857e2856435331636a9fbb415b09243df4521a267c5bedcd5289b4d5799e"
6682
dependencies = [
6683
-
"proc-macro-crate 1.3.1",
6684
"proc-macro2",
6685
"quote",
6686
-
"syn 1.0.109",
6687
"zvariant_utils",
6688
]
6689
6690
[[package]]
6691
name = "zvariant_utils"
6692
-
version = "1.1.0"
6693
source = "registry+https://github.com/rust-lang/crates.io-index"
6694
-
checksum = "00bedb16a193cc12451873fee2a1bc6550225acece0e36f333e68326c73c8172"
6695
dependencies = [
6696
"proc-macro2",
6697
"quote",
6698
-
"syn 1.0.109",
6699
]
···
3
version = 4
4
5
[[package]]
6
+
name = "VRChatPhotoManager"
7
+
version = "0.2.7"
8
dependencies = [
9
+
"arboard",
10
+
"dirs",
11
+
"fast_image_resize",
12
+
"image",
13
+
"mslnk",
14
+
"notify",
15
+
"open",
16
+
"regex",
17
+
"reqwest",
18
+
"serde",
19
+
"serde_json",
20
+
"tauri",
21
+
"tauri-build",
22
+
"tauri-plugin-http",
23
+
"tauri-plugin-process",
24
+
"tauri-plugin-shell",
25
+
"tauri-plugin-single-instance",
26
]
27
28
[[package]]
···
33
34
[[package]]
35
name = "aho-corasick"
36
+
version = "1.1.4"
37
source = "registry+https://github.com/rust-lang/crates.io-index"
38
+
checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
39
dependencies = [
40
"memchr",
41
]
···
65
]
66
67
[[package]]
68
name = "android_system_properties"
69
version = "0.1.5"
70
source = "registry+https://github.com/rust-lang/crates.io-index"
···
75
76
[[package]]
77
name = "anyhow"
78
+
version = "1.0.100"
79
source = "registry+https://github.com/rust-lang/crates.io-index"
80
+
checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
81
82
[[package]]
83
name = "arbitrary"
84
+
version = "1.4.2"
85
source = "registry+https://github.com/rust-lang/crates.io-index"
86
+
checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1"
87
+
88
+
[[package]]
89
+
name = "arboard"
90
+
version = "3.6.1"
91
+
source = "registry+https://github.com/rust-lang/crates.io-index"
92
+
checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf"
93
+
dependencies = [
94
+
"clipboard-win",
95
+
"image",
96
+
"log",
97
+
"objc2 0.6.3",
98
+
"objc2-app-kit",
99
+
"objc2-core-foundation",
100
+
"objc2-core-graphics",
101
+
"objc2-foundation 0.3.2",
102
+
"parking_lot",
103
+
"percent-encoding",
104
+
"windows-sys 0.60.2",
105
+
"x11rb",
106
+
]
107
108
[[package]]
109
name = "arg_enum_proc_macro"
···
113
dependencies = [
114
"proc-macro2",
115
"quote",
116
+
"syn 2.0.109",
117
]
118
119
[[package]]
···
148
149
[[package]]
150
name = "async-executor"
151
+
version = "1.13.3"
152
source = "registry+https://github.com/rust-lang/crates.io-index"
153
+
checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8"
154
dependencies = [
155
"async-task",
156
"concurrent-queue",
···
161
]
162
163
[[package]]
164
name = "async-io"
165
+
version = "2.6.0"
166
source = "registry+https://github.com/rust-lang/crates.io-index"
167
+
checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc"
168
dependencies = [
169
+
"autocfg",
170
"cfg-if",
171
"concurrent-queue",
172
"futures-io",
···
175
"polling",
176
"rustix",
177
"slab",
178
+
"windows-sys 0.61.2",
179
]
180
181
[[package]]
182
name = "async-lock"
183
+
version = "3.4.1"
184
source = "registry+https://github.com/rust-lang/crates.io-index"
185
+
checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc"
186
dependencies = [
187
"event-listener",
188
"event-listener-strategy",
···
191
192
[[package]]
193
name = "async-process"
194
+
version = "2.5.0"
195
source = "registry+https://github.com/rust-lang/crates.io-index"
196
+
checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75"
197
dependencies = [
198
"async-channel",
199
"async-io",
···
215
dependencies = [
216
"proc-macro2",
217
"quote",
218
+
"syn 2.0.109",
219
]
220
221
[[package]]
222
name = "async-signal"
223
+
version = "0.2.13"
224
source = "registry+https://github.com/rust-lang/crates.io-index"
225
+
checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c"
226
dependencies = [
227
"async-io",
228
"async-lock",
···
233
"rustix",
234
"signal-hook-registry",
235
"slab",
236
+
"windows-sys 0.61.2",
237
]
238
239
[[package]]
···
244
245
[[package]]
246
name = "async-trait"
247
+
version = "0.1.89"
248
source = "registry+https://github.com/rust-lang/crates.io-index"
249
+
checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
250
dependencies = [
251
"proc-macro2",
252
"quote",
253
+
"syn 2.0.109",
254
]
255
256
[[package]]
···
290
291
[[package]]
292
name = "av1-grain"
293
+
version = "0.2.5"
294
source = "registry+https://github.com/rust-lang/crates.io-index"
295
+
checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8"
296
dependencies = [
297
"anyhow",
298
"arrayvec",
···
304
305
[[package]]
306
name = "avif-serialize"
307
+
version = "0.8.6"
308
source = "registry+https://github.com/rust-lang/crates.io-index"
309
+
checksum = "47c8fbc0f831f4519fe8b810b6a7a91410ec83031b8233f730a0480029f6a23f"
310
dependencies = [
311
"arrayvec",
312
]
313
314
[[package]]
315
name = "base64"
316
version = "0.21.7"
317
source = "registry+https://github.com/rust-lang/crates.io-index"
···
325
326
[[package]]
327
name = "bit_field"
328
+
version = "0.10.3"
329
source = "registry+https://github.com/rust-lang/crates.io-index"
330
+
checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6"
331
332
[[package]]
333
name = "bitflags"
···
337
338
[[package]]
339
name = "bitflags"
340
+
version = "2.10.0"
341
source = "registry+https://github.com/rust-lang/crates.io-index"
342
+
checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
343
dependencies = [
344
+
"serde_core",
345
]
346
347
[[package]]
···
370
371
[[package]]
372
name = "block2"
373
+
version = "0.6.2"
374
source = "registry+https://github.com/rust-lang/crates.io-index"
375
+
checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5"
376
dependencies = [
377
+
"objc2 0.6.3",
378
]
379
380
[[package]]
···
392
393
[[package]]
394
name = "brotli"
395
+
version = "8.0.2"
396
source = "registry+https://github.com/rust-lang/crates.io-index"
397
+
checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560"
398
dependencies = [
399
"alloc-no-stdlib",
400
"alloc-stdlib",
···
425
426
[[package]]
427
name = "bytemuck"
428
+
version = "1.24.0"
429
source = "registry+https://github.com/rust-lang/crates.io-index"
430
+
checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4"
431
432
[[package]]
433
name = "byteorder"
···
456
source = "registry+https://github.com/rust-lang/crates.io-index"
457
checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2"
458
dependencies = [
459
+
"bitflags 2.10.0",
460
"cairo-sys-rs",
461
"glib",
462
"libc",
···
477
478
[[package]]
479
name = "camino"
480
+
version = "1.2.1"
481
source = "registry+https://github.com/rust-lang/crates.io-index"
482
+
checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609"
483
dependencies = [
484
+
"serde_core",
485
]
486
487
[[package]]
···
504
"semver",
505
"serde",
506
"serde_json",
507
+
"thiserror 2.0.17",
508
]
509
510
[[package]]
···
514
checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77"
515
dependencies = [
516
"serde",
517
+
"toml 0.9.8",
518
]
519
520
[[package]]
521
name = "cc"
522
+
version = "1.2.45"
523
source = "registry+https://github.com/rust-lang/crates.io-index"
524
+
checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe"
525
dependencies = [
526
+
"find-msvc-tools",
527
"jobserver",
528
"libc",
529
"shlex",
···
558
559
[[package]]
560
name = "cfg-if"
561
+
version = "1.0.4"
562
source = "registry+https://github.com/rust-lang/crates.io-index"
563
+
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
564
565
[[package]]
566
name = "cfg_aliases"
···
570
571
[[package]]
572
name = "chrono"
573
+
version = "0.4.42"
574
source = "registry+https://github.com/rust-lang/crates.io-index"
575
+
checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2"
576
dependencies = [
577
"iana-time-zone",
578
"num-traits",
579
"serde",
580
+
"windows-link 0.2.1",
581
+
]
582
+
583
+
[[package]]
584
+
name = "clipboard-win"
585
+
version = "5.4.1"
586
+
source = "registry+https://github.com/rust-lang/crates.io-index"
587
+
checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4"
588
+
dependencies = [
589
+
"error-code",
590
]
591
592
[[package]]
···
701
source = "registry+https://github.com/rust-lang/crates.io-index"
702
checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1"
703
dependencies = [
704
+
"bitflags 2.10.0",
705
"core-foundation 0.10.1",
706
"core-graphics-types",
707
"foreign-types 0.5.0",
···
714
source = "registry+https://github.com/rust-lang/crates.io-index"
715
checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
716
dependencies = [
717
+
"bitflags 2.10.0",
718
"core-foundation 0.10.1",
719
"libc",
720
]
···
811
checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
812
dependencies = [
813
"quote",
814
+
"syn 2.0.109",
815
]
816
817
[[package]]
···
821
checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501"
822
dependencies = [
823
"quote",
824
+
"syn 2.0.109",
825
]
826
827
[[package]]
828
name = "darling"
829
+
version = "0.21.3"
830
source = "registry+https://github.com/rust-lang/crates.io-index"
831
+
checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0"
832
dependencies = [
833
"darling_core",
834
"darling_macro",
···
836
837
[[package]]
838
name = "darling_core"
839
+
version = "0.21.3"
840
source = "registry+https://github.com/rust-lang/crates.io-index"
841
+
checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4"
842
dependencies = [
843
"fnv",
844
"ident_case",
845
"proc-macro2",
846
"quote",
847
"strsim",
848
+
"syn 2.0.109",
849
]
850
851
[[package]]
852
name = "darling_macro"
853
+
version = "0.21.3"
854
source = "registry+https://github.com/rust-lang/crates.io-index"
855
+
checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81"
856
dependencies = [
857
"darling_core",
858
"quote",
859
+
"syn 2.0.109",
860
]
861
862
[[package]]
863
name = "data-url"
864
+
version = "0.3.2"
865
source = "registry+https://github.com/rust-lang/crates.io-index"
866
+
checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376"
867
868
[[package]]
869
name = "deranged"
870
+
version = "0.5.5"
871
source = "registry+https://github.com/rust-lang/crates.io-index"
872
+
checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587"
873
dependencies = [
874
"powerfmt",
875
+
"serde_core",
876
]
877
878
[[package]]
···
885
"proc-macro2",
886
"quote",
887
"rustc_version",
888
+
"syn 2.0.109",
889
]
890
891
[[package]]
···
900
901
[[package]]
902
name = "dirs"
903
version = "6.0.0"
904
source = "registry+https://github.com/rust-lang/crates.io-index"
905
checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
906
dependencies = [
907
+
"dirs-sys",
908
]
909
910
[[package]]
···
915
dependencies = [
916
"libc",
917
"option-ext",
918
+
"redox_users",
919
+
"windows-sys 0.61.2",
920
]
921
922
[[package]]
···
931
source = "registry+https://github.com/rust-lang/crates.io-index"
932
checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec"
933
dependencies = [
934
+
"bitflags 2.10.0",
935
+
"objc2 0.6.3",
936
]
937
938
[[package]]
···
943
dependencies = [
944
"proc-macro2",
945
"quote",
946
+
"syn 2.0.109",
947
]
948
949
[[package]]
950
name = "dlopen2"
951
+
version = "0.8.0"
952
source = "registry+https://github.com/rust-lang/crates.io-index"
953
+
checksum = "b54f373ccf864bf587a89e880fb7610f8d73f3045f13580948ccbcaff26febff"
954
dependencies = [
955
"dlopen2_derive",
956
"libc",
···
966
dependencies = [
967
"proc-macro2",
968
"quote",
969
+
"syn 2.0.109",
970
]
971
972
[[package]]
···
980
981
[[package]]
982
name = "document-features"
983
+
version = "0.2.12"
984
source = "registry+https://github.com/rust-lang/crates.io-index"
985
+
checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61"
986
dependencies = [
987
"litrs",
988
]
···
1031
1032
[[package]]
1033
name = "embed-resource"
1034
+
version = "3.0.6"
1035
source = "registry+https://github.com/rust-lang/crates.io-index"
1036
+
checksum = "55a075fc573c64510038d7ee9abc7990635863992f83ebc52c8b433b8411a02e"
1037
dependencies = [
1038
"cc",
1039
"memchr",
1040
"rustc_version",
1041
+
"toml 0.9.8",
1042
"vswhom",
1043
"winreg",
1044
]
···
1082
dependencies = [
1083
"proc-macro2",
1084
"quote",
1085
+
"syn 2.0.109",
1086
]
1087
1088
[[package]]
···
1102
dependencies = [
1103
"proc-macro2",
1104
"quote",
1105
+
"syn 2.0.109",
1106
]
1107
1108
[[package]]
···
1113
1114
[[package]]
1115
name = "erased-serde"
1116
+
version = "0.4.9"
1117
source = "registry+https://github.com/rust-lang/crates.io-index"
1118
+
checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3"
1119
dependencies = [
1120
"serde",
1121
+
"serde_core",
1122
"typeid",
1123
]
1124
1125
[[package]]
1126
name = "errno"
1127
+
version = "0.3.14"
1128
source = "registry+https://github.com/rust-lang/crates.io-index"
1129
+
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
1130
dependencies = [
1131
"libc",
1132
+
"windows-sys 0.61.2",
1133
]
1134
1135
[[package]]
1136
+
name = "error-code"
1137
+
version = "3.3.2"
1138
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1139
+
checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59"
1140
+
1141
+
[[package]]
1142
name = "event-listener"
1143
+
version = "5.4.1"
1144
source = "registry+https://github.com/rust-lang/crates.io-index"
1145
+
checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab"
1146
dependencies = [
1147
"concurrent-queue",
1148
"parking",
···
1176
1177
[[package]]
1178
name = "fast_image_resize"
1179
+
version = "5.3.0"
1180
source = "registry+https://github.com/rust-lang/crates.io-index"
1181
+
checksum = "1bd1eda71e8af93f8b00e189404235d82f4de77ea4a0d182b44a7f03994d647c"
1182
dependencies = [
1183
"bytemuck",
1184
"cfg-if",
1185
"document-features",
1186
"image",
1187
"num-traits",
1188
+
"thiserror 2.0.17",
1189
]
1190
1191
[[package]]
···
1195
checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
1196
1197
[[package]]
1198
+
name = "fax"
1199
+
version = "0.2.6"
1200
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1201
+
checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab"
1202
+
dependencies = [
1203
+
"fax_derive",
1204
+
]
1205
+
1206
+
[[package]]
1207
+
name = "fax_derive"
1208
+
version = "0.2.0"
1209
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1210
+
checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d"
1211
+
dependencies = [
1212
+
"proc-macro2",
1213
+
"quote",
1214
+
"syn 2.0.109",
1215
+
]
1216
+
1217
+
[[package]]
1218
name = "fdeflate"
1219
version = "0.3.7"
1220
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1234
]
1235
1236
[[package]]
1237
+
name = "find-msvc-tools"
1238
+
version = "0.1.4"
1239
source = "registry+https://github.com/rust-lang/crates.io-index"
1240
+
checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127"
1241
1242
[[package]]
1243
name = "flate2"
1244
+
version = "1.1.5"
1245
source = "registry+https://github.com/rust-lang/crates.io-index"
1246
+
checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb"
1247
dependencies = [
1248
"crc32fast",
1249
"miniz_oxide",
···
1282
dependencies = [
1283
"proc-macro2",
1284
"quote",
1285
+
"syn 2.0.109",
1286
]
1287
1288
[[package]]
···
1299
1300
[[package]]
1301
name = "form_urlencoded"
1302
+
version = "1.2.2"
1303
source = "registry+https://github.com/rust-lang/crates.io-index"
1304
+
checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
1305
dependencies = [
1306
"percent-encoding",
1307
]
···
1360
1361
[[package]]
1362
name = "futures-lite"
1363
+
version = "2.6.1"
1364
source = "registry+https://github.com/rust-lang/crates.io-index"
1365
+
checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad"
1366
dependencies = [
1367
"fastrand",
1368
"futures-core",
···
1379
dependencies = [
1380
"proc-macro2",
1381
"quote",
1382
+
"syn 2.0.109",
1383
]
1384
1385
[[package]]
···
1521
1522
[[package]]
1523
name = "generic-array"
1524
+
version = "0.14.9"
1525
source = "registry+https://github.com/rust-lang/crates.io-index"
1526
+
checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2"
1527
dependencies = [
1528
"typenum",
1529
"version_check",
1530
+
]
1531
+
1532
+
[[package]]
1533
+
name = "gethostname"
1534
+
version = "1.1.0"
1535
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1536
+
checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8"
1537
+
dependencies = [
1538
+
"rustix",
1539
+
"windows-link 0.2.1",
1540
]
1541
1542
[[package]]
···
1565
1566
[[package]]
1567
name = "getrandom"
1568
+
version = "0.3.4"
1569
source = "registry+https://github.com/rust-lang/crates.io-index"
1570
+
checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
1571
dependencies = [
1572
"cfg-if",
1573
"js-sys",
1574
"libc",
1575
"r-efi",
1576
+
"wasip2",
1577
"wasm-bindgen",
1578
]
1579
···
1588
]
1589
1590
[[package]]
1591
name = "gio"
1592
version = "0.18.4"
1593
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1625
source = "registry+https://github.com/rust-lang/crates.io-index"
1626
checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5"
1627
dependencies = [
1628
+
"bitflags 2.10.0",
1629
"futures-channel",
1630
"futures-core",
1631
"futures-executor",
···
1653
"proc-macro-error",
1654
"proc-macro2",
1655
"quote",
1656
+
"syn 2.0.109",
1657
]
1658
1659
[[package]]
···
1668
1669
[[package]]
1670
name = "glob"
1671
+
version = "0.3.3"
1672
source = "registry+https://github.com/rust-lang/crates.io-index"
1673
+
checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
1674
1675
[[package]]
1676
name = "gobject-sys"
···
1732
"proc-macro-error",
1733
"proc-macro2",
1734
"quote",
1735
+
"syn 2.0.109",
1736
]
1737
1738
[[package]]
1739
name = "h2"
1740
+
version = "0.4.12"
1741
source = "registry+https://github.com/rust-lang/crates.io-index"
1742
+
checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386"
1743
dependencies = [
1744
"atomic-waker",
1745
"bytes",
···
1747
"futures-core",
1748
"futures-sink",
1749
"http",
1750
+
"indexmap 2.12.0",
1751
"slab",
1752
"tokio",
1753
"tokio-util",
···
1756
1757
[[package]]
1758
name = "half"
1759
+
version = "2.7.1"
1760
source = "registry+https://github.com/rust-lang/crates.io-index"
1761
+
checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b"
1762
dependencies = [
1763
"cfg-if",
1764
"crunchy",
1765
+
"zerocopy",
1766
]
1767
1768
[[package]]
···
1779
1780
[[package]]
1781
name = "hashbrown"
1782
+
version = "0.16.0"
1783
source = "registry+https://github.com/rust-lang/crates.io-index"
1784
+
checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d"
1785
1786
[[package]]
1787
name = "heck"
···
1861
1862
[[package]]
1863
name = "hyper"
1864
+
version = "1.7.0"
1865
source = "registry+https://github.com/rust-lang/crates.io-index"
1866
+
checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e"
1867
dependencies = [
1868
+
"atomic-waker",
1869
"bytes",
1870
"futures-channel",
1871
+
"futures-core",
1872
"h2",
1873
"http",
1874
"http-body",
1875
"httparse",
1876
"itoa",
1877
"pin-project-lite",
1878
+
"pin-utils",
1879
"smallvec",
1880
"tokio",
1881
"want",
···
1916
1917
[[package]]
1918
name = "hyper-util"
1919
+
version = "0.1.17"
1920
source = "registry+https://github.com/rust-lang/crates.io-index"
1921
+
checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8"
1922
dependencies = [
1923
"base64 0.22.1",
1924
"bytes",
···
1932
"libc",
1933
"percent-encoding",
1934
"pin-project-lite",
1935
+
"socket2",
1936
"system-configuration",
1937
"tokio",
1938
"tower-service",
···
1942
1943
[[package]]
1944
name = "iana-time-zone"
1945
+
version = "0.1.64"
1946
source = "registry+https://github.com/rust-lang/crates.io-index"
1947
+
checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb"
1948
dependencies = [
1949
"android_system_properties",
1950
"core-foundation-sys",
···
1952
"js-sys",
1953
"log",
1954
"wasm-bindgen",
1955
+
"windows-core 0.62.2",
1956
]
1957
1958
[[package]]
···
1971
checksum = "cc50b891e4acf8fe0e71ef88ec43ad82ee07b3810ad09de10f1d01f072ed4b98"
1972
dependencies = [
1973
"byteorder",
1974
+
"png 0.17.16",
1975
]
1976
1977
[[package]]
1978
name = "icu_collections"
1979
+
version = "2.1.1"
1980
source = "registry+https://github.com/rust-lang/crates.io-index"
1981
+
checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43"
1982
dependencies = [
1983
"displaydoc",
1984
"potential_utf",
···
1989
1990
[[package]]
1991
name = "icu_locale_core"
1992
+
version = "2.1.1"
1993
source = "registry+https://github.com/rust-lang/crates.io-index"
1994
+
checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6"
1995
dependencies = [
1996
"displaydoc",
1997
"litemap",
···
2002
2003
[[package]]
2004
name = "icu_normalizer"
2005
+
version = "2.1.1"
2006
source = "registry+https://github.com/rust-lang/crates.io-index"
2007
+
checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599"
2008
dependencies = [
2009
"icu_collections",
2010
"icu_normalizer_data",
2011
"icu_properties",
···
2016
2017
[[package]]
2018
name = "icu_normalizer_data"
2019
+
version = "2.1.1"
2020
source = "registry+https://github.com/rust-lang/crates.io-index"
2021
+
checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
2022
2023
[[package]]
2024
name = "icu_properties"
2025
+
version = "2.1.1"
2026
source = "registry+https://github.com/rust-lang/crates.io-index"
2027
+
checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99"
2028
dependencies = [
2029
"icu_collections",
2030
"icu_locale_core",
2031
"icu_properties_data",
2032
"icu_provider",
2033
"zerotrie",
2034
"zerovec",
2035
]
2036
2037
[[package]]
2038
name = "icu_properties_data"
2039
+
version = "2.1.1"
2040
source = "registry+https://github.com/rust-lang/crates.io-index"
2041
+
checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899"
2042
2043
[[package]]
2044
name = "icu_provider"
2045
+
version = "2.1.1"
2046
source = "registry+https://github.com/rust-lang/crates.io-index"
2047
+
checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
2048
dependencies = [
2049
"displaydoc",
2050
"icu_locale_core",
2051
"writeable",
2052
"yoke",
2053
"zerofrom",
···
2063
2064
[[package]]
2065
name = "idna"
2066
+
version = "1.1.0"
2067
source = "registry+https://github.com/rust-lang/crates.io-index"
2068
+
checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
2069
dependencies = [
2070
"idna_adapter",
2071
"smallvec",
···
2084
2085
[[package]]
2086
name = "image"
2087
+
version = "0.25.8"
2088
source = "registry+https://github.com/rust-lang/crates.io-index"
2089
+
checksum = "529feb3e6769d234375c4cf1ee2ce713682b8e76538cb13f9fc23e1400a591e7"
2090
dependencies = [
2091
"bytemuck",
2092
"byteorder-lite",
···
2094
"exr",
2095
"gif",
2096
"image-webp",
2097
+
"moxcms",
2098
"num-traits",
2099
+
"png 0.18.0",
2100
"qoi",
2101
"ravif",
2102
"rayon",
···
2108
2109
[[package]]
2110
name = "image-webp"
2111
+
version = "0.2.4"
2112
source = "registry+https://github.com/rust-lang/crates.io-index"
2113
+
checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3"
2114
dependencies = [
2115
"byteorder-lite",
2116
"quick-error",
···
2118
2119
[[package]]
2120
name = "imgref"
2121
+
version = "1.12.0"
2122
source = "registry+https://github.com/rust-lang/crates.io-index"
2123
+
checksum = "e7c5cedc30da3a610cac6b4ba17597bdf7152cf974e8aab3afb3d54455e371c8"
2124
2125
[[package]]
2126
name = "indexmap"
···
2135
2136
[[package]]
2137
name = "indexmap"
2138
+
version = "2.12.0"
2139
source = "registry+https://github.com/rust-lang/crates.io-index"
2140
+
checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f"
2141
dependencies = [
2142
"equivalent",
2143
+
"hashbrown 0.16.0",
2144
"serde",
2145
+
"serde_core",
2146
]
2147
2148
[[package]]
···
2156
2157
[[package]]
2158
name = "inotify"
2159
+
version = "0.11.0"
2160
source = "registry+https://github.com/rust-lang/crates.io-index"
2161
+
checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3"
2162
dependencies = [
2163
+
"bitflags 2.10.0",
2164
"inotify-sys",
2165
"libc",
2166
]
···
2182
dependencies = [
2183
"proc-macro2",
2184
"quote",
2185
+
"syn 2.0.109",
2186
]
2187
2188
[[package]]
···
2193
2194
[[package]]
2195
name = "iri-string"
2196
+
version = "0.7.9"
2197
source = "registry+https://github.com/rust-lang/crates.io-index"
2198
+
checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397"
2199
dependencies = [
2200
"memchr",
2201
"serde",
···
2282
2283
[[package]]
2284
name = "jobserver"
2285
+
version = "0.1.34"
2286
source = "registry+https://github.com/rust-lang/crates.io-index"
2287
+
checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"
2288
dependencies = [
2289
+
"getrandom 0.3.4",
2290
"libc",
2291
]
2292
2293
[[package]]
2294
name = "js-sys"
2295
+
version = "0.3.82"
2296
source = "registry+https://github.com/rust-lang/crates.io-index"
2297
+
checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65"
2298
dependencies = [
2299
"once_cell",
2300
"wasm-bindgen",
···
2328
source = "registry+https://github.com/rust-lang/crates.io-index"
2329
checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a"
2330
dependencies = [
2331
+
"bitflags 2.10.0",
2332
"serde",
2333
"unicode-segmentation",
2334
]
···
2361
dependencies = [
2362
"cssparser",
2363
"html5ever",
2364
+
"indexmap 2.12.0",
2365
"selectors",
2366
]
2367
···
2373
2374
[[package]]
2375
name = "lebe"
2376
+
version = "0.5.3"
2377
source = "registry+https://github.com/rust-lang/crates.io-index"
2378
+
checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8"
2379
2380
[[package]]
2381
name = "libappindicator"
···
2403
2404
[[package]]
2405
name = "libc"
2406
+
version = "0.2.177"
2407
source = "registry+https://github.com/rust-lang/crates.io-index"
2408
+
checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
2409
2410
[[package]]
2411
name = "libfuzzer-sys"
···
2429
2430
[[package]]
2431
name = "libredox"
2432
+
version = "0.1.10"
2433
source = "registry+https://github.com/rust-lang/crates.io-index"
2434
+
checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb"
2435
dependencies = [
2436
+
"bitflags 2.10.0",
2437
"libc",
2438
]
2439
2440
[[package]]
2441
name = "linux-raw-sys"
2442
+
version = "0.11.0"
2443
source = "registry+https://github.com/rust-lang/crates.io-index"
2444
+
checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
2445
2446
[[package]]
2447
name = "litemap"
2448
+
version = "0.8.1"
2449
source = "registry+https://github.com/rust-lang/crates.io-index"
2450
+
checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
2451
2452
[[package]]
2453
name = "litrs"
2454
+
version = "1.0.0"
2455
source = "registry+https://github.com/rust-lang/crates.io-index"
2456
+
checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092"
2457
2458
[[package]]
2459
name = "lock_api"
2460
+
version = "0.4.14"
2461
source = "registry+https://github.com/rust-lang/crates.io-index"
2462
+
checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
2463
dependencies = [
2464
"scopeguard",
2465
]
2466
2467
[[package]]
2468
name = "log"
2469
+
version = "0.4.28"
2470
source = "registry+https://github.com/rust-lang/crates.io-index"
2471
+
checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
2472
2473
[[package]]
2474
name = "loop9"
···
2513
dependencies = [
2514
"proc-macro2",
2515
"quote",
2516
+
"syn 2.0.109",
2517
]
2518
2519
[[package]]
···
2534
2535
[[package]]
2536
name = "memchr"
2537
+
version = "2.7.6"
2538
source = "registry+https://github.com/rust-lang/crates.io-index"
2539
+
checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
2540
2541
[[package]]
2542
name = "memoffset"
···
2554
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
2555
2556
[[package]]
2557
name = "miniz_oxide"
2558
version = "0.8.9"
2559
source = "registry+https://github.com/rust-lang/crates.io-index"
···
2565
2566
[[package]]
2567
name = "mio"
2568
+
version = "1.1.0"
2569
source = "registry+https://github.com/rust-lang/crates.io-index"
2570
+
checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873"
2571
dependencies = [
2572
"libc",
2573
"log",
2574
"wasi 0.11.1+wasi-snapshot-preview1",
2575
+
"windows-sys 0.61.2",
2576
]
2577
2578
[[package]]
2579
+
name = "moxcms"
2580
+
version = "0.7.9"
2581
source = "registry+https://github.com/rust-lang/crates.io-index"
2582
+
checksum = "0fbdd3d7436f8b5e892b8b7ea114271ff0fa00bc5acae845d53b07d498616ef6"
2583
dependencies = [
2584
+
"num-traits",
2585
+
"pxfm",
2586
]
2587
2588
[[package]]
···
2606
"dpi",
2607
"gtk",
2608
"keyboard-types",
2609
+
"objc2 0.6.3",
2610
"objc2-app-kit",
2611
"objc2-core-foundation",
2612
+
"objc2-foundation 0.3.2",
2613
"once_cell",
2614
+
"png 0.17.16",
2615
"serde",
2616
+
"thiserror 2.0.17",
2617
"windows-sys 0.60.2",
2618
]
2619
···
2640
source = "registry+https://github.com/rust-lang/crates.io-index"
2641
checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4"
2642
dependencies = [
2643
+
"bitflags 2.10.0",
2644
"jni-sys",
2645
"log",
2646
"ndk-sys",
···
2672
2673
[[package]]
2674
name = "nix"
2675
+
version = "0.30.1"
2676
source = "registry+https://github.com/rust-lang/crates.io-index"
2677
+
checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
2678
dependencies = [
2679
+
"bitflags 2.10.0",
2680
"cfg-if",
2681
+
"cfg_aliases",
2682
"libc",
2683
"memoffset",
2684
]
···
2691
2692
[[package]]
2693
name = "nom"
2694
+
version = "8.0.0"
2695
source = "registry+https://github.com/rust-lang/crates.io-index"
2696
+
checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405"
2697
dependencies = [
2698
"memchr",
2699
]
2700
2701
[[package]]
···
2706
2707
[[package]]
2708
name = "notify"
2709
+
version = "8.2.0"
2710
source = "registry+https://github.com/rust-lang/crates.io-index"
2711
+
checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3"
2712
dependencies = [
2713
+
"bitflags 2.10.0",
2714
"fsevent-sys",
2715
"inotify",
2716
"kqueue",
2717
"libc",
2718
"log",
2719
+
"mio",
2720
+
"notify-types",
2721
"walkdir",
2722
+
"windows-sys 0.60.2",
2723
]
2724
2725
[[package]]
2726
+
name = "notify-types"
2727
+
version = "2.0.0"
2728
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2729
+
checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d"
2730
+
2731
+
[[package]]
2732
name = "num-bigint"
2733
version = "0.4.6"
2734
source = "registry+https://github.com/rust-lang/crates.io-index"
···
2752
dependencies = [
2753
"proc-macro2",
2754
"quote",
2755
+
"syn 2.0.109",
2756
]
2757
2758
[[package]]
···
2786
2787
[[package]]
2788
name = "num_enum"
2789
+
version = "0.7.5"
2790
source = "registry+https://github.com/rust-lang/crates.io-index"
2791
+
checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c"
2792
dependencies = [
2793
"num_enum_derive",
2794
"rustversion",
···
2796
2797
[[package]]
2798
name = "num_enum_derive"
2799
+
version = "0.7.5"
2800
source = "registry+https://github.com/rust-lang/crates.io-index"
2801
+
checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7"
2802
dependencies = [
2803
+
"proc-macro-crate 3.4.0",
2804
"proc-macro2",
2805
"quote",
2806
+
"syn 2.0.109",
2807
]
2808
2809
[[package]]
···
2824
2825
[[package]]
2826
name = "objc2"
2827
+
version = "0.6.3"
2828
source = "registry+https://github.com/rust-lang/crates.io-index"
2829
+
checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05"
2830
dependencies = [
2831
"objc2-encode",
2832
"objc2-exception-helper",
···
2834
2835
[[package]]
2836
name = "objc2-app-kit"
2837
+
version = "0.3.2"
2838
source = "registry+https://github.com/rust-lang/crates.io-index"
2839
+
checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c"
2840
dependencies = [
2841
+
"bitflags 2.10.0",
2842
+
"block2 0.6.2",
2843
"libc",
2844
+
"objc2 0.6.3",
2845
"objc2-cloud-kit",
2846
"objc2-core-data",
2847
"objc2-core-foundation",
2848
"objc2-core-graphics",
2849
"objc2-core-image",
2850
+
"objc2-core-text",
2851
+
"objc2-core-video",
2852
+
"objc2-foundation 0.3.2",
2853
+
"objc2-quartz-core 0.3.2",
2854
]
2855
2856
[[package]]
2857
name = "objc2-cloud-kit"
2858
+
version = "0.3.2"
2859
source = "registry+https://github.com/rust-lang/crates.io-index"
2860
+
checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c"
2861
dependencies = [
2862
+
"bitflags 2.10.0",
2863
+
"objc2 0.6.3",
2864
+
"objc2-foundation 0.3.2",
2865
]
2866
2867
[[package]]
2868
name = "objc2-core-data"
2869
+
version = "0.3.2"
2870
source = "registry+https://github.com/rust-lang/crates.io-index"
2871
+
checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa"
2872
dependencies = [
2873
+
"bitflags 2.10.0",
2874
+
"objc2 0.6.3",
2875
+
"objc2-foundation 0.3.2",
2876
]
2877
2878
[[package]]
2879
name = "objc2-core-foundation"
2880
+
version = "0.3.2"
2881
source = "registry+https://github.com/rust-lang/crates.io-index"
2882
+
checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
2883
dependencies = [
2884
+
"bitflags 2.10.0",
2885
"dispatch2",
2886
+
"objc2 0.6.3",
2887
]
2888
2889
[[package]]
2890
name = "objc2-core-graphics"
2891
+
version = "0.3.2"
2892
source = "registry+https://github.com/rust-lang/crates.io-index"
2893
+
checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807"
2894
dependencies = [
2895
+
"bitflags 2.10.0",
2896
"dispatch2",
2897
+
"objc2 0.6.3",
2898
"objc2-core-foundation",
2899
"objc2-io-surface",
2900
]
2901
2902
[[package]]
2903
name = "objc2-core-image"
2904
+
version = "0.3.2"
2905
source = "registry+https://github.com/rust-lang/crates.io-index"
2906
+
checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006"
2907
dependencies = [
2908
+
"objc2 0.6.3",
2909
+
"objc2-foundation 0.3.2",
2910
+
]
2911
+
2912
+
[[package]]
2913
+
name = "objc2-core-text"
2914
+
version = "0.3.2"
2915
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2916
+
checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d"
2917
+
dependencies = [
2918
+
"bitflags 2.10.0",
2919
+
"objc2 0.6.3",
2920
+
"objc2-core-foundation",
2921
+
"objc2-core-graphics",
2922
+
]
2923
+
2924
+
[[package]]
2925
+
name = "objc2-core-video"
2926
+
version = "0.3.2"
2927
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2928
+
checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6"
2929
+
dependencies = [
2930
+
"bitflags 2.10.0",
2931
+
"objc2 0.6.3",
2932
+
"objc2-core-foundation",
2933
+
"objc2-core-graphics",
2934
+
"objc2-io-surface",
2935
]
2936
2937
[[package]]
···
2955
source = "registry+https://github.com/rust-lang/crates.io-index"
2956
checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8"
2957
dependencies = [
2958
+
"bitflags 2.10.0",
2959
"block2 0.5.1",
2960
"libc",
2961
"objc2 0.5.2",
···
2963
2964
[[package]]
2965
name = "objc2-foundation"
2966
+
version = "0.3.2"
2967
source = "registry+https://github.com/rust-lang/crates.io-index"
2968
+
checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272"
2969
dependencies = [
2970
+
"bitflags 2.10.0",
2971
+
"block2 0.6.2",
2972
"libc",
2973
+
"objc2 0.6.3",
2974
"objc2-core-foundation",
2975
]
2976
2977
[[package]]
2978
name = "objc2-io-surface"
2979
+
version = "0.3.2"
2980
source = "registry+https://github.com/rust-lang/crates.io-index"
2981
+
checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d"
2982
dependencies = [
2983
+
"bitflags 2.10.0",
2984
+
"objc2 0.6.3",
2985
+
"objc2-core-foundation",
2986
+
]
2987
+
2988
+
[[package]]
2989
+
name = "objc2-javascript-core"
2990
+
version = "0.3.2"
2991
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2992
+
checksum = "2a1e6550c4caed348956ce3370c9ffeca70bb1dbed4fa96112e7c6170e074586"
2993
+
dependencies = [
2994
+
"objc2 0.6.3",
2995
"objc2-core-foundation",
2996
]
2997
···
3001
source = "registry+https://github.com/rust-lang/crates.io-index"
3002
checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6"
3003
dependencies = [
3004
+
"bitflags 2.10.0",
3005
"block2 0.5.1",
3006
"objc2 0.5.2",
3007
"objc2-foundation 0.2.2",
···
3013
source = "registry+https://github.com/rust-lang/crates.io-index"
3014
checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a"
3015
dependencies = [
3016
+
"bitflags 2.10.0",
3017
"block2 0.5.1",
3018
"objc2 0.5.2",
3019
"objc2-foundation 0.2.2",
···
3022
3023
[[package]]
3024
name = "objc2-quartz-core"
3025
+
version = "0.3.2"
3026
source = "registry+https://github.com/rust-lang/crates.io-index"
3027
+
checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f"
3028
dependencies = [
3029
+
"bitflags 2.10.0",
3030
+
"objc2 0.6.3",
3031
+
"objc2-foundation 0.3.2",
3032
]
3033
3034
[[package]]
3035
+
name = "objc2-security"
3036
+
version = "0.3.2"
3037
source = "registry+https://github.com/rust-lang/crates.io-index"
3038
+
checksum = "709fe137109bd1e8b5a99390f77a7d8b2961dafc1a1c5db8f2e60329ad6d895a"
3039
dependencies = [
3040
+
"bitflags 2.10.0",
3041
+
"objc2 0.6.3",
3042
"objc2-core-foundation",
3043
]
3044
3045
[[package]]
3046
+
name = "objc2-ui-kit"
3047
+
version = "0.3.2"
3048
source = "registry+https://github.com/rust-lang/crates.io-index"
3049
+
checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22"
3050
dependencies = [
3051
+
"bitflags 2.10.0",
3052
+
"objc2 0.6.3",
3053
"objc2-core-foundation",
3054
+
"objc2-foundation 0.3.2",
3055
]
3056
3057
[[package]]
3058
+
name = "objc2-web-kit"
3059
+
version = "0.3.2"
3060
source = "registry+https://github.com/rust-lang/crates.io-index"
3061
+
checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f"
3062
dependencies = [
3063
+
"bitflags 2.10.0",
3064
+
"block2 0.6.2",
3065
+
"objc2 0.6.3",
3066
+
"objc2-app-kit",
3067
+
"objc2-core-foundation",
3068
+
"objc2-foundation 0.3.2",
3069
+
"objc2-javascript-core",
3070
+
"objc2-security",
3071
]
3072
3073
[[package]]
···
3090
3091
[[package]]
3092
name = "openssl"
3093
+
version = "0.10.74"
3094
source = "registry+https://github.com/rust-lang/crates.io-index"
3095
+
checksum = "24ad14dd45412269e1a30f52ad8f0664f0f4f4a89ee8fe28c3b3527021ebb654"
3096
dependencies = [
3097
+
"bitflags 2.10.0",
3098
"cfg-if",
3099
"foreign-types 0.3.2",
3100
"libc",
···
3111
dependencies = [
3112
"proc-macro2",
3113
"quote",
3114
+
"syn 2.0.109",
3115
]
3116
3117
[[package]]
···
3122
3123
[[package]]
3124
name = "openssl-sys"
3125
+
version = "0.9.110"
3126
source = "registry+https://github.com/rust-lang/crates.io-index"
3127
+
checksum = "0a9f0075ba3c21b09f8e8b2026584b1d18d49388648f2fbbf3c97ea8deced8e2"
3128
dependencies = [
3129
"cc",
3130
"libc",
···
3160
3161
[[package]]
3162
name = "os_pipe"
3163
+
version = "1.2.3"
3164
source = "registry+https://github.com/rust-lang/crates.io-index"
3165
+
checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967"
3166
dependencies = [
3167
"libc",
3168
+
"windows-sys 0.61.2",
3169
]
3170
3171
[[package]]
···
3201
3202
[[package]]
3203
name = "parking_lot"
3204
+
version = "0.12.5"
3205
source = "registry+https://github.com/rust-lang/crates.io-index"
3206
+
checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
3207
dependencies = [
3208
"lock_api",
3209
"parking_lot_core",
···
3211
3212
[[package]]
3213
name = "parking_lot_core"
3214
+
version = "0.9.12"
3215
source = "registry+https://github.com/rust-lang/crates.io-index"
3216
+
checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
3217
dependencies = [
3218
"cfg-if",
3219
"libc",
3220
"redox_syscall",
3221
"smallvec",
3222
+
"windows-link 0.2.1",
3223
]
3224
3225
[[package]]
···
3236
3237
[[package]]
3238
name = "percent-encoding"
3239
+
version = "2.3.2"
3240
source = "registry+https://github.com/rust-lang/crates.io-index"
3241
+
checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
3242
3243
[[package]]
3244
name = "phf"
···
3344
"phf_shared 0.11.3",
3345
"proc-macro2",
3346
"quote",
3347
+
"syn 2.0.109",
3348
]
3349
3350
[[package]]
···
3405
3406
[[package]]
3407
name = "plist"
3408
+
version = "1.8.0"
3409
source = "registry+https://github.com/rust-lang/crates.io-index"
3410
+
checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07"
3411
dependencies = [
3412
"base64 0.22.1",
3413
+
"indexmap 2.12.0",
3414
"quick-xml",
3415
"serde",
3416
"time",
···
3430
]
3431
3432
[[package]]
3433
+
name = "png"
3434
+
version = "0.18.0"
3435
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3436
+
checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0"
3437
+
dependencies = [
3438
+
"bitflags 2.10.0",
3439
+
"crc32fast",
3440
+
"fdeflate",
3441
+
"flate2",
3442
+
"miniz_oxide",
3443
+
]
3444
+
3445
+
[[package]]
3446
name = "polling"
3447
+
version = "3.11.0"
3448
source = "registry+https://github.com/rust-lang/crates.io-index"
3449
+
checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218"
3450
dependencies = [
3451
"cfg-if",
3452
"concurrent-queue",
3453
"hermit-abi",
3454
"pin-project-lite",
3455
"rustix",
3456
+
"windows-sys 0.61.2",
3457
]
3458
3459
[[package]]
3460
name = "potential_utf"
3461
+
version = "0.1.4"
3462
source = "registry+https://github.com/rust-lang/crates.io-index"
3463
+
checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
3464
dependencies = [
3465
"zerovec",
3466
]
···
3507
]
3508
3509
[[package]]
3510
+
name = "proc-macro-crate"
3511
+
version = "3.4.0"
3512
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3513
+
checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983"
3514
+
dependencies = [
3515
+
"toml_edit 0.23.7",
3516
+
]
3517
+
3518
+
[[package]]
3519
name = "proc-macro-error"
3520
version = "1.0.4"
3521
source = "registry+https://github.com/rust-lang/crates.io-index"
···
3547
3548
[[package]]
3549
name = "proc-macro2"
3550
+
version = "1.0.103"
3551
source = "registry+https://github.com/rust-lang/crates.io-index"
3552
+
checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
3553
dependencies = [
3554
"unicode-ident",
3555
]
···
3570
checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b"
3571
dependencies = [
3572
"quote",
3573
+
"syn 2.0.109",
3574
]
3575
3576
[[package]]
···
3590
]
3591
3592
[[package]]
3593
+
name = "pxfm"
3594
+
version = "0.1.25"
3595
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3596
+
checksum = "a3cbdf373972bf78df4d3b518d07003938e2c7d1fb5891e55f9cb6df57009d84"
3597
+
dependencies = [
3598
+
"num-traits",
3599
+
]
3600
+
3601
+
[[package]]
3602
name = "qoi"
3603
version = "0.4.1"
3604
source = "registry+https://github.com/rust-lang/crates.io-index"
···
3615
3616
[[package]]
3617
name = "quick-xml"
3618
+
version = "0.38.3"
3619
source = "registry+https://github.com/rust-lang/crates.io-index"
3620
+
checksum = "42a232e7487fc2ef313d96dde7948e7a3c05101870d8985e4fd8d26aedd27b89"
3621
dependencies = [
3622
"memchr",
3623
]
3624
3625
[[package]]
3626
name = "quinn"
3627
+
version = "0.11.9"
3628
source = "registry+https://github.com/rust-lang/crates.io-index"
3629
+
checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
3630
dependencies = [
3631
"bytes",
3632
"cfg_aliases",
···
3635
"quinn-udp",
3636
"rustc-hash",
3637
"rustls",
3638
+
"socket2",
3639
+
"thiserror 2.0.17",
3640
"tokio",
3641
"tracing",
3642
"web-time",
···
3644
3645
[[package]]
3646
name = "quinn-proto"
3647
+
version = "0.11.13"
3648
source = "registry+https://github.com/rust-lang/crates.io-index"
3649
+
checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31"
3650
dependencies = [
3651
"bytes",
3652
+
"getrandom 0.3.4",
3653
"lru-slab",
3654
"rand 0.9.2",
3655
"ring",
···
3657
"rustls",
3658
"rustls-pki-types",
3659
"slab",
3660
+
"thiserror 2.0.17",
3661
"tinyvec",
3662
"tracing",
3663
"web-time",
···
3665
3666
[[package]]
3667
name = "quinn-udp"
3668
+
version = "0.5.14"
3669
source = "registry+https://github.com/rust-lang/crates.io-index"
3670
+
checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
3671
dependencies = [
3672
"cfg_aliases",
3673
"libc",
3674
"once_cell",
3675
+
"socket2",
3676
"tracing",
3677
+
"windows-sys 0.60.2",
3678
]
3679
3680
[[package]]
3681
name = "quote"
3682
+
version = "1.0.42"
3683
source = "registry+https://github.com/rust-lang/crates.io-index"
3684
+
checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
3685
dependencies = [
3686
"proc-macro2",
3687
]
···
3781
source = "registry+https://github.com/rust-lang/crates.io-index"
3782
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
3783
dependencies = [
3784
+
"getrandom 0.3.4",
3785
]
3786
3787
[[package]]
···
3860
3861
[[package]]
3862
name = "rayon"
3863
+
version = "1.11.0"
3864
source = "registry+https://github.com/rust-lang/crates.io-index"
3865
+
checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f"
3866
dependencies = [
3867
"either",
3868
"rayon-core",
···
3870
3871
[[package]]
3872
name = "rayon-core"
3873
+
version = "1.13.0"
3874
source = "registry+https://github.com/rust-lang/crates.io-index"
3875
+
checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
3876
dependencies = [
3877
"crossbeam-deque",
3878
"crossbeam-utils",
···
3880
3881
[[package]]
3882
name = "redox_syscall"
3883
+
version = "0.5.18"
3884
source = "registry+https://github.com/rust-lang/crates.io-index"
3885
+
checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
3886
dependencies = [
3887
+
"bitflags 2.10.0",
3888
]
3889
3890
[[package]]
···
3895
dependencies = [
3896
"getrandom 0.2.16",
3897
"libredox",
3898
+
"thiserror 2.0.17",
3899
]
3900
3901
[[package]]
3902
name = "ref-cast"
3903
+
version = "1.0.25"
3904
source = "registry+https://github.com/rust-lang/crates.io-index"
3905
+
checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d"
3906
dependencies = [
3907
"ref-cast-impl",
3908
]
3909
3910
[[package]]
3911
name = "ref-cast-impl"
3912
+
version = "1.0.25"
3913
source = "registry+https://github.com/rust-lang/crates.io-index"
3914
+
checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
3915
dependencies = [
3916
"proc-macro2",
3917
"quote",
3918
+
"syn 2.0.109",
3919
]
3920
3921
[[package]]
3922
name = "regex"
3923
+
version = "1.12.2"
3924
source = "registry+https://github.com/rust-lang/crates.io-index"
3925
+
checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4"
3926
dependencies = [
3927
"aho-corasick",
3928
"memchr",
···
3932
3933
[[package]]
3934
name = "regex-automata"
3935
+
version = "0.4.13"
3936
source = "registry+https://github.com/rust-lang/crates.io-index"
3937
+
checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
3938
dependencies = [
3939
"aho-corasick",
3940
"memchr",
···
3943
3944
[[package]]
3945
name = "regex-syntax"
3946
+
version = "0.8.8"
3947
source = "registry+https://github.com/rust-lang/crates.io-index"
3948
+
checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
3949
3950
[[package]]
3951
name = "reqwest"
3952
+
version = "0.12.24"
3953
source = "registry+https://github.com/rust-lang/crates.io-index"
3954
+
checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f"
3955
dependencies = [
3956
"base64 0.22.1",
3957
"bytes",
···
4019
4020
[[package]]
4021
name = "rust-ini"
4022
+
version = "0.21.3"
4023
source = "registry+https://github.com/rust-lang/crates.io-index"
4024
+
checksum = "796e8d2b6696392a43bea58116b667fb4c29727dc5abd27d6acf338bb4f688c7"
4025
dependencies = [
4026
"cfg-if",
4027
"ordered-multimap",
4028
]
4029
4030
[[package]]
4031
name = "rustc-hash"
···
4044
4045
[[package]]
4046
name = "rustix"
4047
+
version = "1.1.2"
4048
source = "registry+https://github.com/rust-lang/crates.io-index"
4049
+
checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
4050
dependencies = [
4051
+
"bitflags 2.10.0",
4052
"errno",
4053
"libc",
4054
"linux-raw-sys",
4055
+
"windows-sys 0.61.2",
4056
]
4057
4058
[[package]]
4059
name = "rustls"
4060
+
version = "0.23.35"
4061
source = "registry+https://github.com/rust-lang/crates.io-index"
4062
+
checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f"
4063
dependencies = [
4064
"once_cell",
4065
"ring",
···
4071
4072
[[package]]
4073
name = "rustls-pki-types"
4074
+
version = "1.13.0"
4075
source = "registry+https://github.com/rust-lang/crates.io-index"
4076
+
checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a"
4077
dependencies = [
4078
"web-time",
4079
"zeroize",
···
4081
4082
[[package]]
4083
name = "rustls-webpki"
4084
+
version = "0.103.8"
4085
source = "registry+https://github.com/rust-lang/crates.io-index"
4086
+
checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52"
4087
dependencies = [
4088
"ring",
4089
"rustls-pki-types",
···
4092
4093
[[package]]
4094
name = "rustversion"
4095
+
version = "1.0.22"
4096
source = "registry+https://github.com/rust-lang/crates.io-index"
4097
+
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
4098
4099
[[package]]
4100
name = "ryu"
···
4113
4114
[[package]]
4115
name = "schannel"
4116
+
version = "0.1.28"
4117
source = "registry+https://github.com/rust-lang/crates.io-index"
4118
+
checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1"
4119
dependencies = [
4120
+
"windows-sys 0.61.2",
4121
]
4122
4123
[[package]]
···
4149
4150
[[package]]
4151
name = "schemars"
4152
+
version = "1.1.0"
4153
source = "registry+https://github.com/rust-lang/crates.io-index"
4154
+
checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289"
4155
dependencies = [
4156
"dyn-clone",
4157
"ref-cast",
···
4168
"proc-macro2",
4169
"quote",
4170
"serde_derive_internals",
4171
+
"syn 2.0.109",
4172
]
4173
4174
[[package]]
···
4183
source = "registry+https://github.com/rust-lang/crates.io-index"
4184
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
4185
dependencies = [
4186
+
"bitflags 2.10.0",
4187
"core-foundation 0.9.4",
4188
"core-foundation-sys",
4189
"libc",
···
4192
4193
[[package]]
4194
name = "security-framework-sys"
4195
+
version = "2.15.0"
4196
source = "registry+https://github.com/rust-lang/crates.io-index"
4197
+
checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0"
4198
dependencies = [
4199
"core-foundation-sys",
4200
"libc",
···
4220
4221
[[package]]
4222
name = "semver"
4223
+
version = "1.0.27"
4224
source = "registry+https://github.com/rust-lang/crates.io-index"
4225
+
checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
4226
dependencies = [
4227
"serde",
4228
+
"serde_core",
4229
]
4230
4231
[[package]]
4232
name = "serde"
4233
+
version = "1.0.228"
4234
source = "registry+https://github.com/rust-lang/crates.io-index"
4235
+
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
4236
dependencies = [
4237
+
"serde_core",
4238
"serde_derive",
4239
]
4240
4241
[[package]]
4242
name = "serde-untagged"
4243
+
version = "0.1.9"
4244
source = "registry+https://github.com/rust-lang/crates.io-index"
4245
+
checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058"
4246
dependencies = [
4247
"erased-serde",
4248
"serde",
4249
+
"serde_core",
4250
"typeid",
4251
]
4252
4253
[[package]]
4254
+
name = "serde_core"
4255
+
version = "1.0.228"
4256
+
source = "registry+https://github.com/rust-lang/crates.io-index"
4257
+
checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
4258
+
dependencies = [
4259
+
"serde_derive",
4260
+
]
4261
+
4262
+
[[package]]
4263
name = "serde_derive"
4264
+
version = "1.0.228"
4265
source = "registry+https://github.com/rust-lang/crates.io-index"
4266
+
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
4267
dependencies = [
4268
"proc-macro2",
4269
"quote",
4270
+
"syn 2.0.109",
4271
]
4272
4273
[[package]]
···
4278
dependencies = [
4279
"proc-macro2",
4280
"quote",
4281
+
"syn 2.0.109",
4282
]
4283
4284
[[package]]
4285
name = "serde_json"
4286
+
version = "1.0.145"
4287
source = "registry+https://github.com/rust-lang/crates.io-index"
4288
+
checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
4289
dependencies = [
4290
"itoa",
4291
"memchr",
4292
"ryu",
4293
"serde",
4294
+
"serde_core",
4295
]
4296
4297
[[package]]
···
4302
dependencies = [
4303
"proc-macro2",
4304
"quote",
4305
+
"syn 2.0.109",
4306
]
4307
4308
[[package]]
···
4316
4317
[[package]]
4318
name = "serde_spanned"
4319
+
version = "1.0.3"
4320
source = "registry+https://github.com/rust-lang/crates.io-index"
4321
+
checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392"
4322
dependencies = [
4323
+
"serde_core",
4324
]
4325
4326
[[package]]
···
4337
4338
[[package]]
4339
name = "serde_with"
4340
+
version = "3.15.1"
4341
source = "registry+https://github.com/rust-lang/crates.io-index"
4342
+
checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04"
4343
dependencies = [
4344
"base64 0.22.1",
4345
"chrono",
4346
"hex",
4347
"indexmap 1.9.3",
4348
+
"indexmap 2.12.0",
4349
"schemars 0.9.0",
4350
+
"schemars 1.1.0",
4351
+
"serde_core",
4352
"serde_json",
4353
"serde_with_macros",
4354
"time",
···
4356
4357
[[package]]
4358
name = "serde_with_macros"
4359
+
version = "3.15.1"
4360
source = "registry+https://github.com/rust-lang/crates.io-index"
4361
+
checksum = "b91a903660542fced4e99881aa481bdbaec1634568ee02e0b8bd57c64cb38955"
4362
dependencies = [
4363
"darling",
4364
"proc-macro2",
4365
"quote",
4366
+
"syn 2.0.109",
4367
]
4368
4369
[[package]]
4370
name = "serialize-to-javascript"
4371
+
version = "0.1.2"
4372
source = "registry+https://github.com/rust-lang/crates.io-index"
4373
+
checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5"
4374
dependencies = [
4375
"serde",
4376
"serde_json",
···
4379
4380
[[package]]
4381
name = "serialize-to-javascript-impl"
4382
+
version = "0.1.2"
4383
source = "registry+https://github.com/rust-lang/crates.io-index"
4384
+
checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d"
4385
dependencies = [
4386
"proc-macro2",
4387
"quote",
4388
+
"syn 2.0.109",
4389
]
4390
4391
[[package]]
···
4399
]
4400
4401
[[package]]
4402
name = "sha2"
4403
version = "0.10.9"
4404
source = "registry+https://github.com/rust-lang/crates.io-index"
···
4449
4450
[[package]]
4451
name = "signal-hook-registry"
4452
+
version = "1.4.6"
4453
source = "registry+https://github.com/rust-lang/crates.io-index"
4454
+
checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b"
4455
dependencies = [
4456
"libc",
4457
]
···
4485
4486
[[package]]
4487
name = "slab"
4488
+
version = "0.4.11"
4489
source = "registry+https://github.com/rust-lang/crates.io-index"
4490
+
checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
4491
4492
[[package]]
4493
name = "smallvec"
···
4497
4498
[[package]]
4499
name = "socket2"
4500
+
version = "0.6.1"
4501
source = "registry+https://github.com/rust-lang/crates.io-index"
4502
+
checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881"
4503
dependencies = [
4504
"libc",
4505
+
"windows-sys 0.60.2",
4506
]
4507
4508
[[package]]
···
4555
4556
[[package]]
4557
name = "stable_deref_trait"
4558
+
version = "1.2.1"
4559
source = "registry+https://github.com/rust-lang/crates.io-index"
4560
+
checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
4561
4562
[[package]]
4563
name = "static_assertions"
···
4626
4627
[[package]]
4628
name = "syn"
4629
+
version = "2.0.109"
4630
source = "registry+https://github.com/rust-lang/crates.io-index"
4631
+
checksum = "2f17c7e013e88258aa9543dcbe81aca68a667a9ac37cd69c9fbc07858bfe0e2f"
4632
dependencies = [
4633
"proc-macro2",
4634
"quote",
···
4652
dependencies = [
4653
"proc-macro2",
4654
"quote",
4655
+
"syn 2.0.109",
4656
]
4657
4658
[[package]]
···
4661
source = "registry+https://github.com/rust-lang/crates.io-index"
4662
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
4663
dependencies = [
4664
+
"bitflags 2.10.0",
4665
"core-foundation 0.9.4",
4666
"system-configuration-sys",
4667
]
···
4691
4692
[[package]]
4693
name = "tao"
4694
+
version = "0.34.5"
4695
source = "registry+https://github.com/rust-lang/crates.io-index"
4696
+
checksum = "f3a753bdc39c07b192151523a3f77cd0394aa75413802c883a0f6f6a0e5ee2e7"
4697
dependencies = [
4698
+
"bitflags 2.10.0",
4699
+
"block2 0.6.2",
4700
"core-foundation 0.10.1",
4701
"core-graphics",
4702
"crossbeam-channel",
···
4713
"ndk",
4714
"ndk-context",
4715
"ndk-sys",
4716
+
"objc2 0.6.3",
4717
"objc2-app-kit",
4718
+
"objc2-foundation 0.3.2",
4719
"once_cell",
4720
"parking_lot",
4721
"raw-window-handle",
···
4724
"unicode-segmentation",
4725
"url",
4726
"windows",
4727
+
"windows-core 0.61.2",
4728
"windows-version",
4729
"x11-dl",
4730
]
···
4737
dependencies = [
4738
"proc-macro2",
4739
"quote",
4740
+
"syn 2.0.109",
4741
]
4742
4743
[[package]]
···
4748
4749
[[package]]
4750
name = "tauri"
4751
+
version = "2.9.2"
4752
source = "registry+https://github.com/rust-lang/crates.io-index"
4753
+
checksum = "8bceb52453e507c505b330afe3398510e87f428ea42b6e76ecb6bd63b15965b5"
4754
dependencies = [
4755
"anyhow",
4756
"bytes",
4757
+
"cookie",
4758
+
"dirs",
4759
"dunce",
4760
"embed_plist",
4761
+
"getrandom 0.3.4",
4762
"glob",
4763
"gtk",
4764
"heck 0.5.0",
···
4769
"log",
4770
"mime",
4771
"muda",
4772
+
"objc2 0.6.3",
4773
"objc2-app-kit",
4774
+
"objc2-foundation 0.3.2",
4775
"objc2-ui-kit",
4776
+
"objc2-web-kit",
4777
"percent-encoding",
4778
"plist",
4779
"raw-window-handle",
···
4788
"tauri-runtime",
4789
"tauri-runtime-wry",
4790
"tauri-utils",
4791
+
"thiserror 2.0.17",
4792
"tokio",
4793
"tray-icon",
4794
"url",
4795
"webkit2gtk",
4796
"webview2-com",
4797
"window-vibrancy",
···
4800
4801
[[package]]
4802
name = "tauri-build"
4803
+
version = "2.5.1"
4804
source = "registry+https://github.com/rust-lang/crates.io-index"
4805
+
checksum = "a924b6c50fe83193f0f8b14072afa7c25b7a72752a2a73d9549b463f5fe91a38"
4806
dependencies = [
4807
"anyhow",
4808
"cargo_toml",
4809
+
"dirs",
4810
"glob",
4811
"heck 0.5.0",
4812
"json-patch",
···
4816
"serde_json",
4817
"tauri-utils",
4818
"tauri-winres",
4819
+
"toml 0.9.8",
4820
"walkdir",
4821
]
4822
4823
[[package]]
4824
name = "tauri-codegen"
4825
+
version = "2.5.0"
4826
source = "registry+https://github.com/rust-lang/crates.io-index"
4827
+
checksum = "6c1fe64c74cc40f90848281a90058a6db931eb400b60205840e09801ee30f190"
4828
dependencies = [
4829
"base64 0.22.1",
4830
"brotli",
4831
"ico",
4832
"json-patch",
4833
"plist",
4834
+
"png 0.17.16",
4835
"proc-macro2",
4836
"quote",
4837
"semver",
4838
"serde",
4839
"serde_json",
4840
"sha2",
4841
+
"syn 2.0.109",
4842
"tauri-utils",
4843
+
"thiserror 2.0.17",
4844
"time",
4845
"url",
4846
"uuid",
···
4849
4850
[[package]]
4851
name = "tauri-macros"
4852
+
version = "2.5.0"
4853
source = "registry+https://github.com/rust-lang/crates.io-index"
4854
+
checksum = "260c5d2eb036b76206b9fca20b7be3614cfd21046c5396f7959e0e64a4b07f2f"
4855
dependencies = [
4856
"heck 0.5.0",
4857
"proc-macro2",
4858
"quote",
4859
+
"syn 2.0.109",
4860
"tauri-codegen",
4861
"tauri-utils",
4862
]
4863
4864
[[package]]
4865
name = "tauri-plugin"
4866
+
version = "2.5.1"
4867
source = "registry+https://github.com/rust-lang/crates.io-index"
4868
+
checksum = "076c78a474a7247c90cad0b6e87e593c4c620ed4efdb79cbe0214f0021f6c39d"
4869
dependencies = [
4870
"anyhow",
4871
"glob",
···
4874
"serde",
4875
"serde_json",
4876
"tauri-utils",
4877
+
"toml 0.9.8",
4878
"walkdir",
4879
]
4880
4881
[[package]]
4882
name = "tauri-plugin-deep-link"
4883
+
version = "2.4.5"
4884
source = "registry+https://github.com/rust-lang/crates.io-index"
4885
+
checksum = "6e82759f7c7d51de3cbde51c04b3f2332de52436ed84541182cd8944b04e9e73"
4886
dependencies = [
4887
"dunce",
4888
+
"plist",
4889
"rust-ini",
4890
"serde",
4891
"serde_json",
4892
"tauri",
4893
"tauri-plugin",
4894
"tauri-utils",
4895
+
"thiserror 2.0.17",
4896
"tracing",
4897
"url",
4898
"windows-registry",
4899
+
"windows-result 0.3.4",
4900
]
4901
4902
[[package]]
4903
name = "tauri-plugin-fs"
4904
+
version = "2.4.4"
4905
source = "registry+https://github.com/rust-lang/crates.io-index"
4906
+
checksum = "47df422695255ecbe7bac7012440eddaeefd026656171eac9559f5243d3230d9"
4907
dependencies = [
4908
"anyhow",
4909
"dunce",
···
4916
"tauri",
4917
"tauri-plugin",
4918
"tauri-utils",
4919
+
"thiserror 2.0.17",
4920
+
"toml 0.9.8",
4921
"url",
4922
]
4923
4924
[[package]]
4925
name = "tauri-plugin-http"
4926
+
version = "2.5.4"
4927
source = "registry+https://github.com/rust-lang/crates.io-index"
4928
+
checksum = "c00685aceab12643cf024f712ab0448ba8fcadf86f2391d49d2e5aa732aacc70"
4929
dependencies = [
4930
"bytes",
4931
"cookie_store",
···
4939
"tauri",
4940
"tauri-plugin",
4941
"tauri-plugin-fs",
4942
+
"thiserror 2.0.17",
4943
"tokio",
4944
"url",
4945
"urlpattern",
···
4947
4948
[[package]]
4949
name = "tauri-plugin-process"
4950
+
version = "2.3.1"
4951
source = "registry+https://github.com/rust-lang/crates.io-index"
4952
+
checksum = "d55511a7bf6cd70c8767b02c97bf8134fa434daf3926cfc1be0a0f94132d165a"
4953
dependencies = [
4954
"tauri",
4955
"tauri-plugin",
···
4957
4958
[[package]]
4959
name = "tauri-plugin-shell"
4960
+
version = "2.3.3"
4961
source = "registry+https://github.com/rust-lang/crates.io-index"
4962
+
checksum = "c374b6db45f2a8a304f0273a15080d98c70cde86178855fc24653ba657a1144c"
4963
dependencies = [
4964
"encoding_rs",
4965
"log",
···
4972
"shared_child",
4973
"tauri",
4974
"tauri-plugin",
4975
+
"thiserror 2.0.17",
4976
"tokio",
4977
]
4978
4979
[[package]]
4980
name = "tauri-plugin-single-instance"
4981
+
version = "2.3.6"
4982
source = "registry+https://github.com/rust-lang/crates.io-index"
4983
+
checksum = "dd707f8c86b4e3004e2c141fa24351f1909ba40ce1b8437e30d5ed5277dd3710"
4984
dependencies = [
4985
"serde",
4986
"serde_json",
4987
"tauri",
4988
"tauri-plugin-deep-link",
4989
+
"thiserror 2.0.17",
4990
"tracing",
4991
+
"windows-sys 0.60.2",
4992
"zbus",
4993
]
4994
4995
[[package]]
4996
name = "tauri-runtime"
4997
+
version = "2.9.1"
4998
source = "registry+https://github.com/rust-lang/crates.io-index"
4999
+
checksum = "9368f09358496f2229313fccb37682ad116b7f46fa76981efe116994a0628926"
5000
dependencies = [
5001
"cookie",
5002
"dpi",
5003
"gtk",
5004
"http",
5005
"jni",
5006
+
"objc2 0.6.3",
5007
"objc2-ui-kit",
5008
+
"objc2-web-kit",
5009
"raw-window-handle",
5010
"serde",
5011
"serde_json",
5012
"tauri-utils",
5013
+
"thiserror 2.0.17",
5014
"url",
5015
+
"webkit2gtk",
5016
+
"webview2-com",
5017
"windows",
5018
]
5019
5020
[[package]]
5021
name = "tauri-runtime-wry"
5022
+
version = "2.9.1"
5023
source = "registry+https://github.com/rust-lang/crates.io-index"
5024
+
checksum = "929f5df216f5c02a9e894554401bcdab6eec3e39ec6a4a7731c7067fc8688a93"
5025
dependencies = [
5026
"gtk",
5027
"http",
5028
"jni",
5029
"log",
5030
+
"objc2 0.6.3",
5031
"objc2-app-kit",
5032
+
"objc2-foundation 0.3.2",
5033
"once_cell",
5034
"percent-encoding",
5035
"raw-window-handle",
···
5046
5047
[[package]]
5048
name = "tauri-utils"
5049
+
version = "2.8.0"
5050
source = "registry+https://github.com/rust-lang/crates.io-index"
5051
+
checksum = "f6b8bbe426abdbf52d050e52ed693130dbd68375b9ad82a3fb17efb4c8d85673"
5052
dependencies = [
5053
"anyhow",
5054
"brotli",
···
5074
"serde_json",
5075
"serde_with",
5076
"swift-rs",
5077
+
"thiserror 2.0.17",
5078
+
"toml 0.9.8",
5079
"url",
5080
"urlpattern",
5081
"uuid",
···
5084
5085
[[package]]
5086
name = "tauri-winres"
5087
+
version = "0.3.3"
5088
source = "registry+https://github.com/rust-lang/crates.io-index"
5089
+
checksum = "fd21509dd1fa9bd355dc29894a6ff10635880732396aa38c0066c1e6c1ab8074"
5090
dependencies = [
5091
"embed-resource",
5092
+
"toml 0.9.8",
5093
]
5094
5095
[[package]]
5096
name = "tempfile"
5097
+
version = "3.23.0"
5098
source = "registry+https://github.com/rust-lang/crates.io-index"
5099
+
checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"
5100
dependencies = [
5101
"fastrand",
5102
+
"getrandom 0.3.4",
5103
"once_cell",
5104
"rustix",
5105
+
"windows-sys 0.61.2",
5106
]
5107
5108
[[package]]
···
5127
5128
[[package]]
5129
name = "thiserror"
5130
+
version = "2.0.17"
5131
source = "registry+https://github.com/rust-lang/crates.io-index"
5132
+
checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
5133
dependencies = [
5134
+
"thiserror-impl 2.0.17",
5135
]
5136
5137
[[package]]
···
5142
dependencies = [
5143
"proc-macro2",
5144
"quote",
5145
+
"syn 2.0.109",
5146
]
5147
5148
[[package]]
5149
name = "thiserror-impl"
5150
+
version = "2.0.17"
5151
source = "registry+https://github.com/rust-lang/crates.io-index"
5152
+
checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
5153
dependencies = [
5154
"proc-macro2",
5155
"quote",
5156
+
"syn 2.0.109",
5157
]
5158
5159
[[package]]
5160
name = "tiff"
5161
+
version = "0.10.3"
5162
source = "registry+https://github.com/rust-lang/crates.io-index"
5163
+
checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f"
5164
dependencies = [
5165
+
"fax",
5166
"flate2",
5167
+
"half",
5168
+
"quick-error",
5169
"weezl",
5170
+
"zune-jpeg",
5171
]
5172
5173
[[package]]
5174
name = "time"
5175
+
version = "0.3.44"
5176
source = "registry+https://github.com/rust-lang/crates.io-index"
5177
+
checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d"
5178
dependencies = [
5179
"deranged",
5180
"itoa",
···
5187
5188
[[package]]
5189
name = "time-core"
5190
+
version = "0.1.6"
5191
source = "registry+https://github.com/rust-lang/crates.io-index"
5192
+
checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b"
5193
5194
[[package]]
5195
name = "time-macros"
5196
+
version = "0.2.24"
5197
source = "registry+https://github.com/rust-lang/crates.io-index"
5198
+
checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3"
5199
dependencies = [
5200
"num-conv",
5201
"time-core",
···
5212
5213
[[package]]
5214
name = "tinystr"
5215
+
version = "0.8.2"
5216
source = "registry+https://github.com/rust-lang/crates.io-index"
5217
+
checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
5218
dependencies = [
5219
"displaydoc",
5220
"zerovec",
···
5222
5223
[[package]]
5224
name = "tinyvec"
5225
+
version = "1.10.0"
5226
source = "registry+https://github.com/rust-lang/crates.io-index"
5227
+
checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa"
5228
dependencies = [
5229
"tinyvec_macros",
5230
]
···
5237
5238
[[package]]
5239
name = "tokio"
5240
+
version = "1.48.0"
5241
source = "registry+https://github.com/rust-lang/crates.io-index"
5242
+
checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408"
5243
dependencies = [
5244
"bytes",
5245
"libc",
5246
+
"mio",
5247
"pin-project-lite",
5248
+
"socket2",
5249
"tokio-macros",
5250
+
"windows-sys 0.61.2",
5251
]
5252
5253
[[package]]
5254
name = "tokio-macros"
5255
+
version = "2.6.0"
5256
source = "registry+https://github.com/rust-lang/crates.io-index"
5257
+
checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
5258
dependencies = [
5259
"proc-macro2",
5260
"quote",
5261
+
"syn 2.0.109",
5262
]
5263
5264
[[package]]
···
5273
5274
[[package]]
5275
name = "tokio-rustls"
5276
+
version = "0.26.4"
5277
source = "registry+https://github.com/rust-lang/crates.io-index"
5278
+
checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
5279
dependencies = [
5280
"rustls",
5281
"tokio",
···
5283
5284
[[package]]
5285
name = "tokio-util"
5286
+
version = "0.7.17"
5287
source = "registry+https://github.com/rust-lang/crates.io-index"
5288
+
checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594"
5289
dependencies = [
5290
"bytes",
5291
"futures-core",
···
5308
5309
[[package]]
5310
name = "toml"
5311
+
version = "0.9.8"
5312
source = "registry+https://github.com/rust-lang/crates.io-index"
5313
+
checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8"
5314
dependencies = [
5315
+
"indexmap 2.12.0",
5316
+
"serde_core",
5317
+
"serde_spanned 1.0.3",
5318
+
"toml_datetime 0.7.3",
5319
"toml_parser",
5320
"toml_writer",
5321
+
"winnow 0.7.13",
5322
]
5323
5324
[[package]]
···
5332
5333
[[package]]
5334
name = "toml_datetime"
5335
+
version = "0.7.3"
5336
source = "registry+https://github.com/rust-lang/crates.io-index"
5337
+
checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533"
5338
dependencies = [
5339
+
"serde_core",
5340
]
5341
5342
[[package]]
···
5345
source = "registry+https://github.com/rust-lang/crates.io-index"
5346
checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
5347
dependencies = [
5348
+
"indexmap 2.12.0",
5349
"toml_datetime 0.6.3",
5350
"winnow 0.5.40",
5351
]
···
5356
source = "registry+https://github.com/rust-lang/crates.io-index"
5357
checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
5358
dependencies = [
5359
+
"indexmap 2.12.0",
5360
"serde",
5361
"serde_spanned 0.6.9",
5362
"toml_datetime 0.6.3",
···
5364
]
5365
5366
[[package]]
5367
+
name = "toml_edit"
5368
+
version = "0.23.7"
5369
+
source = "registry+https://github.com/rust-lang/crates.io-index"
5370
+
checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d"
5371
+
dependencies = [
5372
+
"indexmap 2.12.0",
5373
+
"toml_datetime 0.7.3",
5374
+
"toml_parser",
5375
+
"winnow 0.7.13",
5376
+
]
5377
+
5378
+
[[package]]
5379
name = "toml_parser"
5380
+
version = "1.0.4"
5381
source = "registry+https://github.com/rust-lang/crates.io-index"
5382
+
checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e"
5383
dependencies = [
5384
+
"winnow 0.7.13",
5385
]
5386
5387
[[package]]
5388
name = "toml_writer"
5389
+
version = "1.0.4"
5390
source = "registry+https://github.com/rust-lang/crates.io-index"
5391
+
checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2"
5392
5393
[[package]]
5394
name = "tower"
···
5411
source = "registry+https://github.com/rust-lang/crates.io-index"
5412
checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
5413
dependencies = [
5414
+
"bitflags 2.10.0",
5415
"bytes",
5416
"futures-util",
5417
"http",
···
5454
dependencies = [
5455
"proc-macro2",
5456
"quote",
5457
+
"syn 2.0.109",
5458
]
5459
5460
[[package]]
···
5468
5469
[[package]]
5470
name = "tray-icon"
5471
+
version = "0.21.2"
5472
source = "registry+https://github.com/rust-lang/crates.io-index"
5473
+
checksum = "e3d5572781bee8e3f994d7467084e1b1fd7a93ce66bd480f8156ba89dee55a2b"
5474
dependencies = [
5475
"crossbeam-channel",
5476
+
"dirs",
5477
"libappindicator",
5478
"muda",
5479
+
"objc2 0.6.3",
5480
"objc2-app-kit",
5481
"objc2-core-foundation",
5482
"objc2-core-graphics",
5483
+
"objc2-foundation 0.3.2",
5484
"once_cell",
5485
+
"png 0.17.16",
5486
"serde",
5487
+
"thiserror 2.0.17",
5488
+
"windows-sys 0.60.2",
5489
]
5490
5491
[[package]]
···
5502
5503
[[package]]
5504
name = "typenum"
5505
+
version = "1.19.0"
5506
source = "registry+https://github.com/rust-lang/crates.io-index"
5507
+
checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
5508
5509
[[package]]
5510
name = "uds_windows"
···
5560
5561
[[package]]
5562
name = "unicode-ident"
5563
+
version = "1.0.22"
5564
source = "registry+https://github.com/rust-lang/crates.io-index"
5565
+
checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
5566
5567
[[package]]
5568
name = "unicode-segmentation"
···
5578
5579
[[package]]
5580
name = "url"
5581
+
version = "2.5.7"
5582
source = "registry+https://github.com/rust-lang/crates.io-index"
5583
+
checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b"
5584
dependencies = [
5585
"form_urlencoded",
5586
"idna",
···
5614
5615
[[package]]
5616
name = "uuid"
5617
+
version = "1.18.1"
5618
source = "registry+https://github.com/rust-lang/crates.io-index"
5619
+
checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2"
5620
dependencies = [
5621
+
"getrandom 0.3.4",
5622
"js-sys",
5623
"serde",
5624
"wasm-bindgen",
···
5643
5644
[[package]]
5645
name = "version-compare"
5646
+
version = "0.2.1"
5647
source = "registry+https://github.com/rust-lang/crates.io-index"
5648
+
checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e"
5649
5650
[[package]]
5651
name = "version_check"
···
5654
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
5655
5656
[[package]]
5657
name = "vswhom"
5658
version = "0.1.0"
5659
source = "registry+https://github.com/rust-lang/crates.io-index"
···
5705
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
5706
5707
[[package]]
5708
+
name = "wasip2"
5709
+
version = "1.0.1+wasi-0.2.4"
5710
source = "registry+https://github.com/rust-lang/crates.io-index"
5711
+
checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
5712
dependencies = [
5713
+
"wit-bindgen",
5714
]
5715
5716
[[package]]
5717
name = "wasm-bindgen"
5718
+
version = "0.2.105"
5719
source = "registry+https://github.com/rust-lang/crates.io-index"
5720
+
checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60"
5721
dependencies = [
5722
"cfg-if",
5723
"once_cell",
5724
"rustversion",
5725
"wasm-bindgen-macro",
5726
"wasm-bindgen-shared",
5727
]
5728
5729
[[package]]
5730
name = "wasm-bindgen-futures"
5731
+
version = "0.4.55"
5732
source = "registry+https://github.com/rust-lang/crates.io-index"
5733
+
checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0"
5734
dependencies = [
5735
"cfg-if",
5736
"js-sys",
···
5741
5742
[[package]]
5743
name = "wasm-bindgen-macro"
5744
+
version = "0.2.105"
5745
source = "registry+https://github.com/rust-lang/crates.io-index"
5746
+
checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2"
5747
dependencies = [
5748
"quote",
5749
"wasm-bindgen-macro-support",
···
5751
5752
[[package]]
5753
name = "wasm-bindgen-macro-support"
5754
+
version = "0.2.105"
5755
source = "registry+https://github.com/rust-lang/crates.io-index"
5756
+
checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc"
5757
dependencies = [
5758
+
"bumpalo",
5759
"proc-macro2",
5760
"quote",
5761
+
"syn 2.0.109",
5762
"wasm-bindgen-shared",
5763
]
5764
5765
[[package]]
5766
name = "wasm-bindgen-shared"
5767
+
version = "0.2.105"
5768
source = "registry+https://github.com/rust-lang/crates.io-index"
5769
+
checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76"
5770
dependencies = [
5771
"unicode-ident",
5772
]
···
5786
5787
[[package]]
5788
name = "web-sys"
5789
+
version = "0.3.82"
5790
source = "registry+https://github.com/rust-lang/crates.io-index"
5791
+
checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1"
5792
dependencies = [
5793
"js-sys",
5794
"wasm-bindgen",
···
5850
5851
[[package]]
5852
name = "webpki-roots"
5853
+
version = "1.0.4"
5854
source = "registry+https://github.com/rust-lang/crates.io-index"
5855
+
checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e"
5856
dependencies = [
5857
"rustls-pki-types",
5858
]
···
5866
"webview2-com-macros",
5867
"webview2-com-sys",
5868
"windows",
5869
+
"windows-core 0.61.2",
5870
"windows-implement",
5871
"windows-interface",
5872
]
···
5879
dependencies = [
5880
"proc-macro2",
5881
"quote",
5882
+
"syn 2.0.109",
5883
]
5884
5885
[[package]]
···
5888
source = "registry+https://github.com/rust-lang/crates.io-index"
5889
checksum = "36695906a1b53a3bf5c4289621efedac12b73eeb0b89e7e1a89b517302d5d75c"
5890
dependencies = [
5891
+
"thiserror 2.0.17",
5892
"windows",
5893
+
"windows-core 0.61.2",
5894
]
5895
5896
[[package]]
···
5917
5918
[[package]]
5919
name = "winapi-util"
5920
+
version = "0.1.11"
5921
source = "registry+https://github.com/rust-lang/crates.io-index"
5922
+
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
5923
dependencies = [
5924
+
"windows-sys 0.61.2",
5925
]
5926
5927
[[package]]
···
5936
source = "registry+https://github.com/rust-lang/crates.io-index"
5937
checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c"
5938
dependencies = [
5939
+
"objc2 0.6.3",
5940
"objc2-app-kit",
5941
"objc2-core-foundation",
5942
+
"objc2-foundation 0.3.2",
5943
"raw-window-handle",
5944
"windows-sys 0.59.0",
5945
"windows-version",
···
5952
checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893"
5953
dependencies = [
5954
"windows-collections",
5955
+
"windows-core 0.61.2",
5956
"windows-future",
5957
+
"windows-link 0.1.3",
5958
"windows-numerics",
5959
]
5960
···
5964
source = "registry+https://github.com/rust-lang/crates.io-index"
5965
checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8"
5966
dependencies = [
5967
+
"windows-core 0.61.2",
5968
]
5969
5970
[[package]]
···
5975
dependencies = [
5976
"windows-implement",
5977
"windows-interface",
5978
+
"windows-link 0.1.3",
5979
+
"windows-result 0.3.4",
5980
+
"windows-strings 0.4.2",
5981
+
]
5982
+
5983
+
[[package]]
5984
+
name = "windows-core"
5985
+
version = "0.62.2"
5986
+
source = "registry+https://github.com/rust-lang/crates.io-index"
5987
+
checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
5988
+
dependencies = [
5989
+
"windows-implement",
5990
+
"windows-interface",
5991
+
"windows-link 0.2.1",
5992
+
"windows-result 0.4.1",
5993
+
"windows-strings 0.5.1",
5994
]
5995
5996
[[package]]
···
5999
source = "registry+https://github.com/rust-lang/crates.io-index"
6000
checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
6001
dependencies = [
6002
+
"windows-core 0.61.2",
6003
+
"windows-link 0.1.3",
6004
"windows-threading",
6005
]
6006
6007
[[package]]
6008
name = "windows-implement"
6009
+
version = "0.60.2"
6010
source = "registry+https://github.com/rust-lang/crates.io-index"
6011
+
checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
6012
dependencies = [
6013
"proc-macro2",
6014
"quote",
6015
+
"syn 2.0.109",
6016
]
6017
6018
[[package]]
6019
name = "windows-interface"
6020
+
version = "0.59.3"
6021
source = "registry+https://github.com/rust-lang/crates.io-index"
6022
+
checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
6023
dependencies = [
6024
"proc-macro2",
6025
"quote",
6026
+
"syn 2.0.109",
6027
]
6028
6029
[[package]]
···
6033
checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
6034
6035
[[package]]
6036
+
name = "windows-link"
6037
+
version = "0.2.1"
6038
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6039
+
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
6040
+
6041
+
[[package]]
6042
name = "windows-numerics"
6043
version = "0.2.0"
6044
source = "registry+https://github.com/rust-lang/crates.io-index"
6045
checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
6046
dependencies = [
6047
+
"windows-core 0.61.2",
6048
+
"windows-link 0.1.3",
6049
]
6050
6051
[[package]]
···
6054
source = "registry+https://github.com/rust-lang/crates.io-index"
6055
checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e"
6056
dependencies = [
6057
+
"windows-link 0.1.3",
6058
+
"windows-result 0.3.4",
6059
+
"windows-strings 0.4.2",
6060
]
6061
6062
[[package]]
···
6065
source = "registry+https://github.com/rust-lang/crates.io-index"
6066
checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
6067
dependencies = [
6068
+
"windows-link 0.1.3",
6069
+
]
6070
+
6071
+
[[package]]
6072
+
name = "windows-result"
6073
+
version = "0.4.1"
6074
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6075
+
checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
6076
+
dependencies = [
6077
+
"windows-link 0.2.1",
6078
]
6079
6080
[[package]]
···
6083
source = "registry+https://github.com/rust-lang/crates.io-index"
6084
checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
6085
dependencies = [
6086
+
"windows-link 0.1.3",
6087
]
6088
6089
[[package]]
6090
+
name = "windows-strings"
6091
+
version = "0.5.1"
6092
source = "registry+https://github.com/rust-lang/crates.io-index"
6093
+
checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
6094
dependencies = [
6095
+
"windows-link 0.2.1",
6096
]
6097
6098
[[package]]
6099
name = "windows-sys"
6100
+
version = "0.45.0"
6101
source = "registry+https://github.com/rust-lang/crates.io-index"
6102
+
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
6103
dependencies = [
6104
+
"windows-targets 0.42.2",
6105
]
6106
6107
[[package]]
···
6128
source = "registry+https://github.com/rust-lang/crates.io-index"
6129
checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
6130
dependencies = [
6131
+
"windows-targets 0.53.5",
6132
+
]
6133
+
6134
+
[[package]]
6135
+
name = "windows-sys"
6136
+
version = "0.61.2"
6137
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6138
+
checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
6139
+
dependencies = [
6140
+
"windows-link 0.2.1",
6141
]
6142
6143
[[package]]
···
6157
6158
[[package]]
6159
name = "windows-targets"
6160
version = "0.52.6"
6161
source = "registry+https://github.com/rust-lang/crates.io-index"
6162
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
···
6173
6174
[[package]]
6175
name = "windows-targets"
6176
+
version = "0.53.5"
6177
source = "registry+https://github.com/rust-lang/crates.io-index"
6178
+
checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
6179
dependencies = [
6180
+
"windows-link 0.2.1",
6181
+
"windows_aarch64_gnullvm 0.53.1",
6182
+
"windows_aarch64_msvc 0.53.1",
6183
+
"windows_i686_gnu 0.53.1",
6184
+
"windows_i686_gnullvm 0.53.1",
6185
+
"windows_i686_msvc 0.53.1",
6186
+
"windows_x86_64_gnu 0.53.1",
6187
+
"windows_x86_64_gnullvm 0.53.1",
6188
+
"windows_x86_64_msvc 0.53.1",
6189
]
6190
6191
[[package]]
···
6194
source = "registry+https://github.com/rust-lang/crates.io-index"
6195
checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
6196
dependencies = [
6197
+
"windows-link 0.1.3",
6198
]
6199
6200
[[package]]
6201
name = "windows-version"
6202
+
version = "0.1.7"
6203
source = "registry+https://github.com/rust-lang/crates.io-index"
6204
+
checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631"
6205
dependencies = [
6206
+
"windows-link 0.2.1",
6207
]
6208
6209
[[package]]
···
6214
6215
[[package]]
6216
name = "windows_aarch64_gnullvm"
6217
version = "0.52.6"
6218
source = "registry+https://github.com/rust-lang/crates.io-index"
6219
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
6220
6221
[[package]]
6222
name = "windows_aarch64_gnullvm"
6223
+
version = "0.53.1"
6224
source = "registry+https://github.com/rust-lang/crates.io-index"
6225
+
checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
6226
6227
[[package]]
6228
name = "windows_aarch64_msvc"
···
6232
6233
[[package]]
6234
name = "windows_aarch64_msvc"
6235
version = "0.52.6"
6236
source = "registry+https://github.com/rust-lang/crates.io-index"
6237
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
6238
6239
[[package]]
6240
name = "windows_aarch64_msvc"
6241
+
version = "0.53.1"
6242
source = "registry+https://github.com/rust-lang/crates.io-index"
6243
+
checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
6244
6245
[[package]]
6246
name = "windows_i686_gnu"
···
6250
6251
[[package]]
6252
name = "windows_i686_gnu"
6253
version = "0.52.6"
6254
source = "registry+https://github.com/rust-lang/crates.io-index"
6255
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
6256
6257
[[package]]
6258
name = "windows_i686_gnu"
6259
+
version = "0.53.1"
6260
source = "registry+https://github.com/rust-lang/crates.io-index"
6261
+
checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
6262
6263
[[package]]
6264
name = "windows_i686_gnullvm"
···
6268
6269
[[package]]
6270
name = "windows_i686_gnullvm"
6271
+
version = "0.53.1"
6272
source = "registry+https://github.com/rust-lang/crates.io-index"
6273
+
checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
6274
6275
[[package]]
6276
name = "windows_i686_msvc"
···
6280
6281
[[package]]
6282
name = "windows_i686_msvc"
6283
version = "0.52.6"
6284
source = "registry+https://github.com/rust-lang/crates.io-index"
6285
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
6286
6287
[[package]]
6288
name = "windows_i686_msvc"
6289
+
version = "0.53.1"
6290
source = "registry+https://github.com/rust-lang/crates.io-index"
6291
+
checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
6292
6293
[[package]]
6294
name = "windows_x86_64_gnu"
···
6298
6299
[[package]]
6300
name = "windows_x86_64_gnu"
6301
version = "0.52.6"
6302
source = "registry+https://github.com/rust-lang/crates.io-index"
6303
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
6304
6305
[[package]]
6306
name = "windows_x86_64_gnu"
6307
+
version = "0.53.1"
6308
source = "registry+https://github.com/rust-lang/crates.io-index"
6309
+
checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
6310
6311
[[package]]
6312
name = "windows_x86_64_gnullvm"
···
6316
6317
[[package]]
6318
name = "windows_x86_64_gnullvm"
6319
version = "0.52.6"
6320
source = "registry+https://github.com/rust-lang/crates.io-index"
6321
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
6322
6323
[[package]]
6324
name = "windows_x86_64_gnullvm"
6325
+
version = "0.53.1"
6326
source = "registry+https://github.com/rust-lang/crates.io-index"
6327
+
checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
6328
6329
[[package]]
6330
name = "windows_x86_64_msvc"
···
6334
6335
[[package]]
6336
name = "windows_x86_64_msvc"
6337
version = "0.52.6"
6338
source = "registry+https://github.com/rust-lang/crates.io-index"
6339
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
6340
6341
[[package]]
6342
name = "windows_x86_64_msvc"
6343
+
version = "0.53.1"
6344
source = "registry+https://github.com/rust-lang/crates.io-index"
6345
+
checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
6346
6347
[[package]]
6348
name = "winnow"
···
6355
6356
[[package]]
6357
name = "winnow"
6358
+
version = "0.7.13"
6359
source = "registry+https://github.com/rust-lang/crates.io-index"
6360
+
checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf"
6361
+
dependencies = [
6362
+
"memchr",
6363
+
]
6364
6365
[[package]]
6366
name = "winreg"
···
6373
]
6374
6375
[[package]]
6376
+
name = "wit-bindgen"
6377
+
version = "0.46.0"
6378
source = "registry+https://github.com/rust-lang/crates.io-index"
6379
+
checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
6380
6381
[[package]]
6382
name = "writeable"
6383
+
version = "0.6.2"
6384
source = "registry+https://github.com/rust-lang/crates.io-index"
6385
+
checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
6386
6387
[[package]]
6388
name = "wry"
6389
+
version = "0.53.5"
6390
source = "registry+https://github.com/rust-lang/crates.io-index"
6391
+
checksum = "728b7d4c8ec8d81cab295e0b5b8a4c263c0d41a785fb8f8c4df284e5411140a2"
6392
dependencies = [
6393
"base64 0.22.1",
6394
+
"block2 0.6.2",
6395
"cookie",
6396
"crossbeam-channel",
6397
+
"dirs",
6398
"dpi",
6399
"dunce",
6400
"gdkx11",
···
6406
"kuchikiki",
6407
"libc",
6408
"ndk",
6409
+
"objc2 0.6.3",
6410
"objc2-app-kit",
6411
"objc2-core-foundation",
6412
+
"objc2-foundation 0.3.2",
6413
"objc2-ui-kit",
6414
"objc2-web-kit",
6415
"once_cell",
···
6418
"sha2",
6419
"soup3",
6420
"tao-macros",
6421
+
"thiserror 2.0.17",
6422
"url",
6423
"webkit2gtk",
6424
"webkit2gtk-sys",
6425
"webview2-com",
6426
"windows",
6427
+
"windows-core 0.61.2",
6428
"windows-version",
6429
"x11-dl",
6430
]
···
6451
]
6452
6453
[[package]]
6454
+
name = "x11rb"
6455
+
version = "0.13.2"
6456
source = "registry+https://github.com/rust-lang/crates.io-index"
6457
+
checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414"
6458
dependencies = [
6459
+
"gethostname",
6460
+
"rustix",
6461
+
"x11rb-protocol",
6462
]
6463
6464
[[package]]
6465
+
name = "x11rb-protocol"
6466
+
version = "0.13.2"
6467
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6468
+
checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd"
6469
+
6470
+
[[package]]
6471
name = "yoke"
6472
+
version = "0.8.1"
6473
source = "registry+https://github.com/rust-lang/crates.io-index"
6474
+
checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954"
6475
dependencies = [
6476
"stable_deref_trait",
6477
"yoke-derive",
6478
"zerofrom",
···
6480
6481
[[package]]
6482
name = "yoke-derive"
6483
+
version = "0.8.1"
6484
source = "registry+https://github.com/rust-lang/crates.io-index"
6485
+
checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
6486
dependencies = [
6487
"proc-macro2",
6488
"quote",
6489
+
"syn 2.0.109",
6490
"synstructure",
6491
]
6492
6493
[[package]]
6494
name = "zbus"
6495
+
version = "5.12.0"
6496
source = "registry+https://github.com/rust-lang/crates.io-index"
6497
+
checksum = "b622b18155f7a93d1cd2dc8c01d2d6a44e08fb9ebb7b3f9e6ed101488bad6c91"
6498
dependencies = [
6499
"async-broadcast",
6500
"async-executor",
6501
"async-io",
6502
"async-lock",
6503
"async-process",
···
6505
"async-task",
6506
"async-trait",
6507
"blocking",
6508
"enumflags2",
6509
"event-listener",
6510
"futures-core",
6511
+
"futures-lite",
6512
"hex",
6513
"nix",
6514
"ordered-stream",
6515
"serde",
6516
"serde_repr",
6517
"tracing",
6518
"uds_windows",
6519
+
"uuid",
6520
+
"windows-sys 0.61.2",
6521
+
"winnow 0.7.13",
6522
"zbus_macros",
6523
"zbus_names",
6524
"zvariant",
···
6526
6527
[[package]]
6528
name = "zbus_macros"
6529
+
version = "5.12.0"
6530
source = "registry+https://github.com/rust-lang/crates.io-index"
6531
+
checksum = "1cdb94821ca8a87ca9c298b5d1cbd80e2a8b67115d99f6e4551ac49e42b6a314"
6532
dependencies = [
6533
+
"proc-macro-crate 3.4.0",
6534
"proc-macro2",
6535
"quote",
6536
+
"syn 2.0.109",
6537
+
"zbus_names",
6538
+
"zvariant",
6539
"zvariant_utils",
6540
]
6541
6542
[[package]]
6543
name = "zbus_names"
6544
+
version = "4.2.0"
6545
source = "registry+https://github.com/rust-lang/crates.io-index"
6546
+
checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97"
6547
dependencies = [
6548
"serde",
6549
"static_assertions",
6550
+
"winnow 0.7.13",
6551
"zvariant",
6552
]
6553
6554
[[package]]
6555
name = "zerocopy"
6556
+
version = "0.8.27"
6557
source = "registry+https://github.com/rust-lang/crates.io-index"
6558
+
checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c"
6559
dependencies = [
6560
"zerocopy-derive",
6561
]
6562
6563
[[package]]
6564
name = "zerocopy-derive"
6565
+
version = "0.8.27"
6566
source = "registry+https://github.com/rust-lang/crates.io-index"
6567
+
checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831"
6568
dependencies = [
6569
"proc-macro2",
6570
"quote",
6571
+
"syn 2.0.109",
6572
]
6573
6574
[[package]]
···
6588
dependencies = [
6589
"proc-macro2",
6590
"quote",
6591
+
"syn 2.0.109",
6592
"synstructure",
6593
]
6594
6595
[[package]]
6596
name = "zeroize"
6597
+
version = "1.8.2"
6598
source = "registry+https://github.com/rust-lang/crates.io-index"
6599
+
checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
6600
6601
[[package]]
6602
name = "zerotrie"
6603
+
version = "0.2.3"
6604
source = "registry+https://github.com/rust-lang/crates.io-index"
6605
+
checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851"
6606
dependencies = [
6607
"displaydoc",
6608
"yoke",
···
6611
6612
[[package]]
6613
name = "zerovec"
6614
+
version = "0.11.5"
6615
source = "registry+https://github.com/rust-lang/crates.io-index"
6616
+
checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
6617
dependencies = [
6618
"yoke",
6619
"zerofrom",
···
6622
6623
[[package]]
6624
name = "zerovec-derive"
6625
+
version = "0.11.2"
6626
source = "registry+https://github.com/rust-lang/crates.io-index"
6627
+
checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
6628
dependencies = [
6629
"proc-macro2",
6630
"quote",
6631
+
"syn 2.0.109",
6632
]
6633
6634
[[package]]
···
6648
6649
[[package]]
6650
name = "zune-jpeg"
6651
+
version = "0.4.21"
6652
source = "registry+https://github.com/rust-lang/crates.io-index"
6653
+
checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713"
6654
dependencies = [
6655
"zune-core",
6656
]
6657
6658
[[package]]
6659
name = "zvariant"
6660
+
version = "5.8.0"
6661
source = "registry+https://github.com/rust-lang/crates.io-index"
6662
+
checksum = "2be61892e4f2b1772727be11630a62664a1826b62efa43a6fe7449521cb8744c"
6663
dependencies = [
6664
"endi",
6665
"enumflags2",
6666
"serde",
6667
+
"winnow 0.7.13",
6668
"zvariant_derive",
6669
+
"zvariant_utils",
6670
]
6671
6672
[[package]]
6673
name = "zvariant_derive"
6674
+
version = "5.8.0"
6675
source = "registry+https://github.com/rust-lang/crates.io-index"
6676
+
checksum = "da58575a1b2b20766513b1ec59d8e2e68db2745379f961f86650655e862d2006"
6677
dependencies = [
6678
+
"proc-macro-crate 3.4.0",
6679
"proc-macro2",
6680
"quote",
6681
+
"syn 2.0.109",
6682
"zvariant_utils",
6683
]
6684
6685
[[package]]
6686
name = "zvariant_utils"
6687
+
version = "3.2.1"
6688
source = "registry+https://github.com/rust-lang/crates.io-index"
6689
+
checksum = "c6949d142f89f6916deca2232cf26a8afacf2b9fdc35ce766105e104478be599"
6690
dependencies = [
6691
"proc-macro2",
6692
"quote",
6693
+
"serde",
6694
+
"syn 2.0.109",
6695
+
"winnow 0.7.13",
6696
]
+15
-16
src-tauri/Cargo.toml
+15
-16
src-tauri/Cargo.toml
···
1
[package]
2
-
name = "vrcpm-rs"
3
-
version = "0.2.4"
4
description = "VRChat Photo Manager"
5
authors = ["_phaz"]
6
edition = "2021"
···
11
tauri-build = { version = "2.0.0-rc", features = [] }
12
13
[dependencies]
14
-
tauri = { version = "2.0.0-rc", features = ["tray-icon", "image-png"] }
15
serde = { version = "1.0", features = ["derive"] }
16
serde_json = "1.0"
17
-
open = "5.1.2"
18
-
tauri-plugin-deep-link = "2.0.1"
19
-
dirs = "5.0.1"
20
-
notify = "6.1.1"
21
-
regex = "1.10.4"
22
reqwest = { version = "0.12", features = ["blocking"] }
23
-
tauri-plugin-single-instance = { version = "2.0.0", features = ["deep-link"] }
24
-
tauri-plugin-shell = "2.0.0-rc.2"
25
-
tauri-plugin-http = "2.0.0-rc.0"
26
-
tauri-plugin-process = "2.0.0-rc.0"
27
-
image = "0.25.2"
28
-
fast_image_resize = { version = "4.2.1", features = [ "image" ] }
29
-
30
[target.'cfg(windows)'.dependencies]
31
-
mslnk = { version = "0.1.8" }
32
33
[features]
34
# this feature is used for production builds or when `devPath` points to the filesystem
···
1
[package]
2
+
name = "VRChatPhotoManager"
3
+
version = "0.2.7-hot1"
4
description = "VRChat Photo Manager"
5
authors = ["_phaz"]
6
edition = "2021"
···
11
tauri-build = { version = "2.0.0-rc", features = [] }
12
13
[dependencies]
14
+
tauri = { version = "2.9", features = [ "tray-icon", "image-png", "devtools" ] }
15
serde = { version = "1.0", features = ["derive"] }
16
serde_json = "1.0"
17
+
open = "5.3"
18
+
dirs = "6.0"
19
+
notify = "8.2"
20
+
regex = "1.12"
21
reqwest = { version = "0.12", features = ["blocking"] }
22
+
image = "0.25"
23
+
fast_image_resize = { version = "5.3", features = [ "image" ] }
24
+
arboard = "3.6"
25
+
tauri-plugin-single-instance = { version = "2.3", features = ["deep-link"] }
26
+
tauri-plugin-shell = "2.3"
27
+
tauri-plugin-http = "2.5"
28
+
tauri-plugin-process = "2.3"
29
[target.'cfg(windows)'.dependencies]
30
+
mslnk = { version = "0.1" }
31
32
[features]
33
# this feature is used for production builds or when `devPath` points to the filesystem
+1
-1
src-tauri/gen/schemas/acl-manifests.json
+1
-1
src-tauri/gen/schemas/acl-manifests.json
···
1
-
{"core":{"default_permission":{"identifier":"default","description":"Default core plugins set.","permissions":["core:path:default","core:event:default","core:window:default","core:webview:default","core:app:default","core:image:default","core:resources:default","core:menu:default","core:tray:default"]},"permissions":{},"permission_sets":{},"global_scope_schema":null},"core:app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version","allow-identifier","allow-bundle-type"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-bundle-type":{"identifier":"allow-bundle-type","description":"Enables the bundle_type command without any pre-configured scope.","commands":{"allow":["bundle_type"],"deny":[]}},"allow-default-window-icon":{"identifier":"allow-default-window-icon","description":"Enables the default_window_icon command without any pre-configured scope.","commands":{"allow":["default_window_icon"],"deny":[]}},"allow-fetch-data-store-identifiers":{"identifier":"allow-fetch-data-store-identifiers","description":"Enables the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":["fetch_data_store_identifiers"],"deny":[]}},"allow-identifier":{"identifier":"allow-identifier","description":"Enables the identifier command without any pre-configured scope.","commands":{"allow":["identifier"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-remove-data-store":{"identifier":"allow-remove-data-store","description":"Enables the remove_data_store command without any pre-configured scope.","commands":{"allow":["remove_data_store"],"deny":[]}},"allow-set-app-theme":{"identifier":"allow-set-app-theme","description":"Enables the set_app_theme command without any pre-configured scope.","commands":{"allow":["set_app_theme"],"deny":[]}},"allow-set-dock-visibility":{"identifier":"allow-set-dock-visibility","description":"Enables the set_dock_visibility command without any pre-configured scope.","commands":{"allow":["set_dock_visibility"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-bundle-type":{"identifier":"deny-bundle-type","description":"Denies the bundle_type command without any pre-configured scope.","commands":{"allow":[],"deny":["bundle_type"]}},"deny-default-window-icon":{"identifier":"deny-default-window-icon","description":"Denies the default_window_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["default_window_icon"]}},"deny-fetch-data-store-identifiers":{"identifier":"deny-fetch-data-store-identifiers","description":"Denies the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_data_store_identifiers"]}},"deny-identifier":{"identifier":"deny-identifier","description":"Denies the identifier command without any pre-configured scope.","commands":{"allow":[],"deny":["identifier"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-remove-data-store":{"identifier":"deny-remove-data-store","description":"Denies the remove_data_store command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_data_store"]}},"deny-set-app-theme":{"identifier":"deny-set-app-theme","description":"Denies the set_app_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_app_theme"]}},"deny-set-dock-visibility":{"identifier":"deny-set-dock-visibility","description":"Denies the set_dock_visibility command without any pre-configured scope.","commands":{"allow":[],"deny":["set_dock_visibility"]}},"deny-tauri-version":{"identifier":"deny-tauri-version","description":"Denies the tauri_version command without any pre-configured scope.","commands":{"allow":[],"deny":["tauri_version"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"core:event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-listen","allow-unlisten","allow-emit","allow-emit-to"]},"permissions":{"allow-emit":{"identifier":"allow-emit","description":"Enables the emit command without any pre-configured scope.","commands":{"allow":["emit"],"deny":[]}},"allow-emit-to":{"identifier":"allow-emit-to","description":"Enables the emit_to command without any pre-configured scope.","commands":{"allow":["emit_to"],"deny":[]}},"allow-listen":{"identifier":"allow-listen","description":"Enables the listen command without any pre-configured scope.","commands":{"allow":["listen"],"deny":[]}},"allow-unlisten":{"identifier":"allow-unlisten","description":"Enables the unlisten command without any pre-configured scope.","commands":{"allow":["unlisten"],"deny":[]}},"deny-emit":{"identifier":"deny-emit","description":"Denies the emit command without any pre-configured scope.","commands":{"allow":[],"deny":["emit"]}},"deny-emit-to":{"identifier":"deny-emit-to","description":"Denies the emit_to command without any pre-configured scope.","commands":{"allow":[],"deny":["emit_to"]}},"deny-listen":{"identifier":"deny-listen","description":"Denies the listen command without any pre-configured scope.","commands":{"allow":[],"deny":["listen"]}},"deny-unlisten":{"identifier":"deny-unlisten","description":"Denies the unlisten command without any pre-configured scope.","commands":{"allow":[],"deny":["unlisten"]}}},"permission_sets":{},"global_scope_schema":null},"core:image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-from-bytes","allow-from-path","allow-rgba","allow-size"]},"permissions":{"allow-from-bytes":{"identifier":"allow-from-bytes","description":"Enables the from_bytes command without any pre-configured scope.","commands":{"allow":["from_bytes"],"deny":[]}},"allow-from-path":{"identifier":"allow-from-path","description":"Enables the from_path command without any pre-configured scope.","commands":{"allow":["from_path"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-rgba":{"identifier":"allow-rgba","description":"Enables the rgba command without any pre-configured scope.","commands":{"allow":["rgba"],"deny":[]}},"allow-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"deny-from-bytes":{"identifier":"deny-from-bytes","description":"Denies the from_bytes command without any pre-configured scope.","commands":{"allow":[],"deny":["from_bytes"]}},"deny-from-path":{"identifier":"deny-from-path","description":"Denies the from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["from_path"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-rgba":{"identifier":"deny-rgba","description":"Denies the rgba command without any pre-configured scope.","commands":{"allow":[],"deny":["rgba"]}},"deny-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}}},"permission_sets":{},"global_scope_schema":null},"core:menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-append","allow-prepend","allow-insert","allow-remove","allow-remove-at","allow-items","allow-get","allow-popup","allow-create-default","allow-set-as-app-menu","allow-set-as-window-menu","allow-text","allow-set-text","allow-is-enabled","allow-set-enabled","allow-set-accelerator","allow-set-as-windows-menu-for-nsapp","allow-set-as-help-menu-for-nsapp","allow-is-checked","allow-set-checked","allow-set-icon"]},"permissions":{"allow-append":{"identifier":"allow-append","description":"Enables the append command without any pre-configured scope.","commands":{"allow":["append"],"deny":[]}},"allow-create-default":{"identifier":"allow-create-default","description":"Enables the create_default command without any pre-configured scope.","commands":{"allow":["create_default"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-insert":{"identifier":"allow-insert","description":"Enables the insert command without any pre-configured scope.","commands":{"allow":["insert"],"deny":[]}},"allow-is-checked":{"identifier":"allow-is-checked","description":"Enables the is_checked command without any pre-configured scope.","commands":{"allow":["is_checked"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-items":{"identifier":"allow-items","description":"Enables the items command without any pre-configured scope.","commands":{"allow":["items"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-popup":{"identifier":"allow-popup","description":"Enables the popup command without any pre-configured scope.","commands":{"allow":["popup"],"deny":[]}},"allow-prepend":{"identifier":"allow-prepend","description":"Enables the prepend command without any pre-configured scope.","commands":{"allow":["prepend"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-remove-at":{"identifier":"allow-remove-at","description":"Enables the remove_at command without any pre-configured scope.","commands":{"allow":["remove_at"],"deny":[]}},"allow-set-accelerator":{"identifier":"allow-set-accelerator","description":"Enables the set_accelerator command without any pre-configured scope.","commands":{"allow":["set_accelerator"],"deny":[]}},"allow-set-as-app-menu":{"identifier":"allow-set-as-app-menu","description":"Enables the set_as_app_menu command without any pre-configured scope.","commands":{"allow":["set_as_app_menu"],"deny":[]}},"allow-set-as-help-menu-for-nsapp":{"identifier":"allow-set-as-help-menu-for-nsapp","description":"Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_help_menu_for_nsapp"],"deny":[]}},"allow-set-as-window-menu":{"identifier":"allow-set-as-window-menu","description":"Enables the set_as_window_menu command without any pre-configured scope.","commands":{"allow":["set_as_window_menu"],"deny":[]}},"allow-set-as-windows-menu-for-nsapp":{"identifier":"allow-set-as-windows-menu-for-nsapp","description":"Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_windows_menu_for_nsapp"],"deny":[]}},"allow-set-checked":{"identifier":"allow-set-checked","description":"Enables the set_checked command without any pre-configured scope.","commands":{"allow":["set_checked"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-text":{"identifier":"allow-set-text","description":"Enables the set_text command without any pre-configured scope.","commands":{"allow":["set_text"],"deny":[]}},"allow-text":{"identifier":"allow-text","description":"Enables the text command without any pre-configured scope.","commands":{"allow":["text"],"deny":[]}},"deny-append":{"identifier":"deny-append","description":"Denies the append command without any pre-configured scope.","commands":{"allow":[],"deny":["append"]}},"deny-create-default":{"identifier":"deny-create-default","description":"Denies the create_default command without any pre-configured scope.","commands":{"allow":[],"deny":["create_default"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-insert":{"identifier":"deny-insert","description":"Denies the insert command without any pre-configured scope.","commands":{"allow":[],"deny":["insert"]}},"deny-is-checked":{"identifier":"deny-is-checked","description":"Denies the is_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["is_checked"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-items":{"identifier":"deny-items","description":"Denies the items command without any pre-configured scope.","commands":{"allow":[],"deny":["items"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-popup":{"identifier":"deny-popup","description":"Denies the popup command without any pre-configured scope.","commands":{"allow":[],"deny":["popup"]}},"deny-prepend":{"identifier":"deny-prepend","description":"Denies the prepend command without any pre-configured scope.","commands":{"allow":[],"deny":["prepend"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-remove-at":{"identifier":"deny-remove-at","description":"Denies the remove_at command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_at"]}},"deny-set-accelerator":{"identifier":"deny-set-accelerator","description":"Denies the set_accelerator command without any pre-configured scope.","commands":{"allow":[],"deny":["set_accelerator"]}},"deny-set-as-app-menu":{"identifier":"deny-set-as-app-menu","description":"Denies the set_as_app_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_app_menu"]}},"deny-set-as-help-menu-for-nsapp":{"identifier":"deny-set-as-help-menu-for-nsapp","description":"Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_help_menu_for_nsapp"]}},"deny-set-as-window-menu":{"identifier":"deny-set-as-window-menu","description":"Denies the set_as_window_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_window_menu"]}},"deny-set-as-windows-menu-for-nsapp":{"identifier":"deny-set-as-windows-menu-for-nsapp","description":"Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_windows_menu_for_nsapp"]}},"deny-set-checked":{"identifier":"deny-set-checked","description":"Denies the set_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["set_checked"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-text":{"identifier":"deny-set-text","description":"Denies the set_text command without any pre-configured scope.","commands":{"allow":[],"deny":["set_text"]}},"deny-text":{"identifier":"deny-text","description":"Denies the text command without any pre-configured scope.","commands":{"allow":[],"deny":["text"]}}},"permission_sets":{},"global_scope_schema":null},"core:path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-resolve-directory","allow-resolve","allow-normalize","allow-join","allow-dirname","allow-extname","allow-basename","allow-is-absolute"]},"permissions":{"allow-basename":{"identifier":"allow-basename","description":"Enables the basename command without any pre-configured scope.","commands":{"allow":["basename"],"deny":[]}},"allow-dirname":{"identifier":"allow-dirname","description":"Enables the dirname command without any pre-configured scope.","commands":{"allow":["dirname"],"deny":[]}},"allow-extname":{"identifier":"allow-extname","description":"Enables the extname command without any pre-configured scope.","commands":{"allow":["extname"],"deny":[]}},"allow-is-absolute":{"identifier":"allow-is-absolute","description":"Enables the is_absolute command without any pre-configured scope.","commands":{"allow":["is_absolute"],"deny":[]}},"allow-join":{"identifier":"allow-join","description":"Enables the join command without any pre-configured scope.","commands":{"allow":["join"],"deny":[]}},"allow-normalize":{"identifier":"allow-normalize","description":"Enables the normalize command without any pre-configured scope.","commands":{"allow":["normalize"],"deny":[]}},"allow-resolve":{"identifier":"allow-resolve","description":"Enables the resolve command without any pre-configured scope.","commands":{"allow":["resolve"],"deny":[]}},"allow-resolve-directory":{"identifier":"allow-resolve-directory","description":"Enables the resolve_directory command without any pre-configured scope.","commands":{"allow":["resolve_directory"],"deny":[]}},"deny-basename":{"identifier":"deny-basename","description":"Denies the basename command without any pre-configured scope.","commands":{"allow":[],"deny":["basename"]}},"deny-dirname":{"identifier":"deny-dirname","description":"Denies the dirname command without any pre-configured scope.","commands":{"allow":[],"deny":["dirname"]}},"deny-extname":{"identifier":"deny-extname","description":"Denies the extname command without any pre-configured scope.","commands":{"allow":[],"deny":["extname"]}},"deny-is-absolute":{"identifier":"deny-is-absolute","description":"Denies the is_absolute command without any pre-configured scope.","commands":{"allow":[],"deny":["is_absolute"]}},"deny-join":{"identifier":"deny-join","description":"Denies the join command without any pre-configured scope.","commands":{"allow":[],"deny":["join"]}},"deny-normalize":{"identifier":"deny-normalize","description":"Denies the normalize command without any pre-configured scope.","commands":{"allow":[],"deny":["normalize"]}},"deny-resolve":{"identifier":"deny-resolve","description":"Denies the resolve command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve"]}},"deny-resolve-directory":{"identifier":"deny-resolve-directory","description":"Denies the resolve_directory command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve_directory"]}}},"permission_sets":{},"global_scope_schema":null},"core:resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-close"]},"permissions":{"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}}},"permission_sets":{},"global_scope_schema":null},"core:tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-get-by-id","allow-remove-by-id","allow-set-icon","allow-set-menu","allow-set-tooltip","allow-set-title","allow-set-visible","allow-set-temp-dir-path","allow-set-icon-as-template","allow-set-show-menu-on-left-click"]},"permissions":{"allow-get-by-id":{"identifier":"allow-get-by-id","description":"Enables the get_by_id command without any pre-configured scope.","commands":{"allow":["get_by_id"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-remove-by-id":{"identifier":"allow-remove-by-id","description":"Enables the remove_by_id command without any pre-configured scope.","commands":{"allow":["remove_by_id"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-icon-as-template":{"identifier":"allow-set-icon-as-template","description":"Enables the set_icon_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_as_template"],"deny":[]}},"allow-set-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"core:webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-webviews","allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-clear-all-browsing-data":{"identifier":"allow-clear-all-browsing-data","description":"Enables the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":["clear_all_browsing_data"],"deny":[]}},"allow-create-webview":{"identifier":"allow-create-webview","description":"Enables the create_webview command without any pre-configured scope.","commands":{"allow":["create_webview"],"deny":[]}},"allow-create-webview-window":{"identifier":"allow-create-webview-window","description":"Enables the create_webview_window command without any pre-configured scope.","commands":{"allow":["create_webview_window"],"deny":[]}},"allow-get-all-webviews":{"identifier":"allow-get-all-webviews","description":"Enables the get_all_webviews command without any pre-configured scope.","commands":{"allow":["get_all_webviews"],"deny":[]}},"allow-internal-toggle-devtools":{"identifier":"allow-internal-toggle-devtools","description":"Enables the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":["internal_toggle_devtools"],"deny":[]}},"allow-print":{"identifier":"allow-print","description":"Enables the print command without any pre-configured scope.","commands":{"allow":["print"],"deny":[]}},"allow-reparent":{"identifier":"allow-reparent","description":"Enables the reparent command without any pre-configured scope.","commands":{"allow":["reparent"],"deny":[]}},"allow-set-webview-auto-resize":{"identifier":"allow-set-webview-auto-resize","description":"Enables the set_webview_auto_resize command without any pre-configured scope.","commands":{"allow":["set_webview_auto_resize"],"deny":[]}},"allow-set-webview-background-color":{"identifier":"allow-set-webview-background-color","description":"Enables the set_webview_background_color command without any pre-configured scope.","commands":{"allow":["set_webview_background_color"],"deny":[]}},"allow-set-webview-focus":{"identifier":"allow-set-webview-focus","description":"Enables the set_webview_focus command without any pre-configured scope.","commands":{"allow":["set_webview_focus"],"deny":[]}},"allow-set-webview-position":{"identifier":"allow-set-webview-position","description":"Enables the set_webview_position command without any pre-configured scope.","commands":{"allow":["set_webview_position"],"deny":[]}},"allow-set-webview-size":{"identifier":"allow-set-webview-size","description":"Enables the set_webview_size command without any pre-configured scope.","commands":{"allow":["set_webview_size"],"deny":[]}},"allow-set-webview-zoom":{"identifier":"allow-set-webview-zoom","description":"Enables the set_webview_zoom command without any pre-configured scope.","commands":{"allow":["set_webview_zoom"],"deny":[]}},"allow-webview-close":{"identifier":"allow-webview-close","description":"Enables the webview_close command without any pre-configured scope.","commands":{"allow":["webview_close"],"deny":[]}},"allow-webview-hide":{"identifier":"allow-webview-hide","description":"Enables the webview_hide command without any pre-configured scope.","commands":{"allow":["webview_hide"],"deny":[]}},"allow-webview-position":{"identifier":"allow-webview-position","description":"Enables the webview_position command without any pre-configured scope.","commands":{"allow":["webview_position"],"deny":[]}},"allow-webview-show":{"identifier":"allow-webview-show","description":"Enables the webview_show command without any pre-configured scope.","commands":{"allow":["webview_show"],"deny":[]}},"allow-webview-size":{"identifier":"allow-webview-size","description":"Enables the webview_size command without any pre-configured scope.","commands":{"allow":["webview_size"],"deny":[]}},"deny-clear-all-browsing-data":{"identifier":"deny-clear-all-browsing-data","description":"Denies the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":[],"deny":["clear_all_browsing_data"]}},"deny-create-webview":{"identifier":"deny-create-webview","description":"Denies the create_webview command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview"]}},"deny-create-webview-window":{"identifier":"deny-create-webview-window","description":"Denies the create_webview_window command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview_window"]}},"deny-get-all-webviews":{"identifier":"deny-get-all-webviews","description":"Denies the get_all_webviews command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_webviews"]}},"deny-internal-toggle-devtools":{"identifier":"deny-internal-toggle-devtools","description":"Denies the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_devtools"]}},"deny-print":{"identifier":"deny-print","description":"Denies the print command without any pre-configured scope.","commands":{"allow":[],"deny":["print"]}},"deny-reparent":{"identifier":"deny-reparent","description":"Denies the reparent command without any pre-configured scope.","commands":{"allow":[],"deny":["reparent"]}},"deny-set-webview-auto-resize":{"identifier":"deny-set-webview-auto-resize","description":"Denies the set_webview_auto_resize command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_auto_resize"]}},"deny-set-webview-background-color":{"identifier":"deny-set-webview-background-color","description":"Denies the set_webview_background_color command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_background_color"]}},"deny-set-webview-focus":{"identifier":"deny-set-webview-focus","description":"Denies the set_webview_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_focus"]}},"deny-set-webview-position":{"identifier":"deny-set-webview-position","description":"Denies the set_webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_position"]}},"deny-set-webview-size":{"identifier":"deny-set-webview-size","description":"Denies the set_webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_size"]}},"deny-set-webview-zoom":{"identifier":"deny-set-webview-zoom","description":"Denies the set_webview_zoom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_zoom"]}},"deny-webview-close":{"identifier":"deny-webview-close","description":"Denies the webview_close command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_close"]}},"deny-webview-hide":{"identifier":"deny-webview-hide","description":"Denies the webview_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_hide"]}},"deny-webview-position":{"identifier":"deny-webview-position","description":"Denies the webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_position"]}},"deny-webview-show":{"identifier":"deny-webview-show","description":"Denies the webview_show command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_show"]}},"deny-webview-size":{"identifier":"deny-webview-size","description":"Denies the webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_size"]}}},"permission_sets":{},"global_scope_schema":null},"core:window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-windows","allow-scale-factor","allow-inner-position","allow-outer-position","allow-inner-size","allow-outer-size","allow-is-fullscreen","allow-is-minimized","allow-is-maximized","allow-is-focused","allow-is-decorated","allow-is-resizable","allow-is-maximizable","allow-is-minimizable","allow-is-closable","allow-is-visible","allow-is-enabled","allow-title","allow-current-monitor","allow-primary-monitor","allow-monitor-from-point","allow-available-monitors","allow-cursor-position","allow-theme","allow-is-always-on-top","allow-internal-toggle-maximize"]},"permissions":{"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-get-all-windows":{"identifier":"allow-get-all-windows","description":"Enables the get_all_windows command without any pre-configured scope.","commands":{"allow":["get_all_windows"],"deny":[]}},"allow-hide":{"identifier":"allow-hide","description":"Enables the hide command without any pre-configured scope.","commands":{"allow":["hide"],"deny":[]}},"allow-inner-position":{"identifier":"allow-inner-position","description":"Enables the inner_position command without any pre-configured scope.","commands":{"allow":["inner_position"],"deny":[]}},"allow-inner-size":{"identifier":"allow-inner-size","description":"Enables the inner_size command without any pre-configured scope.","commands":{"allow":["inner_size"],"deny":[]}},"allow-internal-toggle-maximize":{"identifier":"allow-internal-toggle-maximize","description":"Enables the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":["internal_toggle_maximize"],"deny":[]}},"allow-is-always-on-top":{"identifier":"allow-is-always-on-top","description":"Enables the is_always_on_top command without any pre-configured scope.","commands":{"allow":["is_always_on_top"],"deny":[]}},"allow-is-closable":{"identifier":"allow-is-closable","description":"Enables the is_closable command without any pre-configured scope.","commands":{"allow":["is_closable"],"deny":[]}},"allow-is-decorated":{"identifier":"allow-is-decorated","description":"Enables the is_decorated command without any pre-configured scope.","commands":{"allow":["is_decorated"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-is-focused":{"identifier":"allow-is-focused","description":"Enables the is_focused command without any pre-configured scope.","commands":{"allow":["is_focused"],"deny":[]}},"allow-is-fullscreen":{"identifier":"allow-is-fullscreen","description":"Enables the is_fullscreen command without any pre-configured scope.","commands":{"allow":["is_fullscreen"],"deny":[]}},"allow-is-maximizable":{"identifier":"allow-is-maximizable","description":"Enables the is_maximizable command without any pre-configured scope.","commands":{"allow":["is_maximizable"],"deny":[]}},"allow-is-maximized":{"identifier":"allow-is-maximized","description":"Enables the is_maximized command without any pre-configured scope.","commands":{"allow":["is_maximized"],"deny":[]}},"allow-is-minimizable":{"identifier":"allow-is-minimizable","description":"Enables the is_minimizable command without any pre-configured scope.","commands":{"allow":["is_minimizable"],"deny":[]}},"allow-is-minimized":{"identifier":"allow-is-minimized","description":"Enables the is_minimized command without any pre-configured scope.","commands":{"allow":["is_minimized"],"deny":[]}},"allow-is-resizable":{"identifier":"allow-is-resizable","description":"Enables the is_resizable command without any pre-configured scope.","commands":{"allow":["is_resizable"],"deny":[]}},"allow-is-visible":{"identifier":"allow-is-visible","description":"Enables the is_visible command without any pre-configured scope.","commands":{"allow":["is_visible"],"deny":[]}},"allow-maximize":{"identifier":"allow-maximize","description":"Enables the maximize command without any pre-configured scope.","commands":{"allow":["maximize"],"deny":[]}},"allow-minimize":{"identifier":"allow-minimize","description":"Enables the minimize command without any pre-configured scope.","commands":{"allow":["minimize"],"deny":[]}},"allow-monitor-from-point":{"identifier":"allow-monitor-from-point","description":"Enables the monitor_from_point command without any pre-configured scope.","commands":{"allow":["monitor_from_point"],"deny":[]}},"allow-outer-position":{"identifier":"allow-outer-position","description":"Enables the outer_position command without any pre-configured scope.","commands":{"allow":["outer_position"],"deny":[]}},"allow-outer-size":{"identifier":"allow-outer-size","description":"Enables the outer_size command without any pre-configured scope.","commands":{"allow":["outer_size"],"deny":[]}},"allow-primary-monitor":{"identifier":"allow-primary-monitor","description":"Enables the primary_monitor command without any pre-configured scope.","commands":{"allow":["primary_monitor"],"deny":[]}},"allow-request-user-attention":{"identifier":"allow-request-user-attention","description":"Enables the request_user_attention command without any pre-configured scope.","commands":{"allow":["request_user_attention"],"deny":[]}},"allow-scale-factor":{"identifier":"allow-scale-factor","description":"Enables the scale_factor command without any pre-configured scope.","commands":{"allow":["scale_factor"],"deny":[]}},"allow-set-always-on-bottom":{"identifier":"allow-set-always-on-bottom","description":"Enables the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":["set_always_on_bottom"],"deny":[]}},"allow-set-always-on-top":{"identifier":"allow-set-always-on-top","description":"Enables the set_always_on_top command without any pre-configured scope.","commands":{"allow":["set_always_on_top"],"deny":[]}},"allow-set-background-color":{"identifier":"allow-set-background-color","description":"Enables the set_background_color command without any pre-configured scope.","commands":{"allow":["set_background_color"],"deny":[]}},"allow-set-badge-count":{"identifier":"allow-set-badge-count","description":"Enables the set_badge_count command without any pre-configured scope.","commands":{"allow":["set_badge_count"],"deny":[]}},"allow-set-badge-label":{"identifier":"allow-set-badge-label","description":"Enables the set_badge_label command without any pre-configured scope.","commands":{"allow":["set_badge_label"],"deny":[]}},"allow-set-closable":{"identifier":"allow-set-closable","description":"Enables the set_closable command without any pre-configured scope.","commands":{"allow":["set_closable"],"deny":[]}},"allow-set-content-protected":{"identifier":"allow-set-content-protected","description":"Enables the set_content_protected command without any pre-configured scope.","commands":{"allow":["set_content_protected"],"deny":[]}},"allow-set-cursor-grab":{"identifier":"allow-set-cursor-grab","description":"Enables the set_cursor_grab command without any pre-configured scope.","commands":{"allow":["set_cursor_grab"],"deny":[]}},"allow-set-cursor-icon":{"identifier":"allow-set-cursor-icon","description":"Enables the set_cursor_icon command without any pre-configured scope.","commands":{"allow":["set_cursor_icon"],"deny":[]}},"allow-set-cursor-position":{"identifier":"allow-set-cursor-position","description":"Enables the set_cursor_position command without any pre-configured scope.","commands":{"allow":["set_cursor_position"],"deny":[]}},"allow-set-cursor-visible":{"identifier":"allow-set-cursor-visible","description":"Enables the set_cursor_visible command without any pre-configured scope.","commands":{"allow":["set_cursor_visible"],"deny":[]}},"allow-set-decorations":{"identifier":"allow-set-decorations","description":"Enables the set_decorations command without any pre-configured scope.","commands":{"allow":["set_decorations"],"deny":[]}},"allow-set-effects":{"identifier":"allow-set-effects","description":"Enables the set_effects command without any pre-configured scope.","commands":{"allow":["set_effects"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-focus":{"identifier":"allow-set-focus","description":"Enables the set_focus command without any pre-configured scope.","commands":{"allow":["set_focus"],"deny":[]}},"allow-set-fullscreen":{"identifier":"allow-set-fullscreen","description":"Enables the set_fullscreen command without any pre-configured scope.","commands":{"allow":["set_fullscreen"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-ignore-cursor-events":{"identifier":"allow-set-ignore-cursor-events","description":"Enables the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":["set_ignore_cursor_events"],"deny":[]}},"allow-set-max-size":{"identifier":"allow-set-max-size","description":"Enables the set_max_size command without any pre-configured scope.","commands":{"allow":["set_max_size"],"deny":[]}},"allow-set-maximizable":{"identifier":"allow-set-maximizable","description":"Enables the set_maximizable command without any pre-configured scope.","commands":{"allow":["set_maximizable"],"deny":[]}},"allow-set-min-size":{"identifier":"allow-set-min-size","description":"Enables the set_min_size command without any pre-configured scope.","commands":{"allow":["set_min_size"],"deny":[]}},"allow-set-minimizable":{"identifier":"allow-set-minimizable","description":"Enables the set_minimizable command without any pre-configured scope.","commands":{"allow":["set_minimizable"],"deny":[]}},"allow-set-overlay-icon":{"identifier":"allow-set-overlay-icon","description":"Enables the set_overlay_icon command without any pre-configured scope.","commands":{"allow":["set_overlay_icon"],"deny":[]}},"allow-set-position":{"identifier":"allow-set-position","description":"Enables the set_position command without any pre-configured scope.","commands":{"allow":["set_position"],"deny":[]}},"allow-set-progress-bar":{"identifier":"allow-set-progress-bar","description":"Enables the set_progress_bar command without any pre-configured scope.","commands":{"allow":["set_progress_bar"],"deny":[]}},"allow-set-resizable":{"identifier":"allow-set-resizable","description":"Enables the set_resizable command without any pre-configured scope.","commands":{"allow":["set_resizable"],"deny":[]}},"allow-set-shadow":{"identifier":"allow-set-shadow","description":"Enables the set_shadow command without any pre-configured scope.","commands":{"allow":["set_shadow"],"deny":[]}},"allow-set-size":{"identifier":"allow-set-size","description":"Enables the set_size command without any pre-configured scope.","commands":{"allow":["set_size"],"deny":[]}},"allow-set-size-constraints":{"identifier":"allow-set-size-constraints","description":"Enables the set_size_constraints command without any pre-configured scope.","commands":{"allow":["set_size_constraints"],"deny":[]}},"allow-set-skip-taskbar":{"identifier":"allow-set-skip-taskbar","description":"Enables the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":["set_skip_taskbar"],"deny":[]}},"allow-set-theme":{"identifier":"allow-set-theme","description":"Enables the set_theme command without any pre-configured scope.","commands":{"allow":["set_theme"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-title-bar-style":{"identifier":"allow-set-title-bar-style","description":"Enables the set_title_bar_style command without any pre-configured scope.","commands":{"allow":["set_title_bar_style"],"deny":[]}},"allow-set-visible-on-all-workspaces":{"identifier":"allow-set-visible-on-all-workspaces","description":"Enables the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":["set_visible_on_all_workspaces"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"allow-start-dragging":{"identifier":"allow-start-dragging","description":"Enables the start_dragging command without any pre-configured scope.","commands":{"allow":["start_dragging"],"deny":[]}},"allow-start-resize-dragging":{"identifier":"allow-start-resize-dragging","description":"Enables the start_resize_dragging command without any pre-configured scope.","commands":{"allow":["start_resize_dragging"],"deny":[]}},"allow-theme":{"identifier":"allow-theme","description":"Enables the theme command without any pre-configured scope.","commands":{"allow":["theme"],"deny":[]}},"allow-title":{"identifier":"allow-title","description":"Enables the title command without any pre-configured scope.","commands":{"allow":["title"],"deny":[]}},"allow-toggle-maximize":{"identifier":"allow-toggle-maximize","description":"Enables the toggle_maximize command without any pre-configured scope.","commands":{"allow":["toggle_maximize"],"deny":[]}},"allow-unmaximize":{"identifier":"allow-unmaximize","description":"Enables the unmaximize command without any pre-configured scope.","commands":{"allow":["unmaximize"],"deny":[]}},"allow-unminimize":{"identifier":"allow-unminimize","description":"Enables the unminimize command without any pre-configured scope.","commands":{"allow":["unminimize"],"deny":[]}},"deny-available-monitors":{"identifier":"deny-available-monitors","description":"Denies the available_monitors command without any pre-configured scope.","commands":{"allow":[],"deny":["available_monitors"]}},"deny-center":{"identifier":"deny-center","description":"Denies the center command without any pre-configured scope.","commands":{"allow":[],"deny":["center"]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-current-monitor":{"identifier":"deny-current-monitor","description":"Denies the current_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["current_monitor"]}},"deny-cursor-position":{"identifier":"deny-cursor-position","description":"Denies the cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["cursor_position"]}},"deny-destroy":{"identifier":"deny-destroy","description":"Denies the destroy command without any pre-configured scope.","commands":{"allow":[],"deny":["destroy"]}},"deny-get-all-windows":{"identifier":"deny-get-all-windows","description":"Denies the get_all_windows command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_windows"]}},"deny-hide":{"identifier":"deny-hide","description":"Denies the hide command without any pre-configured scope.","commands":{"allow":[],"deny":["hide"]}},"deny-inner-position":{"identifier":"deny-inner-position","description":"Denies the inner_position command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_position"]}},"deny-inner-size":{"identifier":"deny-inner-size","description":"Denies the inner_size command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_size"]}},"deny-internal-toggle-maximize":{"identifier":"deny-internal-toggle-maximize","description":"Denies the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_maximize"]}},"deny-is-always-on-top":{"identifier":"deny-is-always-on-top","description":"Denies the is_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["is_always_on_top"]}},"deny-is-closable":{"identifier":"deny-is-closable","description":"Denies the is_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_closable"]}},"deny-is-decorated":{"identifier":"deny-is-decorated","description":"Denies the is_decorated command without any pre-configured scope.","commands":{"allow":[],"deny":["is_decorated"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-is-focused":{"identifier":"deny-is-focused","description":"Denies the is_focused command without any pre-configured scope.","commands":{"allow":[],"deny":["is_focused"]}},"deny-is-fullscreen":{"identifier":"deny-is-fullscreen","description":"Denies the is_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["is_fullscreen"]}},"deny-is-maximizable":{"identifier":"deny-is-maximizable","description":"Denies the is_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximizable"]}},"deny-is-maximized":{"identifier":"deny-is-maximized","description":"Denies the is_maximized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximized"]}},"deny-is-minimizable":{"identifier":"deny-is-minimizable","description":"Denies the is_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimizable"]}},"deny-is-minimized":{"identifier":"deny-is-minimized","description":"Denies the is_minimized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimized"]}},"deny-is-resizable":{"identifier":"deny-is-resizable","description":"Denies the is_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_resizable"]}},"deny-is-visible":{"identifier":"deny-is-visible","description":"Denies the is_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["is_visible"]}},"deny-maximize":{"identifier":"deny-maximize","description":"Denies the maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["maximize"]}},"deny-minimize":{"identifier":"deny-minimize","description":"Denies the minimize command without any pre-configured scope.","commands":{"allow":[],"deny":["minimize"]}},"deny-monitor-from-point":{"identifier":"deny-monitor-from-point","description":"Denies the monitor_from_point command without any pre-configured scope.","commands":{"allow":[],"deny":["monitor_from_point"]}},"deny-outer-position":{"identifier":"deny-outer-position","description":"Denies the outer_position command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_position"]}},"deny-outer-size":{"identifier":"deny-outer-size","description":"Denies the outer_size command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_size"]}},"deny-primary-monitor":{"identifier":"deny-primary-monitor","description":"Denies the primary_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["primary_monitor"]}},"deny-request-user-attention":{"identifier":"deny-request-user-attention","description":"Denies the request_user_attention command without any pre-configured scope.","commands":{"allow":[],"deny":["request_user_attention"]}},"deny-scale-factor":{"identifier":"deny-scale-factor","description":"Denies the scale_factor command without any pre-configured scope.","commands":{"allow":[],"deny":["scale_factor"]}},"deny-set-always-on-bottom":{"identifier":"deny-set-always-on-bottom","description":"Denies the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_bottom"]}},"deny-set-always-on-top":{"identifier":"deny-set-always-on-top","description":"Denies the set_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_top"]}},"deny-set-background-color":{"identifier":"deny-set-background-color","description":"Denies the set_background_color command without any pre-configured scope.","commands":{"allow":[],"deny":["set_background_color"]}},"deny-set-badge-count":{"identifier":"deny-set-badge-count","description":"Denies the set_badge_count command without any pre-configured scope.","commands":{"allow":[],"deny":["set_badge_count"]}},"deny-set-badge-label":{"identifier":"deny-set-badge-label","description":"Denies the set_badge_label command without any pre-configured scope.","commands":{"allow":[],"deny":["set_badge_label"]}},"deny-set-closable":{"identifier":"deny-set-closable","description":"Denies the set_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_closable"]}},"deny-set-content-protected":{"identifier":"deny-set-content-protected","description":"Denies the set_content_protected command without any pre-configured scope.","commands":{"allow":[],"deny":["set_content_protected"]}},"deny-set-cursor-grab":{"identifier":"deny-set-cursor-grab","description":"Denies the set_cursor_grab command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_grab"]}},"deny-set-cursor-icon":{"identifier":"deny-set-cursor-icon","description":"Denies the set_cursor_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_icon"]}},"deny-set-cursor-position":{"identifier":"deny-set-cursor-position","description":"Denies the set_cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_position"]}},"deny-set-cursor-visible":{"identifier":"deny-set-cursor-visible","description":"Denies the set_cursor_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_visible"]}},"deny-set-decorations":{"identifier":"deny-set-decorations","description":"Denies the set_decorations command without any pre-configured scope.","commands":{"allow":[],"deny":["set_decorations"]}},"deny-set-effects":{"identifier":"deny-set-effects","description":"Denies the set_effects command without any pre-configured scope.","commands":{"allow":[],"deny":["set_effects"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-focus":{"identifier":"deny-set-focus","description":"Denies the set_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focus"]}},"deny-set-fullscreen":{"identifier":"deny-set-fullscreen","description":"Denies the set_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_fullscreen"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-ignore-cursor-events":{"identifier":"deny-set-ignore-cursor-events","description":"Denies the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":[],"deny":["set_ignore_cursor_events"]}},"deny-set-max-size":{"identifier":"deny-set-max-size","description":"Denies the set_max_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_max_size"]}},"deny-set-maximizable":{"identifier":"deny-set-maximizable","description":"Denies the set_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_maximizable"]}},"deny-set-min-size":{"identifier":"deny-set-min-size","description":"Denies the set_min_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_min_size"]}},"deny-set-minimizable":{"identifier":"deny-set-minimizable","description":"Denies the set_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_minimizable"]}},"deny-set-overlay-icon":{"identifier":"deny-set-overlay-icon","description":"Denies the set_overlay_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_overlay_icon"]}},"deny-set-position":{"identifier":"deny-set-position","description":"Denies the set_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_position"]}},"deny-set-progress-bar":{"identifier":"deny-set-progress-bar","description":"Denies the set_progress_bar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_progress_bar"]}},"deny-set-resizable":{"identifier":"deny-set-resizable","description":"Denies the set_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_resizable"]}},"deny-set-shadow":{"identifier":"deny-set-shadow","description":"Denies the set_shadow command without any pre-configured scope.","commands":{"allow":[],"deny":["set_shadow"]}},"deny-set-size":{"identifier":"deny-set-size","description":"Denies the set_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size"]}},"deny-set-size-constraints":{"identifier":"deny-set-size-constraints","description":"Denies the set_size_constraints command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size_constraints"]}},"deny-set-skip-taskbar":{"identifier":"deny-set-skip-taskbar","description":"Denies the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_skip_taskbar"]}},"deny-set-theme":{"identifier":"deny-set-theme","description":"Denies the set_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_theme"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-title-bar-style":{"identifier":"deny-set-title-bar-style","description":"Denies the set_title_bar_style command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title_bar_style"]}},"deny-set-visible-on-all-workspaces":{"identifier":"deny-set-visible-on-all-workspaces","description":"Denies the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible_on_all_workspaces"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}},"deny-start-dragging":{"identifier":"deny-start-dragging","description":"Denies the start_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_dragging"]}},"deny-start-resize-dragging":{"identifier":"deny-start-resize-dragging","description":"Denies the start_resize_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_resize_dragging"]}},"deny-theme":{"identifier":"deny-theme","description":"Denies the theme command without any pre-configured scope.","commands":{"allow":[],"deny":["theme"]}},"deny-title":{"identifier":"deny-title","description":"Denies the title command without any pre-configured scope.","commands":{"allow":[],"deny":["title"]}},"deny-toggle-maximize":{"identifier":"deny-toggle-maximize","description":"Denies the toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["toggle_maximize"]}},"deny-unmaximize":{"identifier":"deny-unmaximize","description":"Denies the unmaximize command without any pre-configured scope.","commands":{"allow":[],"deny":["unmaximize"]}},"deny-unminimize":{"identifier":"deny-unminimize","description":"Denies the unminimize command without any pre-configured scope.","commands":{"allow":[],"deny":["unminimize"]}}},"permission_sets":{},"global_scope_schema":null},"deep-link":{"default_permission":{"identifier":"default","description":"Allows reading the opened deep link via the get_current command","permissions":["allow-get-current"]},"permissions":{"allow-get-current":{"identifier":"allow-get-current","description":"Enables the get_current command without any pre-configured scope.","commands":{"allow":["get_current"],"deny":[]}},"allow-is-registered":{"identifier":"allow-is-registered","description":"Enables the is_registered command without any pre-configured scope.","commands":{"allow":["is_registered"],"deny":[]}},"allow-register":{"identifier":"allow-register","description":"Enables the register command without any pre-configured scope.","commands":{"allow":["register"],"deny":[]}},"allow-unregister":{"identifier":"allow-unregister","description":"Enables the unregister command without any pre-configured scope.","commands":{"allow":["unregister"],"deny":[]}},"deny-get-current":{"identifier":"deny-get-current","description":"Denies the get_current command without any pre-configured scope.","commands":{"allow":[],"deny":["get_current"]}},"deny-is-registered":{"identifier":"deny-is-registered","description":"Denies the is_registered command without any pre-configured scope.","commands":{"allow":[],"deny":["is_registered"]}},"deny-register":{"identifier":"deny-register","description":"Denies the register command without any pre-configured scope.","commands":{"allow":[],"deny":["register"]}},"deny-unregister":{"identifier":"deny-unregister","description":"Denies the unregister command without any pre-configured scope.","commands":{"allow":[],"deny":["unregister"]}}},"permission_sets":{},"global_scope_schema":null},"http":{"default_permission":{"identifier":"default","description":"This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n","permissions":["allow-fetch","allow-fetch-cancel","allow-fetch-read-body","allow-fetch-send"]},"permissions":{"allow-fetch":{"identifier":"allow-fetch","description":"Enables the fetch command without any pre-configured scope.","commands":{"allow":["fetch"],"deny":[]}},"allow-fetch-cancel":{"identifier":"allow-fetch-cancel","description":"Enables the fetch_cancel command without any pre-configured scope.","commands":{"allow":["fetch_cancel"],"deny":[]}},"allow-fetch-read-body":{"identifier":"allow-fetch-read-body","description":"Enables the fetch_read_body command without any pre-configured scope.","commands":{"allow":["fetch_read_body"],"deny":[]}},"allow-fetch-send":{"identifier":"allow-fetch-send","description":"Enables the fetch_send command without any pre-configured scope.","commands":{"allow":["fetch_send"],"deny":[]}},"deny-fetch":{"identifier":"deny-fetch","description":"Denies the fetch command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch"]}},"deny-fetch-cancel":{"identifier":"deny-fetch-cancel","description":"Denies the fetch_cancel command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_cancel"]}},"deny-fetch-read-body":{"identifier":"deny-fetch-read-body","description":"Denies the fetch_read_body command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_read_body"]}},"deny-fetch-send":{"identifier":"deny-fetch-send","description":"Denies the fetch_send command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_send"]}}},"permission_sets":{},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","anyOf":[{"description":"A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"","type":"string"},{"properties":{"url":{"description":"A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"","type":"string"}},"required":["url"],"type":"object"}],"description":"HTTP scope entry.","title":"HttpScopeEntry"}},"process":{"default_permission":{"identifier":"default","description":"This permission set configures which\nprocess features are by default exposed.\n\n#### Granted Permissions\n\nThis enables to quit via `allow-exit` and restart via `allow-restart`\nthe application.\n","permissions":["allow-exit","allow-restart"]},"permissions":{"allow-exit":{"identifier":"allow-exit","description":"Enables the exit command without any pre-configured scope.","commands":{"allow":["exit"],"deny":[]}},"allow-restart":{"identifier":"allow-restart","description":"Enables the restart command without any pre-configured scope.","commands":{"allow":["restart"],"deny":[]}},"deny-exit":{"identifier":"deny-exit","description":"Denies the exit command without any pre-configured scope.","commands":{"allow":[],"deny":["exit"]}},"deny-restart":{"identifier":"deny-restart","description":"Denies the restart command without any pre-configured scope.","commands":{"allow":[],"deny":["restart"]}}},"permission_sets":{},"global_scope_schema":null},"shell":{"default_permission":{"identifier":"default","description":"This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n","permissions":["allow-open"]},"permissions":{"allow-execute":{"identifier":"allow-execute","description":"Enables the execute command without any pre-configured scope.","commands":{"allow":["execute"],"deny":[]}},"allow-kill":{"identifier":"allow-kill","description":"Enables the kill command without any pre-configured scope.","commands":{"allow":["kill"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-spawn":{"identifier":"allow-spawn","description":"Enables the spawn command without any pre-configured scope.","commands":{"allow":["spawn"],"deny":[]}},"allow-stdin-write":{"identifier":"allow-stdin-write","description":"Enables the stdin_write command without any pre-configured scope.","commands":{"allow":["stdin_write"],"deny":[]}},"deny-execute":{"identifier":"deny-execute","description":"Denies the execute command without any pre-configured scope.","commands":{"allow":[],"deny":["execute"]}},"deny-kill":{"identifier":"deny-kill","description":"Denies the kill command without any pre-configured scope.","commands":{"allow":[],"deny":["kill"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-spawn":{"identifier":"deny-spawn","description":"Denies the spawn command without any pre-configured scope.","commands":{"allow":[],"deny":["spawn"]}},"deny-stdin-write":{"identifier":"deny-stdin-write","description":"Denies the stdin_write command without any pre-configured scope.","commands":{"allow":[],"deny":["stdin_write"]}}},"permission_sets":{},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","anyOf":[{"additionalProperties":false,"properties":{"args":{"allOf":[{"$ref":"#/definitions/ShellScopeEntryAllowedArgs"}],"description":"The allowed arguments for the command execution."},"cmd":{"description":"The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.","type":"string"},"name":{"description":"The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.","type":"string"}},"required":["cmd","name"],"type":"object"},{"additionalProperties":false,"properties":{"args":{"allOf":[{"$ref":"#/definitions/ShellScopeEntryAllowedArgs"}],"description":"The allowed arguments for the command execution."},"name":{"description":"The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.","type":"string"},"sidecar":{"description":"If this command is a sidecar command.","type":"boolean"}},"required":["name","sidecar"],"type":"object"}],"definitions":{"ShellScopeEntryAllowedArg":{"anyOf":[{"description":"A non-configurable argument that is passed to the command in the order it was specified.","type":"string"},{"additionalProperties":false,"description":"A variable that is set while calling the command from the webview API.","properties":{"raw":{"default":false,"description":"Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.","type":"boolean"},"validator":{"description":"[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: <https://docs.rs/regex/latest/regex/#syntax>","type":"string"}},"required":["validator"],"type":"object"}],"description":"A command argument allowed to be executed by the webview API."},"ShellScopeEntryAllowedArgs":{"anyOf":[{"description":"Use a simple boolean to allow all or disable all arguments to this command configuration.","type":"boolean"},{"description":"A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.","items":{"$ref":"#/definitions/ShellScopeEntryAllowedArg"},"type":"array"}],"description":"A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration."}},"description":"Shell scope entry.","title":"ShellScopeEntry"}}}
···
1
+
{"core":{"default_permission":{"identifier":"default","description":"Default core plugins set.","permissions":["core:path:default","core:event:default","core:window:default","core:webview:default","core:app:default","core:image:default","core:resources:default","core:menu:default","core:tray:default"]},"permissions":{},"permission_sets":{},"global_scope_schema":null},"core:app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version","allow-identifier","allow-bundle-type","allow-register-listener","allow-remove-listener"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-bundle-type":{"identifier":"allow-bundle-type","description":"Enables the bundle_type command without any pre-configured scope.","commands":{"allow":["bundle_type"],"deny":[]}},"allow-default-window-icon":{"identifier":"allow-default-window-icon","description":"Enables the default_window_icon command without any pre-configured scope.","commands":{"allow":["default_window_icon"],"deny":[]}},"allow-fetch-data-store-identifiers":{"identifier":"allow-fetch-data-store-identifiers","description":"Enables the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":["fetch_data_store_identifiers"],"deny":[]}},"allow-identifier":{"identifier":"allow-identifier","description":"Enables the identifier command without any pre-configured scope.","commands":{"allow":["identifier"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-register-listener":{"identifier":"allow-register-listener","description":"Enables the register_listener command without any pre-configured scope.","commands":{"allow":["register_listener"],"deny":[]}},"allow-remove-data-store":{"identifier":"allow-remove-data-store","description":"Enables the remove_data_store command without any pre-configured scope.","commands":{"allow":["remove_data_store"],"deny":[]}},"allow-remove-listener":{"identifier":"allow-remove-listener","description":"Enables the remove_listener command without any pre-configured scope.","commands":{"allow":["remove_listener"],"deny":[]}},"allow-set-app-theme":{"identifier":"allow-set-app-theme","description":"Enables the set_app_theme command without any pre-configured scope.","commands":{"allow":["set_app_theme"],"deny":[]}},"allow-set-dock-visibility":{"identifier":"allow-set-dock-visibility","description":"Enables the set_dock_visibility command without any pre-configured scope.","commands":{"allow":["set_dock_visibility"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-bundle-type":{"identifier":"deny-bundle-type","description":"Denies the bundle_type command without any pre-configured scope.","commands":{"allow":[],"deny":["bundle_type"]}},"deny-default-window-icon":{"identifier":"deny-default-window-icon","description":"Denies the default_window_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["default_window_icon"]}},"deny-fetch-data-store-identifiers":{"identifier":"deny-fetch-data-store-identifiers","description":"Denies the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_data_store_identifiers"]}},"deny-identifier":{"identifier":"deny-identifier","description":"Denies the identifier command without any pre-configured scope.","commands":{"allow":[],"deny":["identifier"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-register-listener":{"identifier":"deny-register-listener","description":"Denies the register_listener command without any pre-configured scope.","commands":{"allow":[],"deny":["register_listener"]}},"deny-remove-data-store":{"identifier":"deny-remove-data-store","description":"Denies the remove_data_store command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_data_store"]}},"deny-remove-listener":{"identifier":"deny-remove-listener","description":"Denies the remove_listener command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_listener"]}},"deny-set-app-theme":{"identifier":"deny-set-app-theme","description":"Denies the set_app_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_app_theme"]}},"deny-set-dock-visibility":{"identifier":"deny-set-dock-visibility","description":"Denies the set_dock_visibility command without any pre-configured scope.","commands":{"allow":[],"deny":["set_dock_visibility"]}},"deny-tauri-version":{"identifier":"deny-tauri-version","description":"Denies the tauri_version command without any pre-configured scope.","commands":{"allow":[],"deny":["tauri_version"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"core:event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-listen","allow-unlisten","allow-emit","allow-emit-to"]},"permissions":{"allow-emit":{"identifier":"allow-emit","description":"Enables the emit command without any pre-configured scope.","commands":{"allow":["emit"],"deny":[]}},"allow-emit-to":{"identifier":"allow-emit-to","description":"Enables the emit_to command without any pre-configured scope.","commands":{"allow":["emit_to"],"deny":[]}},"allow-listen":{"identifier":"allow-listen","description":"Enables the listen command without any pre-configured scope.","commands":{"allow":["listen"],"deny":[]}},"allow-unlisten":{"identifier":"allow-unlisten","description":"Enables the unlisten command without any pre-configured scope.","commands":{"allow":["unlisten"],"deny":[]}},"deny-emit":{"identifier":"deny-emit","description":"Denies the emit command without any pre-configured scope.","commands":{"allow":[],"deny":["emit"]}},"deny-emit-to":{"identifier":"deny-emit-to","description":"Denies the emit_to command without any pre-configured scope.","commands":{"allow":[],"deny":["emit_to"]}},"deny-listen":{"identifier":"deny-listen","description":"Denies the listen command without any pre-configured scope.","commands":{"allow":[],"deny":["listen"]}},"deny-unlisten":{"identifier":"deny-unlisten","description":"Denies the unlisten command without any pre-configured scope.","commands":{"allow":[],"deny":["unlisten"]}}},"permission_sets":{},"global_scope_schema":null},"core:image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-from-bytes","allow-from-path","allow-rgba","allow-size"]},"permissions":{"allow-from-bytes":{"identifier":"allow-from-bytes","description":"Enables the from_bytes command without any pre-configured scope.","commands":{"allow":["from_bytes"],"deny":[]}},"allow-from-path":{"identifier":"allow-from-path","description":"Enables the from_path command without any pre-configured scope.","commands":{"allow":["from_path"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-rgba":{"identifier":"allow-rgba","description":"Enables the rgba command without any pre-configured scope.","commands":{"allow":["rgba"],"deny":[]}},"allow-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"deny-from-bytes":{"identifier":"deny-from-bytes","description":"Denies the from_bytes command without any pre-configured scope.","commands":{"allow":[],"deny":["from_bytes"]}},"deny-from-path":{"identifier":"deny-from-path","description":"Denies the from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["from_path"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-rgba":{"identifier":"deny-rgba","description":"Denies the rgba command without any pre-configured scope.","commands":{"allow":[],"deny":["rgba"]}},"deny-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}}},"permission_sets":{},"global_scope_schema":null},"core:menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-append","allow-prepend","allow-insert","allow-remove","allow-remove-at","allow-items","allow-get","allow-popup","allow-create-default","allow-set-as-app-menu","allow-set-as-window-menu","allow-text","allow-set-text","allow-is-enabled","allow-set-enabled","allow-set-accelerator","allow-set-as-windows-menu-for-nsapp","allow-set-as-help-menu-for-nsapp","allow-is-checked","allow-set-checked","allow-set-icon"]},"permissions":{"allow-append":{"identifier":"allow-append","description":"Enables the append command without any pre-configured scope.","commands":{"allow":["append"],"deny":[]}},"allow-create-default":{"identifier":"allow-create-default","description":"Enables the create_default command without any pre-configured scope.","commands":{"allow":["create_default"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-insert":{"identifier":"allow-insert","description":"Enables the insert command without any pre-configured scope.","commands":{"allow":["insert"],"deny":[]}},"allow-is-checked":{"identifier":"allow-is-checked","description":"Enables the is_checked command without any pre-configured scope.","commands":{"allow":["is_checked"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-items":{"identifier":"allow-items","description":"Enables the items command without any pre-configured scope.","commands":{"allow":["items"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-popup":{"identifier":"allow-popup","description":"Enables the popup command without any pre-configured scope.","commands":{"allow":["popup"],"deny":[]}},"allow-prepend":{"identifier":"allow-prepend","description":"Enables the prepend command without any pre-configured scope.","commands":{"allow":["prepend"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-remove-at":{"identifier":"allow-remove-at","description":"Enables the remove_at command without any pre-configured scope.","commands":{"allow":["remove_at"],"deny":[]}},"allow-set-accelerator":{"identifier":"allow-set-accelerator","description":"Enables the set_accelerator command without any pre-configured scope.","commands":{"allow":["set_accelerator"],"deny":[]}},"allow-set-as-app-menu":{"identifier":"allow-set-as-app-menu","description":"Enables the set_as_app_menu command without any pre-configured scope.","commands":{"allow":["set_as_app_menu"],"deny":[]}},"allow-set-as-help-menu-for-nsapp":{"identifier":"allow-set-as-help-menu-for-nsapp","description":"Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_help_menu_for_nsapp"],"deny":[]}},"allow-set-as-window-menu":{"identifier":"allow-set-as-window-menu","description":"Enables the set_as_window_menu command without any pre-configured scope.","commands":{"allow":["set_as_window_menu"],"deny":[]}},"allow-set-as-windows-menu-for-nsapp":{"identifier":"allow-set-as-windows-menu-for-nsapp","description":"Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_windows_menu_for_nsapp"],"deny":[]}},"allow-set-checked":{"identifier":"allow-set-checked","description":"Enables the set_checked command without any pre-configured scope.","commands":{"allow":["set_checked"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-text":{"identifier":"allow-set-text","description":"Enables the set_text command without any pre-configured scope.","commands":{"allow":["set_text"],"deny":[]}},"allow-text":{"identifier":"allow-text","description":"Enables the text command without any pre-configured scope.","commands":{"allow":["text"],"deny":[]}},"deny-append":{"identifier":"deny-append","description":"Denies the append command without any pre-configured scope.","commands":{"allow":[],"deny":["append"]}},"deny-create-default":{"identifier":"deny-create-default","description":"Denies the create_default command without any pre-configured scope.","commands":{"allow":[],"deny":["create_default"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-insert":{"identifier":"deny-insert","description":"Denies the insert command without any pre-configured scope.","commands":{"allow":[],"deny":["insert"]}},"deny-is-checked":{"identifier":"deny-is-checked","description":"Denies the is_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["is_checked"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-items":{"identifier":"deny-items","description":"Denies the items command without any pre-configured scope.","commands":{"allow":[],"deny":["items"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-popup":{"identifier":"deny-popup","description":"Denies the popup command without any pre-configured scope.","commands":{"allow":[],"deny":["popup"]}},"deny-prepend":{"identifier":"deny-prepend","description":"Denies the prepend command without any pre-configured scope.","commands":{"allow":[],"deny":["prepend"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-remove-at":{"identifier":"deny-remove-at","description":"Denies the remove_at command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_at"]}},"deny-set-accelerator":{"identifier":"deny-set-accelerator","description":"Denies the set_accelerator command without any pre-configured scope.","commands":{"allow":[],"deny":["set_accelerator"]}},"deny-set-as-app-menu":{"identifier":"deny-set-as-app-menu","description":"Denies the set_as_app_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_app_menu"]}},"deny-set-as-help-menu-for-nsapp":{"identifier":"deny-set-as-help-menu-for-nsapp","description":"Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_help_menu_for_nsapp"]}},"deny-set-as-window-menu":{"identifier":"deny-set-as-window-menu","description":"Denies the set_as_window_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_window_menu"]}},"deny-set-as-windows-menu-for-nsapp":{"identifier":"deny-set-as-windows-menu-for-nsapp","description":"Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_windows_menu_for_nsapp"]}},"deny-set-checked":{"identifier":"deny-set-checked","description":"Denies the set_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["set_checked"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-text":{"identifier":"deny-set-text","description":"Denies the set_text command without any pre-configured scope.","commands":{"allow":[],"deny":["set_text"]}},"deny-text":{"identifier":"deny-text","description":"Denies the text command without any pre-configured scope.","commands":{"allow":[],"deny":["text"]}}},"permission_sets":{},"global_scope_schema":null},"core:path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-resolve-directory","allow-resolve","allow-normalize","allow-join","allow-dirname","allow-extname","allow-basename","allow-is-absolute"]},"permissions":{"allow-basename":{"identifier":"allow-basename","description":"Enables the basename command without any pre-configured scope.","commands":{"allow":["basename"],"deny":[]}},"allow-dirname":{"identifier":"allow-dirname","description":"Enables the dirname command without any pre-configured scope.","commands":{"allow":["dirname"],"deny":[]}},"allow-extname":{"identifier":"allow-extname","description":"Enables the extname command without any pre-configured scope.","commands":{"allow":["extname"],"deny":[]}},"allow-is-absolute":{"identifier":"allow-is-absolute","description":"Enables the is_absolute command without any pre-configured scope.","commands":{"allow":["is_absolute"],"deny":[]}},"allow-join":{"identifier":"allow-join","description":"Enables the join command without any pre-configured scope.","commands":{"allow":["join"],"deny":[]}},"allow-normalize":{"identifier":"allow-normalize","description":"Enables the normalize command without any pre-configured scope.","commands":{"allow":["normalize"],"deny":[]}},"allow-resolve":{"identifier":"allow-resolve","description":"Enables the resolve command without any pre-configured scope.","commands":{"allow":["resolve"],"deny":[]}},"allow-resolve-directory":{"identifier":"allow-resolve-directory","description":"Enables the resolve_directory command without any pre-configured scope.","commands":{"allow":["resolve_directory"],"deny":[]}},"deny-basename":{"identifier":"deny-basename","description":"Denies the basename command without any pre-configured scope.","commands":{"allow":[],"deny":["basename"]}},"deny-dirname":{"identifier":"deny-dirname","description":"Denies the dirname command without any pre-configured scope.","commands":{"allow":[],"deny":["dirname"]}},"deny-extname":{"identifier":"deny-extname","description":"Denies the extname command without any pre-configured scope.","commands":{"allow":[],"deny":["extname"]}},"deny-is-absolute":{"identifier":"deny-is-absolute","description":"Denies the is_absolute command without any pre-configured scope.","commands":{"allow":[],"deny":["is_absolute"]}},"deny-join":{"identifier":"deny-join","description":"Denies the join command without any pre-configured scope.","commands":{"allow":[],"deny":["join"]}},"deny-normalize":{"identifier":"deny-normalize","description":"Denies the normalize command without any pre-configured scope.","commands":{"allow":[],"deny":["normalize"]}},"deny-resolve":{"identifier":"deny-resolve","description":"Denies the resolve command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve"]}},"deny-resolve-directory":{"identifier":"deny-resolve-directory","description":"Denies the resolve_directory command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve_directory"]}}},"permission_sets":{},"global_scope_schema":null},"core:resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-close"]},"permissions":{"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}}},"permission_sets":{},"global_scope_schema":null},"core:tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-get-by-id","allow-remove-by-id","allow-set-icon","allow-set-menu","allow-set-tooltip","allow-set-title","allow-set-visible","allow-set-temp-dir-path","allow-set-icon-as-template","allow-set-show-menu-on-left-click"]},"permissions":{"allow-get-by-id":{"identifier":"allow-get-by-id","description":"Enables the get_by_id command without any pre-configured scope.","commands":{"allow":["get_by_id"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-remove-by-id":{"identifier":"allow-remove-by-id","description":"Enables the remove_by_id command without any pre-configured scope.","commands":{"allow":["remove_by_id"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-icon-as-template":{"identifier":"allow-set-icon-as-template","description":"Enables the set_icon_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_as_template"],"deny":[]}},"allow-set-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"core:webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-webviews","allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-clear-all-browsing-data":{"identifier":"allow-clear-all-browsing-data","description":"Enables the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":["clear_all_browsing_data"],"deny":[]}},"allow-create-webview":{"identifier":"allow-create-webview","description":"Enables the create_webview command without any pre-configured scope.","commands":{"allow":["create_webview"],"deny":[]}},"allow-create-webview-window":{"identifier":"allow-create-webview-window","description":"Enables the create_webview_window command without any pre-configured scope.","commands":{"allow":["create_webview_window"],"deny":[]}},"allow-get-all-webviews":{"identifier":"allow-get-all-webviews","description":"Enables the get_all_webviews command without any pre-configured scope.","commands":{"allow":["get_all_webviews"],"deny":[]}},"allow-internal-toggle-devtools":{"identifier":"allow-internal-toggle-devtools","description":"Enables the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":["internal_toggle_devtools"],"deny":[]}},"allow-print":{"identifier":"allow-print","description":"Enables the print command without any pre-configured scope.","commands":{"allow":["print"],"deny":[]}},"allow-reparent":{"identifier":"allow-reparent","description":"Enables the reparent command without any pre-configured scope.","commands":{"allow":["reparent"],"deny":[]}},"allow-set-webview-auto-resize":{"identifier":"allow-set-webview-auto-resize","description":"Enables the set_webview_auto_resize command without any pre-configured scope.","commands":{"allow":["set_webview_auto_resize"],"deny":[]}},"allow-set-webview-background-color":{"identifier":"allow-set-webview-background-color","description":"Enables the set_webview_background_color command without any pre-configured scope.","commands":{"allow":["set_webview_background_color"],"deny":[]}},"allow-set-webview-focus":{"identifier":"allow-set-webview-focus","description":"Enables the set_webview_focus command without any pre-configured scope.","commands":{"allow":["set_webview_focus"],"deny":[]}},"allow-set-webview-position":{"identifier":"allow-set-webview-position","description":"Enables the set_webview_position command without any pre-configured scope.","commands":{"allow":["set_webview_position"],"deny":[]}},"allow-set-webview-size":{"identifier":"allow-set-webview-size","description":"Enables the set_webview_size command without any pre-configured scope.","commands":{"allow":["set_webview_size"],"deny":[]}},"allow-set-webview-zoom":{"identifier":"allow-set-webview-zoom","description":"Enables the set_webview_zoom command without any pre-configured scope.","commands":{"allow":["set_webview_zoom"],"deny":[]}},"allow-webview-close":{"identifier":"allow-webview-close","description":"Enables the webview_close command without any pre-configured scope.","commands":{"allow":["webview_close"],"deny":[]}},"allow-webview-hide":{"identifier":"allow-webview-hide","description":"Enables the webview_hide command without any pre-configured scope.","commands":{"allow":["webview_hide"],"deny":[]}},"allow-webview-position":{"identifier":"allow-webview-position","description":"Enables the webview_position command without any pre-configured scope.","commands":{"allow":["webview_position"],"deny":[]}},"allow-webview-show":{"identifier":"allow-webview-show","description":"Enables the webview_show command without any pre-configured scope.","commands":{"allow":["webview_show"],"deny":[]}},"allow-webview-size":{"identifier":"allow-webview-size","description":"Enables the webview_size command without any pre-configured scope.","commands":{"allow":["webview_size"],"deny":[]}},"deny-clear-all-browsing-data":{"identifier":"deny-clear-all-browsing-data","description":"Denies the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":[],"deny":["clear_all_browsing_data"]}},"deny-create-webview":{"identifier":"deny-create-webview","description":"Denies the create_webview command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview"]}},"deny-create-webview-window":{"identifier":"deny-create-webview-window","description":"Denies the create_webview_window command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview_window"]}},"deny-get-all-webviews":{"identifier":"deny-get-all-webviews","description":"Denies the get_all_webviews command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_webviews"]}},"deny-internal-toggle-devtools":{"identifier":"deny-internal-toggle-devtools","description":"Denies the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_devtools"]}},"deny-print":{"identifier":"deny-print","description":"Denies the print command without any pre-configured scope.","commands":{"allow":[],"deny":["print"]}},"deny-reparent":{"identifier":"deny-reparent","description":"Denies the reparent command without any pre-configured scope.","commands":{"allow":[],"deny":["reparent"]}},"deny-set-webview-auto-resize":{"identifier":"deny-set-webview-auto-resize","description":"Denies the set_webview_auto_resize command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_auto_resize"]}},"deny-set-webview-background-color":{"identifier":"deny-set-webview-background-color","description":"Denies the set_webview_background_color command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_background_color"]}},"deny-set-webview-focus":{"identifier":"deny-set-webview-focus","description":"Denies the set_webview_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_focus"]}},"deny-set-webview-position":{"identifier":"deny-set-webview-position","description":"Denies the set_webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_position"]}},"deny-set-webview-size":{"identifier":"deny-set-webview-size","description":"Denies the set_webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_size"]}},"deny-set-webview-zoom":{"identifier":"deny-set-webview-zoom","description":"Denies the set_webview_zoom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_zoom"]}},"deny-webview-close":{"identifier":"deny-webview-close","description":"Denies the webview_close command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_close"]}},"deny-webview-hide":{"identifier":"deny-webview-hide","description":"Denies the webview_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_hide"]}},"deny-webview-position":{"identifier":"deny-webview-position","description":"Denies the webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_position"]}},"deny-webview-show":{"identifier":"deny-webview-show","description":"Denies the webview_show command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_show"]}},"deny-webview-size":{"identifier":"deny-webview-size","description":"Denies the webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_size"]}}},"permission_sets":{},"global_scope_schema":null},"core:window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-windows","allow-scale-factor","allow-inner-position","allow-outer-position","allow-inner-size","allow-outer-size","allow-is-fullscreen","allow-is-minimized","allow-is-maximized","allow-is-focused","allow-is-decorated","allow-is-resizable","allow-is-maximizable","allow-is-minimizable","allow-is-closable","allow-is-visible","allow-is-enabled","allow-title","allow-current-monitor","allow-primary-monitor","allow-monitor-from-point","allow-available-monitors","allow-cursor-position","allow-theme","allow-is-always-on-top","allow-internal-toggle-maximize"]},"permissions":{"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-get-all-windows":{"identifier":"allow-get-all-windows","description":"Enables the get_all_windows command without any pre-configured scope.","commands":{"allow":["get_all_windows"],"deny":[]}},"allow-hide":{"identifier":"allow-hide","description":"Enables the hide command without any pre-configured scope.","commands":{"allow":["hide"],"deny":[]}},"allow-inner-position":{"identifier":"allow-inner-position","description":"Enables the inner_position command without any pre-configured scope.","commands":{"allow":["inner_position"],"deny":[]}},"allow-inner-size":{"identifier":"allow-inner-size","description":"Enables the inner_size command without any pre-configured scope.","commands":{"allow":["inner_size"],"deny":[]}},"allow-internal-toggle-maximize":{"identifier":"allow-internal-toggle-maximize","description":"Enables the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":["internal_toggle_maximize"],"deny":[]}},"allow-is-always-on-top":{"identifier":"allow-is-always-on-top","description":"Enables the is_always_on_top command without any pre-configured scope.","commands":{"allow":["is_always_on_top"],"deny":[]}},"allow-is-closable":{"identifier":"allow-is-closable","description":"Enables the is_closable command without any pre-configured scope.","commands":{"allow":["is_closable"],"deny":[]}},"allow-is-decorated":{"identifier":"allow-is-decorated","description":"Enables the is_decorated command without any pre-configured scope.","commands":{"allow":["is_decorated"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-is-focused":{"identifier":"allow-is-focused","description":"Enables the is_focused command without any pre-configured scope.","commands":{"allow":["is_focused"],"deny":[]}},"allow-is-fullscreen":{"identifier":"allow-is-fullscreen","description":"Enables the is_fullscreen command without any pre-configured scope.","commands":{"allow":["is_fullscreen"],"deny":[]}},"allow-is-maximizable":{"identifier":"allow-is-maximizable","description":"Enables the is_maximizable command without any pre-configured scope.","commands":{"allow":["is_maximizable"],"deny":[]}},"allow-is-maximized":{"identifier":"allow-is-maximized","description":"Enables the is_maximized command without any pre-configured scope.","commands":{"allow":["is_maximized"],"deny":[]}},"allow-is-minimizable":{"identifier":"allow-is-minimizable","description":"Enables the is_minimizable command without any pre-configured scope.","commands":{"allow":["is_minimizable"],"deny":[]}},"allow-is-minimized":{"identifier":"allow-is-minimized","description":"Enables the is_minimized command without any pre-configured scope.","commands":{"allow":["is_minimized"],"deny":[]}},"allow-is-resizable":{"identifier":"allow-is-resizable","description":"Enables the is_resizable command without any pre-configured scope.","commands":{"allow":["is_resizable"],"deny":[]}},"allow-is-visible":{"identifier":"allow-is-visible","description":"Enables the is_visible command without any pre-configured scope.","commands":{"allow":["is_visible"],"deny":[]}},"allow-maximize":{"identifier":"allow-maximize","description":"Enables the maximize command without any pre-configured scope.","commands":{"allow":["maximize"],"deny":[]}},"allow-minimize":{"identifier":"allow-minimize","description":"Enables the minimize command without any pre-configured scope.","commands":{"allow":["minimize"],"deny":[]}},"allow-monitor-from-point":{"identifier":"allow-monitor-from-point","description":"Enables the monitor_from_point command without any pre-configured scope.","commands":{"allow":["monitor_from_point"],"deny":[]}},"allow-outer-position":{"identifier":"allow-outer-position","description":"Enables the outer_position command without any pre-configured scope.","commands":{"allow":["outer_position"],"deny":[]}},"allow-outer-size":{"identifier":"allow-outer-size","description":"Enables the outer_size command without any pre-configured scope.","commands":{"allow":["outer_size"],"deny":[]}},"allow-primary-monitor":{"identifier":"allow-primary-monitor","description":"Enables the primary_monitor command without any pre-configured scope.","commands":{"allow":["primary_monitor"],"deny":[]}},"allow-request-user-attention":{"identifier":"allow-request-user-attention","description":"Enables the request_user_attention command without any pre-configured scope.","commands":{"allow":["request_user_attention"],"deny":[]}},"allow-scale-factor":{"identifier":"allow-scale-factor","description":"Enables the scale_factor command without any pre-configured scope.","commands":{"allow":["scale_factor"],"deny":[]}},"allow-set-always-on-bottom":{"identifier":"allow-set-always-on-bottom","description":"Enables the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":["set_always_on_bottom"],"deny":[]}},"allow-set-always-on-top":{"identifier":"allow-set-always-on-top","description":"Enables the set_always_on_top command without any pre-configured scope.","commands":{"allow":["set_always_on_top"],"deny":[]}},"allow-set-background-color":{"identifier":"allow-set-background-color","description":"Enables the set_background_color command without any pre-configured scope.","commands":{"allow":["set_background_color"],"deny":[]}},"allow-set-badge-count":{"identifier":"allow-set-badge-count","description":"Enables the set_badge_count command without any pre-configured scope.","commands":{"allow":["set_badge_count"],"deny":[]}},"allow-set-badge-label":{"identifier":"allow-set-badge-label","description":"Enables the set_badge_label command without any pre-configured scope.","commands":{"allow":["set_badge_label"],"deny":[]}},"allow-set-closable":{"identifier":"allow-set-closable","description":"Enables the set_closable command without any pre-configured scope.","commands":{"allow":["set_closable"],"deny":[]}},"allow-set-content-protected":{"identifier":"allow-set-content-protected","description":"Enables the set_content_protected command without any pre-configured scope.","commands":{"allow":["set_content_protected"],"deny":[]}},"allow-set-cursor-grab":{"identifier":"allow-set-cursor-grab","description":"Enables the set_cursor_grab command without any pre-configured scope.","commands":{"allow":["set_cursor_grab"],"deny":[]}},"allow-set-cursor-icon":{"identifier":"allow-set-cursor-icon","description":"Enables the set_cursor_icon command without any pre-configured scope.","commands":{"allow":["set_cursor_icon"],"deny":[]}},"allow-set-cursor-position":{"identifier":"allow-set-cursor-position","description":"Enables the set_cursor_position command without any pre-configured scope.","commands":{"allow":["set_cursor_position"],"deny":[]}},"allow-set-cursor-visible":{"identifier":"allow-set-cursor-visible","description":"Enables the set_cursor_visible command without any pre-configured scope.","commands":{"allow":["set_cursor_visible"],"deny":[]}},"allow-set-decorations":{"identifier":"allow-set-decorations","description":"Enables the set_decorations command without any pre-configured scope.","commands":{"allow":["set_decorations"],"deny":[]}},"allow-set-effects":{"identifier":"allow-set-effects","description":"Enables the set_effects command without any pre-configured scope.","commands":{"allow":["set_effects"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-focus":{"identifier":"allow-set-focus","description":"Enables the set_focus command without any pre-configured scope.","commands":{"allow":["set_focus"],"deny":[]}},"allow-set-focusable":{"identifier":"allow-set-focusable","description":"Enables the set_focusable command without any pre-configured scope.","commands":{"allow":["set_focusable"],"deny":[]}},"allow-set-fullscreen":{"identifier":"allow-set-fullscreen","description":"Enables the set_fullscreen command without any pre-configured scope.","commands":{"allow":["set_fullscreen"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-ignore-cursor-events":{"identifier":"allow-set-ignore-cursor-events","description":"Enables the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":["set_ignore_cursor_events"],"deny":[]}},"allow-set-max-size":{"identifier":"allow-set-max-size","description":"Enables the set_max_size command without any pre-configured scope.","commands":{"allow":["set_max_size"],"deny":[]}},"allow-set-maximizable":{"identifier":"allow-set-maximizable","description":"Enables the set_maximizable command without any pre-configured scope.","commands":{"allow":["set_maximizable"],"deny":[]}},"allow-set-min-size":{"identifier":"allow-set-min-size","description":"Enables the set_min_size command without any pre-configured scope.","commands":{"allow":["set_min_size"],"deny":[]}},"allow-set-minimizable":{"identifier":"allow-set-minimizable","description":"Enables the set_minimizable command without any pre-configured scope.","commands":{"allow":["set_minimizable"],"deny":[]}},"allow-set-overlay-icon":{"identifier":"allow-set-overlay-icon","description":"Enables the set_overlay_icon command without any pre-configured scope.","commands":{"allow":["set_overlay_icon"],"deny":[]}},"allow-set-position":{"identifier":"allow-set-position","description":"Enables the set_position command without any pre-configured scope.","commands":{"allow":["set_position"],"deny":[]}},"allow-set-progress-bar":{"identifier":"allow-set-progress-bar","description":"Enables the set_progress_bar command without any pre-configured scope.","commands":{"allow":["set_progress_bar"],"deny":[]}},"allow-set-resizable":{"identifier":"allow-set-resizable","description":"Enables the set_resizable command without any pre-configured scope.","commands":{"allow":["set_resizable"],"deny":[]}},"allow-set-shadow":{"identifier":"allow-set-shadow","description":"Enables the set_shadow command without any pre-configured scope.","commands":{"allow":["set_shadow"],"deny":[]}},"allow-set-simple-fullscreen":{"identifier":"allow-set-simple-fullscreen","description":"Enables the set_simple_fullscreen command without any pre-configured scope.","commands":{"allow":["set_simple_fullscreen"],"deny":[]}},"allow-set-size":{"identifier":"allow-set-size","description":"Enables the set_size command without any pre-configured scope.","commands":{"allow":["set_size"],"deny":[]}},"allow-set-size-constraints":{"identifier":"allow-set-size-constraints","description":"Enables the set_size_constraints command without any pre-configured scope.","commands":{"allow":["set_size_constraints"],"deny":[]}},"allow-set-skip-taskbar":{"identifier":"allow-set-skip-taskbar","description":"Enables the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":["set_skip_taskbar"],"deny":[]}},"allow-set-theme":{"identifier":"allow-set-theme","description":"Enables the set_theme command without any pre-configured scope.","commands":{"allow":["set_theme"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-title-bar-style":{"identifier":"allow-set-title-bar-style","description":"Enables the set_title_bar_style command without any pre-configured scope.","commands":{"allow":["set_title_bar_style"],"deny":[]}},"allow-set-visible-on-all-workspaces":{"identifier":"allow-set-visible-on-all-workspaces","description":"Enables the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":["set_visible_on_all_workspaces"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"allow-start-dragging":{"identifier":"allow-start-dragging","description":"Enables the start_dragging command without any pre-configured scope.","commands":{"allow":["start_dragging"],"deny":[]}},"allow-start-resize-dragging":{"identifier":"allow-start-resize-dragging","description":"Enables the start_resize_dragging command without any pre-configured scope.","commands":{"allow":["start_resize_dragging"],"deny":[]}},"allow-theme":{"identifier":"allow-theme","description":"Enables the theme command without any pre-configured scope.","commands":{"allow":["theme"],"deny":[]}},"allow-title":{"identifier":"allow-title","description":"Enables the title command without any pre-configured scope.","commands":{"allow":["title"],"deny":[]}},"allow-toggle-maximize":{"identifier":"allow-toggle-maximize","description":"Enables the toggle_maximize command without any pre-configured scope.","commands":{"allow":["toggle_maximize"],"deny":[]}},"allow-unmaximize":{"identifier":"allow-unmaximize","description":"Enables the unmaximize command without any pre-configured scope.","commands":{"allow":["unmaximize"],"deny":[]}},"allow-unminimize":{"identifier":"allow-unminimize","description":"Enables the unminimize command without any pre-configured scope.","commands":{"allow":["unminimize"],"deny":[]}},"deny-available-monitors":{"identifier":"deny-available-monitors","description":"Denies the available_monitors command without any pre-configured scope.","commands":{"allow":[],"deny":["available_monitors"]}},"deny-center":{"identifier":"deny-center","description":"Denies the center command without any pre-configured scope.","commands":{"allow":[],"deny":["center"]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-current-monitor":{"identifier":"deny-current-monitor","description":"Denies the current_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["current_monitor"]}},"deny-cursor-position":{"identifier":"deny-cursor-position","description":"Denies the cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["cursor_position"]}},"deny-destroy":{"identifier":"deny-destroy","description":"Denies the destroy command without any pre-configured scope.","commands":{"allow":[],"deny":["destroy"]}},"deny-get-all-windows":{"identifier":"deny-get-all-windows","description":"Denies the get_all_windows command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_windows"]}},"deny-hide":{"identifier":"deny-hide","description":"Denies the hide command without any pre-configured scope.","commands":{"allow":[],"deny":["hide"]}},"deny-inner-position":{"identifier":"deny-inner-position","description":"Denies the inner_position command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_position"]}},"deny-inner-size":{"identifier":"deny-inner-size","description":"Denies the inner_size command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_size"]}},"deny-internal-toggle-maximize":{"identifier":"deny-internal-toggle-maximize","description":"Denies the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_maximize"]}},"deny-is-always-on-top":{"identifier":"deny-is-always-on-top","description":"Denies the is_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["is_always_on_top"]}},"deny-is-closable":{"identifier":"deny-is-closable","description":"Denies the is_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_closable"]}},"deny-is-decorated":{"identifier":"deny-is-decorated","description":"Denies the is_decorated command without any pre-configured scope.","commands":{"allow":[],"deny":["is_decorated"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-is-focused":{"identifier":"deny-is-focused","description":"Denies the is_focused command without any pre-configured scope.","commands":{"allow":[],"deny":["is_focused"]}},"deny-is-fullscreen":{"identifier":"deny-is-fullscreen","description":"Denies the is_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["is_fullscreen"]}},"deny-is-maximizable":{"identifier":"deny-is-maximizable","description":"Denies the is_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximizable"]}},"deny-is-maximized":{"identifier":"deny-is-maximized","description":"Denies the is_maximized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximized"]}},"deny-is-minimizable":{"identifier":"deny-is-minimizable","description":"Denies the is_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimizable"]}},"deny-is-minimized":{"identifier":"deny-is-minimized","description":"Denies the is_minimized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimized"]}},"deny-is-resizable":{"identifier":"deny-is-resizable","description":"Denies the is_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_resizable"]}},"deny-is-visible":{"identifier":"deny-is-visible","description":"Denies the is_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["is_visible"]}},"deny-maximize":{"identifier":"deny-maximize","description":"Denies the maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["maximize"]}},"deny-minimize":{"identifier":"deny-minimize","description":"Denies the minimize command without any pre-configured scope.","commands":{"allow":[],"deny":["minimize"]}},"deny-monitor-from-point":{"identifier":"deny-monitor-from-point","description":"Denies the monitor_from_point command without any pre-configured scope.","commands":{"allow":[],"deny":["monitor_from_point"]}},"deny-outer-position":{"identifier":"deny-outer-position","description":"Denies the outer_position command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_position"]}},"deny-outer-size":{"identifier":"deny-outer-size","description":"Denies the outer_size command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_size"]}},"deny-primary-monitor":{"identifier":"deny-primary-monitor","description":"Denies the primary_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["primary_monitor"]}},"deny-request-user-attention":{"identifier":"deny-request-user-attention","description":"Denies the request_user_attention command without any pre-configured scope.","commands":{"allow":[],"deny":["request_user_attention"]}},"deny-scale-factor":{"identifier":"deny-scale-factor","description":"Denies the scale_factor command without any pre-configured scope.","commands":{"allow":[],"deny":["scale_factor"]}},"deny-set-always-on-bottom":{"identifier":"deny-set-always-on-bottom","description":"Denies the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_bottom"]}},"deny-set-always-on-top":{"identifier":"deny-set-always-on-top","description":"Denies the set_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_top"]}},"deny-set-background-color":{"identifier":"deny-set-background-color","description":"Denies the set_background_color command without any pre-configured scope.","commands":{"allow":[],"deny":["set_background_color"]}},"deny-set-badge-count":{"identifier":"deny-set-badge-count","description":"Denies the set_badge_count command without any pre-configured scope.","commands":{"allow":[],"deny":["set_badge_count"]}},"deny-set-badge-label":{"identifier":"deny-set-badge-label","description":"Denies the set_badge_label command without any pre-configured scope.","commands":{"allow":[],"deny":["set_badge_label"]}},"deny-set-closable":{"identifier":"deny-set-closable","description":"Denies the set_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_closable"]}},"deny-set-content-protected":{"identifier":"deny-set-content-protected","description":"Denies the set_content_protected command without any pre-configured scope.","commands":{"allow":[],"deny":["set_content_protected"]}},"deny-set-cursor-grab":{"identifier":"deny-set-cursor-grab","description":"Denies the set_cursor_grab command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_grab"]}},"deny-set-cursor-icon":{"identifier":"deny-set-cursor-icon","description":"Denies the set_cursor_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_icon"]}},"deny-set-cursor-position":{"identifier":"deny-set-cursor-position","description":"Denies the set_cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_position"]}},"deny-set-cursor-visible":{"identifier":"deny-set-cursor-visible","description":"Denies the set_cursor_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_visible"]}},"deny-set-decorations":{"identifier":"deny-set-decorations","description":"Denies the set_decorations command without any pre-configured scope.","commands":{"allow":[],"deny":["set_decorations"]}},"deny-set-effects":{"identifier":"deny-set-effects","description":"Denies the set_effects command without any pre-configured scope.","commands":{"allow":[],"deny":["set_effects"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-focus":{"identifier":"deny-set-focus","description":"Denies the set_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focus"]}},"deny-set-focusable":{"identifier":"deny-set-focusable","description":"Denies the set_focusable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focusable"]}},"deny-set-fullscreen":{"identifier":"deny-set-fullscreen","description":"Denies the set_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_fullscreen"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-ignore-cursor-events":{"identifier":"deny-set-ignore-cursor-events","description":"Denies the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":[],"deny":["set_ignore_cursor_events"]}},"deny-set-max-size":{"identifier":"deny-set-max-size","description":"Denies the set_max_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_max_size"]}},"deny-set-maximizable":{"identifier":"deny-set-maximizable","description":"Denies the set_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_maximizable"]}},"deny-set-min-size":{"identifier":"deny-set-min-size","description":"Denies the set_min_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_min_size"]}},"deny-set-minimizable":{"identifier":"deny-set-minimizable","description":"Denies the set_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_minimizable"]}},"deny-set-overlay-icon":{"identifier":"deny-set-overlay-icon","description":"Denies the set_overlay_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_overlay_icon"]}},"deny-set-position":{"identifier":"deny-set-position","description":"Denies the set_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_position"]}},"deny-set-progress-bar":{"identifier":"deny-set-progress-bar","description":"Denies the set_progress_bar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_progress_bar"]}},"deny-set-resizable":{"identifier":"deny-set-resizable","description":"Denies the set_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_resizable"]}},"deny-set-shadow":{"identifier":"deny-set-shadow","description":"Denies the set_shadow command without any pre-configured scope.","commands":{"allow":[],"deny":["set_shadow"]}},"deny-set-simple-fullscreen":{"identifier":"deny-set-simple-fullscreen","description":"Denies the set_simple_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_simple_fullscreen"]}},"deny-set-size":{"identifier":"deny-set-size","description":"Denies the set_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size"]}},"deny-set-size-constraints":{"identifier":"deny-set-size-constraints","description":"Denies the set_size_constraints command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size_constraints"]}},"deny-set-skip-taskbar":{"identifier":"deny-set-skip-taskbar","description":"Denies the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_skip_taskbar"]}},"deny-set-theme":{"identifier":"deny-set-theme","description":"Denies the set_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_theme"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-title-bar-style":{"identifier":"deny-set-title-bar-style","description":"Denies the set_title_bar_style command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title_bar_style"]}},"deny-set-visible-on-all-workspaces":{"identifier":"deny-set-visible-on-all-workspaces","description":"Denies the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible_on_all_workspaces"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}},"deny-start-dragging":{"identifier":"deny-start-dragging","description":"Denies the start_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_dragging"]}},"deny-start-resize-dragging":{"identifier":"deny-start-resize-dragging","description":"Denies the start_resize_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_resize_dragging"]}},"deny-theme":{"identifier":"deny-theme","description":"Denies the theme command without any pre-configured scope.","commands":{"allow":[],"deny":["theme"]}},"deny-title":{"identifier":"deny-title","description":"Denies the title command without any pre-configured scope.","commands":{"allow":[],"deny":["title"]}},"deny-toggle-maximize":{"identifier":"deny-toggle-maximize","description":"Denies the toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["toggle_maximize"]}},"deny-unmaximize":{"identifier":"deny-unmaximize","description":"Denies the unmaximize command without any pre-configured scope.","commands":{"allow":[],"deny":["unmaximize"]}},"deny-unminimize":{"identifier":"deny-unminimize","description":"Denies the unminimize command without any pre-configured scope.","commands":{"allow":[],"deny":["unminimize"]}}},"permission_sets":{},"global_scope_schema":null},"http":{"default_permission":{"identifier":"default","description":"This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n","permissions":["allow-fetch","allow-fetch-cancel","allow-fetch-read-body","allow-fetch-send"]},"permissions":{"allow-fetch":{"identifier":"allow-fetch","description":"Enables the fetch command without any pre-configured scope.","commands":{"allow":["fetch"],"deny":[]}},"allow-fetch-cancel":{"identifier":"allow-fetch-cancel","description":"Enables the fetch_cancel command without any pre-configured scope.","commands":{"allow":["fetch_cancel"],"deny":[]}},"allow-fetch-read-body":{"identifier":"allow-fetch-read-body","description":"Enables the fetch_read_body command without any pre-configured scope.","commands":{"allow":["fetch_read_body"],"deny":[]}},"allow-fetch-send":{"identifier":"allow-fetch-send","description":"Enables the fetch_send command without any pre-configured scope.","commands":{"allow":["fetch_send"],"deny":[]}},"deny-fetch":{"identifier":"deny-fetch","description":"Denies the fetch command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch"]}},"deny-fetch-cancel":{"identifier":"deny-fetch-cancel","description":"Denies the fetch_cancel command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_cancel"]}},"deny-fetch-read-body":{"identifier":"deny-fetch-read-body","description":"Denies the fetch_read_body command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_read_body"]}},"deny-fetch-send":{"identifier":"deny-fetch-send","description":"Denies the fetch_send command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_send"]}}},"permission_sets":{},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","anyOf":[{"description":"A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"","type":"string"},{"properties":{"url":{"description":"A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"","type":"string"}},"required":["url"],"type":"object"}],"description":"HTTP scope entry.","title":"HttpScopeEntry"}},"process":{"default_permission":{"identifier":"default","description":"This permission set configures which\nprocess features are by default exposed.\n\n#### Granted Permissions\n\nThis enables to quit via `allow-exit` and restart via `allow-restart`\nthe application.\n","permissions":["allow-exit","allow-restart"]},"permissions":{"allow-exit":{"identifier":"allow-exit","description":"Enables the exit command without any pre-configured scope.","commands":{"allow":["exit"],"deny":[]}},"allow-restart":{"identifier":"allow-restart","description":"Enables the restart command without any pre-configured scope.","commands":{"allow":["restart"],"deny":[]}},"deny-exit":{"identifier":"deny-exit","description":"Denies the exit command without any pre-configured scope.","commands":{"allow":[],"deny":["exit"]}},"deny-restart":{"identifier":"deny-restart","description":"Denies the restart command without any pre-configured scope.","commands":{"allow":[],"deny":["restart"]}}},"permission_sets":{},"global_scope_schema":null},"shell":{"default_permission":{"identifier":"default","description":"This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n","permissions":["allow-open"]},"permissions":{"allow-execute":{"identifier":"allow-execute","description":"Enables the execute command without any pre-configured scope.","commands":{"allow":["execute"],"deny":[]}},"allow-kill":{"identifier":"allow-kill","description":"Enables the kill command without any pre-configured scope.","commands":{"allow":["kill"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-spawn":{"identifier":"allow-spawn","description":"Enables the spawn command without any pre-configured scope.","commands":{"allow":["spawn"],"deny":[]}},"allow-stdin-write":{"identifier":"allow-stdin-write","description":"Enables the stdin_write command without any pre-configured scope.","commands":{"allow":["stdin_write"],"deny":[]}},"deny-execute":{"identifier":"deny-execute","description":"Denies the execute command without any pre-configured scope.","commands":{"allow":[],"deny":["execute"]}},"deny-kill":{"identifier":"deny-kill","description":"Denies the kill command without any pre-configured scope.","commands":{"allow":[],"deny":["kill"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-spawn":{"identifier":"deny-spawn","description":"Denies the spawn command without any pre-configured scope.","commands":{"allow":[],"deny":["spawn"]}},"deny-stdin-write":{"identifier":"deny-stdin-write","description":"Denies the stdin_write command without any pre-configured scope.","commands":{"allow":[],"deny":["stdin_write"]}}},"permission_sets":{},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","anyOf":[{"additionalProperties":false,"properties":{"args":{"allOf":[{"$ref":"#/definitions/ShellScopeEntryAllowedArgs"}],"description":"The allowed arguments for the command execution."},"cmd":{"description":"The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.","type":"string"},"name":{"description":"The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.","type":"string"}},"required":["cmd","name"],"type":"object"},{"additionalProperties":false,"properties":{"args":{"allOf":[{"$ref":"#/definitions/ShellScopeEntryAllowedArgs"}],"description":"The allowed arguments for the command execution."},"name":{"description":"The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.","type":"string"},"sidecar":{"description":"If this command is a sidecar command.","type":"boolean"}},"required":["name","sidecar"],"type":"object"}],"definitions":{"ShellScopeEntryAllowedArg":{"anyOf":[{"description":"A non-configurable argument that is passed to the command in the order it was specified.","type":"string"},{"additionalProperties":false,"description":"A variable that is set while calling the command from the webview API.","properties":{"raw":{"default":false,"description":"Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.","type":"boolean"},"validator":{"description":"[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: <https://docs.rs/regex/latest/regex/#syntax>","type":"string"}},"required":["validator"],"type":"object"}],"description":"A command argument allowed to be executed by the webview API."},"ShellScopeEntryAllowedArgs":{"anyOf":[{"description":"Use a simple boolean to allow all or disable all arguments to this command configuration.","type":"boolean"},{"description":"A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.","items":{"$ref":"#/definitions/ShellScopeEntryAllowedArg"},"type":"array"}],"description":"A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration."}},"description":"Shell scope entry.","title":"ShellScopeEntry"}}}
+50
-56
src-tauri/gen/schemas/desktop-schema.json
+50
-56
src-tauri/gen/schemas/desktop-schema.json
···
519
"markdownDescription": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`"
520
},
521
{
522
-
"description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`",
523
"type": "string",
524
"const": "core:app:default",
525
-
"markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`"
526
},
527
{
528
"description": "Enables the app_hide command without any pre-configured scope.",
···
567
"markdownDescription": "Enables the name command without any pre-configured scope."
568
},
569
{
570
"description": "Enables the remove_data_store command without any pre-configured scope.",
571
"type": "string",
572
"const": "core:app:allow-remove-data-store",
573
"markdownDescription": "Enables the remove_data_store command without any pre-configured scope."
574
},
575
{
576
"description": "Enables the set_app_theme command without any pre-configured scope.",
577
"type": "string",
578
"const": "core:app:allow-set-app-theme",
···
639
"markdownDescription": "Denies the name command without any pre-configured scope."
640
},
641
{
642
"description": "Denies the remove_data_store command without any pre-configured scope.",
643
"type": "string",
644
"const": "core:app:deny-remove-data-store",
645
"markdownDescription": "Denies the remove_data_store command without any pre-configured scope."
646
},
647
{
648
"description": "Denies the set_app_theme command without any pre-configured scope.",
···
1827
"markdownDescription": "Enables the set_focus command without any pre-configured scope."
1828
},
1829
{
1830
"description": "Enables the set_fullscreen command without any pre-configured scope.",
1831
"type": "string",
1832
"const": "core:window:allow-set-fullscreen",
···
1897
"type": "string",
1898
"const": "core:window:allow-set-shadow",
1899
"markdownDescription": "Enables the set_shadow command without any pre-configured scope."
1900
},
1901
{
1902
"description": "Enables the set_size command without any pre-configured scope.",
···
2271
"markdownDescription": "Denies the set_focus command without any pre-configured scope."
2272
},
2273
{
2274
"description": "Denies the set_fullscreen command without any pre-configured scope.",
2275
"type": "string",
2276
"const": "core:window:deny-set-fullscreen",
···
2341
"type": "string",
2342
"const": "core:window:deny-set-shadow",
2343
"markdownDescription": "Denies the set_shadow command without any pre-configured scope."
2344
},
2345
{
2346
"description": "Denies the set_size command without any pre-configured scope.",
···
2431
"type": "string",
2432
"const": "core:window:deny-unminimize",
2433
"markdownDescription": "Denies the unminimize command without any pre-configured scope."
2434
-
},
2435
-
{
2436
-
"description": "Allows reading the opened deep link via the get_current command\n#### This default permission set includes:\n\n- `allow-get-current`",
2437
-
"type": "string",
2438
-
"const": "deep-link:default",
2439
-
"markdownDescription": "Allows reading the opened deep link via the get_current command\n#### This default permission set includes:\n\n- `allow-get-current`"
2440
-
},
2441
-
{
2442
-
"description": "Enables the get_current command without any pre-configured scope.",
2443
-
"type": "string",
2444
-
"const": "deep-link:allow-get-current",
2445
-
"markdownDescription": "Enables the get_current command without any pre-configured scope."
2446
-
},
2447
-
{
2448
-
"description": "Enables the is_registered command without any pre-configured scope.",
2449
-
"type": "string",
2450
-
"const": "deep-link:allow-is-registered",
2451
-
"markdownDescription": "Enables the is_registered command without any pre-configured scope."
2452
-
},
2453
-
{
2454
-
"description": "Enables the register command without any pre-configured scope.",
2455
-
"type": "string",
2456
-
"const": "deep-link:allow-register",
2457
-
"markdownDescription": "Enables the register command without any pre-configured scope."
2458
-
},
2459
-
{
2460
-
"description": "Enables the unregister command without any pre-configured scope.",
2461
-
"type": "string",
2462
-
"const": "deep-link:allow-unregister",
2463
-
"markdownDescription": "Enables the unregister command without any pre-configured scope."
2464
-
},
2465
-
{
2466
-
"description": "Denies the get_current command without any pre-configured scope.",
2467
-
"type": "string",
2468
-
"const": "deep-link:deny-get-current",
2469
-
"markdownDescription": "Denies the get_current command without any pre-configured scope."
2470
-
},
2471
-
{
2472
-
"description": "Denies the is_registered command without any pre-configured scope.",
2473
-
"type": "string",
2474
-
"const": "deep-link:deny-is-registered",
2475
-
"markdownDescription": "Denies the is_registered command without any pre-configured scope."
2476
-
},
2477
-
{
2478
-
"description": "Denies the register command without any pre-configured scope.",
2479
-
"type": "string",
2480
-
"const": "deep-link:deny-register",
2481
-
"markdownDescription": "Denies the register command without any pre-configured scope."
2482
-
},
2483
-
{
2484
-
"description": "Denies the unregister command without any pre-configured scope.",
2485
-
"type": "string",
2486
-
"const": "deep-link:deny-unregister",
2487
-
"markdownDescription": "Denies the unregister command without any pre-configured scope."
2488
},
2489
{
2490
"description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`",
···
519
"markdownDescription": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`"
520
},
521
{
522
+
"description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`",
523
"type": "string",
524
"const": "core:app:default",
525
+
"markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`"
526
},
527
{
528
"description": "Enables the app_hide command without any pre-configured scope.",
···
567
"markdownDescription": "Enables the name command without any pre-configured scope."
568
},
569
{
570
+
"description": "Enables the register_listener command without any pre-configured scope.",
571
+
"type": "string",
572
+
"const": "core:app:allow-register-listener",
573
+
"markdownDescription": "Enables the register_listener command without any pre-configured scope."
574
+
},
575
+
{
576
"description": "Enables the remove_data_store command without any pre-configured scope.",
577
"type": "string",
578
"const": "core:app:allow-remove-data-store",
579
"markdownDescription": "Enables the remove_data_store command without any pre-configured scope."
580
},
581
{
582
+
"description": "Enables the remove_listener command without any pre-configured scope.",
583
+
"type": "string",
584
+
"const": "core:app:allow-remove-listener",
585
+
"markdownDescription": "Enables the remove_listener command without any pre-configured scope."
586
+
},
587
+
{
588
"description": "Enables the set_app_theme command without any pre-configured scope.",
589
"type": "string",
590
"const": "core:app:allow-set-app-theme",
···
651
"markdownDescription": "Denies the name command without any pre-configured scope."
652
},
653
{
654
+
"description": "Denies the register_listener command without any pre-configured scope.",
655
+
"type": "string",
656
+
"const": "core:app:deny-register-listener",
657
+
"markdownDescription": "Denies the register_listener command without any pre-configured scope."
658
+
},
659
+
{
660
"description": "Denies the remove_data_store command without any pre-configured scope.",
661
"type": "string",
662
"const": "core:app:deny-remove-data-store",
663
"markdownDescription": "Denies the remove_data_store command without any pre-configured scope."
664
+
},
665
+
{
666
+
"description": "Denies the remove_listener command without any pre-configured scope.",
667
+
"type": "string",
668
+
"const": "core:app:deny-remove-listener",
669
+
"markdownDescription": "Denies the remove_listener command without any pre-configured scope."
670
},
671
{
672
"description": "Denies the set_app_theme command without any pre-configured scope.",
···
1851
"markdownDescription": "Enables the set_focus command without any pre-configured scope."
1852
},
1853
{
1854
+
"description": "Enables the set_focusable command without any pre-configured scope.",
1855
+
"type": "string",
1856
+
"const": "core:window:allow-set-focusable",
1857
+
"markdownDescription": "Enables the set_focusable command without any pre-configured scope."
1858
+
},
1859
+
{
1860
"description": "Enables the set_fullscreen command without any pre-configured scope.",
1861
"type": "string",
1862
"const": "core:window:allow-set-fullscreen",
···
1927
"type": "string",
1928
"const": "core:window:allow-set-shadow",
1929
"markdownDescription": "Enables the set_shadow command without any pre-configured scope."
1930
+
},
1931
+
{
1932
+
"description": "Enables the set_simple_fullscreen command without any pre-configured scope.",
1933
+
"type": "string",
1934
+
"const": "core:window:allow-set-simple-fullscreen",
1935
+
"markdownDescription": "Enables the set_simple_fullscreen command without any pre-configured scope."
1936
},
1937
{
1938
"description": "Enables the set_size command without any pre-configured scope.",
···
2307
"markdownDescription": "Denies the set_focus command without any pre-configured scope."
2308
},
2309
{
2310
+
"description": "Denies the set_focusable command without any pre-configured scope.",
2311
+
"type": "string",
2312
+
"const": "core:window:deny-set-focusable",
2313
+
"markdownDescription": "Denies the set_focusable command without any pre-configured scope."
2314
+
},
2315
+
{
2316
"description": "Denies the set_fullscreen command without any pre-configured scope.",
2317
"type": "string",
2318
"const": "core:window:deny-set-fullscreen",
···
2383
"type": "string",
2384
"const": "core:window:deny-set-shadow",
2385
"markdownDescription": "Denies the set_shadow command without any pre-configured scope."
2386
+
},
2387
+
{
2388
+
"description": "Denies the set_simple_fullscreen command without any pre-configured scope.",
2389
+
"type": "string",
2390
+
"const": "core:window:deny-set-simple-fullscreen",
2391
+
"markdownDescription": "Denies the set_simple_fullscreen command without any pre-configured scope."
2392
},
2393
{
2394
"description": "Denies the set_size command without any pre-configured scope.",
···
2479
"type": "string",
2480
"const": "core:window:deny-unminimize",
2481
"markdownDescription": "Denies the unminimize command without any pre-configured scope."
2482
},
2483
{
2484
"description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`",
+50
-56
src-tauri/gen/schemas/linux-schema.json
+50
-56
src-tauri/gen/schemas/linux-schema.json
···
519
"markdownDescription": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`"
520
},
521
{
522
-
"description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`",
523
"type": "string",
524
"const": "core:app:default",
525
-
"markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`"
526
},
527
{
528
"description": "Enables the app_hide command without any pre-configured scope.",
···
567
"markdownDescription": "Enables the name command without any pre-configured scope."
568
},
569
{
570
"description": "Enables the remove_data_store command without any pre-configured scope.",
571
"type": "string",
572
"const": "core:app:allow-remove-data-store",
573
"markdownDescription": "Enables the remove_data_store command without any pre-configured scope."
574
},
575
{
576
"description": "Enables the set_app_theme command without any pre-configured scope.",
577
"type": "string",
578
"const": "core:app:allow-set-app-theme",
···
639
"markdownDescription": "Denies the name command without any pre-configured scope."
640
},
641
{
642
"description": "Denies the remove_data_store command without any pre-configured scope.",
643
"type": "string",
644
"const": "core:app:deny-remove-data-store",
645
"markdownDescription": "Denies the remove_data_store command without any pre-configured scope."
646
},
647
{
648
"description": "Denies the set_app_theme command without any pre-configured scope.",
···
1827
"markdownDescription": "Enables the set_focus command without any pre-configured scope."
1828
},
1829
{
1830
"description": "Enables the set_fullscreen command without any pre-configured scope.",
1831
"type": "string",
1832
"const": "core:window:allow-set-fullscreen",
···
1897
"type": "string",
1898
"const": "core:window:allow-set-shadow",
1899
"markdownDescription": "Enables the set_shadow command without any pre-configured scope."
1900
},
1901
{
1902
"description": "Enables the set_size command without any pre-configured scope.",
···
2271
"markdownDescription": "Denies the set_focus command without any pre-configured scope."
2272
},
2273
{
2274
"description": "Denies the set_fullscreen command without any pre-configured scope.",
2275
"type": "string",
2276
"const": "core:window:deny-set-fullscreen",
···
2341
"type": "string",
2342
"const": "core:window:deny-set-shadow",
2343
"markdownDescription": "Denies the set_shadow command without any pre-configured scope."
2344
},
2345
{
2346
"description": "Denies the set_size command without any pre-configured scope.",
···
2431
"type": "string",
2432
"const": "core:window:deny-unminimize",
2433
"markdownDescription": "Denies the unminimize command without any pre-configured scope."
2434
-
},
2435
-
{
2436
-
"description": "Allows reading the opened deep link via the get_current command\n#### This default permission set includes:\n\n- `allow-get-current`",
2437
-
"type": "string",
2438
-
"const": "deep-link:default",
2439
-
"markdownDescription": "Allows reading the opened deep link via the get_current command\n#### This default permission set includes:\n\n- `allow-get-current`"
2440
-
},
2441
-
{
2442
-
"description": "Enables the get_current command without any pre-configured scope.",
2443
-
"type": "string",
2444
-
"const": "deep-link:allow-get-current",
2445
-
"markdownDescription": "Enables the get_current command without any pre-configured scope."
2446
-
},
2447
-
{
2448
-
"description": "Enables the is_registered command without any pre-configured scope.",
2449
-
"type": "string",
2450
-
"const": "deep-link:allow-is-registered",
2451
-
"markdownDescription": "Enables the is_registered command without any pre-configured scope."
2452
-
},
2453
-
{
2454
-
"description": "Enables the register command without any pre-configured scope.",
2455
-
"type": "string",
2456
-
"const": "deep-link:allow-register",
2457
-
"markdownDescription": "Enables the register command without any pre-configured scope."
2458
-
},
2459
-
{
2460
-
"description": "Enables the unregister command without any pre-configured scope.",
2461
-
"type": "string",
2462
-
"const": "deep-link:allow-unregister",
2463
-
"markdownDescription": "Enables the unregister command without any pre-configured scope."
2464
-
},
2465
-
{
2466
-
"description": "Denies the get_current command without any pre-configured scope.",
2467
-
"type": "string",
2468
-
"const": "deep-link:deny-get-current",
2469
-
"markdownDescription": "Denies the get_current command without any pre-configured scope."
2470
-
},
2471
-
{
2472
-
"description": "Denies the is_registered command without any pre-configured scope.",
2473
-
"type": "string",
2474
-
"const": "deep-link:deny-is-registered",
2475
-
"markdownDescription": "Denies the is_registered command without any pre-configured scope."
2476
-
},
2477
-
{
2478
-
"description": "Denies the register command without any pre-configured scope.",
2479
-
"type": "string",
2480
-
"const": "deep-link:deny-register",
2481
-
"markdownDescription": "Denies the register command without any pre-configured scope."
2482
-
},
2483
-
{
2484
-
"description": "Denies the unregister command without any pre-configured scope.",
2485
-
"type": "string",
2486
-
"const": "deep-link:deny-unregister",
2487
-
"markdownDescription": "Denies the unregister command without any pre-configured scope."
2488
},
2489
{
2490
"description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`",
···
519
"markdownDescription": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`"
520
},
521
{
522
+
"description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`",
523
"type": "string",
524
"const": "core:app:default",
525
+
"markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`"
526
},
527
{
528
"description": "Enables the app_hide command without any pre-configured scope.",
···
567
"markdownDescription": "Enables the name command without any pre-configured scope."
568
},
569
{
570
+
"description": "Enables the register_listener command without any pre-configured scope.",
571
+
"type": "string",
572
+
"const": "core:app:allow-register-listener",
573
+
"markdownDescription": "Enables the register_listener command without any pre-configured scope."
574
+
},
575
+
{
576
"description": "Enables the remove_data_store command without any pre-configured scope.",
577
"type": "string",
578
"const": "core:app:allow-remove-data-store",
579
"markdownDescription": "Enables the remove_data_store command without any pre-configured scope."
580
},
581
{
582
+
"description": "Enables the remove_listener command without any pre-configured scope.",
583
+
"type": "string",
584
+
"const": "core:app:allow-remove-listener",
585
+
"markdownDescription": "Enables the remove_listener command without any pre-configured scope."
586
+
},
587
+
{
588
"description": "Enables the set_app_theme command without any pre-configured scope.",
589
"type": "string",
590
"const": "core:app:allow-set-app-theme",
···
651
"markdownDescription": "Denies the name command without any pre-configured scope."
652
},
653
{
654
+
"description": "Denies the register_listener command without any pre-configured scope.",
655
+
"type": "string",
656
+
"const": "core:app:deny-register-listener",
657
+
"markdownDescription": "Denies the register_listener command without any pre-configured scope."
658
+
},
659
+
{
660
"description": "Denies the remove_data_store command without any pre-configured scope.",
661
"type": "string",
662
"const": "core:app:deny-remove-data-store",
663
"markdownDescription": "Denies the remove_data_store command without any pre-configured scope."
664
+
},
665
+
{
666
+
"description": "Denies the remove_listener command without any pre-configured scope.",
667
+
"type": "string",
668
+
"const": "core:app:deny-remove-listener",
669
+
"markdownDescription": "Denies the remove_listener command without any pre-configured scope."
670
},
671
{
672
"description": "Denies the set_app_theme command without any pre-configured scope.",
···
1851
"markdownDescription": "Enables the set_focus command without any pre-configured scope."
1852
},
1853
{
1854
+
"description": "Enables the set_focusable command without any pre-configured scope.",
1855
+
"type": "string",
1856
+
"const": "core:window:allow-set-focusable",
1857
+
"markdownDescription": "Enables the set_focusable command without any pre-configured scope."
1858
+
},
1859
+
{
1860
"description": "Enables the set_fullscreen command without any pre-configured scope.",
1861
"type": "string",
1862
"const": "core:window:allow-set-fullscreen",
···
1927
"type": "string",
1928
"const": "core:window:allow-set-shadow",
1929
"markdownDescription": "Enables the set_shadow command without any pre-configured scope."
1930
+
},
1931
+
{
1932
+
"description": "Enables the set_simple_fullscreen command without any pre-configured scope.",
1933
+
"type": "string",
1934
+
"const": "core:window:allow-set-simple-fullscreen",
1935
+
"markdownDescription": "Enables the set_simple_fullscreen command without any pre-configured scope."
1936
},
1937
{
1938
"description": "Enables the set_size command without any pre-configured scope.",
···
2307
"markdownDescription": "Denies the set_focus command without any pre-configured scope."
2308
},
2309
{
2310
+
"description": "Denies the set_focusable command without any pre-configured scope.",
2311
+
"type": "string",
2312
+
"const": "core:window:deny-set-focusable",
2313
+
"markdownDescription": "Denies the set_focusable command without any pre-configured scope."
2314
+
},
2315
+
{
2316
"description": "Denies the set_fullscreen command without any pre-configured scope.",
2317
"type": "string",
2318
"const": "core:window:deny-set-fullscreen",
···
2383
"type": "string",
2384
"const": "core:window:deny-set-shadow",
2385
"markdownDescription": "Denies the set_shadow command without any pre-configured scope."
2386
+
},
2387
+
{
2388
+
"description": "Denies the set_simple_fullscreen command without any pre-configured scope.",
2389
+
"type": "string",
2390
+
"const": "core:window:deny-set-simple-fullscreen",
2391
+
"markdownDescription": "Denies the set_simple_fullscreen command without any pre-configured scope."
2392
},
2393
{
2394
"description": "Denies the set_size command without any pre-configured scope.",
···
2479
"type": "string",
2480
"const": "core:window:deny-unminimize",
2481
"markdownDescription": "Denies the unminimize command without any pre-configured scope."
2482
},
2483
{
2484
"description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`",
+894
-406
src-tauri/gen/schemas/windows-schema.json
+894
-406
src-tauri/gen/schemas/windows-schema.json
···
37
],
38
"definitions": {
39
"Capability": {
40
-
"description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, \"platforms\": [\"macOS\",\"windows\"] } ```",
41
"type": "object",
42
"required": [
43
"identifier",
···
49
"type": "string"
50
},
51
"description": {
52
-
"description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.",
53
"default": "",
54
"type": "string"
55
},
···
70
"type": "boolean"
71
},
72
"windows": {
73
-
"description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nOn multiwebview windows, prefer [`Self::webviews`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`",
74
"type": "array",
75
"items": {
76
"type": "string"
77
}
78
},
79
"webviews": {
80
-
"description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThis is only required when using on multiwebview contexts, by default all child webviews of a window that matches [`Self::windows`] are linked.\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`",
81
"type": "array",
82
"items": {
83
"type": "string"
84
}
85
},
86
"permissions": {
87
-
"description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ```",
88
"type": "array",
89
"items": {
90
"$ref": "#/definitions/PermissionEntry"
···
140
"identifier": {
141
"anyOf": [
142
{
143
-
"description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n",
144
"type": "string",
145
-
"const": "http:default"
146
},
147
{
148
"description": "Enables the fetch command without any pre-configured scope.",
149
"type": "string",
150
-
"const": "http:allow-fetch"
151
},
152
{
153
"description": "Enables the fetch_cancel command without any pre-configured scope.",
154
"type": "string",
155
-
"const": "http:allow-fetch-cancel"
156
},
157
{
158
"description": "Enables the fetch_read_body command without any pre-configured scope.",
159
"type": "string",
160
-
"const": "http:allow-fetch-read-body"
161
},
162
{
163
"description": "Enables the fetch_send command without any pre-configured scope.",
164
"type": "string",
165
-
"const": "http:allow-fetch-send"
166
},
167
{
168
"description": "Denies the fetch command without any pre-configured scope.",
169
"type": "string",
170
-
"const": "http:deny-fetch"
171
},
172
{
173
"description": "Denies the fetch_cancel command without any pre-configured scope.",
174
"type": "string",
175
-
"const": "http:deny-fetch-cancel"
176
},
177
{
178
"description": "Denies the fetch_read_body command without any pre-configured scope.",
179
"type": "string",
180
-
"const": "http:deny-fetch-read-body"
181
},
182
{
183
"description": "Denies the fetch_send command without any pre-configured scope.",
184
"type": "string",
185
-
"const": "http:deny-fetch-send"
186
}
187
]
188
}
···
257
"identifier": {
258
"anyOf": [
259
{
260
-
"description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n",
261
"type": "string",
262
-
"const": "shell:default"
263
},
264
{
265
"description": "Enables the execute command without any pre-configured scope.",
266
"type": "string",
267
-
"const": "shell:allow-execute"
268
},
269
{
270
"description": "Enables the kill command without any pre-configured scope.",
271
"type": "string",
272
-
"const": "shell:allow-kill"
273
},
274
{
275
"description": "Enables the open command without any pre-configured scope.",
276
"type": "string",
277
-
"const": "shell:allow-open"
278
},
279
{
280
"description": "Enables the spawn command without any pre-configured scope.",
281
"type": "string",
282
-
"const": "shell:allow-spawn"
283
},
284
{
285
"description": "Enables the stdin_write command without any pre-configured scope.",
286
"type": "string",
287
-
"const": "shell:allow-stdin-write"
288
},
289
{
290
"description": "Denies the execute command without any pre-configured scope.",
291
"type": "string",
292
-
"const": "shell:deny-execute"
293
},
294
{
295
"description": "Denies the kill command without any pre-configured scope.",
296
"type": "string",
297
-
"const": "shell:deny-kill"
298
},
299
{
300
"description": "Denies the open command without any pre-configured scope.",
301
"type": "string",
302
-
"const": "shell:deny-open"
303
},
304
{
305
"description": "Denies the spawn command without any pre-configured scope.",
306
"type": "string",
307
-
"const": "shell:deny-spawn"
308
},
309
{
310
"description": "Denies the stdin_write command without any pre-configured scope.",
311
"type": "string",
312
-
"const": "shell:deny-stdin-write"
313
}
314
]
315
}
···
493
"description": "Permission identifier",
494
"oneOf": [
495
{
496
-
"description": "Default core plugins set which includes:\n- 'core:path:default'\n- 'core:event:default'\n- 'core:window:default'\n- 'core:webview:default'\n- 'core:app:default'\n- 'core:image:default'\n- 'core:resources:default'\n- 'core:menu:default'\n- 'core:tray:default'\n",
497
"type": "string",
498
-
"const": "core:default"
499
},
500
{
501
-
"description": "Default permissions for the plugin.",
502
"type": "string",
503
-
"const": "core:app:default"
504
},
505
{
506
"description": "Enables the app_hide command without any pre-configured scope.",
507
"type": "string",
508
-
"const": "core:app:allow-app-hide"
509
},
510
{
511
"description": "Enables the app_show command without any pre-configured scope.",
512
"type": "string",
513
-
"const": "core:app:allow-app-show"
514
},
515
{
516
"description": "Enables the default_window_icon command without any pre-configured scope.",
517
"type": "string",
518
-
"const": "core:app:allow-default-window-icon"
519
},
520
{
521
"description": "Enables the name command without any pre-configured scope.",
522
"type": "string",
523
-
"const": "core:app:allow-name"
524
},
525
{
526
"description": "Enables the set_app_theme command without any pre-configured scope.",
527
"type": "string",
528
-
"const": "core:app:allow-set-app-theme"
529
},
530
{
531
"description": "Enables the tauri_version command without any pre-configured scope.",
532
"type": "string",
533
-
"const": "core:app:allow-tauri-version"
534
},
535
{
536
"description": "Enables the version command without any pre-configured scope.",
537
"type": "string",
538
-
"const": "core:app:allow-version"
539
},
540
{
541
"description": "Denies the app_hide command without any pre-configured scope.",
542
"type": "string",
543
-
"const": "core:app:deny-app-hide"
544
},
545
{
546
"description": "Denies the app_show command without any pre-configured scope.",
547
"type": "string",
548
-
"const": "core:app:deny-app-show"
549
},
550
{
551
"description": "Denies the default_window_icon command without any pre-configured scope.",
552
"type": "string",
553
-
"const": "core:app:deny-default-window-icon"
554
},
555
{
556
"description": "Denies the name command without any pre-configured scope.",
557
"type": "string",
558
-
"const": "core:app:deny-name"
559
},
560
{
561
"description": "Denies the set_app_theme command without any pre-configured scope.",
562
"type": "string",
563
-
"const": "core:app:deny-set-app-theme"
564
},
565
{
566
"description": "Denies the tauri_version command without any pre-configured scope.",
567
"type": "string",
568
-
"const": "core:app:deny-tauri-version"
569
},
570
{
571
"description": "Denies the version command without any pre-configured scope.",
572
"type": "string",
573
-
"const": "core:app:deny-version"
574
},
575
{
576
-
"description": "Default permissions for the plugin.",
577
"type": "string",
578
-
"const": "core:event:default"
579
},
580
{
581
"description": "Enables the emit command without any pre-configured scope.",
582
"type": "string",
583
-
"const": "core:event:allow-emit"
584
},
585
{
586
"description": "Enables the emit_to command without any pre-configured scope.",
587
"type": "string",
588
-
"const": "core:event:allow-emit-to"
589
},
590
{
591
"description": "Enables the listen command without any pre-configured scope.",
592
"type": "string",
593
-
"const": "core:event:allow-listen"
594
},
595
{
596
"description": "Enables the unlisten command without any pre-configured scope.",
597
"type": "string",
598
-
"const": "core:event:allow-unlisten"
599
},
600
{
601
"description": "Denies the emit command without any pre-configured scope.",
602
"type": "string",
603
-
"const": "core:event:deny-emit"
604
},
605
{
606
"description": "Denies the emit_to command without any pre-configured scope.",
607
"type": "string",
608
-
"const": "core:event:deny-emit-to"
609
},
610
{
611
"description": "Denies the listen command without any pre-configured scope.",
612
"type": "string",
613
-
"const": "core:event:deny-listen"
614
},
615
{
616
"description": "Denies the unlisten command without any pre-configured scope.",
617
"type": "string",
618
-
"const": "core:event:deny-unlisten"
619
},
620
{
621
-
"description": "Default permissions for the plugin.",
622
"type": "string",
623
-
"const": "core:image:default"
624
},
625
{
626
"description": "Enables the from_bytes command without any pre-configured scope.",
627
"type": "string",
628
-
"const": "core:image:allow-from-bytes"
629
},
630
{
631
"description": "Enables the from_path command without any pre-configured scope.",
632
"type": "string",
633
-
"const": "core:image:allow-from-path"
634
},
635
{
636
"description": "Enables the new command without any pre-configured scope.",
637
"type": "string",
638
-
"const": "core:image:allow-new"
639
},
640
{
641
"description": "Enables the rgba command without any pre-configured scope.",
642
"type": "string",
643
-
"const": "core:image:allow-rgba"
644
},
645
{
646
"description": "Enables the size command without any pre-configured scope.",
647
"type": "string",
648
-
"const": "core:image:allow-size"
649
},
650
{
651
"description": "Denies the from_bytes command without any pre-configured scope.",
652
"type": "string",
653
-
"const": "core:image:deny-from-bytes"
654
},
655
{
656
"description": "Denies the from_path command without any pre-configured scope.",
657
"type": "string",
658
-
"const": "core:image:deny-from-path"
659
},
660
{
661
"description": "Denies the new command without any pre-configured scope.",
662
"type": "string",
663
-
"const": "core:image:deny-new"
664
},
665
{
666
"description": "Denies the rgba command without any pre-configured scope.",
667
"type": "string",
668
-
"const": "core:image:deny-rgba"
669
},
670
{
671
"description": "Denies the size command without any pre-configured scope.",
672
"type": "string",
673
-
"const": "core:image:deny-size"
674
},
675
{
676
-
"description": "Default permissions for the plugin.",
677
"type": "string",
678
-
"const": "core:menu:default"
679
},
680
{
681
"description": "Enables the append command without any pre-configured scope.",
682
"type": "string",
683
-
"const": "core:menu:allow-append"
684
},
685
{
686
"description": "Enables the create_default command without any pre-configured scope.",
687
"type": "string",
688
-
"const": "core:menu:allow-create-default"
689
},
690
{
691
"description": "Enables the get command without any pre-configured scope.",
692
"type": "string",
693
-
"const": "core:menu:allow-get"
694
},
695
{
696
"description": "Enables the insert command without any pre-configured scope.",
697
"type": "string",
698
-
"const": "core:menu:allow-insert"
699
},
700
{
701
"description": "Enables the is_checked command without any pre-configured scope.",
702
"type": "string",
703
-
"const": "core:menu:allow-is-checked"
704
},
705
{
706
"description": "Enables the is_enabled command without any pre-configured scope.",
707
"type": "string",
708
-
"const": "core:menu:allow-is-enabled"
709
},
710
{
711
"description": "Enables the items command without any pre-configured scope.",
712
"type": "string",
713
-
"const": "core:menu:allow-items"
714
},
715
{
716
"description": "Enables the new command without any pre-configured scope.",
717
"type": "string",
718
-
"const": "core:menu:allow-new"
719
},
720
{
721
"description": "Enables the popup command without any pre-configured scope.",
722
"type": "string",
723
-
"const": "core:menu:allow-popup"
724
},
725
{
726
"description": "Enables the prepend command without any pre-configured scope.",
727
"type": "string",
728
-
"const": "core:menu:allow-prepend"
729
},
730
{
731
"description": "Enables the remove command without any pre-configured scope.",
732
"type": "string",
733
-
"const": "core:menu:allow-remove"
734
},
735
{
736
"description": "Enables the remove_at command without any pre-configured scope.",
737
"type": "string",
738
-
"const": "core:menu:allow-remove-at"
739
},
740
{
741
"description": "Enables the set_accelerator command without any pre-configured scope.",
742
"type": "string",
743
-
"const": "core:menu:allow-set-accelerator"
744
},
745
{
746
"description": "Enables the set_as_app_menu command without any pre-configured scope.",
747
"type": "string",
748
-
"const": "core:menu:allow-set-as-app-menu"
749
},
750
{
751
"description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.",
752
"type": "string",
753
-
"const": "core:menu:allow-set-as-help-menu-for-nsapp"
754
},
755
{
756
"description": "Enables the set_as_window_menu command without any pre-configured scope.",
757
"type": "string",
758
-
"const": "core:menu:allow-set-as-window-menu"
759
},
760
{
761
"description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.",
762
"type": "string",
763
-
"const": "core:menu:allow-set-as-windows-menu-for-nsapp"
764
},
765
{
766
"description": "Enables the set_checked command without any pre-configured scope.",
767
"type": "string",
768
-
"const": "core:menu:allow-set-checked"
769
},
770
{
771
"description": "Enables the set_enabled command without any pre-configured scope.",
772
"type": "string",
773
-
"const": "core:menu:allow-set-enabled"
774
},
775
{
776
"description": "Enables the set_icon command without any pre-configured scope.",
777
"type": "string",
778
-
"const": "core:menu:allow-set-icon"
779
},
780
{
781
"description": "Enables the set_text command without any pre-configured scope.",
782
"type": "string",
783
-
"const": "core:menu:allow-set-text"
784
},
785
{
786
"description": "Enables the text command without any pre-configured scope.",
787
"type": "string",
788
-
"const": "core:menu:allow-text"
789
},
790
{
791
"description": "Denies the append command without any pre-configured scope.",
792
"type": "string",
793
-
"const": "core:menu:deny-append"
794
},
795
{
796
"description": "Denies the create_default command without any pre-configured scope.",
797
"type": "string",
798
-
"const": "core:menu:deny-create-default"
799
},
800
{
801
"description": "Denies the get command without any pre-configured scope.",
802
"type": "string",
803
-
"const": "core:menu:deny-get"
804
},
805
{
806
"description": "Denies the insert command without any pre-configured scope.",
807
"type": "string",
808
-
"const": "core:menu:deny-insert"
809
},
810
{
811
"description": "Denies the is_checked command without any pre-configured scope.",
812
"type": "string",
813
-
"const": "core:menu:deny-is-checked"
814
},
815
{
816
"description": "Denies the is_enabled command without any pre-configured scope.",
817
"type": "string",
818
-
"const": "core:menu:deny-is-enabled"
819
},
820
{
821
"description": "Denies the items command without any pre-configured scope.",
822
"type": "string",
823
-
"const": "core:menu:deny-items"
824
},
825
{
826
"description": "Denies the new command without any pre-configured scope.",
827
"type": "string",
828
-
"const": "core:menu:deny-new"
829
},
830
{
831
"description": "Denies the popup command without any pre-configured scope.",
832
"type": "string",
833
-
"const": "core:menu:deny-popup"
834
},
835
{
836
"description": "Denies the prepend command without any pre-configured scope.",
837
"type": "string",
838
-
"const": "core:menu:deny-prepend"
839
},
840
{
841
"description": "Denies the remove command without any pre-configured scope.",
842
"type": "string",
843
-
"const": "core:menu:deny-remove"
844
},
845
{
846
"description": "Denies the remove_at command without any pre-configured scope.",
847
"type": "string",
848
-
"const": "core:menu:deny-remove-at"
849
},
850
{
851
"description": "Denies the set_accelerator command without any pre-configured scope.",
852
"type": "string",
853
-
"const": "core:menu:deny-set-accelerator"
854
},
855
{
856
"description": "Denies the set_as_app_menu command without any pre-configured scope.",
857
"type": "string",
858
-
"const": "core:menu:deny-set-as-app-menu"
859
},
860
{
861
"description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.",
862
"type": "string",
863
-
"const": "core:menu:deny-set-as-help-menu-for-nsapp"
864
},
865
{
866
"description": "Denies the set_as_window_menu command without any pre-configured scope.",
867
"type": "string",
868
-
"const": "core:menu:deny-set-as-window-menu"
869
},
870
{
871
"description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.",
872
"type": "string",
873
-
"const": "core:menu:deny-set-as-windows-menu-for-nsapp"
874
},
875
{
876
"description": "Denies the set_checked command without any pre-configured scope.",
877
"type": "string",
878
-
"const": "core:menu:deny-set-checked"
879
},
880
{
881
"description": "Denies the set_enabled command without any pre-configured scope.",
882
"type": "string",
883
-
"const": "core:menu:deny-set-enabled"
884
},
885
{
886
"description": "Denies the set_icon command without any pre-configured scope.",
887
"type": "string",
888
-
"const": "core:menu:deny-set-icon"
889
},
890
{
891
"description": "Denies the set_text command without any pre-configured scope.",
892
"type": "string",
893
-
"const": "core:menu:deny-set-text"
894
},
895
{
896
"description": "Denies the text command without any pre-configured scope.",
897
"type": "string",
898
-
"const": "core:menu:deny-text"
899
},
900
{
901
-
"description": "Default permissions for the plugin.",
902
"type": "string",
903
-
"const": "core:path:default"
904
},
905
{
906
"description": "Enables the basename command without any pre-configured scope.",
907
"type": "string",
908
-
"const": "core:path:allow-basename"
909
},
910
{
911
"description": "Enables the dirname command without any pre-configured scope.",
912
"type": "string",
913
-
"const": "core:path:allow-dirname"
914
},
915
{
916
"description": "Enables the extname command without any pre-configured scope.",
917
"type": "string",
918
-
"const": "core:path:allow-extname"
919
},
920
{
921
"description": "Enables the is_absolute command without any pre-configured scope.",
922
"type": "string",
923
-
"const": "core:path:allow-is-absolute"
924
},
925
{
926
"description": "Enables the join command without any pre-configured scope.",
927
"type": "string",
928
-
"const": "core:path:allow-join"
929
},
930
{
931
"description": "Enables the normalize command without any pre-configured scope.",
932
"type": "string",
933
-
"const": "core:path:allow-normalize"
934
},
935
{
936
"description": "Enables the resolve command without any pre-configured scope.",
937
"type": "string",
938
-
"const": "core:path:allow-resolve"
939
},
940
{
941
"description": "Enables the resolve_directory command without any pre-configured scope.",
942
"type": "string",
943
-
"const": "core:path:allow-resolve-directory"
944
},
945
{
946
"description": "Denies the basename command without any pre-configured scope.",
947
"type": "string",
948
-
"const": "core:path:deny-basename"
949
},
950
{
951
"description": "Denies the dirname command without any pre-configured scope.",
952
"type": "string",
953
-
"const": "core:path:deny-dirname"
954
},
955
{
956
"description": "Denies the extname command without any pre-configured scope.",
957
"type": "string",
958
-
"const": "core:path:deny-extname"
959
},
960
{
961
"description": "Denies the is_absolute command without any pre-configured scope.",
962
"type": "string",
963
-
"const": "core:path:deny-is-absolute"
964
},
965
{
966
"description": "Denies the join command without any pre-configured scope.",
967
"type": "string",
968
-
"const": "core:path:deny-join"
969
},
970
{
971
"description": "Denies the normalize command without any pre-configured scope.",
972
"type": "string",
973
-
"const": "core:path:deny-normalize"
974
},
975
{
976
"description": "Denies the resolve command without any pre-configured scope.",
977
"type": "string",
978
-
"const": "core:path:deny-resolve"
979
},
980
{
981
"description": "Denies the resolve_directory command without any pre-configured scope.",
982
"type": "string",
983
-
"const": "core:path:deny-resolve-directory"
984
},
985
{
986
-
"description": "Default permissions for the plugin.",
987
"type": "string",
988
-
"const": "core:resources:default"
989
},
990
{
991
"description": "Enables the close command without any pre-configured scope.",
992
"type": "string",
993
-
"const": "core:resources:allow-close"
994
},
995
{
996
"description": "Denies the close command without any pre-configured scope.",
997
"type": "string",
998
-
"const": "core:resources:deny-close"
999
},
1000
{
1001
-
"description": "Default permissions for the plugin.",
1002
"type": "string",
1003
-
"const": "core:tray:default"
1004
},
1005
{
1006
"description": "Enables the get_by_id command without any pre-configured scope.",
1007
"type": "string",
1008
-
"const": "core:tray:allow-get-by-id"
1009
},
1010
{
1011
"description": "Enables the new command without any pre-configured scope.",
1012
"type": "string",
1013
-
"const": "core:tray:allow-new"
1014
},
1015
{
1016
"description": "Enables the remove_by_id command without any pre-configured scope.",
1017
"type": "string",
1018
-
"const": "core:tray:allow-remove-by-id"
1019
},
1020
{
1021
"description": "Enables the set_icon command without any pre-configured scope.",
1022
"type": "string",
1023
-
"const": "core:tray:allow-set-icon"
1024
},
1025
{
1026
"description": "Enables the set_icon_as_template command without any pre-configured scope.",
1027
"type": "string",
1028
-
"const": "core:tray:allow-set-icon-as-template"
1029
},
1030
{
1031
"description": "Enables the set_menu command without any pre-configured scope.",
1032
"type": "string",
1033
-
"const": "core:tray:allow-set-menu"
1034
},
1035
{
1036
"description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.",
1037
"type": "string",
1038
-
"const": "core:tray:allow-set-show-menu-on-left-click"
1039
},
1040
{
1041
"description": "Enables the set_temp_dir_path command without any pre-configured scope.",
1042
"type": "string",
1043
-
"const": "core:tray:allow-set-temp-dir-path"
1044
},
1045
{
1046
"description": "Enables the set_title command without any pre-configured scope.",
1047
"type": "string",
1048
-
"const": "core:tray:allow-set-title"
1049
},
1050
{
1051
"description": "Enables the set_tooltip command without any pre-configured scope.",
1052
"type": "string",
1053
-
"const": "core:tray:allow-set-tooltip"
1054
},
1055
{
1056
"description": "Enables the set_visible command without any pre-configured scope.",
1057
"type": "string",
1058
-
"const": "core:tray:allow-set-visible"
1059
},
1060
{
1061
"description": "Denies the get_by_id command without any pre-configured scope.",
1062
"type": "string",
1063
-
"const": "core:tray:deny-get-by-id"
1064
},
1065
{
1066
"description": "Denies the new command without any pre-configured scope.",
1067
"type": "string",
1068
-
"const": "core:tray:deny-new"
1069
},
1070
{
1071
"description": "Denies the remove_by_id command without any pre-configured scope.",
1072
"type": "string",
1073
-
"const": "core:tray:deny-remove-by-id"
1074
},
1075
{
1076
"description": "Denies the set_icon command without any pre-configured scope.",
1077
"type": "string",
1078
-
"const": "core:tray:deny-set-icon"
1079
},
1080
{
1081
"description": "Denies the set_icon_as_template command without any pre-configured scope.",
1082
"type": "string",
1083
-
"const": "core:tray:deny-set-icon-as-template"
1084
},
1085
{
1086
"description": "Denies the set_menu command without any pre-configured scope.",
1087
"type": "string",
1088
-
"const": "core:tray:deny-set-menu"
1089
},
1090
{
1091
"description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.",
1092
"type": "string",
1093
-
"const": "core:tray:deny-set-show-menu-on-left-click"
1094
},
1095
{
1096
"description": "Denies the set_temp_dir_path command without any pre-configured scope.",
1097
"type": "string",
1098
-
"const": "core:tray:deny-set-temp-dir-path"
1099
},
1100
{
1101
"description": "Denies the set_title command without any pre-configured scope.",
1102
"type": "string",
1103
-
"const": "core:tray:deny-set-title"
1104
},
1105
{
1106
"description": "Denies the set_tooltip command without any pre-configured scope.",
1107
"type": "string",
1108
-
"const": "core:tray:deny-set-tooltip"
1109
},
1110
{
1111
"description": "Denies the set_visible command without any pre-configured scope.",
1112
"type": "string",
1113
-
"const": "core:tray:deny-set-visible"
1114
},
1115
{
1116
-
"description": "Default permissions for the plugin.",
1117
"type": "string",
1118
-
"const": "core:webview:default"
1119
},
1120
{
1121
"description": "Enables the clear_all_browsing_data command without any pre-configured scope.",
1122
"type": "string",
1123
-
"const": "core:webview:allow-clear-all-browsing-data"
1124
},
1125
{
1126
"description": "Enables the create_webview command without any pre-configured scope.",
1127
"type": "string",
1128
-
"const": "core:webview:allow-create-webview"
1129
},
1130
{
1131
"description": "Enables the create_webview_window command without any pre-configured scope.",
1132
"type": "string",
1133
-
"const": "core:webview:allow-create-webview-window"
1134
},
1135
{
1136
"description": "Enables the get_all_webviews command without any pre-configured scope.",
1137
"type": "string",
1138
-
"const": "core:webview:allow-get-all-webviews"
1139
},
1140
{
1141
"description": "Enables the internal_toggle_devtools command without any pre-configured scope.",
1142
"type": "string",
1143
-
"const": "core:webview:allow-internal-toggle-devtools"
1144
},
1145
{
1146
"description": "Enables the print command without any pre-configured scope.",
1147
"type": "string",
1148
-
"const": "core:webview:allow-print"
1149
},
1150
{
1151
"description": "Enables the reparent command without any pre-configured scope.",
1152
"type": "string",
1153
-
"const": "core:webview:allow-reparent"
1154
},
1155
{
1156
"description": "Enables the set_webview_focus command without any pre-configured scope.",
1157
"type": "string",
1158
-
"const": "core:webview:allow-set-webview-focus"
1159
},
1160
{
1161
"description": "Enables the set_webview_position command without any pre-configured scope.",
1162
"type": "string",
1163
-
"const": "core:webview:allow-set-webview-position"
1164
},
1165
{
1166
"description": "Enables the set_webview_size command without any pre-configured scope.",
1167
"type": "string",
1168
-
"const": "core:webview:allow-set-webview-size"
1169
},
1170
{
1171
"description": "Enables the set_webview_zoom command without any pre-configured scope.",
1172
"type": "string",
1173
-
"const": "core:webview:allow-set-webview-zoom"
1174
},
1175
{
1176
"description": "Enables the webview_close command without any pre-configured scope.",
1177
"type": "string",
1178
-
"const": "core:webview:allow-webview-close"
1179
},
1180
{
1181
"description": "Enables the webview_hide command without any pre-configured scope.",
1182
"type": "string",
1183
-
"const": "core:webview:allow-webview-hide"
1184
},
1185
{
1186
"description": "Enables the webview_position command without any pre-configured scope.",
1187
"type": "string",
1188
-
"const": "core:webview:allow-webview-position"
1189
},
1190
{
1191
"description": "Enables the webview_show command without any pre-configured scope.",
1192
"type": "string",
1193
-
"const": "core:webview:allow-webview-show"
1194
},
1195
{
1196
"description": "Enables the webview_size command without any pre-configured scope.",
1197
"type": "string",
1198
-
"const": "core:webview:allow-webview-size"
1199
},
1200
{
1201
"description": "Denies the clear_all_browsing_data command without any pre-configured scope.",
1202
"type": "string",
1203
-
"const": "core:webview:deny-clear-all-browsing-data"
1204
},
1205
{
1206
"description": "Denies the create_webview command without any pre-configured scope.",
1207
"type": "string",
1208
-
"const": "core:webview:deny-create-webview"
1209
},
1210
{
1211
"description": "Denies the create_webview_window command without any pre-configured scope.",
1212
"type": "string",
1213
-
"const": "core:webview:deny-create-webview-window"
1214
},
1215
{
1216
"description": "Denies the get_all_webviews command without any pre-configured scope.",
1217
"type": "string",
1218
-
"const": "core:webview:deny-get-all-webviews"
1219
},
1220
{
1221
"description": "Denies the internal_toggle_devtools command without any pre-configured scope.",
1222
"type": "string",
1223
-
"const": "core:webview:deny-internal-toggle-devtools"
1224
},
1225
{
1226
"description": "Denies the print command without any pre-configured scope.",
1227
"type": "string",
1228
-
"const": "core:webview:deny-print"
1229
},
1230
{
1231
"description": "Denies the reparent command without any pre-configured scope.",
1232
"type": "string",
1233
-
"const": "core:webview:deny-reparent"
1234
},
1235
{
1236
"description": "Denies the set_webview_focus command without any pre-configured scope.",
1237
"type": "string",
1238
-
"const": "core:webview:deny-set-webview-focus"
1239
},
1240
{
1241
"description": "Denies the set_webview_position command without any pre-configured scope.",
1242
"type": "string",
1243
-
"const": "core:webview:deny-set-webview-position"
1244
},
1245
{
1246
"description": "Denies the set_webview_size command without any pre-configured scope.",
1247
"type": "string",
1248
-
"const": "core:webview:deny-set-webview-size"
1249
},
1250
{
1251
"description": "Denies the set_webview_zoom command without any pre-configured scope.",
1252
"type": "string",
1253
-
"const": "core:webview:deny-set-webview-zoom"
1254
},
1255
{
1256
"description": "Denies the webview_close command without any pre-configured scope.",
1257
"type": "string",
1258
-
"const": "core:webview:deny-webview-close"
1259
},
1260
{
1261
"description": "Denies the webview_hide command without any pre-configured scope.",
1262
"type": "string",
1263
-
"const": "core:webview:deny-webview-hide"
1264
},
1265
{
1266
"description": "Denies the webview_position command without any pre-configured scope.",
1267
"type": "string",
1268
-
"const": "core:webview:deny-webview-position"
1269
},
1270
{
1271
"description": "Denies the webview_show command without any pre-configured scope.",
1272
"type": "string",
1273
-
"const": "core:webview:deny-webview-show"
1274
},
1275
{
1276
"description": "Denies the webview_size command without any pre-configured scope.",
1277
"type": "string",
1278
-
"const": "core:webview:deny-webview-size"
1279
},
1280
{
1281
-
"description": "Default permissions for the plugin.",
1282
"type": "string",
1283
-
"const": "core:window:default"
1284
},
1285
{
1286
"description": "Enables the available_monitors command without any pre-configured scope.",
1287
"type": "string",
1288
-
"const": "core:window:allow-available-monitors"
1289
},
1290
{
1291
"description": "Enables the center command without any pre-configured scope.",
1292
"type": "string",
1293
-
"const": "core:window:allow-center"
1294
},
1295
{
1296
"description": "Enables the close command without any pre-configured scope.",
1297
"type": "string",
1298
-
"const": "core:window:allow-close"
1299
},
1300
{
1301
"description": "Enables the create command without any pre-configured scope.",
1302
"type": "string",
1303
-
"const": "core:window:allow-create"
1304
},
1305
{
1306
"description": "Enables the current_monitor command without any pre-configured scope.",
1307
"type": "string",
1308
-
"const": "core:window:allow-current-monitor"
1309
},
1310
{
1311
"description": "Enables the cursor_position command without any pre-configured scope.",
1312
"type": "string",
1313
-
"const": "core:window:allow-cursor-position"
1314
},
1315
{
1316
"description": "Enables the destroy command without any pre-configured scope.",
1317
"type": "string",
1318
-
"const": "core:window:allow-destroy"
1319
},
1320
{
1321
"description": "Enables the get_all_windows command without any pre-configured scope.",
1322
"type": "string",
1323
-
"const": "core:window:allow-get-all-windows"
1324
},
1325
{
1326
"description": "Enables the hide command without any pre-configured scope.",
1327
"type": "string",
1328
-
"const": "core:window:allow-hide"
1329
},
1330
{
1331
"description": "Enables the inner_position command without any pre-configured scope.",
1332
"type": "string",
1333
-
"const": "core:window:allow-inner-position"
1334
},
1335
{
1336
"description": "Enables the inner_size command without any pre-configured scope.",
1337
"type": "string",
1338
-
"const": "core:window:allow-inner-size"
1339
},
1340
{
1341
"description": "Enables the internal_toggle_maximize command without any pre-configured scope.",
1342
"type": "string",
1343
-
"const": "core:window:allow-internal-toggle-maximize"
1344
},
1345
{
1346
"description": "Enables the is_closable command without any pre-configured scope.",
1347
"type": "string",
1348
-
"const": "core:window:allow-is-closable"
1349
},
1350
{
1351
"description": "Enables the is_decorated command without any pre-configured scope.",
1352
"type": "string",
1353
-
"const": "core:window:allow-is-decorated"
1354
},
1355
{
1356
"description": "Enables the is_enabled command without any pre-configured scope.",
1357
"type": "string",
1358
-
"const": "core:window:allow-is-enabled"
1359
},
1360
{
1361
"description": "Enables the is_focused command without any pre-configured scope.",
1362
"type": "string",
1363
-
"const": "core:window:allow-is-focused"
1364
},
1365
{
1366
"description": "Enables the is_fullscreen command without any pre-configured scope.",
1367
"type": "string",
1368
-
"const": "core:window:allow-is-fullscreen"
1369
},
1370
{
1371
"description": "Enables the is_maximizable command without any pre-configured scope.",
1372
"type": "string",
1373
-
"const": "core:window:allow-is-maximizable"
1374
},
1375
{
1376
"description": "Enables the is_maximized command without any pre-configured scope.",
1377
"type": "string",
1378
-
"const": "core:window:allow-is-maximized"
1379
},
1380
{
1381
"description": "Enables the is_minimizable command without any pre-configured scope.",
1382
"type": "string",
1383
-
"const": "core:window:allow-is-minimizable"
1384
},
1385
{
1386
"description": "Enables the is_minimized command without any pre-configured scope.",
1387
"type": "string",
1388
-
"const": "core:window:allow-is-minimized"
1389
},
1390
{
1391
"description": "Enables the is_resizable command without any pre-configured scope.",
1392
"type": "string",
1393
-
"const": "core:window:allow-is-resizable"
1394
},
1395
{
1396
"description": "Enables the is_visible command without any pre-configured scope.",
1397
"type": "string",
1398
-
"const": "core:window:allow-is-visible"
1399
},
1400
{
1401
"description": "Enables the maximize command without any pre-configured scope.",
1402
"type": "string",
1403
-
"const": "core:window:allow-maximize"
1404
},
1405
{
1406
"description": "Enables the minimize command without any pre-configured scope.",
1407
"type": "string",
1408
-
"const": "core:window:allow-minimize"
1409
},
1410
{
1411
"description": "Enables the monitor_from_point command without any pre-configured scope.",
1412
"type": "string",
1413
-
"const": "core:window:allow-monitor-from-point"
1414
},
1415
{
1416
"description": "Enables the outer_position command without any pre-configured scope.",
1417
"type": "string",
1418
-
"const": "core:window:allow-outer-position"
1419
},
1420
{
1421
"description": "Enables the outer_size command without any pre-configured scope.",
1422
"type": "string",
1423
-
"const": "core:window:allow-outer-size"
1424
},
1425
{
1426
"description": "Enables the primary_monitor command without any pre-configured scope.",
1427
"type": "string",
1428
-
"const": "core:window:allow-primary-monitor"
1429
},
1430
{
1431
"description": "Enables the request_user_attention command without any pre-configured scope.",
1432
"type": "string",
1433
-
"const": "core:window:allow-request-user-attention"
1434
},
1435
{
1436
"description": "Enables the scale_factor command without any pre-configured scope.",
1437
"type": "string",
1438
-
"const": "core:window:allow-scale-factor"
1439
},
1440
{
1441
"description": "Enables the set_always_on_bottom command without any pre-configured scope.",
1442
"type": "string",
1443
-
"const": "core:window:allow-set-always-on-bottom"
1444
},
1445
{
1446
"description": "Enables the set_always_on_top command without any pre-configured scope.",
1447
"type": "string",
1448
-
"const": "core:window:allow-set-always-on-top"
1449
},
1450
{
1451
"description": "Enables the set_closable command without any pre-configured scope.",
1452
"type": "string",
1453
-
"const": "core:window:allow-set-closable"
1454
},
1455
{
1456
"description": "Enables the set_content_protected command without any pre-configured scope.",
1457
"type": "string",
1458
-
"const": "core:window:allow-set-content-protected"
1459
},
1460
{
1461
"description": "Enables the set_cursor_grab command without any pre-configured scope.",
1462
"type": "string",
1463
-
"const": "core:window:allow-set-cursor-grab"
1464
},
1465
{
1466
"description": "Enables the set_cursor_icon command without any pre-configured scope.",
1467
"type": "string",
1468
-
"const": "core:window:allow-set-cursor-icon"
1469
},
1470
{
1471
"description": "Enables the set_cursor_position command without any pre-configured scope.",
1472
"type": "string",
1473
-
"const": "core:window:allow-set-cursor-position"
1474
},
1475
{
1476
"description": "Enables the set_cursor_visible command without any pre-configured scope.",
1477
"type": "string",
1478
-
"const": "core:window:allow-set-cursor-visible"
1479
},
1480
{
1481
"description": "Enables the set_decorations command without any pre-configured scope.",
1482
"type": "string",
1483
-
"const": "core:window:allow-set-decorations"
1484
},
1485
{
1486
"description": "Enables the set_effects command without any pre-configured scope.",
1487
"type": "string",
1488
-
"const": "core:window:allow-set-effects"
1489
},
1490
{
1491
"description": "Enables the set_enabled command without any pre-configured scope.",
1492
"type": "string",
1493
-
"const": "core:window:allow-set-enabled"
1494
},
1495
{
1496
"description": "Enables the set_focus command without any pre-configured scope.",
1497
"type": "string",
1498
-
"const": "core:window:allow-set-focus"
1499
},
1500
{
1501
"description": "Enables the set_fullscreen command without any pre-configured scope.",
1502
"type": "string",
1503
-
"const": "core:window:allow-set-fullscreen"
1504
},
1505
{
1506
"description": "Enables the set_icon command without any pre-configured scope.",
1507
"type": "string",
1508
-
"const": "core:window:allow-set-icon"
1509
},
1510
{
1511
"description": "Enables the set_ignore_cursor_events command without any pre-configured scope.",
1512
"type": "string",
1513
-
"const": "core:window:allow-set-ignore-cursor-events"
1514
},
1515
{
1516
"description": "Enables the set_max_size command without any pre-configured scope.",
1517
"type": "string",
1518
-
"const": "core:window:allow-set-max-size"
1519
},
1520
{
1521
"description": "Enables the set_maximizable command without any pre-configured scope.",
1522
"type": "string",
1523
-
"const": "core:window:allow-set-maximizable"
1524
},
1525
{
1526
"description": "Enables the set_min_size command without any pre-configured scope.",
1527
"type": "string",
1528
-
"const": "core:window:allow-set-min-size"
1529
},
1530
{
1531
"description": "Enables the set_minimizable command without any pre-configured scope.",
1532
"type": "string",
1533
-
"const": "core:window:allow-set-minimizable"
1534
},
1535
{
1536
"description": "Enables the set_position command without any pre-configured scope.",
1537
"type": "string",
1538
-
"const": "core:window:allow-set-position"
1539
},
1540
{
1541
"description": "Enables the set_progress_bar command without any pre-configured scope.",
1542
"type": "string",
1543
-
"const": "core:window:allow-set-progress-bar"
1544
},
1545
{
1546
"description": "Enables the set_resizable command without any pre-configured scope.",
1547
"type": "string",
1548
-
"const": "core:window:allow-set-resizable"
1549
},
1550
{
1551
"description": "Enables the set_shadow command without any pre-configured scope.",
1552
"type": "string",
1553
-
"const": "core:window:allow-set-shadow"
1554
},
1555
{
1556
"description": "Enables the set_size command without any pre-configured scope.",
1557
"type": "string",
1558
-
"const": "core:window:allow-set-size"
1559
},
1560
{
1561
"description": "Enables the set_size_constraints command without any pre-configured scope.",
1562
"type": "string",
1563
-
"const": "core:window:allow-set-size-constraints"
1564
},
1565
{
1566
"description": "Enables the set_skip_taskbar command without any pre-configured scope.",
1567
"type": "string",
1568
-
"const": "core:window:allow-set-skip-taskbar"
1569
},
1570
{
1571
"description": "Enables the set_theme command without any pre-configured scope.",
1572
"type": "string",
1573
-
"const": "core:window:allow-set-theme"
1574
},
1575
{
1576
"description": "Enables the set_title command without any pre-configured scope.",
1577
"type": "string",
1578
-
"const": "core:window:allow-set-title"
1579
},
1580
{
1581
"description": "Enables the set_title_bar_style command without any pre-configured scope.",
1582
"type": "string",
1583
-
"const": "core:window:allow-set-title-bar-style"
1584
},
1585
{
1586
"description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.",
1587
"type": "string",
1588
-
"const": "core:window:allow-set-visible-on-all-workspaces"
1589
},
1590
{
1591
"description": "Enables the show command without any pre-configured scope.",
1592
"type": "string",
1593
-
"const": "core:window:allow-show"
1594
},
1595
{
1596
"description": "Enables the start_dragging command without any pre-configured scope.",
1597
"type": "string",
1598
-
"const": "core:window:allow-start-dragging"
1599
},
1600
{
1601
"description": "Enables the start_resize_dragging command without any pre-configured scope.",
1602
"type": "string",
1603
-
"const": "core:window:allow-start-resize-dragging"
1604
},
1605
{
1606
"description": "Enables the theme command without any pre-configured scope.",
1607
"type": "string",
1608
-
"const": "core:window:allow-theme"
1609
},
1610
{
1611
"description": "Enables the title command without any pre-configured scope.",
1612
"type": "string",
1613
-
"const": "core:window:allow-title"
1614
},
1615
{
1616
"description": "Enables the toggle_maximize command without any pre-configured scope.",
1617
"type": "string",
1618
-
"const": "core:window:allow-toggle-maximize"
1619
},
1620
{
1621
"description": "Enables the unmaximize command without any pre-configured scope.",
1622
"type": "string",
1623
-
"const": "core:window:allow-unmaximize"
1624
},
1625
{
1626
"description": "Enables the unminimize command without any pre-configured scope.",
1627
"type": "string",
1628
-
"const": "core:window:allow-unminimize"
1629
},
1630
{
1631
"description": "Denies the available_monitors command without any pre-configured scope.",
1632
"type": "string",
1633
-
"const": "core:window:deny-available-monitors"
1634
},
1635
{
1636
"description": "Denies the center command without any pre-configured scope.",
1637
"type": "string",
1638
-
"const": "core:window:deny-center"
1639
},
1640
{
1641
"description": "Denies the close command without any pre-configured scope.",
1642
"type": "string",
1643
-
"const": "core:window:deny-close"
1644
},
1645
{
1646
"description": "Denies the create command without any pre-configured scope.",
1647
"type": "string",
1648
-
"const": "core:window:deny-create"
1649
},
1650
{
1651
"description": "Denies the current_monitor command without any pre-configured scope.",
1652
"type": "string",
1653
-
"const": "core:window:deny-current-monitor"
1654
},
1655
{
1656
"description": "Denies the cursor_position command without any pre-configured scope.",
1657
"type": "string",
1658
-
"const": "core:window:deny-cursor-position"
1659
},
1660
{
1661
"description": "Denies the destroy command without any pre-configured scope.",
1662
"type": "string",
1663
-
"const": "core:window:deny-destroy"
1664
},
1665
{
1666
"description": "Denies the get_all_windows command without any pre-configured scope.",
1667
"type": "string",
1668
-
"const": "core:window:deny-get-all-windows"
1669
},
1670
{
1671
"description": "Denies the hide command without any pre-configured scope.",
1672
"type": "string",
1673
-
"const": "core:window:deny-hide"
1674
},
1675
{
1676
"description": "Denies the inner_position command without any pre-configured scope.",
1677
"type": "string",
1678
-
"const": "core:window:deny-inner-position"
1679
},
1680
{
1681
"description": "Denies the inner_size command without any pre-configured scope.",
1682
"type": "string",
1683
-
"const": "core:window:deny-inner-size"
1684
},
1685
{
1686
"description": "Denies the internal_toggle_maximize command without any pre-configured scope.",
1687
"type": "string",
1688
-
"const": "core:window:deny-internal-toggle-maximize"
1689
},
1690
{
1691
"description": "Denies the is_closable command without any pre-configured scope.",
1692
"type": "string",
1693
-
"const": "core:window:deny-is-closable"
1694
},
1695
{
1696
"description": "Denies the is_decorated command without any pre-configured scope.",
1697
"type": "string",
1698
-
"const": "core:window:deny-is-decorated"
1699
},
1700
{
1701
"description": "Denies the is_enabled command without any pre-configured scope.",
1702
"type": "string",
1703
-
"const": "core:window:deny-is-enabled"
1704
},
1705
{
1706
"description": "Denies the is_focused command without any pre-configured scope.",
1707
"type": "string",
1708
-
"const": "core:window:deny-is-focused"
1709
},
1710
{
1711
"description": "Denies the is_fullscreen command without any pre-configured scope.",
1712
"type": "string",
1713
-
"const": "core:window:deny-is-fullscreen"
1714
},
1715
{
1716
"description": "Denies the is_maximizable command without any pre-configured scope.",
1717
"type": "string",
1718
-
"const": "core:window:deny-is-maximizable"
1719
},
1720
{
1721
"description": "Denies the is_maximized command without any pre-configured scope.",
1722
"type": "string",
1723
-
"const": "core:window:deny-is-maximized"
1724
},
1725
{
1726
"description": "Denies the is_minimizable command without any pre-configured scope.",
1727
"type": "string",
1728
-
"const": "core:window:deny-is-minimizable"
1729
},
1730
{
1731
"description": "Denies the is_minimized command without any pre-configured scope.",
1732
"type": "string",
1733
-
"const": "core:window:deny-is-minimized"
1734
},
1735
{
1736
"description": "Denies the is_resizable command without any pre-configured scope.",
1737
"type": "string",
1738
-
"const": "core:window:deny-is-resizable"
1739
},
1740
{
1741
"description": "Denies the is_visible command without any pre-configured scope.",
1742
"type": "string",
1743
-
"const": "core:window:deny-is-visible"
1744
},
1745
{
1746
"description": "Denies the maximize command without any pre-configured scope.",
1747
"type": "string",
1748
-
"const": "core:window:deny-maximize"
1749
},
1750
{
1751
"description": "Denies the minimize command without any pre-configured scope.",
1752
"type": "string",
1753
-
"const": "core:window:deny-minimize"
1754
},
1755
{
1756
"description": "Denies the monitor_from_point command without any pre-configured scope.",
1757
"type": "string",
1758
-
"const": "core:window:deny-monitor-from-point"
1759
},
1760
{
1761
"description": "Denies the outer_position command without any pre-configured scope.",
1762
"type": "string",
1763
-
"const": "core:window:deny-outer-position"
1764
},
1765
{
1766
"description": "Denies the outer_size command without any pre-configured scope.",
1767
"type": "string",
1768
-
"const": "core:window:deny-outer-size"
1769
},
1770
{
1771
"description": "Denies the primary_monitor command without any pre-configured scope.",
1772
"type": "string",
1773
-
"const": "core:window:deny-primary-monitor"
1774
},
1775
{
1776
"description": "Denies the request_user_attention command without any pre-configured scope.",
1777
"type": "string",
1778
-
"const": "core:window:deny-request-user-attention"
1779
},
1780
{
1781
"description": "Denies the scale_factor command without any pre-configured scope.",
1782
"type": "string",
1783
-
"const": "core:window:deny-scale-factor"
1784
},
1785
{
1786
"description": "Denies the set_always_on_bottom command without any pre-configured scope.",
1787
"type": "string",
1788
-
"const": "core:window:deny-set-always-on-bottom"
1789
},
1790
{
1791
"description": "Denies the set_always_on_top command without any pre-configured scope.",
1792
"type": "string",
1793
-
"const": "core:window:deny-set-always-on-top"
1794
},
1795
{
1796
"description": "Denies the set_closable command without any pre-configured scope.",
1797
"type": "string",
1798
-
"const": "core:window:deny-set-closable"
1799
},
1800
{
1801
"description": "Denies the set_content_protected command without any pre-configured scope.",
1802
"type": "string",
1803
-
"const": "core:window:deny-set-content-protected"
1804
},
1805
{
1806
"description": "Denies the set_cursor_grab command without any pre-configured scope.",
1807
"type": "string",
1808
-
"const": "core:window:deny-set-cursor-grab"
1809
},
1810
{
1811
"description": "Denies the set_cursor_icon command without any pre-configured scope.",
1812
"type": "string",
1813
-
"const": "core:window:deny-set-cursor-icon"
1814
},
1815
{
1816
"description": "Denies the set_cursor_position command without any pre-configured scope.",
1817
"type": "string",
1818
-
"const": "core:window:deny-set-cursor-position"
1819
},
1820
{
1821
"description": "Denies the set_cursor_visible command without any pre-configured scope.",
1822
"type": "string",
1823
-
"const": "core:window:deny-set-cursor-visible"
1824
},
1825
{
1826
"description": "Denies the set_decorations command without any pre-configured scope.",
1827
"type": "string",
1828
-
"const": "core:window:deny-set-decorations"
1829
},
1830
{
1831
"description": "Denies the set_effects command without any pre-configured scope.",
1832
"type": "string",
1833
-
"const": "core:window:deny-set-effects"
1834
},
1835
{
1836
"description": "Denies the set_enabled command without any pre-configured scope.",
1837
"type": "string",
1838
-
"const": "core:window:deny-set-enabled"
1839
},
1840
{
1841
"description": "Denies the set_focus command without any pre-configured scope.",
1842
"type": "string",
1843
-
"const": "core:window:deny-set-focus"
1844
},
1845
{
1846
"description": "Denies the set_fullscreen command without any pre-configured scope.",
1847
"type": "string",
1848
-
"const": "core:window:deny-set-fullscreen"
1849
},
1850
{
1851
"description": "Denies the set_icon command without any pre-configured scope.",
1852
"type": "string",
1853
-
"const": "core:window:deny-set-icon"
1854
},
1855
{
1856
"description": "Denies the set_ignore_cursor_events command without any pre-configured scope.",
1857
"type": "string",
1858
-
"const": "core:window:deny-set-ignore-cursor-events"
1859
},
1860
{
1861
"description": "Denies the set_max_size command without any pre-configured scope.",
1862
"type": "string",
1863
-
"const": "core:window:deny-set-max-size"
1864
},
1865
{
1866
"description": "Denies the set_maximizable command without any pre-configured scope.",
1867
"type": "string",
1868
-
"const": "core:window:deny-set-maximizable"
1869
},
1870
{
1871
"description": "Denies the set_min_size command without any pre-configured scope.",
1872
"type": "string",
1873
-
"const": "core:window:deny-set-min-size"
1874
},
1875
{
1876
"description": "Denies the set_minimizable command without any pre-configured scope.",
1877
"type": "string",
1878
-
"const": "core:window:deny-set-minimizable"
1879
},
1880
{
1881
"description": "Denies the set_position command without any pre-configured scope.",
1882
"type": "string",
1883
-
"const": "core:window:deny-set-position"
1884
},
1885
{
1886
"description": "Denies the set_progress_bar command without any pre-configured scope.",
1887
"type": "string",
1888
-
"const": "core:window:deny-set-progress-bar"
1889
},
1890
{
1891
"description": "Denies the set_resizable command without any pre-configured scope.",
1892
"type": "string",
1893
-
"const": "core:window:deny-set-resizable"
1894
},
1895
{
1896
"description": "Denies the set_shadow command without any pre-configured scope.",
1897
"type": "string",
1898
-
"const": "core:window:deny-set-shadow"
1899
},
1900
{
1901
"description": "Denies the set_size command without any pre-configured scope.",
1902
"type": "string",
1903
-
"const": "core:window:deny-set-size"
1904
},
1905
{
1906
"description": "Denies the set_size_constraints command without any pre-configured scope.",
1907
"type": "string",
1908
-
"const": "core:window:deny-set-size-constraints"
1909
},
1910
{
1911
"description": "Denies the set_skip_taskbar command without any pre-configured scope.",
1912
"type": "string",
1913
-
"const": "core:window:deny-set-skip-taskbar"
1914
},
1915
{
1916
"description": "Denies the set_theme command without any pre-configured scope.",
1917
"type": "string",
1918
-
"const": "core:window:deny-set-theme"
1919
},
1920
{
1921
"description": "Denies the set_title command without any pre-configured scope.",
1922
"type": "string",
1923
-
"const": "core:window:deny-set-title"
1924
},
1925
{
1926
"description": "Denies the set_title_bar_style command without any pre-configured scope.",
1927
"type": "string",
1928
-
"const": "core:window:deny-set-title-bar-style"
1929
},
1930
{
1931
"description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.",
1932
"type": "string",
1933
-
"const": "core:window:deny-set-visible-on-all-workspaces"
1934
},
1935
{
1936
"description": "Denies the show command without any pre-configured scope.",
1937
"type": "string",
1938
-
"const": "core:window:deny-show"
1939
},
1940
{
1941
"description": "Denies the start_dragging command without any pre-configured scope.",
1942
"type": "string",
1943
-
"const": "core:window:deny-start-dragging"
1944
},
1945
{
1946
"description": "Denies the start_resize_dragging command without any pre-configured scope.",
1947
"type": "string",
1948
-
"const": "core:window:deny-start-resize-dragging"
1949
},
1950
{
1951
"description": "Denies the theme command without any pre-configured scope.",
1952
"type": "string",
1953
-
"const": "core:window:deny-theme"
1954
},
1955
{
1956
"description": "Denies the title command without any pre-configured scope.",
1957
"type": "string",
1958
-
"const": "core:window:deny-title"
1959
},
1960
{
1961
"description": "Denies the toggle_maximize command without any pre-configured scope.",
1962
"type": "string",
1963
-
"const": "core:window:deny-toggle-maximize"
1964
},
1965
{
1966
"description": "Denies the unmaximize command without any pre-configured scope.",
1967
"type": "string",
1968
-
"const": "core:window:deny-unmaximize"
1969
},
1970
{
1971
"description": "Denies the unminimize command without any pre-configured scope.",
1972
"type": "string",
1973
-
"const": "core:window:deny-unminimize"
1974
-
},
1975
-
{
1976
-
"description": "Allows reading the opened deep link via the get_current command",
1977
-
"type": "string",
1978
-
"const": "deep-link:default"
1979
-
},
1980
-
{
1981
-
"description": "Enables the get_current command without any pre-configured scope.",
1982
-
"type": "string",
1983
-
"const": "deep-link:allow-get-current"
1984
-
},
1985
-
{
1986
-
"description": "Enables the is_registered command without any pre-configured scope.",
1987
-
"type": "string",
1988
-
"const": "deep-link:allow-is-registered"
1989
-
},
1990
-
{
1991
-
"description": "Enables the register command without any pre-configured scope.",
1992
-
"type": "string",
1993
-
"const": "deep-link:allow-register"
1994
-
},
1995
-
{
1996
-
"description": "Enables the unregister command without any pre-configured scope.",
1997
-
"type": "string",
1998
-
"const": "deep-link:allow-unregister"
1999
-
},
2000
-
{
2001
-
"description": "Denies the get_current command without any pre-configured scope.",
2002
-
"type": "string",
2003
-
"const": "deep-link:deny-get-current"
2004
-
},
2005
-
{
2006
-
"description": "Denies the is_registered command without any pre-configured scope.",
2007
-
"type": "string",
2008
-
"const": "deep-link:deny-is-registered"
2009
-
},
2010
-
{
2011
-
"description": "Denies the register command without any pre-configured scope.",
2012
-
"type": "string",
2013
-
"const": "deep-link:deny-register"
2014
-
},
2015
-
{
2016
-
"description": "Denies the unregister command without any pre-configured scope.",
2017
-
"type": "string",
2018
-
"const": "deep-link:deny-unregister"
2019
},
2020
{
2021
-
"description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n",
2022
"type": "string",
2023
-
"const": "http:default"
2024
},
2025
{
2026
"description": "Enables the fetch command without any pre-configured scope.",
2027
"type": "string",
2028
-
"const": "http:allow-fetch"
2029
},
2030
{
2031
"description": "Enables the fetch_cancel command without any pre-configured scope.",
2032
"type": "string",
2033
-
"const": "http:allow-fetch-cancel"
2034
},
2035
{
2036
"description": "Enables the fetch_read_body command without any pre-configured scope.",
2037
"type": "string",
2038
-
"const": "http:allow-fetch-read-body"
2039
},
2040
{
2041
"description": "Enables the fetch_send command without any pre-configured scope.",
2042
"type": "string",
2043
-
"const": "http:allow-fetch-send"
2044
},
2045
{
2046
"description": "Denies the fetch command without any pre-configured scope.",
2047
"type": "string",
2048
-
"const": "http:deny-fetch"
2049
},
2050
{
2051
"description": "Denies the fetch_cancel command without any pre-configured scope.",
2052
"type": "string",
2053
-
"const": "http:deny-fetch-cancel"
2054
},
2055
{
2056
"description": "Denies the fetch_read_body command without any pre-configured scope.",
2057
"type": "string",
2058
-
"const": "http:deny-fetch-read-body"
2059
},
2060
{
2061
"description": "Denies the fetch_send command without any pre-configured scope.",
2062
"type": "string",
2063
-
"const": "http:deny-fetch-send"
2064
},
2065
{
2066
-
"description": "This permission set configures which\nprocess feeatures are by default exposed.\n\n#### Granted Permissions\n\nThis enables to quit via `allow-exit` and restart via `allow-restart`\nthe application.\n",
2067
"type": "string",
2068
-
"const": "process:default"
2069
},
2070
{
2071
"description": "Enables the exit command without any pre-configured scope.",
2072
"type": "string",
2073
-
"const": "process:allow-exit"
2074
},
2075
{
2076
"description": "Enables the restart command without any pre-configured scope.",
2077
"type": "string",
2078
-
"const": "process:allow-restart"
2079
},
2080
{
2081
"description": "Denies the exit command without any pre-configured scope.",
2082
"type": "string",
2083
-
"const": "process:deny-exit"
2084
},
2085
{
2086
"description": "Denies the restart command without any pre-configured scope.",
2087
"type": "string",
2088
-
"const": "process:deny-restart"
2089
},
2090
{
2091
-
"description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n",
2092
"type": "string",
2093
-
"const": "shell:default"
2094
},
2095
{
2096
"description": "Enables the execute command without any pre-configured scope.",
2097
"type": "string",
2098
-
"const": "shell:allow-execute"
2099
},
2100
{
2101
"description": "Enables the kill command without any pre-configured scope.",
2102
"type": "string",
2103
-
"const": "shell:allow-kill"
2104
},
2105
{
2106
"description": "Enables the open command without any pre-configured scope.",
2107
"type": "string",
2108
-
"const": "shell:allow-open"
2109
},
2110
{
2111
"description": "Enables the spawn command without any pre-configured scope.",
2112
"type": "string",
2113
-
"const": "shell:allow-spawn"
2114
},
2115
{
2116
"description": "Enables the stdin_write command without any pre-configured scope.",
2117
"type": "string",
2118
-
"const": "shell:allow-stdin-write"
2119
},
2120
{
2121
"description": "Denies the execute command without any pre-configured scope.",
2122
"type": "string",
2123
-
"const": "shell:deny-execute"
2124
},
2125
{
2126
"description": "Denies the kill command without any pre-configured scope.",
2127
"type": "string",
2128
-
"const": "shell:deny-kill"
2129
},
2130
{
2131
"description": "Denies the open command without any pre-configured scope.",
2132
"type": "string",
2133
-
"const": "shell:deny-open"
2134
},
2135
{
2136
"description": "Denies the spawn command without any pre-configured scope.",
2137
"type": "string",
2138
-
"const": "shell:deny-spawn"
2139
},
2140
{
2141
"description": "Denies the stdin_write command without any pre-configured scope.",
2142
"type": "string",
2143
-
"const": "shell:deny-stdin-write"
2144
}
2145
]
2146
},
···
37
],
38
"definitions": {
39
"Capability": {
40
+
"description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows' and webviews' fine grained access to the Tauri core, application, or plugin commands. If a webview or its window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```",
41
"type": "object",
42
"required": [
43
"identifier",
···
49
"type": "string"
50
},
51
"description": {
52
+
"description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.",
53
"default": "",
54
"type": "string"
55
},
···
70
"type": "boolean"
71
},
72
"windows": {
73
+
"description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nIf a window label matches any of the patterns in this list, the capability will be enabled on all the webviews of that window, regardless of the value of [`Self::webviews`].\n\nOn multiwebview windows, prefer specifying [`Self::webviews`] and omitting [`Self::windows`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`",
74
"type": "array",
75
"items": {
76
"type": "string"
77
}
78
},
79
"webviews": {
80
+
"description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThe capability will be enabled on all the webviews whose label matches any of the patterns in this list, regardless of whether the webview's window label matches a pattern in [`Self::windows`].\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`",
81
"type": "array",
82
"items": {
83
"type": "string"
84
}
85
},
86
"permissions": {
87
+
"description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ] ```",
88
"type": "array",
89
"items": {
90
"$ref": "#/definitions/PermissionEntry"
···
140
"identifier": {
141
"anyOf": [
142
{
143
+
"description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`",
144
"type": "string",
145
+
"const": "http:default",
146
+
"markdownDescription": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`"
147
},
148
{
149
"description": "Enables the fetch command without any pre-configured scope.",
150
"type": "string",
151
+
"const": "http:allow-fetch",
152
+
"markdownDescription": "Enables the fetch command without any pre-configured scope."
153
},
154
{
155
"description": "Enables the fetch_cancel command without any pre-configured scope.",
156
"type": "string",
157
+
"const": "http:allow-fetch-cancel",
158
+
"markdownDescription": "Enables the fetch_cancel command without any pre-configured scope."
159
},
160
{
161
"description": "Enables the fetch_read_body command without any pre-configured scope.",
162
"type": "string",
163
+
"const": "http:allow-fetch-read-body",
164
+
"markdownDescription": "Enables the fetch_read_body command without any pre-configured scope."
165
},
166
{
167
"description": "Enables the fetch_send command without any pre-configured scope.",
168
"type": "string",
169
+
"const": "http:allow-fetch-send",
170
+
"markdownDescription": "Enables the fetch_send command without any pre-configured scope."
171
},
172
{
173
"description": "Denies the fetch command without any pre-configured scope.",
174
"type": "string",
175
+
"const": "http:deny-fetch",
176
+
"markdownDescription": "Denies the fetch command without any pre-configured scope."
177
},
178
{
179
"description": "Denies the fetch_cancel command without any pre-configured scope.",
180
"type": "string",
181
+
"const": "http:deny-fetch-cancel",
182
+
"markdownDescription": "Denies the fetch_cancel command without any pre-configured scope."
183
},
184
{
185
"description": "Denies the fetch_read_body command without any pre-configured scope.",
186
"type": "string",
187
+
"const": "http:deny-fetch-read-body",
188
+
"markdownDescription": "Denies the fetch_read_body command without any pre-configured scope."
189
},
190
{
191
"description": "Denies the fetch_send command without any pre-configured scope.",
192
"type": "string",
193
+
"const": "http:deny-fetch-send",
194
+
"markdownDescription": "Denies the fetch_send command without any pre-configured scope."
195
}
196
]
197
}
···
266
"identifier": {
267
"anyOf": [
268
{
269
+
"description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`",
270
"type": "string",
271
+
"const": "shell:default",
272
+
"markdownDescription": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`"
273
},
274
{
275
"description": "Enables the execute command without any pre-configured scope.",
276
"type": "string",
277
+
"const": "shell:allow-execute",
278
+
"markdownDescription": "Enables the execute command without any pre-configured scope."
279
},
280
{
281
"description": "Enables the kill command without any pre-configured scope.",
282
"type": "string",
283
+
"const": "shell:allow-kill",
284
+
"markdownDescription": "Enables the kill command without any pre-configured scope."
285
},
286
{
287
"description": "Enables the open command without any pre-configured scope.",
288
"type": "string",
289
+
"const": "shell:allow-open",
290
+
"markdownDescription": "Enables the open command without any pre-configured scope."
291
},
292
{
293
"description": "Enables the spawn command without any pre-configured scope.",
294
"type": "string",
295
+
"const": "shell:allow-spawn",
296
+
"markdownDescription": "Enables the spawn command without any pre-configured scope."
297
},
298
{
299
"description": "Enables the stdin_write command without any pre-configured scope.",
300
"type": "string",
301
+
"const": "shell:allow-stdin-write",
302
+
"markdownDescription": "Enables the stdin_write command without any pre-configured scope."
303
},
304
{
305
"description": "Denies the execute command without any pre-configured scope.",
306
"type": "string",
307
+
"const": "shell:deny-execute",
308
+
"markdownDescription": "Denies the execute command without any pre-configured scope."
309
},
310
{
311
"description": "Denies the kill command without any pre-configured scope.",
312
"type": "string",
313
+
"const": "shell:deny-kill",
314
+
"markdownDescription": "Denies the kill command without any pre-configured scope."
315
},
316
{
317
"description": "Denies the open command without any pre-configured scope.",
318
"type": "string",
319
+
"const": "shell:deny-open",
320
+
"markdownDescription": "Denies the open command without any pre-configured scope."
321
},
322
{
323
"description": "Denies the spawn command without any pre-configured scope.",
324
"type": "string",
325
+
"const": "shell:deny-spawn",
326
+
"markdownDescription": "Denies the spawn command without any pre-configured scope."
327
},
328
{
329
"description": "Denies the stdin_write command without any pre-configured scope.",
330
"type": "string",
331
+
"const": "shell:deny-stdin-write",
332
+
"markdownDescription": "Denies the stdin_write command without any pre-configured scope."
333
}
334
]
335
}
···
513
"description": "Permission identifier",
514
"oneOf": [
515
{
516
+
"description": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`",
517
"type": "string",
518
+
"const": "core:default",
519
+
"markdownDescription": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`"
520
},
521
{
522
+
"description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`",
523
"type": "string",
524
+
"const": "core:app:default",
525
+
"markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`"
526
},
527
{
528
"description": "Enables the app_hide command without any pre-configured scope.",
529
"type": "string",
530
+
"const": "core:app:allow-app-hide",
531
+
"markdownDescription": "Enables the app_hide command without any pre-configured scope."
532
},
533
{
534
"description": "Enables the app_show command without any pre-configured scope.",
535
"type": "string",
536
+
"const": "core:app:allow-app-show",
537
+
"markdownDescription": "Enables the app_show command without any pre-configured scope."
538
+
},
539
+
{
540
+
"description": "Enables the bundle_type command without any pre-configured scope.",
541
+
"type": "string",
542
+
"const": "core:app:allow-bundle-type",
543
+
"markdownDescription": "Enables the bundle_type command without any pre-configured scope."
544
},
545
{
546
"description": "Enables the default_window_icon command without any pre-configured scope.",
547
"type": "string",
548
+
"const": "core:app:allow-default-window-icon",
549
+
"markdownDescription": "Enables the default_window_icon command without any pre-configured scope."
550
+
},
551
+
{
552
+
"description": "Enables the fetch_data_store_identifiers command without any pre-configured scope.",
553
+
"type": "string",
554
+
"const": "core:app:allow-fetch-data-store-identifiers",
555
+
"markdownDescription": "Enables the fetch_data_store_identifiers command without any pre-configured scope."
556
+
},
557
+
{
558
+
"description": "Enables the identifier command without any pre-configured scope.",
559
+
"type": "string",
560
+
"const": "core:app:allow-identifier",
561
+
"markdownDescription": "Enables the identifier command without any pre-configured scope."
562
},
563
{
564
"description": "Enables the name command without any pre-configured scope.",
565
"type": "string",
566
+
"const": "core:app:allow-name",
567
+
"markdownDescription": "Enables the name command without any pre-configured scope."
568
+
},
569
+
{
570
+
"description": "Enables the register_listener command without any pre-configured scope.",
571
+
"type": "string",
572
+
"const": "core:app:allow-register-listener",
573
+
"markdownDescription": "Enables the register_listener command without any pre-configured scope."
574
+
},
575
+
{
576
+
"description": "Enables the remove_data_store command without any pre-configured scope.",
577
+
"type": "string",
578
+
"const": "core:app:allow-remove-data-store",
579
+
"markdownDescription": "Enables the remove_data_store command without any pre-configured scope."
580
+
},
581
+
{
582
+
"description": "Enables the remove_listener command without any pre-configured scope.",
583
+
"type": "string",
584
+
"const": "core:app:allow-remove-listener",
585
+
"markdownDescription": "Enables the remove_listener command without any pre-configured scope."
586
},
587
{
588
"description": "Enables the set_app_theme command without any pre-configured scope.",
589
"type": "string",
590
+
"const": "core:app:allow-set-app-theme",
591
+
"markdownDescription": "Enables the set_app_theme command without any pre-configured scope."
592
+
},
593
+
{
594
+
"description": "Enables the set_dock_visibility command without any pre-configured scope.",
595
+
"type": "string",
596
+
"const": "core:app:allow-set-dock-visibility",
597
+
"markdownDescription": "Enables the set_dock_visibility command without any pre-configured scope."
598
},
599
{
600
"description": "Enables the tauri_version command without any pre-configured scope.",
601
"type": "string",
602
+
"const": "core:app:allow-tauri-version",
603
+
"markdownDescription": "Enables the tauri_version command without any pre-configured scope."
604
},
605
{
606
"description": "Enables the version command without any pre-configured scope.",
607
"type": "string",
608
+
"const": "core:app:allow-version",
609
+
"markdownDescription": "Enables the version command without any pre-configured scope."
610
},
611
{
612
"description": "Denies the app_hide command without any pre-configured scope.",
613
"type": "string",
614
+
"const": "core:app:deny-app-hide",
615
+
"markdownDescription": "Denies the app_hide command without any pre-configured scope."
616
},
617
{
618
"description": "Denies the app_show command without any pre-configured scope.",
619
"type": "string",
620
+
"const": "core:app:deny-app-show",
621
+
"markdownDescription": "Denies the app_show command without any pre-configured scope."
622
+
},
623
+
{
624
+
"description": "Denies the bundle_type command without any pre-configured scope.",
625
+
"type": "string",
626
+
"const": "core:app:deny-bundle-type",
627
+
"markdownDescription": "Denies the bundle_type command without any pre-configured scope."
628
},
629
{
630
"description": "Denies the default_window_icon command without any pre-configured scope.",
631
"type": "string",
632
+
"const": "core:app:deny-default-window-icon",
633
+
"markdownDescription": "Denies the default_window_icon command without any pre-configured scope."
634
+
},
635
+
{
636
+
"description": "Denies the fetch_data_store_identifiers command without any pre-configured scope.",
637
+
"type": "string",
638
+
"const": "core:app:deny-fetch-data-store-identifiers",
639
+
"markdownDescription": "Denies the fetch_data_store_identifiers command without any pre-configured scope."
640
+
},
641
+
{
642
+
"description": "Denies the identifier command without any pre-configured scope.",
643
+
"type": "string",
644
+
"const": "core:app:deny-identifier",
645
+
"markdownDescription": "Denies the identifier command without any pre-configured scope."
646
},
647
{
648
"description": "Denies the name command without any pre-configured scope.",
649
"type": "string",
650
+
"const": "core:app:deny-name",
651
+
"markdownDescription": "Denies the name command without any pre-configured scope."
652
+
},
653
+
{
654
+
"description": "Denies the register_listener command without any pre-configured scope.",
655
+
"type": "string",
656
+
"const": "core:app:deny-register-listener",
657
+
"markdownDescription": "Denies the register_listener command without any pre-configured scope."
658
+
},
659
+
{
660
+
"description": "Denies the remove_data_store command without any pre-configured scope.",
661
+
"type": "string",
662
+
"const": "core:app:deny-remove-data-store",
663
+
"markdownDescription": "Denies the remove_data_store command without any pre-configured scope."
664
+
},
665
+
{
666
+
"description": "Denies the remove_listener command without any pre-configured scope.",
667
+
"type": "string",
668
+
"const": "core:app:deny-remove-listener",
669
+
"markdownDescription": "Denies the remove_listener command without any pre-configured scope."
670
},
671
{
672
"description": "Denies the set_app_theme command without any pre-configured scope.",
673
"type": "string",
674
+
"const": "core:app:deny-set-app-theme",
675
+
"markdownDescription": "Denies the set_app_theme command without any pre-configured scope."
676
+
},
677
+
{
678
+
"description": "Denies the set_dock_visibility command without any pre-configured scope.",
679
+
"type": "string",
680
+
"const": "core:app:deny-set-dock-visibility",
681
+
"markdownDescription": "Denies the set_dock_visibility command without any pre-configured scope."
682
},
683
{
684
"description": "Denies the tauri_version command without any pre-configured scope.",
685
"type": "string",
686
+
"const": "core:app:deny-tauri-version",
687
+
"markdownDescription": "Denies the tauri_version command without any pre-configured scope."
688
},
689
{
690
"description": "Denies the version command without any pre-configured scope.",
691
"type": "string",
692
+
"const": "core:app:deny-version",
693
+
"markdownDescription": "Denies the version command without any pre-configured scope."
694
},
695
{
696
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`",
697
"type": "string",
698
+
"const": "core:event:default",
699
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`"
700
},
701
{
702
"description": "Enables the emit command without any pre-configured scope.",
703
"type": "string",
704
+
"const": "core:event:allow-emit",
705
+
"markdownDescription": "Enables the emit command without any pre-configured scope."
706
},
707
{
708
"description": "Enables the emit_to command without any pre-configured scope.",
709
"type": "string",
710
+
"const": "core:event:allow-emit-to",
711
+
"markdownDescription": "Enables the emit_to command without any pre-configured scope."
712
},
713
{
714
"description": "Enables the listen command without any pre-configured scope.",
715
"type": "string",
716
+
"const": "core:event:allow-listen",
717
+
"markdownDescription": "Enables the listen command without any pre-configured scope."
718
},
719
{
720
"description": "Enables the unlisten command without any pre-configured scope.",
721
"type": "string",
722
+
"const": "core:event:allow-unlisten",
723
+
"markdownDescription": "Enables the unlisten command without any pre-configured scope."
724
},
725
{
726
"description": "Denies the emit command without any pre-configured scope.",
727
"type": "string",
728
+
"const": "core:event:deny-emit",
729
+
"markdownDescription": "Denies the emit command without any pre-configured scope."
730
},
731
{
732
"description": "Denies the emit_to command without any pre-configured scope.",
733
"type": "string",
734
+
"const": "core:event:deny-emit-to",
735
+
"markdownDescription": "Denies the emit_to command without any pre-configured scope."
736
},
737
{
738
"description": "Denies the listen command without any pre-configured scope.",
739
"type": "string",
740
+
"const": "core:event:deny-listen",
741
+
"markdownDescription": "Denies the listen command without any pre-configured scope."
742
},
743
{
744
"description": "Denies the unlisten command without any pre-configured scope.",
745
"type": "string",
746
+
"const": "core:event:deny-unlisten",
747
+
"markdownDescription": "Denies the unlisten command without any pre-configured scope."
748
},
749
{
750
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`",
751
"type": "string",
752
+
"const": "core:image:default",
753
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`"
754
},
755
{
756
"description": "Enables the from_bytes command without any pre-configured scope.",
757
"type": "string",
758
+
"const": "core:image:allow-from-bytes",
759
+
"markdownDescription": "Enables the from_bytes command without any pre-configured scope."
760
},
761
{
762
"description": "Enables the from_path command without any pre-configured scope.",
763
"type": "string",
764
+
"const": "core:image:allow-from-path",
765
+
"markdownDescription": "Enables the from_path command without any pre-configured scope."
766
},
767
{
768
"description": "Enables the new command without any pre-configured scope.",
769
"type": "string",
770
+
"const": "core:image:allow-new",
771
+
"markdownDescription": "Enables the new command without any pre-configured scope."
772
},
773
{
774
"description": "Enables the rgba command without any pre-configured scope.",
775
"type": "string",
776
+
"const": "core:image:allow-rgba",
777
+
"markdownDescription": "Enables the rgba command without any pre-configured scope."
778
},
779
{
780
"description": "Enables the size command without any pre-configured scope.",
781
"type": "string",
782
+
"const": "core:image:allow-size",
783
+
"markdownDescription": "Enables the size command without any pre-configured scope."
784
},
785
{
786
"description": "Denies the from_bytes command without any pre-configured scope.",
787
"type": "string",
788
+
"const": "core:image:deny-from-bytes",
789
+
"markdownDescription": "Denies the from_bytes command without any pre-configured scope."
790
},
791
{
792
"description": "Denies the from_path command without any pre-configured scope.",
793
"type": "string",
794
+
"const": "core:image:deny-from-path",
795
+
"markdownDescription": "Denies the from_path command without any pre-configured scope."
796
},
797
{
798
"description": "Denies the new command without any pre-configured scope.",
799
"type": "string",
800
+
"const": "core:image:deny-new",
801
+
"markdownDescription": "Denies the new command without any pre-configured scope."
802
},
803
{
804
"description": "Denies the rgba command without any pre-configured scope.",
805
"type": "string",
806
+
"const": "core:image:deny-rgba",
807
+
"markdownDescription": "Denies the rgba command without any pre-configured scope."
808
},
809
{
810
"description": "Denies the size command without any pre-configured scope.",
811
"type": "string",
812
+
"const": "core:image:deny-size",
813
+
"markdownDescription": "Denies the size command without any pre-configured scope."
814
},
815
{
816
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`",
817
"type": "string",
818
+
"const": "core:menu:default",
819
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`"
820
},
821
{
822
"description": "Enables the append command without any pre-configured scope.",
823
"type": "string",
824
+
"const": "core:menu:allow-append",
825
+
"markdownDescription": "Enables the append command without any pre-configured scope."
826
},
827
{
828
"description": "Enables the create_default command without any pre-configured scope.",
829
"type": "string",
830
+
"const": "core:menu:allow-create-default",
831
+
"markdownDescription": "Enables the create_default command without any pre-configured scope."
832
},
833
{
834
"description": "Enables the get command without any pre-configured scope.",
835
"type": "string",
836
+
"const": "core:menu:allow-get",
837
+
"markdownDescription": "Enables the get command without any pre-configured scope."
838
},
839
{
840
"description": "Enables the insert command without any pre-configured scope.",
841
"type": "string",
842
+
"const": "core:menu:allow-insert",
843
+
"markdownDescription": "Enables the insert command without any pre-configured scope."
844
},
845
{
846
"description": "Enables the is_checked command without any pre-configured scope.",
847
"type": "string",
848
+
"const": "core:menu:allow-is-checked",
849
+
"markdownDescription": "Enables the is_checked command without any pre-configured scope."
850
},
851
{
852
"description": "Enables the is_enabled command without any pre-configured scope.",
853
"type": "string",
854
+
"const": "core:menu:allow-is-enabled",
855
+
"markdownDescription": "Enables the is_enabled command without any pre-configured scope."
856
},
857
{
858
"description": "Enables the items command without any pre-configured scope.",
859
"type": "string",
860
+
"const": "core:menu:allow-items",
861
+
"markdownDescription": "Enables the items command without any pre-configured scope."
862
},
863
{
864
"description": "Enables the new command without any pre-configured scope.",
865
"type": "string",
866
+
"const": "core:menu:allow-new",
867
+
"markdownDescription": "Enables the new command without any pre-configured scope."
868
},
869
{
870
"description": "Enables the popup command without any pre-configured scope.",
871
"type": "string",
872
+
"const": "core:menu:allow-popup",
873
+
"markdownDescription": "Enables the popup command without any pre-configured scope."
874
},
875
{
876
"description": "Enables the prepend command without any pre-configured scope.",
877
"type": "string",
878
+
"const": "core:menu:allow-prepend",
879
+
"markdownDescription": "Enables the prepend command without any pre-configured scope."
880
},
881
{
882
"description": "Enables the remove command without any pre-configured scope.",
883
"type": "string",
884
+
"const": "core:menu:allow-remove",
885
+
"markdownDescription": "Enables the remove command without any pre-configured scope."
886
},
887
{
888
"description": "Enables the remove_at command without any pre-configured scope.",
889
"type": "string",
890
+
"const": "core:menu:allow-remove-at",
891
+
"markdownDescription": "Enables the remove_at command without any pre-configured scope."
892
},
893
{
894
"description": "Enables the set_accelerator command without any pre-configured scope.",
895
"type": "string",
896
+
"const": "core:menu:allow-set-accelerator",
897
+
"markdownDescription": "Enables the set_accelerator command without any pre-configured scope."
898
},
899
{
900
"description": "Enables the set_as_app_menu command without any pre-configured scope.",
901
"type": "string",
902
+
"const": "core:menu:allow-set-as-app-menu",
903
+
"markdownDescription": "Enables the set_as_app_menu command without any pre-configured scope."
904
},
905
{
906
"description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.",
907
"type": "string",
908
+
"const": "core:menu:allow-set-as-help-menu-for-nsapp",
909
+
"markdownDescription": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope."
910
},
911
{
912
"description": "Enables the set_as_window_menu command without any pre-configured scope.",
913
"type": "string",
914
+
"const": "core:menu:allow-set-as-window-menu",
915
+
"markdownDescription": "Enables the set_as_window_menu command without any pre-configured scope."
916
},
917
{
918
"description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.",
919
"type": "string",
920
+
"const": "core:menu:allow-set-as-windows-menu-for-nsapp",
921
+
"markdownDescription": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope."
922
},
923
{
924
"description": "Enables the set_checked command without any pre-configured scope.",
925
"type": "string",
926
+
"const": "core:menu:allow-set-checked",
927
+
"markdownDescription": "Enables the set_checked command without any pre-configured scope."
928
},
929
{
930
"description": "Enables the set_enabled command without any pre-configured scope.",
931
"type": "string",
932
+
"const": "core:menu:allow-set-enabled",
933
+
"markdownDescription": "Enables the set_enabled command without any pre-configured scope."
934
},
935
{
936
"description": "Enables the set_icon command without any pre-configured scope.",
937
"type": "string",
938
+
"const": "core:menu:allow-set-icon",
939
+
"markdownDescription": "Enables the set_icon command without any pre-configured scope."
940
},
941
{
942
"description": "Enables the set_text command without any pre-configured scope.",
943
"type": "string",
944
+
"const": "core:menu:allow-set-text",
945
+
"markdownDescription": "Enables the set_text command without any pre-configured scope."
946
},
947
{
948
"description": "Enables the text command without any pre-configured scope.",
949
"type": "string",
950
+
"const": "core:menu:allow-text",
951
+
"markdownDescription": "Enables the text command without any pre-configured scope."
952
},
953
{
954
"description": "Denies the append command without any pre-configured scope.",
955
"type": "string",
956
+
"const": "core:menu:deny-append",
957
+
"markdownDescription": "Denies the append command without any pre-configured scope."
958
},
959
{
960
"description": "Denies the create_default command without any pre-configured scope.",
961
"type": "string",
962
+
"const": "core:menu:deny-create-default",
963
+
"markdownDescription": "Denies the create_default command without any pre-configured scope."
964
},
965
{
966
"description": "Denies the get command without any pre-configured scope.",
967
"type": "string",
968
+
"const": "core:menu:deny-get",
969
+
"markdownDescription": "Denies the get command without any pre-configured scope."
970
},
971
{
972
"description": "Denies the insert command without any pre-configured scope.",
973
"type": "string",
974
+
"const": "core:menu:deny-insert",
975
+
"markdownDescription": "Denies the insert command without any pre-configured scope."
976
},
977
{
978
"description": "Denies the is_checked command without any pre-configured scope.",
979
"type": "string",
980
+
"const": "core:menu:deny-is-checked",
981
+
"markdownDescription": "Denies the is_checked command without any pre-configured scope."
982
},
983
{
984
"description": "Denies the is_enabled command without any pre-configured scope.",
985
"type": "string",
986
+
"const": "core:menu:deny-is-enabled",
987
+
"markdownDescription": "Denies the is_enabled command without any pre-configured scope."
988
},
989
{
990
"description": "Denies the items command without any pre-configured scope.",
991
"type": "string",
992
+
"const": "core:menu:deny-items",
993
+
"markdownDescription": "Denies the items command without any pre-configured scope."
994
},
995
{
996
"description": "Denies the new command without any pre-configured scope.",
997
"type": "string",
998
+
"const": "core:menu:deny-new",
999
+
"markdownDescription": "Denies the new command without any pre-configured scope."
1000
},
1001
{
1002
"description": "Denies the popup command without any pre-configured scope.",
1003
"type": "string",
1004
+
"const": "core:menu:deny-popup",
1005
+
"markdownDescription": "Denies the popup command without any pre-configured scope."
1006
},
1007
{
1008
"description": "Denies the prepend command without any pre-configured scope.",
1009
"type": "string",
1010
+
"const": "core:menu:deny-prepend",
1011
+
"markdownDescription": "Denies the prepend command without any pre-configured scope."
1012
},
1013
{
1014
"description": "Denies the remove command without any pre-configured scope.",
1015
"type": "string",
1016
+
"const": "core:menu:deny-remove",
1017
+
"markdownDescription": "Denies the remove command without any pre-configured scope."
1018
},
1019
{
1020
"description": "Denies the remove_at command without any pre-configured scope.",
1021
"type": "string",
1022
+
"const": "core:menu:deny-remove-at",
1023
+
"markdownDescription": "Denies the remove_at command without any pre-configured scope."
1024
},
1025
{
1026
"description": "Denies the set_accelerator command without any pre-configured scope.",
1027
"type": "string",
1028
+
"const": "core:menu:deny-set-accelerator",
1029
+
"markdownDescription": "Denies the set_accelerator command without any pre-configured scope."
1030
},
1031
{
1032
"description": "Denies the set_as_app_menu command without any pre-configured scope.",
1033
"type": "string",
1034
+
"const": "core:menu:deny-set-as-app-menu",
1035
+
"markdownDescription": "Denies the set_as_app_menu command without any pre-configured scope."
1036
},
1037
{
1038
"description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.",
1039
"type": "string",
1040
+
"const": "core:menu:deny-set-as-help-menu-for-nsapp",
1041
+
"markdownDescription": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope."
1042
},
1043
{
1044
"description": "Denies the set_as_window_menu command without any pre-configured scope.",
1045
"type": "string",
1046
+
"const": "core:menu:deny-set-as-window-menu",
1047
+
"markdownDescription": "Denies the set_as_window_menu command without any pre-configured scope."
1048
},
1049
{
1050
"description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.",
1051
"type": "string",
1052
+
"const": "core:menu:deny-set-as-windows-menu-for-nsapp",
1053
+
"markdownDescription": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope."
1054
},
1055
{
1056
"description": "Denies the set_checked command without any pre-configured scope.",
1057
"type": "string",
1058
+
"const": "core:menu:deny-set-checked",
1059
+
"markdownDescription": "Denies the set_checked command without any pre-configured scope."
1060
},
1061
{
1062
"description": "Denies the set_enabled command without any pre-configured scope.",
1063
"type": "string",
1064
+
"const": "core:menu:deny-set-enabled",
1065
+
"markdownDescription": "Denies the set_enabled command without any pre-configured scope."
1066
},
1067
{
1068
"description": "Denies the set_icon command without any pre-configured scope.",
1069
"type": "string",
1070
+
"const": "core:menu:deny-set-icon",
1071
+
"markdownDescription": "Denies the set_icon command without any pre-configured scope."
1072
},
1073
{
1074
"description": "Denies the set_text command without any pre-configured scope.",
1075
"type": "string",
1076
+
"const": "core:menu:deny-set-text",
1077
+
"markdownDescription": "Denies the set_text command without any pre-configured scope."
1078
},
1079
{
1080
"description": "Denies the text command without any pre-configured scope.",
1081
"type": "string",
1082
+
"const": "core:menu:deny-text",
1083
+
"markdownDescription": "Denies the text command without any pre-configured scope."
1084
},
1085
{
1086
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`",
1087
"type": "string",
1088
+
"const": "core:path:default",
1089
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`"
1090
},
1091
{
1092
"description": "Enables the basename command without any pre-configured scope.",
1093
"type": "string",
1094
+
"const": "core:path:allow-basename",
1095
+
"markdownDescription": "Enables the basename command without any pre-configured scope."
1096
},
1097
{
1098
"description": "Enables the dirname command without any pre-configured scope.",
1099
"type": "string",
1100
+
"const": "core:path:allow-dirname",
1101
+
"markdownDescription": "Enables the dirname command without any pre-configured scope."
1102
},
1103
{
1104
"description": "Enables the extname command without any pre-configured scope.",
1105
"type": "string",
1106
+
"const": "core:path:allow-extname",
1107
+
"markdownDescription": "Enables the extname command without any pre-configured scope."
1108
},
1109
{
1110
"description": "Enables the is_absolute command without any pre-configured scope.",
1111
"type": "string",
1112
+
"const": "core:path:allow-is-absolute",
1113
+
"markdownDescription": "Enables the is_absolute command without any pre-configured scope."
1114
},
1115
{
1116
"description": "Enables the join command without any pre-configured scope.",
1117
"type": "string",
1118
+
"const": "core:path:allow-join",
1119
+
"markdownDescription": "Enables the join command without any pre-configured scope."
1120
},
1121
{
1122
"description": "Enables the normalize command without any pre-configured scope.",
1123
"type": "string",
1124
+
"const": "core:path:allow-normalize",
1125
+
"markdownDescription": "Enables the normalize command without any pre-configured scope."
1126
},
1127
{
1128
"description": "Enables the resolve command without any pre-configured scope.",
1129
"type": "string",
1130
+
"const": "core:path:allow-resolve",
1131
+
"markdownDescription": "Enables the resolve command without any pre-configured scope."
1132
},
1133
{
1134
"description": "Enables the resolve_directory command without any pre-configured scope.",
1135
"type": "string",
1136
+
"const": "core:path:allow-resolve-directory",
1137
+
"markdownDescription": "Enables the resolve_directory command without any pre-configured scope."
1138
},
1139
{
1140
"description": "Denies the basename command without any pre-configured scope.",
1141
"type": "string",
1142
+
"const": "core:path:deny-basename",
1143
+
"markdownDescription": "Denies the basename command without any pre-configured scope."
1144
},
1145
{
1146
"description": "Denies the dirname command without any pre-configured scope.",
1147
"type": "string",
1148
+
"const": "core:path:deny-dirname",
1149
+
"markdownDescription": "Denies the dirname command without any pre-configured scope."
1150
},
1151
{
1152
"description": "Denies the extname command without any pre-configured scope.",
1153
"type": "string",
1154
+
"const": "core:path:deny-extname",
1155
+
"markdownDescription": "Denies the extname command without any pre-configured scope."
1156
},
1157
{
1158
"description": "Denies the is_absolute command without any pre-configured scope.",
1159
"type": "string",
1160
+
"const": "core:path:deny-is-absolute",
1161
+
"markdownDescription": "Denies the is_absolute command without any pre-configured scope."
1162
},
1163
{
1164
"description": "Denies the join command without any pre-configured scope.",
1165
"type": "string",
1166
+
"const": "core:path:deny-join",
1167
+
"markdownDescription": "Denies the join command without any pre-configured scope."
1168
},
1169
{
1170
"description": "Denies the normalize command without any pre-configured scope.",
1171
"type": "string",
1172
+
"const": "core:path:deny-normalize",
1173
+
"markdownDescription": "Denies the normalize command without any pre-configured scope."
1174
},
1175
{
1176
"description": "Denies the resolve command without any pre-configured scope.",
1177
"type": "string",
1178
+
"const": "core:path:deny-resolve",
1179
+
"markdownDescription": "Denies the resolve command without any pre-configured scope."
1180
},
1181
{
1182
"description": "Denies the resolve_directory command without any pre-configured scope.",
1183
"type": "string",
1184
+
"const": "core:path:deny-resolve-directory",
1185
+
"markdownDescription": "Denies the resolve_directory command without any pre-configured scope."
1186
},
1187
{
1188
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`",
1189
"type": "string",
1190
+
"const": "core:resources:default",
1191
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`"
1192
},
1193
{
1194
"description": "Enables the close command without any pre-configured scope.",
1195
"type": "string",
1196
+
"const": "core:resources:allow-close",
1197
+
"markdownDescription": "Enables the close command without any pre-configured scope."
1198
},
1199
{
1200
"description": "Denies the close command without any pre-configured scope.",
1201
"type": "string",
1202
+
"const": "core:resources:deny-close",
1203
+
"markdownDescription": "Denies the close command without any pre-configured scope."
1204
},
1205
{
1206
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-show-menu-on-left-click`",
1207
"type": "string",
1208
+
"const": "core:tray:default",
1209
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-show-menu-on-left-click`"
1210
},
1211
{
1212
"description": "Enables the get_by_id command without any pre-configured scope.",
1213
"type": "string",
1214
+
"const": "core:tray:allow-get-by-id",
1215
+
"markdownDescription": "Enables the get_by_id command without any pre-configured scope."
1216
},
1217
{
1218
"description": "Enables the new command without any pre-configured scope.",
1219
"type": "string",
1220
+
"const": "core:tray:allow-new",
1221
+
"markdownDescription": "Enables the new command without any pre-configured scope."
1222
},
1223
{
1224
"description": "Enables the remove_by_id command without any pre-configured scope.",
1225
"type": "string",
1226
+
"const": "core:tray:allow-remove-by-id",
1227
+
"markdownDescription": "Enables the remove_by_id command without any pre-configured scope."
1228
},
1229
{
1230
"description": "Enables the set_icon command without any pre-configured scope.",
1231
"type": "string",
1232
+
"const": "core:tray:allow-set-icon",
1233
+
"markdownDescription": "Enables the set_icon command without any pre-configured scope."
1234
},
1235
{
1236
"description": "Enables the set_icon_as_template command without any pre-configured scope.",
1237
"type": "string",
1238
+
"const": "core:tray:allow-set-icon-as-template",
1239
+
"markdownDescription": "Enables the set_icon_as_template command without any pre-configured scope."
1240
},
1241
{
1242
"description": "Enables the set_menu command without any pre-configured scope.",
1243
"type": "string",
1244
+
"const": "core:tray:allow-set-menu",
1245
+
"markdownDescription": "Enables the set_menu command without any pre-configured scope."
1246
},
1247
{
1248
"description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.",
1249
"type": "string",
1250
+
"const": "core:tray:allow-set-show-menu-on-left-click",
1251
+
"markdownDescription": "Enables the set_show_menu_on_left_click command without any pre-configured scope."
1252
},
1253
{
1254
"description": "Enables the set_temp_dir_path command without any pre-configured scope.",
1255
"type": "string",
1256
+
"const": "core:tray:allow-set-temp-dir-path",
1257
+
"markdownDescription": "Enables the set_temp_dir_path command without any pre-configured scope."
1258
},
1259
{
1260
"description": "Enables the set_title command without any pre-configured scope.",
1261
"type": "string",
1262
+
"const": "core:tray:allow-set-title",
1263
+
"markdownDescription": "Enables the set_title command without any pre-configured scope."
1264
},
1265
{
1266
"description": "Enables the set_tooltip command without any pre-configured scope.",
1267
"type": "string",
1268
+
"const": "core:tray:allow-set-tooltip",
1269
+
"markdownDescription": "Enables the set_tooltip command without any pre-configured scope."
1270
},
1271
{
1272
"description": "Enables the set_visible command without any pre-configured scope.",
1273
"type": "string",
1274
+
"const": "core:tray:allow-set-visible",
1275
+
"markdownDescription": "Enables the set_visible command without any pre-configured scope."
1276
},
1277
{
1278
"description": "Denies the get_by_id command without any pre-configured scope.",
1279
"type": "string",
1280
+
"const": "core:tray:deny-get-by-id",
1281
+
"markdownDescription": "Denies the get_by_id command without any pre-configured scope."
1282
},
1283
{
1284
"description": "Denies the new command without any pre-configured scope.",
1285
"type": "string",
1286
+
"const": "core:tray:deny-new",
1287
+
"markdownDescription": "Denies the new command without any pre-configured scope."
1288
},
1289
{
1290
"description": "Denies the remove_by_id command without any pre-configured scope.",
1291
"type": "string",
1292
+
"const": "core:tray:deny-remove-by-id",
1293
+
"markdownDescription": "Denies the remove_by_id command without any pre-configured scope."
1294
},
1295
{
1296
"description": "Denies the set_icon command without any pre-configured scope.",
1297
"type": "string",
1298
+
"const": "core:tray:deny-set-icon",
1299
+
"markdownDescription": "Denies the set_icon command without any pre-configured scope."
1300
},
1301
{
1302
"description": "Denies the set_icon_as_template command without any pre-configured scope.",
1303
"type": "string",
1304
+
"const": "core:tray:deny-set-icon-as-template",
1305
+
"markdownDescription": "Denies the set_icon_as_template command without any pre-configured scope."
1306
},
1307
{
1308
"description": "Denies the set_menu command without any pre-configured scope.",
1309
"type": "string",
1310
+
"const": "core:tray:deny-set-menu",
1311
+
"markdownDescription": "Denies the set_menu command without any pre-configured scope."
1312
},
1313
{
1314
"description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.",
1315
"type": "string",
1316
+
"const": "core:tray:deny-set-show-menu-on-left-click",
1317
+
"markdownDescription": "Denies the set_show_menu_on_left_click command without any pre-configured scope."
1318
},
1319
{
1320
"description": "Denies the set_temp_dir_path command without any pre-configured scope.",
1321
"type": "string",
1322
+
"const": "core:tray:deny-set-temp-dir-path",
1323
+
"markdownDescription": "Denies the set_temp_dir_path command without any pre-configured scope."
1324
},
1325
{
1326
"description": "Denies the set_title command without any pre-configured scope.",
1327
"type": "string",
1328
+
"const": "core:tray:deny-set-title",
1329
+
"markdownDescription": "Denies the set_title command without any pre-configured scope."
1330
},
1331
{
1332
"description": "Denies the set_tooltip command without any pre-configured scope.",
1333
"type": "string",
1334
+
"const": "core:tray:deny-set-tooltip",
1335
+
"markdownDescription": "Denies the set_tooltip command without any pre-configured scope."
1336
},
1337
{
1338
"description": "Denies the set_visible command without any pre-configured scope.",
1339
"type": "string",
1340
+
"const": "core:tray:deny-set-visible",
1341
+
"markdownDescription": "Denies the set_visible command without any pre-configured scope."
1342
},
1343
{
1344
+
"description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`",
1345
"type": "string",
1346
+
"const": "core:webview:default",
1347
+
"markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`"
1348
},
1349
{
1350
"description": "Enables the clear_all_browsing_data command without any pre-configured scope.",
1351
"type": "string",
1352
+
"const": "core:webview:allow-clear-all-browsing-data",
1353
+
"markdownDescription": "Enables the clear_all_browsing_data command without any pre-configured scope."
1354
},
1355
{
1356
"description": "Enables the create_webview command without any pre-configured scope.",
1357
"type": "string",
1358
+
"const": "core:webview:allow-create-webview",
1359
+
"markdownDescription": "Enables the create_webview command without any pre-configured scope."
1360
},
1361
{
1362
"description": "Enables the create_webview_window command without any pre-configured scope.",
1363
"type": "string",
1364
+
"const": "core:webview:allow-create-webview-window",
1365
+
"markdownDescription": "Enables the create_webview_window command without any pre-configured scope."
1366
},
1367
{
1368
"description": "Enables the get_all_webviews command without any pre-configured scope.",
1369
"type": "string",
1370
+
"const": "core:webview:allow-get-all-webviews",
1371
+
"markdownDescription": "Enables the get_all_webviews command without any pre-configured scope."
1372
},
1373
{
1374
"description": "Enables the internal_toggle_devtools command without any pre-configured scope.",
1375
"type": "string",
1376
+
"const": "core:webview:allow-internal-toggle-devtools",
1377
+
"markdownDescription": "Enables the internal_toggle_devtools command without any pre-configured scope."
1378
},
1379
{
1380
"description": "Enables the print command without any pre-configured scope.",
1381
"type": "string",
1382
+
"const": "core:webview:allow-print",
1383
+
"markdownDescription": "Enables the print command without any pre-configured scope."
1384
},
1385
{
1386
"description": "Enables the reparent command without any pre-configured scope.",
1387
"type": "string",
1388
+
"const": "core:webview:allow-reparent",
1389
+
"markdownDescription": "Enables the reparent command without any pre-configured scope."
1390
+
},
1391
+
{
1392
+
"description": "Enables the set_webview_auto_resize command without any pre-configured scope.",
1393
+
"type": "string",
1394
+
"const": "core:webview:allow-set-webview-auto-resize",
1395
+
"markdownDescription": "Enables the set_webview_auto_resize command without any pre-configured scope."
1396
+
},
1397
+
{
1398
+
"description": "Enables the set_webview_background_color command without any pre-configured scope.",
1399
+
"type": "string",
1400
+
"const": "core:webview:allow-set-webview-background-color",
1401
+
"markdownDescription": "Enables the set_webview_background_color command without any pre-configured scope."
1402
},
1403
{
1404
"description": "Enables the set_webview_focus command without any pre-configured scope.",
1405
"type": "string",
1406
+
"const": "core:webview:allow-set-webview-focus",
1407
+
"markdownDescription": "Enables the set_webview_focus command without any pre-configured scope."
1408
},
1409
{
1410
"description": "Enables the set_webview_position command without any pre-configured scope.",
1411
"type": "string",
1412
+
"const": "core:webview:allow-set-webview-position",
1413
+
"markdownDescription": "Enables the set_webview_position command without any pre-configured scope."
1414
},
1415
{
1416
"description": "Enables the set_webview_size command without any pre-configured scope.",
1417
"type": "string",
1418
+
"const": "core:webview:allow-set-webview-size",
1419
+
"markdownDescription": "Enables the set_webview_size command without any pre-configured scope."
1420
},
1421
{
1422
"description": "Enables the set_webview_zoom command without any pre-configured scope.",
1423
"type": "string",
1424
+
"const": "core:webview:allow-set-webview-zoom",
1425
+
"markdownDescription": "Enables the set_webview_zoom command without any pre-configured scope."
1426
},
1427
{
1428
"description": "Enables the webview_close command without any pre-configured scope.",
1429
"type": "string",
1430
+
"const": "core:webview:allow-webview-close",
1431
+
"markdownDescription": "Enables the webview_close command without any pre-configured scope."
1432
},
1433
{
1434
"description": "Enables the webview_hide command without any pre-configured scope.",
1435
"type": "string",
1436
+
"const": "core:webview:allow-webview-hide",
1437
+
"markdownDescription": "Enables the webview_hide command without any pre-configured scope."
1438
},
1439
{
1440
"description": "Enables the webview_position command without any pre-configured scope.",
1441
"type": "string",
1442
+
"const": "core:webview:allow-webview-position",
1443
+
"markdownDescription": "Enables the webview_position command without any pre-configured scope."
1444
},
1445
{
1446
"description": "Enables the webview_show command without any pre-configured scope.",
1447
"type": "string",
1448
+
"const": "core:webview:allow-webview-show",
1449
+
"markdownDescription": "Enables the webview_show command without any pre-configured scope."
1450
},
1451
{
1452
"description": "Enables the webview_size command without any pre-configured scope.",
1453
"type": "string",
1454
+
"const": "core:webview:allow-webview-size",
1455
+
"markdownDescription": "Enables the webview_size command without any pre-configured scope."
1456
},
1457
{
1458
"description": "Denies the clear_all_browsing_data command without any pre-configured scope.",
1459
"type": "string",
1460
+
"const": "core:webview:deny-clear-all-browsing-data",
1461
+
"markdownDescription": "Denies the clear_all_browsing_data command without any pre-configured scope."
1462
},
1463
{
1464
"description": "Denies the create_webview command without any pre-configured scope.",
1465
"type": "string",
1466
+
"const": "core:webview:deny-create-webview",
1467
+
"markdownDescription": "Denies the create_webview command without any pre-configured scope."
1468
},
1469
{
1470
"description": "Denies the create_webview_window command without any pre-configured scope.",
1471
"type": "string",
1472
+
"const": "core:webview:deny-create-webview-window",
1473
+
"markdownDescription": "Denies the create_webview_window command without any pre-configured scope."
1474
},
1475
{
1476
"description": "Denies the get_all_webviews command without any pre-configured scope.",
1477
"type": "string",
1478
+
"const": "core:webview:deny-get-all-webviews",
1479
+
"markdownDescription": "Denies the get_all_webviews command without any pre-configured scope."
1480
},
1481
{
1482
"description": "Denies the internal_toggle_devtools command without any pre-configured scope.",
1483
"type": "string",
1484
+
"const": "core:webview:deny-internal-toggle-devtools",
1485
+
"markdownDescription": "Denies the internal_toggle_devtools command without any pre-configured scope."
1486
},
1487
{
1488
"description": "Denies the print command without any pre-configured scope.",
1489
"type": "string",
1490
+
"const": "core:webview:deny-print",
1491
+
"markdownDescription": "Denies the print command without any pre-configured scope."
1492
},
1493
{
1494
"description": "Denies the reparent command without any pre-configured scope.",
1495
"type": "string",
1496
+
"const": "core:webview:deny-reparent",
1497
+
"markdownDescription": "Denies the reparent command without any pre-configured scope."
1498
+
},
1499
+
{
1500
+
"description": "Denies the set_webview_auto_resize command without any pre-configured scope.",
1501
+
"type": "string",
1502
+
"const": "core:webview:deny-set-webview-auto-resize",
1503
+
"markdownDescription": "Denies the set_webview_auto_resize command without any pre-configured scope."
1504
+
},
1505
+
{
1506
+
"description": "Denies the set_webview_background_color command without any pre-configured scope.",
1507
+
"type": "string",
1508
+
"const": "core:webview:deny-set-webview-background-color",
1509
+
"markdownDescription": "Denies the set_webview_background_color command without any pre-configured scope."
1510
},
1511
{
1512
"description": "Denies the set_webview_focus command without any pre-configured scope.",
1513
"type": "string",
1514
+
"const": "core:webview:deny-set-webview-focus",
1515
+
"markdownDescription": "Denies the set_webview_focus command without any pre-configured scope."
1516
},
1517
{
1518
"description": "Denies the set_webview_position command without any pre-configured scope.",
1519
"type": "string",
1520
+
"const": "core:webview:deny-set-webview-position",
1521
+
"markdownDescription": "Denies the set_webview_position command without any pre-configured scope."
1522
},
1523
{
1524
"description": "Denies the set_webview_size command without any pre-configured scope.",
1525
"type": "string",
1526
+
"const": "core:webview:deny-set-webview-size",
1527
+
"markdownDescription": "Denies the set_webview_size command without any pre-configured scope."
1528
},
1529
{
1530
"description": "Denies the set_webview_zoom command without any pre-configured scope.",
1531
"type": "string",
1532
+
"const": "core:webview:deny-set-webview-zoom",
1533
+
"markdownDescription": "Denies the set_webview_zoom command without any pre-configured scope."
1534
},
1535
{
1536
"description": "Denies the webview_close command without any pre-configured scope.",
1537
"type": "string",
1538
+
"const": "core:webview:deny-webview-close",
1539
+
"markdownDescription": "Denies the webview_close command without any pre-configured scope."
1540
},
1541
{
1542
"description": "Denies the webview_hide command without any pre-configured scope.",
1543
"type": "string",
1544
+
"const": "core:webview:deny-webview-hide",
1545
+
"markdownDescription": "Denies the webview_hide command without any pre-configured scope."
1546
},
1547
{
1548
"description": "Denies the webview_position command without any pre-configured scope.",
1549
"type": "string",
1550
+
"const": "core:webview:deny-webview-position",
1551
+
"markdownDescription": "Denies the webview_position command without any pre-configured scope."
1552
},
1553
{
1554
"description": "Denies the webview_show command without any pre-configured scope.",
1555
"type": "string",
1556
+
"const": "core:webview:deny-webview-show",
1557
+
"markdownDescription": "Denies the webview_show command without any pre-configured scope."
1558
},
1559
{
1560
"description": "Denies the webview_size command without any pre-configured scope.",
1561
"type": "string",
1562
+
"const": "core:webview:deny-webview-size",
1563
+
"markdownDescription": "Denies the webview_size command without any pre-configured scope."
1564
},
1565
{
1566
+
"description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-internal-toggle-maximize`",
1567
"type": "string",
1568
+
"const": "core:window:default",
1569
+
"markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-internal-toggle-maximize`"
1570
},
1571
{
1572
"description": "Enables the available_monitors command without any pre-configured scope.",
1573
"type": "string",
1574
+
"const": "core:window:allow-available-monitors",
1575
+
"markdownDescription": "Enables the available_monitors command without any pre-configured scope."
1576
},
1577
{
1578
"description": "Enables the center command without any pre-configured scope.",
1579
"type": "string",
1580
+
"const": "core:window:allow-center",
1581
+
"markdownDescription": "Enables the center command without any pre-configured scope."
1582
},
1583
{
1584
"description": "Enables the close command without any pre-configured scope.",
1585
"type": "string",
1586
+
"const": "core:window:allow-close",
1587
+
"markdownDescription": "Enables the close command without any pre-configured scope."
1588
},
1589
{
1590
"description": "Enables the create command without any pre-configured scope.",
1591
"type": "string",
1592
+
"const": "core:window:allow-create",
1593
+
"markdownDescription": "Enables the create command without any pre-configured scope."
1594
},
1595
{
1596
"description": "Enables the current_monitor command without any pre-configured scope.",
1597
"type": "string",
1598
+
"const": "core:window:allow-current-monitor",
1599
+
"markdownDescription": "Enables the current_monitor command without any pre-configured scope."
1600
},
1601
{
1602
"description": "Enables the cursor_position command without any pre-configured scope.",
1603
"type": "string",
1604
+
"const": "core:window:allow-cursor-position",
1605
+
"markdownDescription": "Enables the cursor_position command without any pre-configured scope."
1606
},
1607
{
1608
"description": "Enables the destroy command without any pre-configured scope.",
1609
"type": "string",
1610
+
"const": "core:window:allow-destroy",
1611
+
"markdownDescription": "Enables the destroy command without any pre-configured scope."
1612
},
1613
{
1614
"description": "Enables the get_all_windows command without any pre-configured scope.",
1615
"type": "string",
1616
+
"const": "core:window:allow-get-all-windows",
1617
+
"markdownDescription": "Enables the get_all_windows command without any pre-configured scope."
1618
},
1619
{
1620
"description": "Enables the hide command without any pre-configured scope.",
1621
"type": "string",
1622
+
"const": "core:window:allow-hide",
1623
+
"markdownDescription": "Enables the hide command without any pre-configured scope."
1624
},
1625
{
1626
"description": "Enables the inner_position command without any pre-configured scope.",
1627
"type": "string",
1628
+
"const": "core:window:allow-inner-position",
1629
+
"markdownDescription": "Enables the inner_position command without any pre-configured scope."
1630
},
1631
{
1632
"description": "Enables the inner_size command without any pre-configured scope.",
1633
"type": "string",
1634
+
"const": "core:window:allow-inner-size",
1635
+
"markdownDescription": "Enables the inner_size command without any pre-configured scope."
1636
},
1637
{
1638
"description": "Enables the internal_toggle_maximize command without any pre-configured scope.",
1639
"type": "string",
1640
+
"const": "core:window:allow-internal-toggle-maximize",
1641
+
"markdownDescription": "Enables the internal_toggle_maximize command without any pre-configured scope."
1642
+
},
1643
+
{
1644
+
"description": "Enables the is_always_on_top command without any pre-configured scope.",
1645
+
"type": "string",
1646
+
"const": "core:window:allow-is-always-on-top",
1647
+
"markdownDescription": "Enables the is_always_on_top command without any pre-configured scope."
1648
},
1649
{
1650
"description": "Enables the is_closable command without any pre-configured scope.",
1651
"type": "string",
1652
+
"const": "core:window:allow-is-closable",
1653
+
"markdownDescription": "Enables the is_closable command without any pre-configured scope."
1654
},
1655
{
1656
"description": "Enables the is_decorated command without any pre-configured scope.",
1657
"type": "string",
1658
+
"const": "core:window:allow-is-decorated",
1659
+
"markdownDescription": "Enables the is_decorated command without any pre-configured scope."
1660
},
1661
{
1662
"description": "Enables the is_enabled command without any pre-configured scope.",
1663
"type": "string",
1664
+
"const": "core:window:allow-is-enabled",
1665
+
"markdownDescription": "Enables the is_enabled command without any pre-configured scope."
1666
},
1667
{
1668
"description": "Enables the is_focused command without any pre-configured scope.",
1669
"type": "string",
1670
+
"const": "core:window:allow-is-focused",
1671
+
"markdownDescription": "Enables the is_focused command without any pre-configured scope."
1672
},
1673
{
1674
"description": "Enables the is_fullscreen command without any pre-configured scope.",
1675
"type": "string",
1676
+
"const": "core:window:allow-is-fullscreen",
1677
+
"markdownDescription": "Enables the is_fullscreen command without any pre-configured scope."
1678
},
1679
{
1680
"description": "Enables the is_maximizable command without any pre-configured scope.",
1681
"type": "string",
1682
+
"const": "core:window:allow-is-maximizable",
1683
+
"markdownDescription": "Enables the is_maximizable command without any pre-configured scope."
1684
},
1685
{
1686
"description": "Enables the is_maximized command without any pre-configured scope.",
1687
"type": "string",
1688
+
"const": "core:window:allow-is-maximized",
1689
+
"markdownDescription": "Enables the is_maximized command without any pre-configured scope."
1690
},
1691
{
1692
"description": "Enables the is_minimizable command without any pre-configured scope.",
1693
"type": "string",
1694
+
"const": "core:window:allow-is-minimizable",
1695
+
"markdownDescription": "Enables the is_minimizable command without any pre-configured scope."
1696
},
1697
{
1698
"description": "Enables the is_minimized command without any pre-configured scope.",
1699
"type": "string",
1700
+
"const": "core:window:allow-is-minimized",
1701
+
"markdownDescription": "Enables the is_minimized command without any pre-configured scope."
1702
},
1703
{
1704
"description": "Enables the is_resizable command without any pre-configured scope.",
1705
"type": "string",
1706
+
"const": "core:window:allow-is-resizable",
1707
+
"markdownDescription": "Enables the is_resizable command without any pre-configured scope."
1708
},
1709
{
1710
"description": "Enables the is_visible command without any pre-configured scope.",
1711
"type": "string",
1712
+
"const": "core:window:allow-is-visible",
1713
+
"markdownDescription": "Enables the is_visible command without any pre-configured scope."
1714
},
1715
{
1716
"description": "Enables the maximize command without any pre-configured scope.",
1717
"type": "string",
1718
+
"const": "core:window:allow-maximize",
1719
+
"markdownDescription": "Enables the maximize command without any pre-configured scope."
1720
},
1721
{
1722
"description": "Enables the minimize command without any pre-configured scope.",
1723
"type": "string",
1724
+
"const": "core:window:allow-minimize",
1725
+
"markdownDescription": "Enables the minimize command without any pre-configured scope."
1726
},
1727
{
1728
"description": "Enables the monitor_from_point command without any pre-configured scope.",
1729
"type": "string",
1730
+
"const": "core:window:allow-monitor-from-point",
1731
+
"markdownDescription": "Enables the monitor_from_point command without any pre-configured scope."
1732
},
1733
{
1734
"description": "Enables the outer_position command without any pre-configured scope.",
1735
"type": "string",
1736
+
"const": "core:window:allow-outer-position",
1737
+
"markdownDescription": "Enables the outer_position command without any pre-configured scope."
1738
},
1739
{
1740
"description": "Enables the outer_size command without any pre-configured scope.",
1741
"type": "string",
1742
+
"const": "core:window:allow-outer-size",
1743
+
"markdownDescription": "Enables the outer_size command without any pre-configured scope."
1744
},
1745
{
1746
"description": "Enables the primary_monitor command without any pre-configured scope.",
1747
"type": "string",
1748
+
"const": "core:window:allow-primary-monitor",
1749
+
"markdownDescription": "Enables the primary_monitor command without any pre-configured scope."
1750
},
1751
{
1752
"description": "Enables the request_user_attention command without any pre-configured scope.",
1753
"type": "string",
1754
+
"const": "core:window:allow-request-user-attention",
1755
+
"markdownDescription": "Enables the request_user_attention command without any pre-configured scope."
1756
},
1757
{
1758
"description": "Enables the scale_factor command without any pre-configured scope.",
1759
"type": "string",
1760
+
"const": "core:window:allow-scale-factor",
1761
+
"markdownDescription": "Enables the scale_factor command without any pre-configured scope."
1762
},
1763
{
1764
"description": "Enables the set_always_on_bottom command without any pre-configured scope.",
1765
"type": "string",
1766
+
"const": "core:window:allow-set-always-on-bottom",
1767
+
"markdownDescription": "Enables the set_always_on_bottom command without any pre-configured scope."
1768
},
1769
{
1770
"description": "Enables the set_always_on_top command without any pre-configured scope.",
1771
"type": "string",
1772
+
"const": "core:window:allow-set-always-on-top",
1773
+
"markdownDescription": "Enables the set_always_on_top command without any pre-configured scope."
1774
+
},
1775
+
{
1776
+
"description": "Enables the set_background_color command without any pre-configured scope.",
1777
+
"type": "string",
1778
+
"const": "core:window:allow-set-background-color",
1779
+
"markdownDescription": "Enables the set_background_color command without any pre-configured scope."
1780
+
},
1781
+
{
1782
+
"description": "Enables the set_badge_count command without any pre-configured scope.",
1783
+
"type": "string",
1784
+
"const": "core:window:allow-set-badge-count",
1785
+
"markdownDescription": "Enables the set_badge_count command without any pre-configured scope."
1786
+
},
1787
+
{
1788
+
"description": "Enables the set_badge_label command without any pre-configured scope.",
1789
+
"type": "string",
1790
+
"const": "core:window:allow-set-badge-label",
1791
+
"markdownDescription": "Enables the set_badge_label command without any pre-configured scope."
1792
},
1793
{
1794
"description": "Enables the set_closable command without any pre-configured scope.",
1795
"type": "string",
1796
+
"const": "core:window:allow-set-closable",
1797
+
"markdownDescription": "Enables the set_closable command without any pre-configured scope."
1798
},
1799
{
1800
"description": "Enables the set_content_protected command without any pre-configured scope.",
1801
"type": "string",
1802
+
"const": "core:window:allow-set-content-protected",
1803
+
"markdownDescription": "Enables the set_content_protected command without any pre-configured scope."
1804
},
1805
{
1806
"description": "Enables the set_cursor_grab command without any pre-configured scope.",
1807
"type": "string",
1808
+
"const": "core:window:allow-set-cursor-grab",
1809
+
"markdownDescription": "Enables the set_cursor_grab command without any pre-configured scope."
1810
},
1811
{
1812
"description": "Enables the set_cursor_icon command without any pre-configured scope.",
1813
"type": "string",
1814
+
"const": "core:window:allow-set-cursor-icon",
1815
+
"markdownDescription": "Enables the set_cursor_icon command without any pre-configured scope."
1816
},
1817
{
1818
"description": "Enables the set_cursor_position command without any pre-configured scope.",
1819
"type": "string",
1820
+
"const": "core:window:allow-set-cursor-position",
1821
+
"markdownDescription": "Enables the set_cursor_position command without any pre-configured scope."
1822
},
1823
{
1824
"description": "Enables the set_cursor_visible command without any pre-configured scope.",
1825
"type": "string",
1826
+
"const": "core:window:allow-set-cursor-visible",
1827
+
"markdownDescription": "Enables the set_cursor_visible command without any pre-configured scope."
1828
},
1829
{
1830
"description": "Enables the set_decorations command without any pre-configured scope.",
1831
"type": "string",
1832
+
"const": "core:window:allow-set-decorations",
1833
+
"markdownDescription": "Enables the set_decorations command without any pre-configured scope."
1834
},
1835
{
1836
"description": "Enables the set_effects command without any pre-configured scope.",
1837
"type": "string",
1838
+
"const": "core:window:allow-set-effects",
1839
+
"markdownDescription": "Enables the set_effects command without any pre-configured scope."
1840
},
1841
{
1842
"description": "Enables the set_enabled command without any pre-configured scope.",
1843
"type": "string",
1844
+
"const": "core:window:allow-set-enabled",
1845
+
"markdownDescription": "Enables the set_enabled command without any pre-configured scope."
1846
},
1847
{
1848
"description": "Enables the set_focus command without any pre-configured scope.",
1849
"type": "string",
1850
+
"const": "core:window:allow-set-focus",
1851
+
"markdownDescription": "Enables the set_focus command without any pre-configured scope."
1852
+
},
1853
+
{
1854
+
"description": "Enables the set_focusable command without any pre-configured scope.",
1855
+
"type": "string",
1856
+
"const": "core:window:allow-set-focusable",
1857
+
"markdownDescription": "Enables the set_focusable command without any pre-configured scope."
1858
},
1859
{
1860
"description": "Enables the set_fullscreen command without any pre-configured scope.",
1861
"type": "string",
1862
+
"const": "core:window:allow-set-fullscreen",
1863
+
"markdownDescription": "Enables the set_fullscreen command without any pre-configured scope."
1864
},
1865
{
1866
"description": "Enables the set_icon command without any pre-configured scope.",
1867
"type": "string",
1868
+
"const": "core:window:allow-set-icon",
1869
+
"markdownDescription": "Enables the set_icon command without any pre-configured scope."
1870
},
1871
{
1872
"description": "Enables the set_ignore_cursor_events command without any pre-configured scope.",
1873
"type": "string",
1874
+
"const": "core:window:allow-set-ignore-cursor-events",
1875
+
"markdownDescription": "Enables the set_ignore_cursor_events command without any pre-configured scope."
1876
},
1877
{
1878
"description": "Enables the set_max_size command without any pre-configured scope.",
1879
"type": "string",
1880
+
"const": "core:window:allow-set-max-size",
1881
+
"markdownDescription": "Enables the set_max_size command without any pre-configured scope."
1882
},
1883
{
1884
"description": "Enables the set_maximizable command without any pre-configured scope.",
1885
"type": "string",
1886
+
"const": "core:window:allow-set-maximizable",
1887
+
"markdownDescription": "Enables the set_maximizable command without any pre-configured scope."
1888
},
1889
{
1890
"description": "Enables the set_min_size command without any pre-configured scope.",
1891
"type": "string",
1892
+
"const": "core:window:allow-set-min-size",
1893
+
"markdownDescription": "Enables the set_min_size command without any pre-configured scope."
1894
},
1895
{
1896
"description": "Enables the set_minimizable command without any pre-configured scope.",
1897
"type": "string",
1898
+
"const": "core:window:allow-set-minimizable",
1899
+
"markdownDescription": "Enables the set_minimizable command without any pre-configured scope."
1900
+
},
1901
+
{
1902
+
"description": "Enables the set_overlay_icon command without any pre-configured scope.",
1903
+
"type": "string",
1904
+
"const": "core:window:allow-set-overlay-icon",
1905
+
"markdownDescription": "Enables the set_overlay_icon command without any pre-configured scope."
1906
},
1907
{
1908
"description": "Enables the set_position command without any pre-configured scope.",
1909
"type": "string",
1910
+
"const": "core:window:allow-set-position",
1911
+
"markdownDescription": "Enables the set_position command without any pre-configured scope."
1912
},
1913
{
1914
"description": "Enables the set_progress_bar command without any pre-configured scope.",
1915
"type": "string",
1916
+
"const": "core:window:allow-set-progress-bar",
1917
+
"markdownDescription": "Enables the set_progress_bar command without any pre-configured scope."
1918
},
1919
{
1920
"description": "Enables the set_resizable command without any pre-configured scope.",
1921
"type": "string",
1922
+
"const": "core:window:allow-set-resizable",
1923
+
"markdownDescription": "Enables the set_resizable command without any pre-configured scope."
1924
},
1925
{
1926
"description": "Enables the set_shadow command without any pre-configured scope.",
1927
"type": "string",
1928
+
"const": "core:window:allow-set-shadow",
1929
+
"markdownDescription": "Enables the set_shadow command without any pre-configured scope."
1930
+
},
1931
+
{
1932
+
"description": "Enables the set_simple_fullscreen command without any pre-configured scope.",
1933
+
"type": "string",
1934
+
"const": "core:window:allow-set-simple-fullscreen",
1935
+
"markdownDescription": "Enables the set_simple_fullscreen command without any pre-configured scope."
1936
},
1937
{
1938
"description": "Enables the set_size command without any pre-configured scope.",
1939
"type": "string",
1940
+
"const": "core:window:allow-set-size",
1941
+
"markdownDescription": "Enables the set_size command without any pre-configured scope."
1942
},
1943
{
1944
"description": "Enables the set_size_constraints command without any pre-configured scope.",
1945
"type": "string",
1946
+
"const": "core:window:allow-set-size-constraints",
1947
+
"markdownDescription": "Enables the set_size_constraints command without any pre-configured scope."
1948
},
1949
{
1950
"description": "Enables the set_skip_taskbar command without any pre-configured scope.",
1951
"type": "string",
1952
+
"const": "core:window:allow-set-skip-taskbar",
1953
+
"markdownDescription": "Enables the set_skip_taskbar command without any pre-configured scope."
1954
},
1955
{
1956
"description": "Enables the set_theme command without any pre-configured scope.",
1957
"type": "string",
1958
+
"const": "core:window:allow-set-theme",
1959
+
"markdownDescription": "Enables the set_theme command without any pre-configured scope."
1960
},
1961
{
1962
"description": "Enables the set_title command without any pre-configured scope.",
1963
"type": "string",
1964
+
"const": "core:window:allow-set-title",
1965
+
"markdownDescription": "Enables the set_title command without any pre-configured scope."
1966
},
1967
{
1968
"description": "Enables the set_title_bar_style command without any pre-configured scope.",
1969
"type": "string",
1970
+
"const": "core:window:allow-set-title-bar-style",
1971
+
"markdownDescription": "Enables the set_title_bar_style command without any pre-configured scope."
1972
},
1973
{
1974
"description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.",
1975
"type": "string",
1976
+
"const": "core:window:allow-set-visible-on-all-workspaces",
1977
+
"markdownDescription": "Enables the set_visible_on_all_workspaces command without any pre-configured scope."
1978
},
1979
{
1980
"description": "Enables the show command without any pre-configured scope.",
1981
"type": "string",
1982
+
"const": "core:window:allow-show",
1983
+
"markdownDescription": "Enables the show command without any pre-configured scope."
1984
},
1985
{
1986
"description": "Enables the start_dragging command without any pre-configured scope.",
1987
"type": "string",
1988
+
"const": "core:window:allow-start-dragging",
1989
+
"markdownDescription": "Enables the start_dragging command without any pre-configured scope."
1990
},
1991
{
1992
"description": "Enables the start_resize_dragging command without any pre-configured scope.",
1993
"type": "string",
1994
+
"const": "core:window:allow-start-resize-dragging",
1995
+
"markdownDescription": "Enables the start_resize_dragging command without any pre-configured scope."
1996
},
1997
{
1998
"description": "Enables the theme command without any pre-configured scope.",
1999
"type": "string",
2000
+
"const": "core:window:allow-theme",
2001
+
"markdownDescription": "Enables the theme command without any pre-configured scope."
2002
},
2003
{
2004
"description": "Enables the title command without any pre-configured scope.",
2005
"type": "string",
2006
+
"const": "core:window:allow-title",
2007
+
"markdownDescription": "Enables the title command without any pre-configured scope."
2008
},
2009
{
2010
"description": "Enables the toggle_maximize command without any pre-configured scope.",
2011
"type": "string",
2012
+
"const": "core:window:allow-toggle-maximize",
2013
+
"markdownDescription": "Enables the toggle_maximize command without any pre-configured scope."
2014
},
2015
{
2016
"description": "Enables the unmaximize command without any pre-configured scope.",
2017
"type": "string",
2018
+
"const": "core:window:allow-unmaximize",
2019
+
"markdownDescription": "Enables the unmaximize command without any pre-configured scope."
2020
},
2021
{
2022
"description": "Enables the unminimize command without any pre-configured scope.",
2023
"type": "string",
2024
+
"const": "core:window:allow-unminimize",
2025
+
"markdownDescription": "Enables the unminimize command without any pre-configured scope."
2026
},
2027
{
2028
"description": "Denies the available_monitors command without any pre-configured scope.",
2029
"type": "string",
2030
+
"const": "core:window:deny-available-monitors",
2031
+
"markdownDescription": "Denies the available_monitors command without any pre-configured scope."
2032
},
2033
{
2034
"description": "Denies the center command without any pre-configured scope.",
2035
"type": "string",
2036
+
"const": "core:window:deny-center",
2037
+
"markdownDescription": "Denies the center command without any pre-configured scope."
2038
},
2039
{
2040
"description": "Denies the close command without any pre-configured scope.",
2041
"type": "string",
2042
+
"const": "core:window:deny-close",
2043
+
"markdownDescription": "Denies the close command without any pre-configured scope."
2044
},
2045
{
2046
"description": "Denies the create command without any pre-configured scope.",
2047
"type": "string",
2048
+
"const": "core:window:deny-create",
2049
+
"markdownDescription": "Denies the create command without any pre-configured scope."
2050
},
2051
{
2052
"description": "Denies the current_monitor command without any pre-configured scope.",
2053
"type": "string",
2054
+
"const": "core:window:deny-current-monitor",
2055
+
"markdownDescription": "Denies the current_monitor command without any pre-configured scope."
2056
},
2057
{
2058
"description": "Denies the cursor_position command without any pre-configured scope.",
2059
"type": "string",
2060
+
"const": "core:window:deny-cursor-position",
2061
+
"markdownDescription": "Denies the cursor_position command without any pre-configured scope."
2062
},
2063
{
2064
"description": "Denies the destroy command without any pre-configured scope.",
2065
"type": "string",
2066
+
"const": "core:window:deny-destroy",
2067
+
"markdownDescription": "Denies the destroy command without any pre-configured scope."
2068
},
2069
{
2070
"description": "Denies the get_all_windows command without any pre-configured scope.",
2071
"type": "string",
2072
+
"const": "core:window:deny-get-all-windows",
2073
+
"markdownDescription": "Denies the get_all_windows command without any pre-configured scope."
2074
},
2075
{
2076
"description": "Denies the hide command without any pre-configured scope.",
2077
"type": "string",
2078
+
"const": "core:window:deny-hide",
2079
+
"markdownDescription": "Denies the hide command without any pre-configured scope."
2080
},
2081
{
2082
"description": "Denies the inner_position command without any pre-configured scope.",
2083
"type": "string",
2084
+
"const": "core:window:deny-inner-position",
2085
+
"markdownDescription": "Denies the inner_position command without any pre-configured scope."
2086
},
2087
{
2088
"description": "Denies the inner_size command without any pre-configured scope.",
2089
"type": "string",
2090
+
"const": "core:window:deny-inner-size",
2091
+
"markdownDescription": "Denies the inner_size command without any pre-configured scope."
2092
},
2093
{
2094
"description": "Denies the internal_toggle_maximize command without any pre-configured scope.",
2095
"type": "string",
2096
+
"const": "core:window:deny-internal-toggle-maximize",
2097
+
"markdownDescription": "Denies the internal_toggle_maximize command without any pre-configured scope."
2098
+
},
2099
+
{
2100
+
"description": "Denies the is_always_on_top command without any pre-configured scope.",
2101
+
"type": "string",
2102
+
"const": "core:window:deny-is-always-on-top",
2103
+
"markdownDescription": "Denies the is_always_on_top command without any pre-configured scope."
2104
},
2105
{
2106
"description": "Denies the is_closable command without any pre-configured scope.",
2107
"type": "string",
2108
+
"const": "core:window:deny-is-closable",
2109
+
"markdownDescription": "Denies the is_closable command without any pre-configured scope."
2110
},
2111
{
2112
"description": "Denies the is_decorated command without any pre-configured scope.",
2113
"type": "string",
2114
+
"const": "core:window:deny-is-decorated",
2115
+
"markdownDescription": "Denies the is_decorated command without any pre-configured scope."
2116
},
2117
{
2118
"description": "Denies the is_enabled command without any pre-configured scope.",
2119
"type": "string",
2120
+
"const": "core:window:deny-is-enabled",
2121
+
"markdownDescription": "Denies the is_enabled command without any pre-configured scope."
2122
},
2123
{
2124
"description": "Denies the is_focused command without any pre-configured scope.",
2125
"type": "string",
2126
+
"const": "core:window:deny-is-focused",
2127
+
"markdownDescription": "Denies the is_focused command without any pre-configured scope."
2128
},
2129
{
2130
"description": "Denies the is_fullscreen command without any pre-configured scope.",
2131
"type": "string",
2132
+
"const": "core:window:deny-is-fullscreen",
2133
+
"markdownDescription": "Denies the is_fullscreen command without any pre-configured scope."
2134
},
2135
{
2136
"description": "Denies the is_maximizable command without any pre-configured scope.",
2137
"type": "string",
2138
+
"const": "core:window:deny-is-maximizable",
2139
+
"markdownDescription": "Denies the is_maximizable command without any pre-configured scope."
2140
},
2141
{
2142
"description": "Denies the is_maximized command without any pre-configured scope.",
2143
"type": "string",
2144
+
"const": "core:window:deny-is-maximized",
2145
+
"markdownDescription": "Denies the is_maximized command without any pre-configured scope."
2146
},
2147
{
2148
"description": "Denies the is_minimizable command without any pre-configured scope.",
2149
"type": "string",
2150
+
"const": "core:window:deny-is-minimizable",
2151
+
"markdownDescription": "Denies the is_minimizable command without any pre-configured scope."
2152
},
2153
{
2154
"description": "Denies the is_minimized command without any pre-configured scope.",
2155
"type": "string",
2156
+
"const": "core:window:deny-is-minimized",
2157
+
"markdownDescription": "Denies the is_minimized command without any pre-configured scope."
2158
},
2159
{
2160
"description": "Denies the is_resizable command without any pre-configured scope.",
2161
"type": "string",
2162
+
"const": "core:window:deny-is-resizable",
2163
+
"markdownDescription": "Denies the is_resizable command without any pre-configured scope."
2164
},
2165
{
2166
"description": "Denies the is_visible command without any pre-configured scope.",
2167
"type": "string",
2168
+
"const": "core:window:deny-is-visible",
2169
+
"markdownDescription": "Denies the is_visible command without any pre-configured scope."
2170
},
2171
{
2172
"description": "Denies the maximize command without any pre-configured scope.",
2173
"type": "string",
2174
+
"const": "core:window:deny-maximize",
2175
+
"markdownDescription": "Denies the maximize command without any pre-configured scope."
2176
},
2177
{
2178
"description": "Denies the minimize command without any pre-configured scope.",
2179
"type": "string",
2180
+
"const": "core:window:deny-minimize",
2181
+
"markdownDescription": "Denies the minimize command without any pre-configured scope."
2182
},
2183
{
2184
"description": "Denies the monitor_from_point command without any pre-configured scope.",
2185
"type": "string",
2186
+
"const": "core:window:deny-monitor-from-point",
2187
+
"markdownDescription": "Denies the monitor_from_point command without any pre-configured scope."
2188
},
2189
{
2190
"description": "Denies the outer_position command without any pre-configured scope.",
2191
"type": "string",
2192
+
"const": "core:window:deny-outer-position",
2193
+
"markdownDescription": "Denies the outer_position command without any pre-configured scope."
2194
},
2195
{
2196
"description": "Denies the outer_size command without any pre-configured scope.",
2197
"type": "string",
2198
+
"const": "core:window:deny-outer-size",
2199
+
"markdownDescription": "Denies the outer_size command without any pre-configured scope."
2200
},
2201
{
2202
"description": "Denies the primary_monitor command without any pre-configured scope.",
2203
"type": "string",
2204
+
"const": "core:window:deny-primary-monitor",
2205
+
"markdownDescription": "Denies the primary_monitor command without any pre-configured scope."
2206
},
2207
{
2208
"description": "Denies the request_user_attention command without any pre-configured scope.",
2209
"type": "string",
2210
+
"const": "core:window:deny-request-user-attention",
2211
+
"markdownDescription": "Denies the request_user_attention command without any pre-configured scope."
2212
},
2213
{
2214
"description": "Denies the scale_factor command without any pre-configured scope.",
2215
"type": "string",
2216
+
"const": "core:window:deny-scale-factor",
2217
+
"markdownDescription": "Denies the scale_factor command without any pre-configured scope."
2218
},
2219
{
2220
"description": "Denies the set_always_on_bottom command without any pre-configured scope.",
2221
"type": "string",
2222
+
"const": "core:window:deny-set-always-on-bottom",
2223
+
"markdownDescription": "Denies the set_always_on_bottom command without any pre-configured scope."
2224
},
2225
{
2226
"description": "Denies the set_always_on_top command without any pre-configured scope.",
2227
"type": "string",
2228
+
"const": "core:window:deny-set-always-on-top",
2229
+
"markdownDescription": "Denies the set_always_on_top command without any pre-configured scope."
2230
+
},
2231
+
{
2232
+
"description": "Denies the set_background_color command without any pre-configured scope.",
2233
+
"type": "string",
2234
+
"const": "core:window:deny-set-background-color",
2235
+
"markdownDescription": "Denies the set_background_color command without any pre-configured scope."
2236
+
},
2237
+
{
2238
+
"description": "Denies the set_badge_count command without any pre-configured scope.",
2239
+
"type": "string",
2240
+
"const": "core:window:deny-set-badge-count",
2241
+
"markdownDescription": "Denies the set_badge_count command without any pre-configured scope."
2242
+
},
2243
+
{
2244
+
"description": "Denies the set_badge_label command without any pre-configured scope.",
2245
+
"type": "string",
2246
+
"const": "core:window:deny-set-badge-label",
2247
+
"markdownDescription": "Denies the set_badge_label command without any pre-configured scope."
2248
},
2249
{
2250
"description": "Denies the set_closable command without any pre-configured scope.",
2251
"type": "string",
2252
+
"const": "core:window:deny-set-closable",
2253
+
"markdownDescription": "Denies the set_closable command without any pre-configured scope."
2254
},
2255
{
2256
"description": "Denies the set_content_protected command without any pre-configured scope.",
2257
"type": "string",
2258
+
"const": "core:window:deny-set-content-protected",
2259
+
"markdownDescription": "Denies the set_content_protected command without any pre-configured scope."
2260
},
2261
{
2262
"description": "Denies the set_cursor_grab command without any pre-configured scope.",
2263
"type": "string",
2264
+
"const": "core:window:deny-set-cursor-grab",
2265
+
"markdownDescription": "Denies the set_cursor_grab command without any pre-configured scope."
2266
},
2267
{
2268
"description": "Denies the set_cursor_icon command without any pre-configured scope.",
2269
"type": "string",
2270
+
"const": "core:window:deny-set-cursor-icon",
2271
+
"markdownDescription": "Denies the set_cursor_icon command without any pre-configured scope."
2272
},
2273
{
2274
"description": "Denies the set_cursor_position command without any pre-configured scope.",
2275
"type": "string",
2276
+
"const": "core:window:deny-set-cursor-position",
2277
+
"markdownDescription": "Denies the set_cursor_position command without any pre-configured scope."
2278
},
2279
{
2280
"description": "Denies the set_cursor_visible command without any pre-configured scope.",
2281
"type": "string",
2282
+
"const": "core:window:deny-set-cursor-visible",
2283
+
"markdownDescription": "Denies the set_cursor_visible command without any pre-configured scope."
2284
},
2285
{
2286
"description": "Denies the set_decorations command without any pre-configured scope.",
2287
"type": "string",
2288
+
"const": "core:window:deny-set-decorations",
2289
+
"markdownDescription": "Denies the set_decorations command without any pre-configured scope."
2290
},
2291
{
2292
"description": "Denies the set_effects command without any pre-configured scope.",
2293
"type": "string",
2294
+
"const": "core:window:deny-set-effects",
2295
+
"markdownDescription": "Denies the set_effects command without any pre-configured scope."
2296
},
2297
{
2298
"description": "Denies the set_enabled command without any pre-configured scope.",
2299
"type": "string",
2300
+
"const": "core:window:deny-set-enabled",
2301
+
"markdownDescription": "Denies the set_enabled command without any pre-configured scope."
2302
},
2303
{
2304
"description": "Denies the set_focus command without any pre-configured scope.",
2305
"type": "string",
2306
+
"const": "core:window:deny-set-focus",
2307
+
"markdownDescription": "Denies the set_focus command without any pre-configured scope."
2308
+
},
2309
+
{
2310
+
"description": "Denies the set_focusable command without any pre-configured scope.",
2311
+
"type": "string",
2312
+
"const": "core:window:deny-set-focusable",
2313
+
"markdownDescription": "Denies the set_focusable command without any pre-configured scope."
2314
},
2315
{
2316
"description": "Denies the set_fullscreen command without any pre-configured scope.",
2317
"type": "string",
2318
+
"const": "core:window:deny-set-fullscreen",
2319
+
"markdownDescription": "Denies the set_fullscreen command without any pre-configured scope."
2320
},
2321
{
2322
"description": "Denies the set_icon command without any pre-configured scope.",
2323
"type": "string",
2324
+
"const": "core:window:deny-set-icon",
2325
+
"markdownDescription": "Denies the set_icon command without any pre-configured scope."
2326
},
2327
{
2328
"description": "Denies the set_ignore_cursor_events command without any pre-configured scope.",
2329
"type": "string",
2330
+
"const": "core:window:deny-set-ignore-cursor-events",
2331
+
"markdownDescription": "Denies the set_ignore_cursor_events command without any pre-configured scope."
2332
},
2333
{
2334
"description": "Denies the set_max_size command without any pre-configured scope.",
2335
"type": "string",
2336
+
"const": "core:window:deny-set-max-size",
2337
+
"markdownDescription": "Denies the set_max_size command without any pre-configured scope."
2338
},
2339
{
2340
"description": "Denies the set_maximizable command without any pre-configured scope.",
2341
"type": "string",
2342
+
"const": "core:window:deny-set-maximizable",
2343
+
"markdownDescription": "Denies the set_maximizable command without any pre-configured scope."
2344
},
2345
{
2346
"description": "Denies the set_min_size command without any pre-configured scope.",
2347
"type": "string",
2348
+
"const": "core:window:deny-set-min-size",
2349
+
"markdownDescription": "Denies the set_min_size command without any pre-configured scope."
2350
},
2351
{
2352
"description": "Denies the set_minimizable command without any pre-configured scope.",
2353
"type": "string",
2354
+
"const": "core:window:deny-set-minimizable",
2355
+
"markdownDescription": "Denies the set_minimizable command without any pre-configured scope."
2356
+
},
2357
+
{
2358
+
"description": "Denies the set_overlay_icon command without any pre-configured scope.",
2359
+
"type": "string",
2360
+
"const": "core:window:deny-set-overlay-icon",
2361
+
"markdownDescription": "Denies the set_overlay_icon command without any pre-configured scope."
2362
},
2363
{
2364
"description": "Denies the set_position command without any pre-configured scope.",
2365
"type": "string",
2366
+
"const": "core:window:deny-set-position",
2367
+
"markdownDescription": "Denies the set_position command without any pre-configured scope."
2368
},
2369
{
2370
"description": "Denies the set_progress_bar command without any pre-configured scope.",
2371
"type": "string",
2372
+
"const": "core:window:deny-set-progress-bar",
2373
+
"markdownDescription": "Denies the set_progress_bar command without any pre-configured scope."
2374
},
2375
{
2376
"description": "Denies the set_resizable command without any pre-configured scope.",
2377
"type": "string",
2378
+
"const": "core:window:deny-set-resizable",
2379
+
"markdownDescription": "Denies the set_resizable command without any pre-configured scope."
2380
},
2381
{
2382
"description": "Denies the set_shadow command without any pre-configured scope.",
2383
"type": "string",
2384
+
"const": "core:window:deny-set-shadow",
2385
+
"markdownDescription": "Denies the set_shadow command without any pre-configured scope."
2386
+
},
2387
+
{
2388
+
"description": "Denies the set_simple_fullscreen command without any pre-configured scope.",
2389
+
"type": "string",
2390
+
"const": "core:window:deny-set-simple-fullscreen",
2391
+
"markdownDescription": "Denies the set_simple_fullscreen command without any pre-configured scope."
2392
},
2393
{
2394
"description": "Denies the set_size command without any pre-configured scope.",
2395
"type": "string",
2396
+
"const": "core:window:deny-set-size",
2397
+
"markdownDescription": "Denies the set_size command without any pre-configured scope."
2398
},
2399
{
2400
"description": "Denies the set_size_constraints command without any pre-configured scope.",
2401
"type": "string",
2402
+
"const": "core:window:deny-set-size-constraints",
2403
+
"markdownDescription": "Denies the set_size_constraints command without any pre-configured scope."
2404
},
2405
{
2406
"description": "Denies the set_skip_taskbar command without any pre-configured scope.",
2407
"type": "string",
2408
+
"const": "core:window:deny-set-skip-taskbar",
2409
+
"markdownDescription": "Denies the set_skip_taskbar command without any pre-configured scope."
2410
},
2411
{
2412
"description": "Denies the set_theme command without any pre-configured scope.",
2413
"type": "string",
2414
+
"const": "core:window:deny-set-theme",
2415
+
"markdownDescription": "Denies the set_theme command without any pre-configured scope."
2416
},
2417
{
2418
"description": "Denies the set_title command without any pre-configured scope.",
2419
"type": "string",
2420
+
"const": "core:window:deny-set-title",
2421
+
"markdownDescription": "Denies the set_title command without any pre-configured scope."
2422
},
2423
{
2424
"description": "Denies the set_title_bar_style command without any pre-configured scope.",
2425
"type": "string",
2426
+
"const": "core:window:deny-set-title-bar-style",
2427
+
"markdownDescription": "Denies the set_title_bar_style command without any pre-configured scope."
2428
},
2429
{
2430
"description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.",
2431
"type": "string",
2432
+
"const": "core:window:deny-set-visible-on-all-workspaces",
2433
+
"markdownDescription": "Denies the set_visible_on_all_workspaces command without any pre-configured scope."
2434
},
2435
{
2436
"description": "Denies the show command without any pre-configured scope.",
2437
"type": "string",
2438
+
"const": "core:window:deny-show",
2439
+
"markdownDescription": "Denies the show command without any pre-configured scope."
2440
},
2441
{
2442
"description": "Denies the start_dragging command without any pre-configured scope.",
2443
"type": "string",
2444
+
"const": "core:window:deny-start-dragging",
2445
+
"markdownDescription": "Denies the start_dragging command without any pre-configured scope."
2446
},
2447
{
2448
"description": "Denies the start_resize_dragging command without any pre-configured scope.",
2449
"type": "string",
2450
+
"const": "core:window:deny-start-resize-dragging",
2451
+
"markdownDescription": "Denies the start_resize_dragging command without any pre-configured scope."
2452
},
2453
{
2454
"description": "Denies the theme command without any pre-configured scope.",
2455
"type": "string",
2456
+
"const": "core:window:deny-theme",
2457
+
"markdownDescription": "Denies the theme command without any pre-configured scope."
2458
},
2459
{
2460
"description": "Denies the title command without any pre-configured scope.",
2461
"type": "string",
2462
+
"const": "core:window:deny-title",
2463
+
"markdownDescription": "Denies the title command without any pre-configured scope."
2464
},
2465
{
2466
"description": "Denies the toggle_maximize command without any pre-configured scope.",
2467
"type": "string",
2468
+
"const": "core:window:deny-toggle-maximize",
2469
+
"markdownDescription": "Denies the toggle_maximize command without any pre-configured scope."
2470
},
2471
{
2472
"description": "Denies the unmaximize command without any pre-configured scope.",
2473
"type": "string",
2474
+
"const": "core:window:deny-unmaximize",
2475
+
"markdownDescription": "Denies the unmaximize command without any pre-configured scope."
2476
},
2477
{
2478
"description": "Denies the unminimize command without any pre-configured scope.",
2479
"type": "string",
2480
+
"const": "core:window:deny-unminimize",
2481
+
"markdownDescription": "Denies the unminimize command without any pre-configured scope."
2482
},
2483
{
2484
+
"description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`",
2485
"type": "string",
2486
+
"const": "http:default",
2487
+
"markdownDescription": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`"
2488
},
2489
{
2490
"description": "Enables the fetch command without any pre-configured scope.",
2491
"type": "string",
2492
+
"const": "http:allow-fetch",
2493
+
"markdownDescription": "Enables the fetch command without any pre-configured scope."
2494
},
2495
{
2496
"description": "Enables the fetch_cancel command without any pre-configured scope.",
2497
"type": "string",
2498
+
"const": "http:allow-fetch-cancel",
2499
+
"markdownDescription": "Enables the fetch_cancel command without any pre-configured scope."
2500
},
2501
{
2502
"description": "Enables the fetch_read_body command without any pre-configured scope.",
2503
"type": "string",
2504
+
"const": "http:allow-fetch-read-body",
2505
+
"markdownDescription": "Enables the fetch_read_body command without any pre-configured scope."
2506
},
2507
{
2508
"description": "Enables the fetch_send command without any pre-configured scope.",
2509
"type": "string",
2510
+
"const": "http:allow-fetch-send",
2511
+
"markdownDescription": "Enables the fetch_send command without any pre-configured scope."
2512
},
2513
{
2514
"description": "Denies the fetch command without any pre-configured scope.",
2515
"type": "string",
2516
+
"const": "http:deny-fetch",
2517
+
"markdownDescription": "Denies the fetch command without any pre-configured scope."
2518
},
2519
{
2520
"description": "Denies the fetch_cancel command without any pre-configured scope.",
2521
"type": "string",
2522
+
"const": "http:deny-fetch-cancel",
2523
+
"markdownDescription": "Denies the fetch_cancel command without any pre-configured scope."
2524
},
2525
{
2526
"description": "Denies the fetch_read_body command without any pre-configured scope.",
2527
"type": "string",
2528
+
"const": "http:deny-fetch-read-body",
2529
+
"markdownDescription": "Denies the fetch_read_body command without any pre-configured scope."
2530
},
2531
{
2532
"description": "Denies the fetch_send command without any pre-configured scope.",
2533
"type": "string",
2534
+
"const": "http:deny-fetch-send",
2535
+
"markdownDescription": "Denies the fetch_send command without any pre-configured scope."
2536
},
2537
{
2538
+
"description": "This permission set configures which\nprocess features are by default exposed.\n\n#### Granted Permissions\n\nThis enables to quit via `allow-exit` and restart via `allow-restart`\nthe application.\n\n#### This default permission set includes:\n\n- `allow-exit`\n- `allow-restart`",
2539
"type": "string",
2540
+
"const": "process:default",
2541
+
"markdownDescription": "This permission set configures which\nprocess features are by default exposed.\n\n#### Granted Permissions\n\nThis enables to quit via `allow-exit` and restart via `allow-restart`\nthe application.\n\n#### This default permission set includes:\n\n- `allow-exit`\n- `allow-restart`"
2542
},
2543
{
2544
"description": "Enables the exit command without any pre-configured scope.",
2545
"type": "string",
2546
+
"const": "process:allow-exit",
2547
+
"markdownDescription": "Enables the exit command without any pre-configured scope."
2548
},
2549
{
2550
"description": "Enables the restart command without any pre-configured scope.",
2551
"type": "string",
2552
+
"const": "process:allow-restart",
2553
+
"markdownDescription": "Enables the restart command without any pre-configured scope."
2554
},
2555
{
2556
"description": "Denies the exit command without any pre-configured scope.",
2557
"type": "string",
2558
+
"const": "process:deny-exit",
2559
+
"markdownDescription": "Denies the exit command without any pre-configured scope."
2560
},
2561
{
2562
"description": "Denies the restart command without any pre-configured scope.",
2563
"type": "string",
2564
+
"const": "process:deny-restart",
2565
+
"markdownDescription": "Denies the restart command without any pre-configured scope."
2566
},
2567
{
2568
+
"description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`",
2569
"type": "string",
2570
+
"const": "shell:default",
2571
+
"markdownDescription": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`"
2572
},
2573
{
2574
"description": "Enables the execute command without any pre-configured scope.",
2575
"type": "string",
2576
+
"const": "shell:allow-execute",
2577
+
"markdownDescription": "Enables the execute command without any pre-configured scope."
2578
},
2579
{
2580
"description": "Enables the kill command without any pre-configured scope.",
2581
"type": "string",
2582
+
"const": "shell:allow-kill",
2583
+
"markdownDescription": "Enables the kill command without any pre-configured scope."
2584
},
2585
{
2586
"description": "Enables the open command without any pre-configured scope.",
2587
"type": "string",
2588
+
"const": "shell:allow-open",
2589
+
"markdownDescription": "Enables the open command without any pre-configured scope."
2590
},
2591
{
2592
"description": "Enables the spawn command without any pre-configured scope.",
2593
"type": "string",
2594
+
"const": "shell:allow-spawn",
2595
+
"markdownDescription": "Enables the spawn command without any pre-configured scope."
2596
},
2597
{
2598
"description": "Enables the stdin_write command without any pre-configured scope.",
2599
"type": "string",
2600
+
"const": "shell:allow-stdin-write",
2601
+
"markdownDescription": "Enables the stdin_write command without any pre-configured scope."
2602
},
2603
{
2604
"description": "Denies the execute command without any pre-configured scope.",
2605
"type": "string",
2606
+
"const": "shell:deny-execute",
2607
+
"markdownDescription": "Denies the execute command without any pre-configured scope."
2608
},
2609
{
2610
"description": "Denies the kill command without any pre-configured scope.",
2611
"type": "string",
2612
+
"const": "shell:deny-kill",
2613
+
"markdownDescription": "Denies the kill command without any pre-configured scope."
2614
},
2615
{
2616
"description": "Denies the open command without any pre-configured scope.",
2617
"type": "string",
2618
+
"const": "shell:deny-open",
2619
+
"markdownDescription": "Denies the open command without any pre-configured scope."
2620
},
2621
{
2622
"description": "Denies the spawn command without any pre-configured scope.",
2623
"type": "string",
2624
+
"const": "shell:deny-spawn",
2625
+
"markdownDescription": "Denies the spawn command without any pre-configured scope."
2626
},
2627
{
2628
"description": "Denies the stdin_write command without any pre-configured scope.",
2629
"type": "string",
2630
+
"const": "shell:deny-stdin-write",
2631
+
"markdownDescription": "Denies the stdin_write command without any pre-configured scope."
2632
}
2633
]
2634
},
+17
-9
src-tauri/src/frontend_calls/change_final_path.rs
+17
-9
src-tauri/src/frontend_calls/change_final_path.rs
···
1
use std::fs;
2
3
-
#[tauri::command]
4
-
pub fn change_final_path(new_path: &str) {
5
-
let config_path = dirs::config_dir()
6
-
.unwrap()
7
-
.join("PhazeDev/VRChatPhotoManager/.photos_path");
8
9
-
fs::write(&config_path, new_path.as_bytes()).unwrap();
10
11
match fs::metadata(&new_path) {
12
-
Ok(_) => {}
13
Err(_) => {
14
-
fs::create_dir(&new_path).unwrap();
15
}
16
-
};
17
}
···
1
use std::fs;
2
3
+
use tauri::{Emitter, State, Window};
4
5
+
use crate::util::cache::Cache;
6
7
+
#[tauri::command]
8
+
pub fn change_final_path(new_path: &str, window: Window, cache: State<Cache>) -> bool {
9
match fs::metadata(&new_path) {
10
+
Ok(_) => {
11
+
let config_path = dirs::config_dir()
12
+
.unwrap()
13
+
.join("PhazeDev/VRChatPhotoManager/.photos_path");
14
+
15
+
fs::write(&config_path, new_path.as_bytes()).unwrap();
16
+
cache.insert("photo-path".into(), new_path.to_owned());
17
+
18
+
true
19
+
}
20
Err(_) => {
21
+
window.emit("vrcpm-error", "Error Changing Path: Path does not exist.").unwrap();
22
+
false
23
}
24
+
}
25
}
+9
-4
src-tauri/src/frontend_calls/close_splashscreen.rs
+9
-4
src-tauri/src/frontend_calls/close_splashscreen.rs
···
1
use std::env;
2
-
use tauri::Manager;
3
4
use super::config::get_config_value_string;
5
6
#[tauri::command]
7
-
pub fn close_splashscreen(window: tauri::Window) {
8
let args: Vec<String> = env::args().collect();
9
10
let mut show = true;
···
14
}
15
}
16
17
-
let value: String = match get_config_value_string("start-in-bg".to_owned()) { Some(val) => val, None => "false".to_owned() };
18
if value == "true"{
19
show = false;
20
}
21
22
if show {
23
-
window.get_webview_window("main").unwrap().show().unwrap();
24
}
25
}
···
1
use std::env;
2
+
use tauri::{ Emitter, Manager, State };
3
+
4
+
use crate::frontend_calls::config::Config;
5
6
use super::config::get_config_value_string;
7
8
#[tauri::command]
9
+
pub fn close_splashscreen( window: tauri::Window, config: State<Config> ) {
10
let args: Vec<String> = env::args().collect();
11
12
let mut show = true;
···
16
}
17
}
18
19
+
let value: String = match get_config_value_string("start-in-bg".to_owned(), config) { Some(val) => val, None => "false".to_owned() };
20
if value == "true"{
21
show = false;
22
}
23
24
if show {
25
+
let webview = window.get_webview_window("main").unwrap();
26
+
27
+
webview.show().unwrap();
28
+
webview.emit("show-window", 0).unwrap();
29
}
30
}
+43
-22
src-tauri/src/frontend_calls/config.rs
+43
-22
src-tauri/src/frontend_calls/config.rs
···
1
-
use std::{fs, path::PathBuf};
2
3
use serde_json::Value;
4
5
pub fn get_config_path() -> PathBuf {
6
let path = dirs::config_dir()
···
17
path
18
}
19
20
-
#[tauri::command]
21
-
pub fn set_config_value_string(key: String, value: String) {
22
-
let path = get_config_path();
23
24
-
let mut config: Value = serde_json::from_str(&fs::read_to_string(&path).unwrap()).unwrap();
25
-
config[key] = Value::from(value);
26
27
-
fs::write(path, config.to_string()).unwrap();
28
}
29
30
#[tauri::command]
31
-
pub fn get_config_value_string(key: String) -> Option<String> {
32
-
let config: Value =
33
-
serde_json::from_str(&fs::read_to_string(get_config_path()).unwrap()).unwrap();
34
-
let string = config[key].as_str();
35
36
if string.is_some() {
37
Some(string.unwrap().to_owned())
···
41
}
42
43
#[tauri::command]
44
-
pub fn set_config_value_int(key: String, value: i64) {
45
-
let path = get_config_path();
46
-
47
-
let mut config: Value = serde_json::from_str(&fs::read_to_string(&path).unwrap()).unwrap();
48
-
config[key] = Value::from(value);
49
-
50
-
fs::write(path, config.to_string()).unwrap();
51
}
52
53
#[tauri::command]
54
-
pub fn get_config_value_int(key: String) -> Option<i64> {
55
-
let config: Value =
56
-
serde_json::from_str(&fs::read_to_string(get_config_path()).unwrap()).unwrap();
57
-
config[key].as_i64()
58
}
···
1
+
use std::{fs, path::PathBuf, sync::Mutex};
2
3
use serde_json::Value;
4
+
use tauri::State;
5
6
pub fn get_config_path() -> PathBuf {
7
let path = dirs::config_dir()
···
18
path
19
}
20
21
+
pub struct Config{
22
+
config: Mutex<Value>
23
+
}
24
+
25
+
impl Config{
26
+
pub fn new() -> Config{
27
+
let path = get_config_path();
28
+
let config: Value = serde_json::from_str(&fs::read_to_string(&path).unwrap()).unwrap();
29
+
30
+
Config {
31
+
config: Mutex::new(config)
32
+
}
33
+
}
34
+
35
+
pub fn set( &self, key: String, value: Value ){
36
+
let mut lock = self.config.lock().unwrap();
37
+
lock[key] = value;
38
+
}
39
+
40
+
pub fn get( &self, key: String ) -> Value{
41
+
let lock = self.config.lock().unwrap();
42
+
lock[key].clone()
43
+
}
44
+
45
+
pub fn save( &self ){
46
+
let path = get_config_path();
47
+
let string = serde_json::to_string(&self.config).unwrap();
48
49
+
fs::write(path, string).unwrap();
50
+
}
51
+
}
52
53
+
#[tauri::command]
54
+
pub fn set_config_value_string( key: String, value: String, config: State<Config> ) {
55
+
config.set(key, Value::from(value));
56
}
57
58
#[tauri::command]
59
+
pub fn get_config_value_string( key: String, config: State<Config> ) -> Option<String> {
60
+
let string = config.get(key);
61
+
let string = string.as_str();
62
63
if string.is_some() {
64
Some(string.unwrap().to_owned())
···
68
}
69
70
#[tauri::command]
71
+
pub fn set_config_value_int( key: String, value: i64, config: State<Config> ) {
72
+
config.set(key, Value::from(value));
73
}
74
75
#[tauri::command]
76
+
pub fn get_config_value_int( key: String, config: State<Config> ) -> Option<i64> {
77
+
let string = config.get(key);
78
+
string.as_i64()
79
}
+25
src-tauri/src/frontend_calls/copy_image.rs
+25
src-tauri/src/frontend_calls/copy_image.rs
···
···
1
+
use std::{ borrow::Cow, sync::Mutex };
2
+
3
+
use arboard::{ Clipboard, ImageData };
4
+
use image::GenericImageView;
5
+
use tauri::State;
6
+
7
+
use crate::{ frontend_calls::get_user_photos_path::get_user_photos_path, util::cache::Cache };
8
+
9
+
#[tauri::command]
10
+
pub fn copy_image( path: String, clipboard: State<Mutex<Clipboard>>, cache: State<Cache> ) {
11
+
let path = format!("{}/{}", get_user_photos_path(cache), path);
12
+
println!("Copying Image: {}", &path);
13
+
14
+
let img = image::open(path).unwrap();
15
+
let size = img.dimensions();
16
+
17
+
let img_data = ImageData {
18
+
width: size.0 as usize,
19
+
height: size.1 as usize,
20
+
bytes: Cow::from(img.into_rgba8().to_vec())
21
+
};
22
+
23
+
let mut lock = clipboard.lock().unwrap();
24
+
lock.set_image(img_data).unwrap();
25
+
}
+2
-16
src-tauri/src/frontend_calls/delete_photo.rs
+2
-16
src-tauri/src/frontend_calls/delete_photo.rs
···
1
use tauri::State;
2
3
use crate::util::cache::Cache;
4
-
use std::{ fs, thread, time::Duration };
5
6
// Delete a photo when the users confirms the prompt in the ui
7
#[tauri::command]
8
-
pub fn delete_photo(path: String, token: String, is_syncing: bool, cache: State<Cache>) {
9
let photo_path = cache.get("photo-path".into());
10
11
thread::spawn(move || {
12
let p = photo_path.unwrap() + "/" + &path;
13
fs::remove_file(p).unwrap();
14
-
15
-
let photo = path.split("/").last().unwrap();
16
-
17
-
if is_syncing {
18
-
let client = reqwest::blocking::Client::new();
19
-
client
20
-
.delete(format!(
21
-
"https://photos-cdn.phazed.xyz/api/v1/photos?token={}&photo={}",
22
-
token, photo
23
-
))
24
-
.timeout(Duration::from_secs(120))
25
-
.send()
26
-
.unwrap();
27
-
}
28
});
29
}
···
1
use tauri::State;
2
3
use crate::util::cache::Cache;
4
+
use std::{ fs, thread };
5
6
// Delete a photo when the users confirms the prompt in the ui
7
#[tauri::command]
8
+
pub fn delete_photo(path: String, cache: State<Cache>) {
9
let photo_path = cache.get("photo-path".into());
10
11
thread::spawn(move || {
12
let p = photo_path.unwrap() + "/" + &path;
13
fs::remove_file(p).unwrap();
14
});
15
}
+21
-3
src-tauri/src/frontend_calls/load_photo_meta.rs
+21
-3
src-tauri/src/frontend_calls/load_photo_meta.rs
···
20
let mut buffer = Vec::new();
21
22
let _out = file.read_to_end(&mut buffer);
23
+
let png = PNGImage::new(buffer, photo.clone());
24
+
25
+
if png.is_err(){
26
+
println!("Failed to load: {} => {}", base_dir, png.unwrap_err());
27
+
28
+
window.emit("photo_meta_loaded", PNGImage {
29
+
width: 1920,
30
+
height: 1080,
31
+
bit_depth: 0,
32
+
colour_type: 0,
33
+
compression_method: 0,
34
+
filter_method: 0,
35
+
interlace_method: 0,
36
+
metadata: "".into(),
37
+
error: true,
38
+
path: photo
39
+
}).unwrap();
40
+
} else{
41
+
println!("Loaded: {}", base_dir);
42
+
window.emit("photo_meta_loaded", png.unwrap()).unwrap();
43
+
}
44
}
45
Err(_) => {
46
println!("Cannot read image file: {:?}", base_dir);
+14
-8
src-tauri/src/frontend_calls/load_photos.rs
+14
-8
src-tauri/src/frontend_calls/load_photos.rs
···
16
let base_dir = cache.get("photo-path".into()).unwrap();
17
18
thread::spawn(move || {
19
-
20
let mut photos: Vec<path::PathBuf> = Vec::new();
21
let mut size: usize = 0;
22
23
for folder in fs::read_dir(&base_dir).unwrap() {
24
let f = folder.unwrap();
25
26
if f.metadata().unwrap().is_dir() {
27
for photo in fs::read_dir(f.path()).unwrap() {
···
30
if p.metadata().unwrap().is_file() {
31
let fname = p.path();
32
33
-
let re1 = Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}.png").unwrap();
34
-
let re2 = Regex::new(
35
-
r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}_wrld_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.png").unwrap();
36
-
let re3 = Regex::new("VRChat_[0-9]{4}x[0-9]{4}_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}.png").unwrap();
37
-
38
let name = p.file_name();
39
let name = name.to_str().unwrap();
40
41
-
let re3_match = re3.is_match(name);
42
43
-
if re1.is_match(name) || re2.is_match(name) || re3_match {
44
let path = fname.to_path_buf().clone();
45
let metadata = fs::metadata(&path).unwrap();
46
···
16
let base_dir = cache.get("photo-path".into()).unwrap();
17
18
thread::spawn(move || {
19
let mut photos: Vec<path::PathBuf> = Vec::new();
20
let mut size: usize = 0;
21
22
+
let re = Regex::new(r"^[0-9]{4}-[0-9]{2}$").unwrap();
23
+
24
for folder in fs::read_dir(&base_dir).unwrap() {
25
let f = folder.unwrap();
26
+
if !re.is_match(f.file_name().to_str().unwrap()){ continue; }
27
28
if f.metadata().unwrap().is_dir() {
29
for photo in fs::read_dir(f.path()).unwrap() {
···
32
if p.metadata().unwrap().is_file() {
33
let fname = p.path();
34
35
let name = p.file_name();
36
let name = name.to_str().unwrap();
37
38
+
let re1_match = // This is the current format used by VRChat
39
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}.png").unwrap().is_match(name) ||
40
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}_Player.png").unwrap().is_match(name) ||
41
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}_Environment.png").unwrap().is_match(name);
42
+
43
+
let re2_match = // This is the format VRCX uses if you enable renaming photos
44
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}_wrld_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.png").unwrap().is_match(name);
45
46
+
let re3_match = // This is an old format VRChat used for naming photos
47
+
Regex::new(r"(?m)VRChat_[0-9]{3,4}x[0-9]{3,4}_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}.png").unwrap().is_match(name);
48
+
49
+
if re1_match || re2_match || re3_match {
50
let path = fname.to_path_buf().clone();
51
let metadata = fs::metadata(&path).unwrap();
52
+1
-3
src-tauri/src/frontend_calls/mod.rs
+1
-3
src-tauri/src/frontend_calls/mod.rs
+19
-4
src-tauri/src/frontend_calls/open_folder.rs
+19
-4
src-tauri/src/frontend_calls/open_folder.rs
···
7
8
#[cfg(target_os = "linux")]
9
{
10
+
let path = url.replace("\\", "/");
11
+
12
+
let mut dir_path: Vec<_> = path.split("/").collect();
13
+
dir_path.pop();
14
+
let dir_path = dir_path.join("/");
15
+
16
+
let commands = vec![
17
+
( "nautilus", vec![ path.clone() ] ),
18
+
( "nemo", vec![ path.clone() ] ),
19
+
( "thunar", vec![ path.clone() ] ),
20
+
( "caja", vec![ "--select".into(), path.clone() ] ),
21
+
( "pcmanfm-qt", vec![ dir_path.clone() ] ),
22
+
( "pcmanfm", vec![ dir_path.clone() ] ),
23
+
( "dolphin", vec![ "--select".into(), path.clone() ] ),
24
+
( "konqueror", vec![ "--select".into(), path.clone() ] ),
25
+
( "xdg-open", vec![ dir_path.clone() ] )
26
+
];
27
28
+
for command in commands{
29
+
if Command::new(command.0).args(command.1).spawn().is_ok() { break; } }
30
}
31
}
-17
src-tauri/src/frontend_calls/relaunch.rs
-17
src-tauri/src/frontend_calls/relaunch.rs
···
1
-
use std::process::{ self, Command };
2
-
3
-
#[tauri::command]
4
-
pub fn relaunch() {
5
-
#[cfg(windows)]
6
-
{
7
-
let container_folder = dirs::config_dir()
8
-
.unwrap()
9
-
.join("PhazeDev/VRChatPhotoManager");
10
-
11
-
let mut cmd = Command::new(&container_folder.join("./vrchat-photo-manager.exe"));
12
-
cmd.current_dir(container_folder);
13
-
cmd.spawn().expect("Cannot run updater");
14
-
15
-
process::exit(0);
16
-
}
17
-
}
···
-4
src-tauri/src/frontend_calls/start_user_auth.rs
-4
src-tauri/src/frontend_calls/start_user_auth.rs
-11
src-tauri/src/frontend_calls/sync_photos.rs
-11
src-tauri/src/frontend_calls/sync_photos.rs
···
1
-
use crate::photosync;
2
-
use crate::util::get_photo_path::get_photo_path;
3
-
use std::thread;
4
-
5
-
// On requested sync the photos to the cloud
6
-
#[tauri::command]
7
-
pub fn sync_photos(token: String, window: tauri::Window) {
8
-
thread::spawn(move || {
9
-
photosync::sync_photos(token, get_photo_path(), window);
10
-
});
11
-
}
···
+37
-31
src-tauri/src/main.rs
+37
-31
src-tauri/src/main.rs
···
1
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
2
3
mod frontend_calls;
4
-
mod photosync;
5
mod pngmeta;
6
mod util;
7
mod worldscraper;
8
9
use core::time;
10
use frontend_calls::*;
11
12
use notify::{ EventKind, RecursiveMode, Watcher };
13
use pngmeta::PNGImage;
14
use regex::Regex;
15
use util::{ cache::Cache, get_photo_path::get_photo_path };
16
-
use std::{ env, fs, thread };
17
use tauri::{ Emitter, Manager, State, WindowEvent };
18
-
use tauri_plugin_deep_link::DeepLinkExt;
19
20
-
// TODO: Linux support
21
22
fn main() {
23
#[cfg(target_os = "linux")]
24
-
std::env::set_var("WEBKIT_DISABLE_DMABUF_RENDERER", "1"); // Fix webkit being shit
25
26
let cache = Cache::new();
27
···
78
79
println!("Loading App...");
80
let photos_path = util::get_photo_path::get_photo_path();
81
82
cache.insert("photo-path".into(), photos_path.to_str().unwrap().to_owned());
83
···
88
}
89
};
90
91
-
// Updater only supports windows, so don't update if on linux
92
-
#[cfg(windows)]
93
-
util::check_updates::check_updates(container_folder);
94
-
95
// Listen for file updates, store each update in an mpsc channel and send to the frontend
96
let (sender, receiver) = std::sync::mpsc::channel();
97
let mut watcher = notify::recommended_watcher(move | res: Result<notify::Event, notify::Error> | {
···
102
let path = event.paths.first().unwrap();
103
let name = path.file_name().unwrap().to_str().unwrap().to_owned();
104
105
-
let re1 = Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}.png").unwrap();
106
-
let re2 = Regex::new(r"(?m)/VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}_wrld_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.png/gm").unwrap();
107
108
-
if
109
-
re1.is_match(&name) ||
110
-
re2.is_match(&name)
111
-
{
112
sender.send((2, path.strip_prefix(get_photo_path()).unwrap().to_str().unwrap().to_owned())).unwrap();
113
}
114
},
···
116
let path = event.paths.first().unwrap();
117
let name = path.file_name().unwrap().to_str().unwrap().to_owned();
118
119
-
let re1 = Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}.png").unwrap();
120
-
let re2 = Regex::new(r"(?m)/VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}_wrld_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.png/gm").unwrap();
121
122
-
if
123
-
re1.is_match(&name) ||
124
-
re2.is_match(&name)
125
-
{
126
thread::sleep(time::Duration::from_millis(1000));
127
sender.send((1, path.strip_prefix(get_photo_path()).unwrap().to_str().unwrap().to_owned())).unwrap();
128
}
···
142
)
143
.unwrap();
144
145
tauri::Builder::default()
146
-
.plugin(tauri_plugin_single_instance::init(| app, argv, _cwd | {
147
app.get_webview_window("main").unwrap().show().unwrap();
148
-
util::handle_deeplink::handle_deeplink(argv[1].clone(), app);
149
}))
150
-
.plugin(tauri_plugin_deep_link::init())
151
.plugin(tauri_plugin_process::init())
152
.plugin(tauri_plugin_http::init())
153
.plugin(tauri_plugin_shell::init())
···
156
util::handle_uri_proto::handle_uri_proto(req, res, cache);
157
})
158
.on_window_event(|window, event| match event {
159
-
WindowEvent::CloseRequested { api, .. } => {
160
window.hide().unwrap();
161
api.prevent_close();
162
}
163
_ => {}
164
})
165
.manage(cache)
166
.setup(|app| {
167
let handle = app.handle();
168
-
169
-
app.deep_link().register("vrcpm").unwrap();
170
util::setup_traymenu::setup_traymenu(handle);
171
172
// reads the file update mpsc channel and sends the events to the frontend
···
190
Ok(())
191
})
192
.invoke_handler(tauri::generate_handler![
193
-
start_user_auth::start_user_auth,
194
load_photos::load_photos,
195
close_splashscreen::close_splashscreen,
196
load_photo_meta::load_photo_meta,
···
202
start_with_win::start_with_win,
203
get_user_photos_path::get_user_photos_path,
204
change_final_path::change_final_path,
205
-
sync_photos::sync_photos,
206
util::get_version::get_version,
207
-
relaunch::relaunch,
208
config::set_config_value_string,
209
config::get_config_value_string,
210
config::set_config_value_int,
211
config::get_config_value_int,
212
-
get_os::get_os
213
])
214
.run(tauri::generate_context!())
215
.expect("error while running tauri application");
···
1
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
2
3
mod frontend_calls;
4
mod pngmeta;
5
mod util;
6
mod worldscraper;
7
8
use core::time;
9
+
use arboard::Clipboard;
10
use frontend_calls::*;
11
12
use notify::{ EventKind, RecursiveMode, Watcher };
13
use pngmeta::PNGImage;
14
use regex::Regex;
15
use util::{ cache::Cache, get_photo_path::get_photo_path };
16
+
use std::{ env, fs, sync::Mutex, thread };
17
use tauri::{ Emitter, Manager, State, WindowEvent };
18
19
+
use crate::frontend_calls::config::{get_config_value_string, Config};
20
21
fn main() {
22
#[cfg(target_os = "linux")]
23
+
std::env::set_var("WEBKIT_DISABLE_DMABUF_RENDERER", "1"); // Fix webkitgtk being shit
24
25
let cache = Cache::new();
26
···
77
78
println!("Loading App...");
79
let photos_path = util::get_photo_path::get_photo_path();
80
+
println!("Loading photos from: {:#?}", &photos_path);
81
82
cache.insert("photo-path".into(), photos_path.to_str().unwrap().to_owned());
83
···
88
}
89
};
90
91
// Listen for file updates, store each update in an mpsc channel and send to the frontend
92
let (sender, receiver) = std::sync::mpsc::channel();
93
let mut watcher = notify::recommended_watcher(move | res: Result<notify::Event, notify::Error> | {
···
98
let path = event.paths.first().unwrap();
99
let name = path.file_name().unwrap().to_str().unwrap().to_owned();
100
101
+
let re1_match = // This is the current format used by VRChat
102
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}.png").unwrap().is_match(&name) ||
103
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}_Player.png").unwrap().is_match(&name) ||
104
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}_Environment.png").unwrap().is_match(&name);
105
106
+
let re2_match = // This is the format VRCX uses if you enable renaming photos
107
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}_wrld_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.png").unwrap().is_match(&name);
108
+
109
+
if re1_match || re2_match{
110
sender.send((2, path.strip_prefix(get_photo_path()).unwrap().to_str().unwrap().to_owned())).unwrap();
111
}
112
},
···
114
let path = event.paths.first().unwrap();
115
let name = path.file_name().unwrap().to_str().unwrap().to_owned();
116
117
+
let re1_match = // This is the current format used by VRChat
118
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}.png").unwrap().is_match(&name) ||
119
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}_Player.png").unwrap().is_match(&name) ||
120
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}_Environment.png").unwrap().is_match(&name);
121
122
+
let re2_match = // This is the format VRCX uses if you enable renaming photos
123
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}_wrld_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.png").unwrap().is_match(&name);
124
+
125
+
if re1_match || re2_match{
126
thread::sleep(time::Duration::from_millis(1000));
127
sender.send((1, path.strip_prefix(get_photo_path()).unwrap().to_str().unwrap().to_owned())).unwrap();
128
}
···
142
)
143
.unwrap();
144
145
+
let clipboard = Clipboard::new().unwrap();
146
+
147
tauri::Builder::default()
148
+
.plugin(tauri_plugin_single_instance::init(| app, _argv, _cwd | {
149
app.get_webview_window("main").unwrap().show().unwrap();
150
}))
151
.plugin(tauri_plugin_process::init())
152
.plugin(tauri_plugin_http::init())
153
.plugin(tauri_plugin_shell::init())
···
156
util::handle_uri_proto::handle_uri_proto(req, res, cache);
157
})
158
.on_window_event(|window, event| match event {
159
+
WindowEvent::CloseRequested { api, .. } => {
160
+
let config: State<Config> = window.state();
161
+
162
+
let val = get_config_value_string("close-to-tray".into(), config.clone());
163
+
if val.is_none() || val.unwrap() != "true"{
164
+
config.save();
165
+
return;
166
+
}
167
+
168
window.hide().unwrap();
169
api.prevent_close();
170
}
171
_ => {}
172
})
173
+
.manage(Config::new())
174
.manage(cache)
175
+
.manage(Mutex::new(clipboard))
176
.setup(|app| {
177
let handle = app.handle();
178
util::setup_traymenu::setup_traymenu(handle);
179
180
// reads the file update mpsc channel and sends the events to the frontend
···
198
Ok(())
199
})
200
.invoke_handler(tauri::generate_handler![
201
load_photos::load_photos,
202
close_splashscreen::close_splashscreen,
203
load_photo_meta::load_photo_meta,
···
209
start_with_win::start_with_win,
210
get_user_photos_path::get_user_photos_path,
211
change_final_path::change_final_path,
212
util::get_version::get_version,
213
config::set_config_value_string,
214
config::get_config_value_string,
215
config::set_config_value_int,
216
config::get_config_value_int,
217
+
get_os::get_os,
218
+
copy_image::copy_image
219
])
220
.run(tauri::generate_context!())
221
.expect("error while running tauri application");
-261
src-tauri/src/photosync.rs
-261
src-tauri/src/photosync.rs
···
1
-
use regex::Regex;
2
-
use reqwest;
3
-
use serde::Serialize;
4
-
use serde_json::{Error, Value};
5
-
use std::{fs, io::Write, path, time::Duration};
6
-
use tauri::Emitter;
7
-
8
-
#[derive(Clone, Serialize)]
9
-
struct PhotoUploadMeta {
10
-
photos_uploading: usize,
11
-
photos_total: usize,
12
-
}
13
-
14
-
pub fn sync_photos(token: String, path: path::PathBuf, window: tauri::Window) {
15
-
let sync_lock_path = dirs::config_dir()
16
-
.unwrap()
17
-
.join("PhazeDev/VRChatPhotoManager/.sync_lock");
18
-
19
-
match fs::metadata(&sync_lock_path) {
20
-
Ok(_) => {
21
-
return;
22
-
}
23
-
Err(_) => {}
24
-
}
25
-
26
-
fs::write(&sync_lock_path, "Currently Syncing").unwrap();
27
-
28
-
match fs::metadata(&path) {
29
-
Ok(_) => {}
30
-
Err(_) => {
31
-
fs::create_dir(&path).unwrap();
32
-
}
33
-
};
34
-
35
-
let mut photos: Vec<String> = Vec::new();
36
-
37
-
for folder in fs::read_dir(&path).unwrap() {
38
-
let f = folder.unwrap();
39
-
40
-
if f.metadata().unwrap().is_dir() {
41
-
match fs::read_dir(f.path()) {
42
-
Ok(dir) => {
43
-
for photo in dir {
44
-
let p = photo.unwrap();
45
-
46
-
let re1 = Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}.png").unwrap();
47
-
let re2 = Regex::new(
48
-
r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}_wrld_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.png").unwrap();
49
-
50
-
if re1.is_match(p.file_name().to_str().unwrap())
51
-
|| re2.is_match(p.file_name().to_str().unwrap())
52
-
{
53
-
photos.push(p.file_name().into_string().unwrap());
54
-
}
55
-
}
56
-
}
57
-
Err(_) => {}
58
-
}
59
-
}
60
-
}
61
-
62
-
let body = reqwest::blocking::get(format!(
63
-
"https://photos-cdn.phazed.xyz/api/v1/photos/exists?token={}",
64
-
&token
65
-
))
66
-
.unwrap()
67
-
.text()
68
-
.unwrap();
69
-
70
-
let body: Value = serde_json::from_str(&body).unwrap();
71
-
72
-
let mut photos_to_upload: Vec<String> = Vec::new();
73
-
let uploaded_photos = body["files"].as_array().unwrap();
74
-
75
-
let photos_len = photos.len();
76
-
77
-
for photo in &photos {
78
-
let mut found_photo = false;
79
-
80
-
for uploaded_photo in uploaded_photos {
81
-
if photo == uploaded_photo.as_str().unwrap() {
82
-
found_photo = true;
83
-
break;
84
-
}
85
-
}
86
-
87
-
if !found_photo {
88
-
photos_to_upload.push(photo.clone());
89
-
}
90
-
}
91
-
92
-
window
93
-
.emit(
94
-
"photos-upload-meta",
95
-
PhotoUploadMeta {
96
-
photos_uploading: photos_to_upload.len(),
97
-
photos_total: photos_len,
98
-
},
99
-
)
100
-
.unwrap();
101
-
102
-
let mut photos_left = photos_to_upload.len();
103
-
104
-
let client = reqwest::blocking::Client::new();
105
-
106
-
loop {
107
-
match photos_to_upload.pop() {
108
-
Some(photo) => {
109
-
let folder_name = photo.clone().replace("VRChat_", "");
110
-
let mut folder_name = folder_name.split("-");
111
-
let folder_name = format!(
112
-
"{}-{}",
113
-
folder_name.nth(0).unwrap(),
114
-
folder_name.nth(0).unwrap()
115
-
);
116
-
117
-
let full_path = format!("{}\\{}\\{}", path.to_str().unwrap(), folder_name, photo);
118
-
let file = fs::File::open(full_path);
119
-
120
-
match file {
121
-
Ok(file) => {
122
-
let res = client
123
-
.put(format!(
124
-
"https://photos-cdn.phazed.xyz/api/v1/photos?token={}",
125
-
&token
126
-
))
127
-
.header("Content-Type", "image/png")
128
-
.header("filename", photo)
129
-
.body(file)
130
-
.timeout(Duration::from_secs(120))
131
-
.send()
132
-
.unwrap()
133
-
.text()
134
-
.unwrap();
135
-
136
-
let res: Result<Value, Error> = serde_json::from_str(&res);
137
-
138
-
match res {
139
-
Ok(res) => {
140
-
if !res["ok"].as_bool().unwrap() {
141
-
println!("Failed to upload: {}", res["error"].as_str().unwrap());
142
-
143
-
window
144
-
.emit("sync-failed", res["error"].as_str().unwrap())
145
-
.unwrap();
146
-
147
-
break;
148
-
}
149
-
}
150
-
Err(err) => {
151
-
dbg!(err);
152
-
}
153
-
}
154
-
}
155
-
Err(_) => {}
156
-
}
157
-
158
-
photos_left -= 1;
159
-
window
160
-
.emit(
161
-
"photos-upload-meta",
162
-
PhotoUploadMeta {
163
-
photos_uploading: photos_left,
164
-
photos_total: photos_len,
165
-
},
166
-
)
167
-
.unwrap();
168
-
}
169
-
None => {
170
-
break;
171
-
}
172
-
}
173
-
}
174
-
175
-
println!("Finished Uploading.");
176
-
let mut photos_to_download: Vec<String> = Vec::new();
177
-
178
-
for photo in uploaded_photos {
179
-
let mut found_photo = false;
180
-
let photo = photo.as_str().unwrap().to_string();
181
-
182
-
for uploaded_photo in &photos {
183
-
if &photo == uploaded_photo {
184
-
found_photo = true;
185
-
break;
186
-
}
187
-
}
188
-
189
-
if !found_photo {
190
-
photos_to_download.push(photo);
191
-
}
192
-
}
193
-
194
-
photos_to_download.reverse();
195
-
196
-
let photos_len = photos_to_download.len();
197
-
let mut photos_left = photos_to_download.len();
198
-
199
-
loop {
200
-
match photos_to_download.pop() {
201
-
Some(photo) => {
202
-
let folder_name = photo.clone().replace("VRChat_", "");
203
-
let mut folder_name = folder_name.split("-");
204
-
let folder_name = format!(
205
-
"{}-{}",
206
-
folder_name.nth(0).unwrap(),
207
-
folder_name.nth(0).unwrap()
208
-
);
209
-
210
-
let full_path = format!("{}/{}/{}", path.to_str().unwrap(), folder_name, photo);
211
-
212
-
let res = client
213
-
.get(format!(
214
-
"https://photos-cdn.phazed.xyz/api/v1/photos?token={}&photo={}",
215
-
&token, &photo
216
-
))
217
-
.timeout(Duration::from_secs(120))
218
-
.send()
219
-
.unwrap()
220
-
.bytes();
221
-
222
-
match res {
223
-
Ok(res) => {
224
-
let folder_path = format!("{}/{}", path.to_str().unwrap(), folder_name);
225
-
match fs::metadata(&folder_path) {
226
-
Ok(_) => {}
227
-
Err(_) => {
228
-
fs::create_dir(folder_path).unwrap();
229
-
}
230
-
}
231
-
232
-
let mut file = fs::File::create(full_path).unwrap();
233
-
file.write_all(&res).unwrap();
234
-
}
235
-
Err(err) => {
236
-
dbg!(err);
237
-
}
238
-
}
239
-
240
-
photos_left -= 1;
241
-
window
242
-
.emit(
243
-
"photos-download-meta",
244
-
PhotoUploadMeta {
245
-
photos_uploading: photos_left,
246
-
photos_total: photos_len,
247
-
},
248
-
)
249
-
.unwrap();
250
-
}
251
-
None => {
252
-
break;
253
-
}
254
-
}
255
-
}
256
-
257
-
println!("Finished Downloading.");
258
-
259
-
fs::remove_file(&sync_lock_path).unwrap();
260
-
window.emit("sync-finished", "h").unwrap();
261
-
}
···
+17
-33
src-tauri/src/pngmeta.rs
+17
-33
src-tauri/src/pngmeta.rs
···
1
-
use serde::ser::{Serialize, SerializeStruct, Serializer};
2
use std::str;
3
4
-
#[derive(Clone)]
5
pub struct PNGImage {
6
-
width: u32,
7
-
height: u32,
8
-
bit_depth: u8,
9
-
colour_type: u8,
10
-
compression_method: u8,
11
-
filter_method: u8,
12
-
interlace_method: u8,
13
-
metadata: String,
14
-
path: String,
15
}
16
17
impl PNGImage {
18
-
pub fn new(buff: Vec<u8>, path: String) -> PNGImage {
19
if buff[0] != 0x89
20
|| buff[1] != 0x50
21
|| buff[2] != 0x4E
···
26
|| buff[7] != 0x0A
27
{
28
dbg!(path);
29
-
panic!("Image is not a PNG file");
30
}
31
32
let mut img = PNGImage {
···
39
interlace_method: 0,
40
metadata: "".to_string(),
41
path: path,
42
};
43
44
img.read_png_chunk(8, buff);
45
-
img
46
}
47
48
fn read_png_chunk(&mut self, start_byte: usize, buff: Vec<u8>) {
···
82
}
83
}
84
}
85
-
86
-
impl Serialize for PNGImage {
87
-
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
88
-
where
89
-
S: Serializer,
90
-
{
91
-
let mut s = serializer.serialize_struct("PNGImage", 7)?;
92
-
s.serialize_field("width", &self.width)?;
93
-
s.serialize_field("height", &self.height)?;
94
-
s.serialize_field("bit_depth", &self.bit_depth)?;
95
-
s.serialize_field("colour_type", &self.colour_type)?;
96
-
s.serialize_field("compression_method", &self.compression_method)?;
97
-
s.serialize_field("filter_method", &self.filter_method)?;
98
-
s.serialize_field("interlace_method", &self.interlace_method)?;
99
-
s.serialize_field("metadata", &self.metadata)?;
100
-
s.serialize_field("path", &self.path)?;
101
-
s.end()
102
-
}
103
-
}
···
1
use std::str;
2
3
+
use serde::Serialize;
4
+
5
+
#[derive(Clone, Debug, Serialize)]
6
pub struct PNGImage {
7
+
pub width: u32,
8
+
pub height: u32,
9
+
pub bit_depth: u8,
10
+
pub colour_type: u8,
11
+
pub compression_method: u8,
12
+
pub filter_method: u8,
13
+
pub interlace_method: u8,
14
+
pub metadata: String,
15
+
pub path: String,
16
+
pub error: bool
17
}
18
19
impl PNGImage {
20
+
pub fn new(buff: Vec<u8>, path: String) -> Result<PNGImage, &'static str> {
21
if buff[0] != 0x89
22
|| buff[1] != 0x50
23
|| buff[2] != 0x4E
···
28
|| buff[7] != 0x0A
29
{
30
dbg!(path);
31
+
return Err("Image is not a PNG file");
32
}
33
34
let mut img = PNGImage {
···
41
interlace_method: 0,
42
metadata: "".to_string(),
43
path: path,
44
+
error: false
45
};
46
47
img.read_png_chunk(8, buff);
48
+
Ok(img)
49
}
50
51
fn read_png_chunk(&mut self, start_byte: usize, buff: Vec<u8>) {
···
85
}
86
}
87
}
+1
-1
src-tauri/src/util/cache.rs
+1
-1
src-tauri/src/util/cache.rs
-55
src-tauri/src/util/check_updates.rs
-55
src-tauri/src/util/check_updates.rs
···
1
-
use crate::util;
2
-
use std::{
3
-
env, fs, path,
4
-
process::{ self, Command },
5
-
thread,
6
-
time::Duration,
7
-
};
8
-
9
-
pub fn check_updates(container_folder: path::PathBuf) {
10
-
let args: Vec<String> = env::args().collect();
11
-
12
-
let mut update = true;
13
-
for arg in args {
14
-
if arg == "--no-update" {
15
-
update = false;
16
-
}
17
-
}
18
-
19
-
if update {
20
-
// Auto update
21
-
thread::spawn(move || {
22
-
let client = reqwest::blocking::Client::new();
23
-
24
-
let latest_version = client
25
-
.get("https://cdn.phaz.uk/vrcpm/latest")
26
-
.send()
27
-
.unwrap()
28
-
.text()
29
-
.unwrap();
30
-
31
-
if latest_version != util::get_version::get_version() {
32
-
match fs::metadata(&container_folder.join("./updater.exe")) {
33
-
Ok(_) => {}
34
-
Err(_) => {
35
-
let latest_installer = client
36
-
.get("https://cdn.phaz.uk/vrcpm/vrcpm-installer.exe")
37
-
.timeout(Duration::from_secs(120))
38
-
.send()
39
-
.unwrap()
40
-
.bytes()
41
-
.unwrap();
42
-
43
-
fs::write(&container_folder.join("./updater.exe"), latest_installer).unwrap();
44
-
}
45
-
}
46
-
47
-
let mut cmd = Command::new(&container_folder.join("./updater.exe"));
48
-
cmd.current_dir(container_folder);
49
-
cmd.spawn().expect("Cannot run updater");
50
-
51
-
process::exit(0);
52
-
}
53
-
});
54
-
}
55
-
}
···
+7
-1
src-tauri/src/util/get_photo_path.rs
+7
-1
src-tauri/src/util/get_photo_path.rs
-22
src-tauri/src/util/handle_deeplink.rs
-22
src-tauri/src/util/handle_deeplink.rs
···
1
-
use tauri::{ AppHandle, Emitter };
2
-
3
-
pub fn handle_deeplink( url: String, handle: &AppHandle ) {
4
-
let mut command: u8 = 0;
5
-
let mut index: u8 = 0;
6
-
7
-
for part in url.split('/').into_iter() {
8
-
index += 1;
9
-
10
-
if index == 3 && part == "auth-callback" {
11
-
command = 1;
12
-
}
13
-
14
-
if index == 3 && part == "auth-denied" {
15
-
handle.emit("auth-denied", "null").unwrap();
16
-
}
17
-
18
-
if index == 4 && command == 1 {
19
-
handle.emit("auth-callback", part).unwrap();
20
-
}
21
-
}
22
-
}
···
-6
src-tauri/src/util/handle_uri_proto.rs
-6
src-tauri/src/util/handle_uri_proto.rs
···
33
return;
34
}
35
36
-
// TODO: Only accept files that are in the vrchat photos folder
37
-
// Slightly more complex than originally thought, need to find a way to cache the VRC photos path
38
-
// since i need to be able to load lots of photos very quickly. This shouldn't be a security issue
39
-
// because tauri should only let the frontend of VRCPhotoManager read files throught this. Only
40
-
// becomes a potential issue if the frontend gets modified or there's an issue with tauri.
41
-
42
#[cfg(windows)]
43
let path = uri.path().split_at(1).1;
44
-2
src-tauri/src/util/mod.rs
-2
src-tauri/src/util/mod.rs
+7
-6
src-tauri/tauri.conf.json
+7
-6
src-tauri/tauri.conf.json
···
15
"icons/icon.ico"
16
]
17
},
18
-
"productName": "vrchat-photo-manager",
19
"version": "0.0.1",
20
"identifier": "uk.phaz.vrcpm",
21
-
"plugins": {},
22
"app": {
23
"security": {
24
-
"csp": "https://photos.phazed.xyz; connect-src ipc: http://ipc.localhost"
25
},
26
"windows": [
27
{
···
33
"minWidth": 600,
34
"minHeight": 400,
35
"visible": false,
36
-
"decorations": false,
37
-
"transparent": true,
38
-
"titleBarStyle": "Transparent"
39
}
40
]
41
}
···
15
"icons/icon.ico"
16
]
17
},
18
+
"productName": "VRChat Photo Manager",
19
"version": "0.0.1",
20
"identifier": "uk.phaz.vrcpm",
21
+
"plugins": {
22
+
"shell": { "open": true }
23
+
},
24
"app": {
25
"security": {
26
+
"csp": "connect-src https://api.github.com ipc: http://ipc.localhost"
27
},
28
"windows": [
29
{
···
35
"minWidth": 600,
36
"minHeight": 400,
37
"visible": false,
38
+
"decorations": true,
39
+
"transparent": true
40
}
41
]
42
}
+1
-1
vite.config.ts
+1
-1
vite.config.ts