+9
-7
README.md
+9
-7
README.md
···
1
1
# VRChat Photo Manager (BETA)
2
2
3
-
Download [here](https://github.com/phaze-the-dumb/VRChat-Photo-Manager/releases/latest)
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
4
8
5
9
## Feedback / Bug Reports
6
10
···
14
18
15
19
## A photo manager for VRChat.
16
20
17
-

18
-
19
-
Files with VRCX metadata:
21
+
<img width="1352" height="739" alt="image" src="https://github.com/user-attachments/assets/bc702ee6-8891-463d-a987-c2db1dc24678" />
20
22
21
-

23
+
Files with VRCX metadata + Fetches world information from VRChat:
22
24
23
-
Fetches world information from VRChat:
25
+
<img width="1352" height="739" alt="image" src="https://github.com/user-attachments/assets/aae88c53-aab6-4520-bb89-d6f2bca1c51a" />
24
26
25
27
Searching for photos taken in specific worlds / with specific users:
26
28
27
-

29
+
<img width="1352" height="739" alt="image" src="https://github.com/user-attachments/assets/f9af1724-5bb2-4276-bc32-e818dab31750" />
+10
-8
build-release.sh
+10
-8
build-release.sh
···
1
1
#!/bin/bash
2
2
3
-
VERSION=0.2.5
3
+
VERSION=0.2.7-hot1
4
4
5
5
# Linux builds
6
6
NO_STRIP=true pnpm tauri build
7
7
8
8
# Windows builds
9
-
pnpm tauri build --target x86_64-pc-windows-gnu
10
-
pnpm tauri build --debug --target x86_64-pc-windows-gnu
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
11
12
12
# Move Files
13
13
14
14
mkdir builds
15
15
mkdir builds/$VERSION
16
16
17
-
mv src-tauri/target/release/bundle/appimage/vrchat-photo-manager_0.0.1_amd64.AppImage builds/$VERSION/vrchat-photo-manager_linux_amd64.AppImage
18
-
mv src-tauri/target/release/bundle/deb/vrchat-photo-manager_0.0.1_amd64.deb builds/$VERSION/vrchat-photo-manager_linux_amd64.deb
19
-
mv src-tauri/target/release/bundle/rpm/vrchat-photo-manager-0.0.1-1.x86_64.rpm builds/$VERSION/vrchat-photo-manager_linux_x86_64.rpm
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
20
21
-
mv src-tauri/target/x86_64-pc-windows-gnu/release/VRChatPhotoManager.exe builds/$VERSION/vrcpm-$VERSION.exe
22
-
mv src-tauri/target/x86_64-pc-windows-gnu/debug/VRChatPhotoManager.exe builds/$VERSION/vrcpm-$VERSION-debug.exe
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
+36
-2
changelog
+36
-2
changelog
···
95
95
- Fixed the "Start with windows" button appearing on linux
96
96
- Fixed linux tray icon title
97
97
- Fixed build-release.sh script outputting the wrong names for windows builds
98
-
- Fixed clipboard on linux ( and speeded it up on windows )
99
-
- Fixed some icons not fading out when moving to the settings menu
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
12
},
13
13
"license": "MIT",
14
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"
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"
23
22
},
24
23
"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"
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
29
}
30
30
}
+562
-464
pnpm-lock.yaml
+562
-464
pnpm-lock.yaml
···
9
9
.:
10
10
dependencies:
11
11
'@tauri-apps/api':
12
-
specifier: 2.0.0-rc.0
13
-
version: 2.0.0-rc.0
12
+
specifier: 2.9.0
13
+
version: 2.9.0
14
14
'@tauri-apps/plugin-deep-link':
15
-
specifier: ^2.4.1
16
-
version: 2.4.1
15
+
specifier: ^2.4.5
16
+
version: 2.4.5
17
17
'@tauri-apps/plugin-http':
18
-
specifier: 2.0.0-rc.1
19
-
version: 2.0.0-rc.1
18
+
specifier: 2.5.4
19
+
version: 2.5.4
20
20
'@tauri-apps/plugin-process':
21
-
specifier: 2.0.0-rc.0
22
-
version: 2.0.0-rc.0
21
+
specifier: 2.3.1
22
+
version: 2.3.1
23
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
24
+
specifier: 2.3.3
25
+
version: 2.3.3
29
26
animejs:
30
-
specifier: ^3.2.2
31
-
version: 3.2.2
27
+
specifier: ^4.2.2
28
+
version: 4.2.2
32
29
solid-js:
33
-
specifier: ^1.9.7
34
-
version: 1.9.7
30
+
specifier: ^1.9.10
31
+
version: 1.9.10
35
32
devDependencies:
36
33
'@tauri-apps/cli':
37
-
specifier: 2.0.0-rc.5
38
-
version: 2.0.0-rc.5
34
+
specifier: 2.9.3
35
+
version: 2.9.3
36
+
'@types/animejs':
37
+
specifier: ^3.1.13
38
+
version: 3.1.13
39
39
typescript:
40
-
specifier: ^5.8.3
41
-
version: 5.8.3
40
+
specifier: ^5.9.3
41
+
version: 5.9.3
42
42
vite:
43
-
specifier: ^5.4.19
44
-
version: 5.4.19
43
+
specifier: ^7.2.2
44
+
version: 7.2.2
45
45
vite-plugin-solid:
46
-
specifier: ^2.11.8
47
-
version: 2.11.8(solid-js@1.9.7)(vite@5.4.19)
46
+
specifier: ^2.11.10
47
+
version: 2.11.10(solid-js@1.9.10)(vite@7.2.2)
48
48
49
49
packages:
50
50
51
-
'@ampproject/remapping@2.3.0':
52
-
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
53
-
engines: {node: '>=6.0.0'}
54
-
55
51
'@babel/code-frame@7.27.1':
56
52
resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
57
53
engines: {node: '>=6.9.0'}
58
54
59
-
'@babel/compat-data@7.28.0':
60
-
resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==}
55
+
'@babel/compat-data@7.28.5':
56
+
resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==}
61
57
engines: {node: '>=6.9.0'}
62
58
63
-
'@babel/core@7.28.0':
64
-
resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==}
59
+
'@babel/core@7.28.5':
60
+
resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==}
65
61
engines: {node: '>=6.9.0'}
66
62
67
-
'@babel/generator@7.28.0':
68
-
resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==}
63
+
'@babel/generator@7.28.5':
64
+
resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==}
69
65
engines: {node: '>=6.9.0'}
70
66
71
67
'@babel/helper-compilation-targets@7.27.2':
···
84
80
resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==}
85
81
engines: {node: '>=6.9.0'}
86
82
87
-
'@babel/helper-module-transforms@7.27.3':
88
-
resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==}
83
+
'@babel/helper-module-transforms@7.28.3':
84
+
resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==}
89
85
engines: {node: '>=6.9.0'}
90
86
peerDependencies:
91
87
'@babel/core': ^7.0.0
···
98
94
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
99
95
engines: {node: '>=6.9.0'}
100
96
101
-
'@babel/helper-validator-identifier@7.27.1':
102
-
resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
97
+
'@babel/helper-validator-identifier@7.28.5':
98
+
resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
103
99
engines: {node: '>=6.9.0'}
104
100
105
101
'@babel/helper-validator-option@7.27.1':
106
102
resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
107
103
engines: {node: '>=6.9.0'}
108
104
109
-
'@babel/helpers@7.28.2':
110
-
resolution: {integrity: sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==}
105
+
'@babel/helpers@7.28.4':
106
+
resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==}
111
107
engines: {node: '>=6.9.0'}
112
108
113
-
'@babel/parser@7.28.0':
114
-
resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==}
109
+
'@babel/parser@7.28.5':
110
+
resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==}
115
111
engines: {node: '>=6.0.0'}
116
112
hasBin: true
117
113
···
125
121
resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
126
122
engines: {node: '>=6.9.0'}
127
123
128
-
'@babel/traverse@7.28.0':
129
-
resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==}
124
+
'@babel/traverse@7.28.5':
125
+
resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==}
130
126
engines: {node: '>=6.9.0'}
131
127
132
-
'@babel/types@7.28.2':
133
-
resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==}
128
+
'@babel/types@7.28.5':
129
+
resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
134
130
engines: {node: '>=6.9.0'}
135
131
136
-
'@esbuild/aix-ppc64@0.21.5':
137
-
resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
138
-
engines: {node: '>=12'}
132
+
'@esbuild/aix-ppc64@0.25.12':
133
+
resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==}
134
+
engines: {node: '>=18'}
139
135
cpu: [ppc64]
140
136
os: [aix]
141
137
142
-
'@esbuild/android-arm64@0.21.5':
143
-
resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
144
-
engines: {node: '>=12'}
138
+
'@esbuild/android-arm64@0.25.12':
139
+
resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==}
140
+
engines: {node: '>=18'}
145
141
cpu: [arm64]
146
142
os: [android]
147
143
148
-
'@esbuild/android-arm@0.21.5':
149
-
resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
150
-
engines: {node: '>=12'}
144
+
'@esbuild/android-arm@0.25.12':
145
+
resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==}
146
+
engines: {node: '>=18'}
151
147
cpu: [arm]
152
148
os: [android]
153
149
154
-
'@esbuild/android-x64@0.21.5':
155
-
resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
156
-
engines: {node: '>=12'}
150
+
'@esbuild/android-x64@0.25.12':
151
+
resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==}
152
+
engines: {node: '>=18'}
157
153
cpu: [x64]
158
154
os: [android]
159
155
160
-
'@esbuild/darwin-arm64@0.21.5':
161
-
resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
162
-
engines: {node: '>=12'}
156
+
'@esbuild/darwin-arm64@0.25.12':
157
+
resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==}
158
+
engines: {node: '>=18'}
163
159
cpu: [arm64]
164
160
os: [darwin]
165
161
166
-
'@esbuild/darwin-x64@0.21.5':
167
-
resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
168
-
engines: {node: '>=12'}
162
+
'@esbuild/darwin-x64@0.25.12':
163
+
resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==}
164
+
engines: {node: '>=18'}
169
165
cpu: [x64]
170
166
os: [darwin]
171
167
172
-
'@esbuild/freebsd-arm64@0.21.5':
173
-
resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
174
-
engines: {node: '>=12'}
168
+
'@esbuild/freebsd-arm64@0.25.12':
169
+
resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==}
170
+
engines: {node: '>=18'}
175
171
cpu: [arm64]
176
172
os: [freebsd]
177
173
178
-
'@esbuild/freebsd-x64@0.21.5':
179
-
resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
180
-
engines: {node: '>=12'}
174
+
'@esbuild/freebsd-x64@0.25.12':
175
+
resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==}
176
+
engines: {node: '>=18'}
181
177
cpu: [x64]
182
178
os: [freebsd]
183
179
184
-
'@esbuild/linux-arm64@0.21.5':
185
-
resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
186
-
engines: {node: '>=12'}
180
+
'@esbuild/linux-arm64@0.25.12':
181
+
resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==}
182
+
engines: {node: '>=18'}
187
183
cpu: [arm64]
188
184
os: [linux]
189
185
190
-
'@esbuild/linux-arm@0.21.5':
191
-
resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
192
-
engines: {node: '>=12'}
186
+
'@esbuild/linux-arm@0.25.12':
187
+
resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==}
188
+
engines: {node: '>=18'}
193
189
cpu: [arm]
194
190
os: [linux]
195
191
196
-
'@esbuild/linux-ia32@0.21.5':
197
-
resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
198
-
engines: {node: '>=12'}
192
+
'@esbuild/linux-ia32@0.25.12':
193
+
resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==}
194
+
engines: {node: '>=18'}
199
195
cpu: [ia32]
200
196
os: [linux]
201
197
202
-
'@esbuild/linux-loong64@0.21.5':
203
-
resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
204
-
engines: {node: '>=12'}
198
+
'@esbuild/linux-loong64@0.25.12':
199
+
resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==}
200
+
engines: {node: '>=18'}
205
201
cpu: [loong64]
206
202
os: [linux]
207
203
208
-
'@esbuild/linux-mips64el@0.21.5':
209
-
resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
210
-
engines: {node: '>=12'}
204
+
'@esbuild/linux-mips64el@0.25.12':
205
+
resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==}
206
+
engines: {node: '>=18'}
211
207
cpu: [mips64el]
212
208
os: [linux]
213
209
214
-
'@esbuild/linux-ppc64@0.21.5':
215
-
resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
216
-
engines: {node: '>=12'}
210
+
'@esbuild/linux-ppc64@0.25.12':
211
+
resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==}
212
+
engines: {node: '>=18'}
217
213
cpu: [ppc64]
218
214
os: [linux]
219
215
220
-
'@esbuild/linux-riscv64@0.21.5':
221
-
resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
222
-
engines: {node: '>=12'}
216
+
'@esbuild/linux-riscv64@0.25.12':
217
+
resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==}
218
+
engines: {node: '>=18'}
223
219
cpu: [riscv64]
224
220
os: [linux]
225
221
226
-
'@esbuild/linux-s390x@0.21.5':
227
-
resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
228
-
engines: {node: '>=12'}
222
+
'@esbuild/linux-s390x@0.25.12':
223
+
resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==}
224
+
engines: {node: '>=18'}
229
225
cpu: [s390x]
230
226
os: [linux]
231
227
232
-
'@esbuild/linux-x64@0.21.5':
233
-
resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
234
-
engines: {node: '>=12'}
228
+
'@esbuild/linux-x64@0.25.12':
229
+
resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==}
230
+
engines: {node: '>=18'}
235
231
cpu: [x64]
236
232
os: [linux]
237
233
238
-
'@esbuild/netbsd-x64@0.21.5':
239
-
resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
240
-
engines: {node: '>=12'}
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'}
241
243
cpu: [x64]
242
244
os: [netbsd]
243
245
244
-
'@esbuild/openbsd-x64@0.21.5':
245
-
resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
246
-
engines: {node: '>=12'}
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'}
247
255
cpu: [x64]
248
256
os: [openbsd]
249
257
250
-
'@esbuild/sunos-x64@0.21.5':
251
-
resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
252
-
engines: {node: '>=12'}
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'}
253
267
cpu: [x64]
254
268
os: [sunos]
255
269
256
-
'@esbuild/win32-arm64@0.21.5':
257
-
resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
258
-
engines: {node: '>=12'}
270
+
'@esbuild/win32-arm64@0.25.12':
271
+
resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==}
272
+
engines: {node: '>=18'}
259
273
cpu: [arm64]
260
274
os: [win32]
261
275
262
-
'@esbuild/win32-ia32@0.21.5':
263
-
resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
264
-
engines: {node: '>=12'}
276
+
'@esbuild/win32-ia32@0.25.12':
277
+
resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==}
278
+
engines: {node: '>=18'}
265
279
cpu: [ia32]
266
280
os: [win32]
267
281
268
-
'@esbuild/win32-x64@0.21.5':
269
-
resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
270
-
engines: {node: '>=12'}
282
+
'@esbuild/win32-x64@0.25.12':
283
+
resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==}
284
+
engines: {node: '>=18'}
271
285
cpu: [x64]
272
286
os: [win32]
273
287
274
-
'@jridgewell/gen-mapping@0.3.12':
275
-
resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==}
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==}
276
293
277
294
'@jridgewell/resolve-uri@3.1.2':
278
295
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
279
296
engines: {node: '>=6.0.0'}
280
297
281
-
'@jridgewell/sourcemap-codec@1.5.4':
282
-
resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==}
298
+
'@jridgewell/sourcemap-codec@1.5.5':
299
+
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
283
300
284
-
'@jridgewell/trace-mapping@0.3.29':
285
-
resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==}
301
+
'@jridgewell/trace-mapping@0.3.31':
302
+
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
286
303
287
-
'@rollup/rollup-android-arm-eabi@4.46.2':
288
-
resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==}
304
+
'@rollup/rollup-android-arm-eabi@4.52.5':
305
+
resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==}
289
306
cpu: [arm]
290
307
os: [android]
291
308
292
-
'@rollup/rollup-android-arm64@4.46.2':
293
-
resolution: {integrity: sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==}
309
+
'@rollup/rollup-android-arm64@4.52.5':
310
+
resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==}
294
311
cpu: [arm64]
295
312
os: [android]
296
313
297
-
'@rollup/rollup-darwin-arm64@4.46.2':
298
-
resolution: {integrity: sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==}
314
+
'@rollup/rollup-darwin-arm64@4.52.5':
315
+
resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==}
299
316
cpu: [arm64]
300
317
os: [darwin]
301
318
302
-
'@rollup/rollup-darwin-x64@4.46.2':
303
-
resolution: {integrity: sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==}
319
+
'@rollup/rollup-darwin-x64@4.52.5':
320
+
resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==}
304
321
cpu: [x64]
305
322
os: [darwin]
306
323
307
-
'@rollup/rollup-freebsd-arm64@4.46.2':
308
-
resolution: {integrity: sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==}
324
+
'@rollup/rollup-freebsd-arm64@4.52.5':
325
+
resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==}
309
326
cpu: [arm64]
310
327
os: [freebsd]
311
328
312
-
'@rollup/rollup-freebsd-x64@4.46.2':
313
-
resolution: {integrity: sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==}
329
+
'@rollup/rollup-freebsd-x64@4.52.5':
330
+
resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==}
314
331
cpu: [x64]
315
332
os: [freebsd]
316
333
317
-
'@rollup/rollup-linux-arm-gnueabihf@4.46.2':
318
-
resolution: {integrity: sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==}
334
+
'@rollup/rollup-linux-arm-gnueabihf@4.52.5':
335
+
resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==}
319
336
cpu: [arm]
320
337
os: [linux]
321
338
322
-
'@rollup/rollup-linux-arm-musleabihf@4.46.2':
323
-
resolution: {integrity: sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==}
339
+
'@rollup/rollup-linux-arm-musleabihf@4.52.5':
340
+
resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==}
324
341
cpu: [arm]
325
342
os: [linux]
326
343
327
-
'@rollup/rollup-linux-arm64-gnu@4.46.2':
328
-
resolution: {integrity: sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==}
344
+
'@rollup/rollup-linux-arm64-gnu@4.52.5':
345
+
resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==}
329
346
cpu: [arm64]
330
347
os: [linux]
331
348
332
-
'@rollup/rollup-linux-arm64-musl@4.46.2':
333
-
resolution: {integrity: sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==}
349
+
'@rollup/rollup-linux-arm64-musl@4.52.5':
350
+
resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==}
334
351
cpu: [arm64]
335
352
os: [linux]
336
353
337
-
'@rollup/rollup-linux-loongarch64-gnu@4.46.2':
338
-
resolution: {integrity: sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==}
354
+
'@rollup/rollup-linux-loong64-gnu@4.52.5':
355
+
resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==}
339
356
cpu: [loong64]
340
357
os: [linux]
341
358
342
-
'@rollup/rollup-linux-ppc64-gnu@4.46.2':
343
-
resolution: {integrity: sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==}
359
+
'@rollup/rollup-linux-ppc64-gnu@4.52.5':
360
+
resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==}
344
361
cpu: [ppc64]
345
362
os: [linux]
346
363
347
-
'@rollup/rollup-linux-riscv64-gnu@4.46.2':
348
-
resolution: {integrity: sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==}
364
+
'@rollup/rollup-linux-riscv64-gnu@4.52.5':
365
+
resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==}
349
366
cpu: [riscv64]
350
367
os: [linux]
351
368
352
-
'@rollup/rollup-linux-riscv64-musl@4.46.2':
353
-
resolution: {integrity: sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==}
369
+
'@rollup/rollup-linux-riscv64-musl@4.52.5':
370
+
resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==}
354
371
cpu: [riscv64]
355
372
os: [linux]
356
373
357
-
'@rollup/rollup-linux-s390x-gnu@4.46.2':
358
-
resolution: {integrity: sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==}
374
+
'@rollup/rollup-linux-s390x-gnu@4.52.5':
375
+
resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==}
359
376
cpu: [s390x]
360
377
os: [linux]
361
378
362
-
'@rollup/rollup-linux-x64-gnu@4.46.2':
363
-
resolution: {integrity: sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==}
379
+
'@rollup/rollup-linux-x64-gnu@4.52.5':
380
+
resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==}
364
381
cpu: [x64]
365
382
os: [linux]
366
383
367
-
'@rollup/rollup-linux-x64-musl@4.46.2':
368
-
resolution: {integrity: sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==}
384
+
'@rollup/rollup-linux-x64-musl@4.52.5':
385
+
resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==}
369
386
cpu: [x64]
370
387
os: [linux]
371
388
372
-
'@rollup/rollup-win32-arm64-msvc@4.46.2':
373
-
resolution: {integrity: sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==}
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==}
374
396
cpu: [arm64]
375
397
os: [win32]
376
398
377
-
'@rollup/rollup-win32-ia32-msvc@4.46.2':
378
-
resolution: {integrity: sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==}
399
+
'@rollup/rollup-win32-ia32-msvc@4.52.5':
400
+
resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==}
379
401
cpu: [ia32]
380
402
os: [win32]
381
403
382
-
'@rollup/rollup-win32-x64-msvc@4.46.2':
383
-
resolution: {integrity: sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==}
404
+
'@rollup/rollup-win32-x64-gnu@4.52.5':
405
+
resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==}
384
406
cpu: [x64]
385
407
os: [win32]
386
408
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'}
409
+
'@rollup/rollup-win32-x64-msvc@4.52.5':
410
+
resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==}
411
+
cpu: [x64]
412
+
os: [win32]
390
413
391
-
'@tauri-apps/api@2.7.0':
392
-
resolution: {integrity: sha512-v7fVE8jqBl8xJFOcBafDzXFc8FnicoH3j8o8DNNs0tHuEBmXUDqrCOAzMRX0UkfpwqZLqvrvK0GNQ45DfnoVDg==}
414
+
'@tauri-apps/api@2.9.0':
415
+
resolution: {integrity: sha512-qD5tMjh7utwBk9/5PrTA/aGr3i5QaJ/Mlt7p8NilQ45WgbifUNPyKWsA63iQ8YfQq6R8ajMapU+/Q8nMcPRLNw==}
393
416
394
-
'@tauri-apps/cli-darwin-arm64@2.0.0-rc.5':
395
-
resolution: {integrity: sha512-EoduJ5SeMfBKCe7I291JBH+lkrf2E0+mQF1rP+Jq4CjWPer11OeEcUSFtHURB3Z3ItzObQ7ALPulMGhMe6E9rg==}
417
+
'@tauri-apps/cli-darwin-arm64@2.9.3':
418
+
resolution: {integrity: sha512-W8FQXZXQmQ0Fmj9UJXNrm2mLdIaLLriKVY7o/FzmizyIKTPIvHjfZALTNybbpTQRbJvKoGHLrW1DNzAWVDWJYg==}
396
419
engines: {node: '>= 10'}
397
420
cpu: [arm64]
398
421
os: [darwin]
399
422
400
-
'@tauri-apps/cli-darwin-x64@2.0.0-rc.5':
401
-
resolution: {integrity: sha512-GdphvNgQWAbVGoD6e2Z5auWFXBcmmbhiwf9UNoKpBQPLfFO6EEJHjXbACr/hAZsqT0nNpZLRoh/5v5HGTmU0XQ==}
423
+
'@tauri-apps/cli-darwin-x64@2.9.3':
424
+
resolution: {integrity: sha512-zDwu40rlshijt3TU6aRvzPUyVpapsx1sNfOlreDMTaMelQLHl6YoQzSRpLHYwrHrhimxyX2uDqnKIiuGel0Lhg==}
402
425
engines: {node: '>= 10'}
403
426
cpu: [x64]
404
427
os: [darwin]
405
428
406
-
'@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.5':
407
-
resolution: {integrity: sha512-S47KwAfyRsO2qTqSoadHP4a1cjO9kfQi4QWkoaDjb0BEETdrhPM94qp43cnKP7QWW+msOToMTdlks9HYlhRUww==}
429
+
'@tauri-apps/cli-linux-arm-gnueabihf@2.9.3':
430
+
resolution: {integrity: sha512-+Oc2OfcTRwYtW93VJqd/HOk77buORwC9IToj/qsEvM7bTMq6Kda4alpZprzwrCHYANSw+zD8PgjJdljTpe4p+g==}
408
431
engines: {node: '>= 10'}
409
432
cpu: [arm]
410
433
os: [linux]
411
434
412
-
'@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.5':
413
-
resolution: {integrity: sha512-Ii9aP/24Rtlci5MaeSaqb6JOLt3cUBA4z4XmGz5VOLLZ+ntRxpfd3xNpLki04V2MOgbAu9BxLAp5UTzELc1/Rg==}
435
+
'@tauri-apps/cli-linux-arm64-gnu@2.9.3':
436
+
resolution: {integrity: sha512-59GqU/J1n9wFyAtleoQOaU0oVIo+kwQynEw4meFDoKRXszKGor6lTsbsS3r0QKLSPbc0o/yYGJhqqCtkYjb/eg==}
414
437
engines: {node: '>= 10'}
415
438
cpu: [arm64]
416
439
os: [linux]
417
440
418
-
'@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.5':
419
-
resolution: {integrity: sha512-noV2sDusI+DsEHl0uMOZ04sQmj65Jo9yjfSg2iv1fnfjBYVbwi6Qj/MaCqyApXESQrpv1XZB3kYI+CkyPnjj2Q==}
441
+
'@tauri-apps/cli-linux-arm64-musl@2.9.3':
442
+
resolution: {integrity: sha512-fzvG+jEn5/iYGNH6Z2IRMheYFC4pJdXa19BR9fFm6Bdn2cuajRLDKdUcEME/DCtwqclphXtFZTrT4oezY5vI/A==}
420
443
engines: {node: '>= 10'}
421
444
cpu: [arm64]
422
445
os: [linux]
423
446
424
-
'@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.5':
425
-
resolution: {integrity: sha512-iTe9gKO+qgFRjU1sxBvbI8bIRbkOedWvFm/yh8RFi1iJcFwbVnsHWQ8z7BwoNMJLnL2dseZgrGntmS5n9/xSSQ==}
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==}
426
455
engines: {node: '>= 10'}
427
456
cpu: [x64]
428
457
os: [linux]
429
458
430
-
'@tauri-apps/cli-linux-x64-musl@2.0.0-rc.5':
431
-
resolution: {integrity: sha512-R7EyfvfdMtRAKC3QxPn5jVGEH56R4g6hSnR5xXkFnEpioND7SNru5UMBGgseGJ22h/hdjFfqS2vc19291gkVsg==}
459
+
'@tauri-apps/cli-linux-x64-musl@2.9.3':
460
+
resolution: {integrity: sha512-v2cBIB/6ji8DL+aiL5QUykU3ZO8OoJGyx50/qv2HQVzkf85KdaYSis3D/oVRemN/pcDz+vyCnnL3XnzFnDl4JQ==}
432
461
engines: {node: '>= 10'}
433
462
cpu: [x64]
434
463
os: [linux]
435
464
436
-
'@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.5':
437
-
resolution: {integrity: sha512-EE7CF//hMWsVZpu9IWXGLDDdMhAiNfHwfLnW4Na1INHKBBb/ynhOd4gKRC3Mi/kgcMfXJAq0nBJFw1mal1q7jg==}
465
+
'@tauri-apps/cli-win32-arm64-msvc@2.9.3':
466
+
resolution: {integrity: sha512-ZGvBy7nvrHPbE0HeKp/ioaiw8bNgAHxWnb7JRZ4/G0A+oFj0SeSFxl9k5uU6FKnM7bHM23Gd1oeaDex9g5Fceg==}
438
467
engines: {node: '>= 10'}
439
468
cpu: [arm64]
440
469
os: [win32]
441
470
442
-
'@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.5':
443
-
resolution: {integrity: sha512-zJosPEw1X1H9nTNsrYVSypRLdMLOiLAY8hlBrgsmw7dmN61lOMLyItWsbiAezYeKIpaFeADurR+5qMHHwzbqeg==}
471
+
'@tauri-apps/cli-win32-ia32-msvc@2.9.3':
472
+
resolution: {integrity: sha512-UsgIwOnpCoY9NK9/65QiwgmWVIE80LE7SwRYVblGtmlY9RYfsYvpbItwsovA/AcHMTiO+OCvS/q9yLeqS3m6Sg==}
444
473
engines: {node: '>= 10'}
445
474
cpu: [ia32]
446
475
os: [win32]
447
476
448
-
'@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.5':
449
-
resolution: {integrity: sha512-PqxbL/e6GraazdwEKN1oX33gYCRf0ns6yuaxHafHM5+Zsv0MZpyPTPLDot/JLKvNBefk6QXZn5fKAIETVtQaGg==}
477
+
'@tauri-apps/cli-win32-x64-msvc@2.9.3':
478
+
resolution: {integrity: sha512-fmw7NrrHE5m49idCvJAx9T9bsupjdJ0a3p3DPCNCZRGANU6R1tA1L+KTlVuUtdAldX2NqU/9UPo2SCslYKgJHQ==}
450
479
engines: {node: '>= 10'}
451
480
cpu: [x64]
452
481
os: [win32]
453
482
454
-
'@tauri-apps/cli@2.0.0-rc.5':
455
-
resolution: {integrity: sha512-JtFfJg8ZNOrj+S+8RKpcrNIcU5hw0X8JSNs2tUjQq0OZgqIGnRSILYjg7BaZDPEakQXUKsDEufbjbYVNJDIp8g==}
483
+
'@tauri-apps/cli@2.9.3':
484
+
resolution: {integrity: sha512-BQ7iLUXTQcyG1PpzLWeVSmBCedYDpnA/6Cm/kRFGtqjTf/eVUlyYO5S2ee07tLum3nWwDBWTGFZeruO8yEukfA==}
456
485
engines: {node: '>= 10'}
457
486
hasBin: true
458
487
459
-
'@tauri-apps/plugin-deep-link@2.4.1':
460
-
resolution: {integrity: sha512-I8Bo+spcAKGhIIJ1qN/gapp/Ot3mosQL98znxr975Zn2ODAkUZ++BQ9FnTpR7PDwfIl5ANSGdIW/YU01zVTcJw==}
488
+
'@tauri-apps/plugin-deep-link@2.4.5':
489
+
resolution: {integrity: sha512-Zf2RTj1D9IQQ45/jqW8XTKvql24HqlPjcpv0mV/O2jHQkNe11HOTZBVj6IK37qs+MWV7xZzcmazx/QVZnhAwaQ==}
461
490
462
-
'@tauri-apps/plugin-http@2.0.0-rc.1':
463
-
resolution: {integrity: sha512-j4WdTEKx0CFa6u8ubke0mo75pCrnu6XtrFtvjsh+zjuNYgMG/l0+A1woWXHm73f2Levskhs+KbKcLQA/nr8k2w==}
491
+
'@tauri-apps/plugin-http@2.5.4':
492
+
resolution: {integrity: sha512-/i4U/9za3mrytTgfRn5RHneKubZE/dwRmshYwyMvNRlkWjvu1m4Ma72kcbVJMZFGXpkbl+qLyWMGrihtWB76Zg==}
464
493
465
-
'@tauri-apps/plugin-process@2.0.0-rc.0':
466
-
resolution: {integrity: sha512-Z12D/kmQzG1vCVf+jLXPhPDUA0pEjFrsg4p0uwO2sotVLM9287IuTM+aIz9cuAYOxFLKcsnDG7amSCL9IfA1gw==}
494
+
'@tauri-apps/plugin-process@2.3.1':
495
+
resolution: {integrity: sha512-nCa4fGVaDL/B9ai03VyPOjfAHRHSBz5v6F/ObsB73r/dA3MHHhZtldaDMIc0V/pnUw9ehzr2iEG+XkSEyC0JJA==}
467
496
468
-
'@tauri-apps/plugin-shell@2.0.0-rc.0':
469
-
resolution: {integrity: sha512-bhUcQcrqZoK8H1DFXapr5r1Z75oh6Kd5Tltz97XpZFLREEqp+KhN2Fvyh8r/fKAyenYsTYUIsDsyGdjdueuF9g==}
497
+
'@tauri-apps/plugin-shell@2.3.3':
498
+
resolution: {integrity: sha512-Xod+pRcFxmOWFWEnqH5yZcA7qwAMuaaDkMR1Sply+F8VfBj++CGnj2xf5UoialmjZ2Cvd8qrvSCbU+7GgNVsKQ==}
470
499
471
500
'@types/animejs@3.1.13':
472
501
resolution: {integrity: sha512-yWg9l1z7CAv/TKpty4/vupEh24jDGUZXv4r26StRkpUPQm04ztJaftgpto8vwdFs8SiTq6XfaPKCSI+wjzNMvQ==}
···
480
509
'@types/babel__template@7.4.4':
481
510
resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
482
511
483
-
'@types/babel__traverse@7.20.7':
484
-
resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==}
512
+
'@types/babel__traverse@7.28.0':
513
+
resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==}
485
514
486
515
'@types/estree@1.0.8':
487
516
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
488
517
489
-
animejs@3.2.2:
490
-
resolution: {integrity: sha512-Ao95qWLpDPXXM+WrmwcKbl6uNlC5tjnowlaRYtuVDHHoygjtIPfDUoK9NthrlZsQSKjZXlmji2TrBUAVbiH0LQ==}
518
+
animejs@4.2.2:
519
+
resolution: {integrity: sha512-Ys3RuvLdAeI14fsdKCQy7ytu4057QX6Bb7m4jwmfd6iKmUmLquTwk1ut0e4NtRQgCeq/s2Lv5+oMBjz6c7ZuIg==}
491
520
492
-
babel-plugin-jsx-dom-expressions@0.39.8:
493
-
resolution: {integrity: sha512-/MVOIIjonylDXnrWmG23ZX82m9mtKATsVHB7zYlPfDR9Vdd/NBE48if+wv27bSkBtyO7EPMUlcUc4J63QwuACQ==}
521
+
babel-plugin-jsx-dom-expressions@0.40.3:
522
+
resolution: {integrity: sha512-5HOwwt0BYiv/zxl7j8Pf2bGL6rDXfV6nUhLs8ygBX+EFJXzBPHM/euj9j/6deMZ6wa52Wb2PBaAV5U/jKwIY1w==}
494
523
peerDependencies:
495
524
'@babel/core': ^7.20.12
496
525
497
-
babel-preset-solid@1.9.6:
498
-
resolution: {integrity: sha512-HXTK9f93QxoH8dYn1M2mJdOlWgMsR88Lg/ul6QCZGkNTktjTE5HAf93YxQumHoCudLEtZrU1cFCMFOVho6GqFg==}
526
+
babel-preset-solid@1.9.10:
527
+
resolution: {integrity: sha512-HCelrgua/Y+kqO8RyL04JBWS/cVdrtUv/h45GntgQY+cJl4eBcKkCDV3TdMjtKx1nXwRaR9QXslM/Npm1dxdZQ==}
499
528
peerDependencies:
500
529
'@babel/core': ^7.0.0
530
+
solid-js: ^1.9.10
531
+
peerDependenciesMeta:
532
+
solid-js:
533
+
optional: true
501
534
502
-
browserslist@4.25.1:
503
-
resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==}
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==}
504
541
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
505
542
hasBin: true
506
543
507
-
caniuse-lite@1.0.30001731:
508
-
resolution: {integrity: sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==}
544
+
caniuse-lite@1.0.30001754:
545
+
resolution: {integrity: sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==}
509
546
510
547
convert-source-map@2.0.0:
511
548
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
···
513
550
csstype@3.1.3:
514
551
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
515
552
516
-
debug@4.4.1:
517
-
resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
553
+
debug@4.4.3:
554
+
resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
518
555
engines: {node: '>=6.0'}
519
556
peerDependencies:
520
557
supports-color: '*'
···
522
559
supports-color:
523
560
optional: true
524
561
525
-
electron-to-chromium@1.5.193:
526
-
resolution: {integrity: sha512-eePuBZXM9OVCwfYUhd2OzESeNGnWmLyeu0XAEjf7xjijNjHFdeJSzuRUGN4ueT2tEYo5YqjHramKEFxz67p3XA==}
562
+
electron-to-chromium@1.5.248:
563
+
resolution: {integrity: sha512-zsur2yunphlyAO4gIubdJEXCK6KOVvtpiuDfCIqbM9FjcnMYiyn0ICa3hWfPr0nc41zcLWobgy1iL7VvoOyA2Q==}
527
564
528
565
entities@6.0.1:
529
566
resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
530
567
engines: {node: '>=0.12'}
531
568
532
-
esbuild@0.21.5:
533
-
resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
534
-
engines: {node: '>=12'}
569
+
esbuild@0.25.12:
570
+
resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
571
+
engines: {node: '>=18'}
535
572
hasBin: true
536
573
537
574
escalade@3.2.0:
538
575
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
539
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
540
586
541
587
fsevents@2.3.3:
542
588
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
···
582
628
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
583
629
hasBin: true
584
630
585
-
node-releases@2.0.19:
586
-
resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
631
+
node-releases@2.0.27:
632
+
resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
587
633
588
634
parse5@7.3.0:
589
635
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
···
591
637
picocolors@1.1.1:
592
638
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
593
639
640
+
picomatch@4.0.3:
641
+
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
642
+
engines: {node: '>=12'}
643
+
594
644
postcss@8.5.6:
595
645
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
596
646
engines: {node: ^10 || ^12 || >=14}
597
647
598
-
rollup@4.46.2:
599
-
resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==}
648
+
rollup@4.52.5:
649
+
resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==}
600
650
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
601
651
hasBin: true
602
652
···
604
654
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
605
655
hasBin: true
606
656
607
-
seroval-plugins@1.3.2:
608
-
resolution: {integrity: sha512-0QvCV2lM3aj/U3YozDiVwx9zpH0q8A60CTWIv4Jszj/givcudPb48B+rkU5D51NJ0pTpweGMttHjboPa9/zoIQ==}
657
+
seroval-plugins@1.3.3:
658
+
resolution: {integrity: sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w==}
609
659
engines: {node: '>=10'}
610
660
peerDependencies:
611
661
seroval: ^1.0
···
614
664
resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==}
615
665
engines: {node: '>=10'}
616
666
617
-
solid-js@1.9.7:
618
-
resolution: {integrity: sha512-/saTKi8iWEM233n5OSi1YHCCuh66ZIQ7aK2hsToPe4tqGm7qAejU1SwNuTPivbWAYq7SjuHVVYxxuZQNRbICiw==}
667
+
solid-js@1.9.10:
668
+
resolution: {integrity: sha512-Coz956cos/EPDlhs6+jsdTxKuJDPT7B5SVIWgABwROyxjY7Xbr8wkzD68Et+NxnV7DLJ3nJdAC2r9InuV/4Jew==}
619
669
620
670
solid-refresh@0.6.3:
621
671
resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==}
···
626
676
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
627
677
engines: {node: '>=0.10.0'}
628
678
629
-
typescript@5.8.3:
630
-
resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==}
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==}
631
685
engines: {node: '>=14.17'}
632
686
hasBin: true
633
687
634
-
update-browserslist-db@1.1.3:
635
-
resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==}
688
+
update-browserslist-db@1.1.4:
689
+
resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==}
636
690
hasBin: true
637
691
peerDependencies:
638
692
browserslist: '>= 4.21.0'
639
693
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==}
694
+
vite-plugin-solid@2.11.10:
695
+
resolution: {integrity: sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw==}
645
696
peerDependencies:
646
697
'@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.*
647
698
solid-js: ^1.7.2
···
650
701
'@testing-library/jest-dom':
651
702
optional: true
652
703
653
-
vite@5.4.19:
654
-
resolution: {integrity: sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==}
655
-
engines: {node: ^18.0.0 || >=20.0.0}
704
+
vite@7.2.2:
705
+
resolution: {integrity: sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==}
706
+
engines: {node: ^20.19.0 || >=22.12.0}
656
707
hasBin: true
657
708
peerDependencies:
658
-
'@types/node': ^18.0.0 || >=20.0.0
659
-
less: '*'
709
+
'@types/node': ^20.19.0 || >=22.12.0
710
+
jiti: '>=1.21.0'
711
+
less: ^4.0.0
660
712
lightningcss: ^1.21.0
661
-
sass: '*'
662
-
sass-embedded: '*'
663
-
stylus: '*'
664
-
sugarss: '*'
665
-
terser: ^5.4.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
666
720
peerDependenciesMeta:
667
721
'@types/node':
722
+
optional: true
723
+
jiti:
668
724
optional: true
669
725
less:
670
726
optional: true
···
679
735
sugarss:
680
736
optional: true
681
737
terser:
738
+
optional: true
739
+
tsx:
740
+
optional: true
741
+
yaml:
682
742
optional: true
683
743
684
744
vitefu@1.1.1:
···
694
754
695
755
snapshots:
696
756
697
-
'@ampproject/remapping@2.3.0':
698
-
dependencies:
699
-
'@jridgewell/gen-mapping': 0.3.12
700
-
'@jridgewell/trace-mapping': 0.3.29
701
-
702
757
'@babel/code-frame@7.27.1':
703
758
dependencies:
704
-
'@babel/helper-validator-identifier': 7.27.1
759
+
'@babel/helper-validator-identifier': 7.28.5
705
760
js-tokens: 4.0.0
706
761
picocolors: 1.1.1
707
762
708
-
'@babel/compat-data@7.28.0': {}
763
+
'@babel/compat-data@7.28.5': {}
709
764
710
-
'@babel/core@7.28.0':
765
+
'@babel/core@7.28.5':
711
766
dependencies:
712
-
'@ampproject/remapping': 2.3.0
713
767
'@babel/code-frame': 7.27.1
714
-
'@babel/generator': 7.28.0
768
+
'@babel/generator': 7.28.5
715
769
'@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
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
719
773
'@babel/template': 7.27.2
720
-
'@babel/traverse': 7.28.0
721
-
'@babel/types': 7.28.2
774
+
'@babel/traverse': 7.28.5
775
+
'@babel/types': 7.28.5
776
+
'@jridgewell/remapping': 2.3.5
722
777
convert-source-map: 2.0.0
723
-
debug: 4.4.1
778
+
debug: 4.4.3
724
779
gensync: 1.0.0-beta.2
725
780
json5: 2.2.3
726
781
semver: 6.3.1
727
782
transitivePeerDependencies:
728
783
- supports-color
729
784
730
-
'@babel/generator@7.28.0':
785
+
'@babel/generator@7.28.5':
731
786
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
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
736
791
jsesc: 3.1.0
737
792
738
793
'@babel/helper-compilation-targets@7.27.2':
739
794
dependencies:
740
-
'@babel/compat-data': 7.28.0
795
+
'@babel/compat-data': 7.28.5
741
796
'@babel/helper-validator-option': 7.27.1
742
-
browserslist: 4.25.1
797
+
browserslist: 4.27.0
743
798
lru-cache: 5.1.1
744
799
semver: 6.3.1
745
800
···
747
802
748
803
'@babel/helper-module-imports@7.18.6':
749
804
dependencies:
750
-
'@babel/types': 7.28.2
805
+
'@babel/types': 7.28.5
751
806
752
807
'@babel/helper-module-imports@7.27.1':
753
808
dependencies:
754
-
'@babel/traverse': 7.28.0
755
-
'@babel/types': 7.28.2
809
+
'@babel/traverse': 7.28.5
810
+
'@babel/types': 7.28.5
756
811
transitivePeerDependencies:
757
812
- supports-color
758
813
759
-
'@babel/helper-module-transforms@7.27.3(@babel/core@7.28.0)':
814
+
'@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)':
760
815
dependencies:
761
-
'@babel/core': 7.28.0
816
+
'@babel/core': 7.28.5
762
817
'@babel/helper-module-imports': 7.27.1
763
-
'@babel/helper-validator-identifier': 7.27.1
764
-
'@babel/traverse': 7.28.0
818
+
'@babel/helper-validator-identifier': 7.28.5
819
+
'@babel/traverse': 7.28.5
765
820
transitivePeerDependencies:
766
821
- supports-color
767
822
···
769
824
770
825
'@babel/helper-string-parser@7.27.1': {}
771
826
772
-
'@babel/helper-validator-identifier@7.27.1': {}
827
+
'@babel/helper-validator-identifier@7.28.5': {}
773
828
774
829
'@babel/helper-validator-option@7.27.1': {}
775
830
776
-
'@babel/helpers@7.28.2':
831
+
'@babel/helpers@7.28.4':
777
832
dependencies:
778
833
'@babel/template': 7.27.2
779
-
'@babel/types': 7.28.2
834
+
'@babel/types': 7.28.5
780
835
781
-
'@babel/parser@7.28.0':
836
+
'@babel/parser@7.28.5':
782
837
dependencies:
783
-
'@babel/types': 7.28.2
838
+
'@babel/types': 7.28.5
784
839
785
-
'@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.0)':
840
+
'@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)':
786
841
dependencies:
787
-
'@babel/core': 7.28.0
842
+
'@babel/core': 7.28.5
788
843
'@babel/helper-plugin-utils': 7.27.1
789
844
790
845
'@babel/template@7.27.2':
791
846
dependencies:
792
847
'@babel/code-frame': 7.27.1
793
-
'@babel/parser': 7.28.0
794
-
'@babel/types': 7.28.2
848
+
'@babel/parser': 7.28.5
849
+
'@babel/types': 7.28.5
795
850
796
-
'@babel/traverse@7.28.0':
851
+
'@babel/traverse@7.28.5':
797
852
dependencies:
798
853
'@babel/code-frame': 7.27.1
799
-
'@babel/generator': 7.28.0
854
+
'@babel/generator': 7.28.5
800
855
'@babel/helper-globals': 7.28.0
801
-
'@babel/parser': 7.28.0
856
+
'@babel/parser': 7.28.5
802
857
'@babel/template': 7.27.2
803
-
'@babel/types': 7.28.2
804
-
debug: 4.4.1
858
+
'@babel/types': 7.28.5
859
+
debug: 4.4.3
805
860
transitivePeerDependencies:
806
861
- supports-color
807
862
808
-
'@babel/types@7.28.2':
863
+
'@babel/types@7.28.5':
809
864
dependencies:
810
865
'@babel/helper-string-parser': 7.27.1
811
-
'@babel/helper-validator-identifier': 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
812
876
813
-
'@esbuild/aix-ppc64@0.21.5':
877
+
'@esbuild/android-x64@0.25.12':
814
878
optional: true
815
879
816
-
'@esbuild/android-arm64@0.21.5':
880
+
'@esbuild/darwin-arm64@0.25.12':
817
881
optional: true
818
882
819
-
'@esbuild/android-arm@0.21.5':
883
+
'@esbuild/darwin-x64@0.25.12':
820
884
optional: true
821
885
822
-
'@esbuild/android-x64@0.21.5':
886
+
'@esbuild/freebsd-arm64@0.25.12':
823
887
optional: true
824
888
825
-
'@esbuild/darwin-arm64@0.21.5':
889
+
'@esbuild/freebsd-x64@0.25.12':
826
890
optional: true
827
891
828
-
'@esbuild/darwin-x64@0.21.5':
892
+
'@esbuild/linux-arm64@0.25.12':
829
893
optional: true
830
894
831
-
'@esbuild/freebsd-arm64@0.21.5':
895
+
'@esbuild/linux-arm@0.25.12':
832
896
optional: true
833
897
834
-
'@esbuild/freebsd-x64@0.21.5':
898
+
'@esbuild/linux-ia32@0.25.12':
835
899
optional: true
836
900
837
-
'@esbuild/linux-arm64@0.21.5':
901
+
'@esbuild/linux-loong64@0.25.12':
838
902
optional: true
839
903
840
-
'@esbuild/linux-arm@0.21.5':
904
+
'@esbuild/linux-mips64el@0.25.12':
841
905
optional: true
842
906
843
-
'@esbuild/linux-ia32@0.21.5':
907
+
'@esbuild/linux-ppc64@0.25.12':
844
908
optional: true
845
909
846
-
'@esbuild/linux-loong64@0.21.5':
910
+
'@esbuild/linux-riscv64@0.25.12':
847
911
optional: true
848
912
849
-
'@esbuild/linux-mips64el@0.21.5':
913
+
'@esbuild/linux-s390x@0.25.12':
850
914
optional: true
851
915
852
-
'@esbuild/linux-ppc64@0.21.5':
916
+
'@esbuild/linux-x64@0.25.12':
853
917
optional: true
854
918
855
-
'@esbuild/linux-riscv64@0.21.5':
919
+
'@esbuild/netbsd-arm64@0.25.12':
856
920
optional: true
857
921
858
-
'@esbuild/linux-s390x@0.21.5':
922
+
'@esbuild/netbsd-x64@0.25.12':
859
923
optional: true
860
924
861
-
'@esbuild/linux-x64@0.21.5':
925
+
'@esbuild/openbsd-arm64@0.25.12':
862
926
optional: true
863
927
864
-
'@esbuild/netbsd-x64@0.21.5':
928
+
'@esbuild/openbsd-x64@0.25.12':
865
929
optional: true
866
930
867
-
'@esbuild/openbsd-x64@0.21.5':
931
+
'@esbuild/openharmony-arm64@0.25.12':
868
932
optional: true
869
933
870
-
'@esbuild/sunos-x64@0.21.5':
934
+
'@esbuild/sunos-x64@0.25.12':
871
935
optional: true
872
936
873
-
'@esbuild/win32-arm64@0.21.5':
937
+
'@esbuild/win32-arm64@0.25.12':
874
938
optional: true
875
939
876
-
'@esbuild/win32-ia32@0.21.5':
940
+
'@esbuild/win32-ia32@0.25.12':
877
941
optional: true
878
942
879
-
'@esbuild/win32-x64@0.21.5':
943
+
'@esbuild/win32-x64@0.25.12':
880
944
optional: true
881
945
882
-
'@jridgewell/gen-mapping@0.3.12':
946
+
'@jridgewell/gen-mapping@0.3.13':
883
947
dependencies:
884
-
'@jridgewell/sourcemap-codec': 1.5.4
885
-
'@jridgewell/trace-mapping': 0.3.29
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
886
955
887
956
'@jridgewell/resolve-uri@3.1.2': {}
888
957
889
-
'@jridgewell/sourcemap-codec@1.5.4': {}
958
+
'@jridgewell/sourcemap-codec@1.5.5': {}
890
959
891
-
'@jridgewell/trace-mapping@0.3.29':
960
+
'@jridgewell/trace-mapping@0.3.31':
892
961
dependencies:
893
962
'@jridgewell/resolve-uri': 3.1.2
894
-
'@jridgewell/sourcemap-codec': 1.5.4
963
+
'@jridgewell/sourcemap-codec': 1.5.5
895
964
896
-
'@rollup/rollup-android-arm-eabi@4.46.2':
965
+
'@rollup/rollup-android-arm-eabi@4.52.5':
897
966
optional: true
898
967
899
-
'@rollup/rollup-android-arm64@4.46.2':
968
+
'@rollup/rollup-android-arm64@4.52.5':
900
969
optional: true
901
970
902
-
'@rollup/rollup-darwin-arm64@4.46.2':
971
+
'@rollup/rollup-darwin-arm64@4.52.5':
903
972
optional: true
904
973
905
-
'@rollup/rollup-darwin-x64@4.46.2':
974
+
'@rollup/rollup-darwin-x64@4.52.5':
906
975
optional: true
907
976
908
-
'@rollup/rollup-freebsd-arm64@4.46.2':
977
+
'@rollup/rollup-freebsd-arm64@4.52.5':
909
978
optional: true
910
979
911
-
'@rollup/rollup-freebsd-x64@4.46.2':
980
+
'@rollup/rollup-freebsd-x64@4.52.5':
912
981
optional: true
913
982
914
-
'@rollup/rollup-linux-arm-gnueabihf@4.46.2':
983
+
'@rollup/rollup-linux-arm-gnueabihf@4.52.5':
915
984
optional: true
916
985
917
-
'@rollup/rollup-linux-arm-musleabihf@4.46.2':
986
+
'@rollup/rollup-linux-arm-musleabihf@4.52.5':
918
987
optional: true
919
988
920
-
'@rollup/rollup-linux-arm64-gnu@4.46.2':
989
+
'@rollup/rollup-linux-arm64-gnu@4.52.5':
921
990
optional: true
922
991
923
-
'@rollup/rollup-linux-arm64-musl@4.46.2':
992
+
'@rollup/rollup-linux-arm64-musl@4.52.5':
924
993
optional: true
925
994
926
-
'@rollup/rollup-linux-loongarch64-gnu@4.46.2':
995
+
'@rollup/rollup-linux-loong64-gnu@4.52.5':
927
996
optional: true
928
997
929
-
'@rollup/rollup-linux-ppc64-gnu@4.46.2':
998
+
'@rollup/rollup-linux-ppc64-gnu@4.52.5':
930
999
optional: true
931
1000
932
-
'@rollup/rollup-linux-riscv64-gnu@4.46.2':
1001
+
'@rollup/rollup-linux-riscv64-gnu@4.52.5':
933
1002
optional: true
934
1003
935
-
'@rollup/rollup-linux-riscv64-musl@4.46.2':
1004
+
'@rollup/rollup-linux-riscv64-musl@4.52.5':
936
1005
optional: true
937
1006
938
-
'@rollup/rollup-linux-s390x-gnu@4.46.2':
1007
+
'@rollup/rollup-linux-s390x-gnu@4.52.5':
939
1008
optional: true
940
1009
941
-
'@rollup/rollup-linux-x64-gnu@4.46.2':
1010
+
'@rollup/rollup-linux-x64-gnu@4.52.5':
942
1011
optional: true
943
1012
944
-
'@rollup/rollup-linux-x64-musl@4.46.2':
1013
+
'@rollup/rollup-linux-x64-musl@4.52.5':
945
1014
optional: true
946
1015
947
-
'@rollup/rollup-win32-arm64-msvc@4.46.2':
1016
+
'@rollup/rollup-openharmony-arm64@4.52.5':
948
1017
optional: true
949
1018
950
-
'@rollup/rollup-win32-ia32-msvc@4.46.2':
1019
+
'@rollup/rollup-win32-arm64-msvc@4.52.5':
951
1020
optional: true
952
1021
953
-
'@rollup/rollup-win32-x64-msvc@4.46.2':
1022
+
'@rollup/rollup-win32-ia32-msvc@4.52.5':
954
1023
optional: true
955
1024
956
-
'@tauri-apps/api@2.0.0-rc.0': {}
1025
+
'@rollup/rollup-win32-x64-gnu@4.52.5':
1026
+
optional: true
957
1027
958
-
'@tauri-apps/api@2.7.0': {}
1028
+
'@rollup/rollup-win32-x64-msvc@4.52.5':
1029
+
optional: true
959
1030
960
-
'@tauri-apps/cli-darwin-arm64@2.0.0-rc.5':
1031
+
'@tauri-apps/api@2.9.0': {}
1032
+
1033
+
'@tauri-apps/cli-darwin-arm64@2.9.3':
961
1034
optional: true
962
1035
963
-
'@tauri-apps/cli-darwin-x64@2.0.0-rc.5':
1036
+
'@tauri-apps/cli-darwin-x64@2.9.3':
964
1037
optional: true
965
1038
966
-
'@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.5':
1039
+
'@tauri-apps/cli-linux-arm-gnueabihf@2.9.3':
967
1040
optional: true
968
1041
969
-
'@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.5':
1042
+
'@tauri-apps/cli-linux-arm64-gnu@2.9.3':
970
1043
optional: true
971
1044
972
-
'@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.5':
1045
+
'@tauri-apps/cli-linux-arm64-musl@2.9.3':
973
1046
optional: true
974
1047
975
-
'@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.5':
1048
+
'@tauri-apps/cli-linux-riscv64-gnu@2.9.3':
976
1049
optional: true
977
1050
978
-
'@tauri-apps/cli-linux-x64-musl@2.0.0-rc.5':
1051
+
'@tauri-apps/cli-linux-x64-gnu@2.9.3':
1052
+
optional: true
1053
+
1054
+
'@tauri-apps/cli-linux-x64-musl@2.9.3':
979
1055
optional: true
980
1056
981
-
'@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.5':
1057
+
'@tauri-apps/cli-win32-arm64-msvc@2.9.3':
982
1058
optional: true
983
1059
984
-
'@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.5':
1060
+
'@tauri-apps/cli-win32-ia32-msvc@2.9.3':
985
1061
optional: true
986
1062
987
-
'@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.5':
1063
+
'@tauri-apps/cli-win32-x64-msvc@2.9.3':
988
1064
optional: true
989
1065
990
-
'@tauri-apps/cli@2.0.0-rc.5':
1066
+
'@tauri-apps/cli@2.9.3':
991
1067
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
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
1002
1079
1003
-
'@tauri-apps/plugin-deep-link@2.4.1':
1080
+
'@tauri-apps/plugin-deep-link@2.4.5':
1004
1081
dependencies:
1005
-
'@tauri-apps/api': 2.7.0
1082
+
'@tauri-apps/api': 2.9.0
1006
1083
1007
-
'@tauri-apps/plugin-http@2.0.0-rc.1':
1084
+
'@tauri-apps/plugin-http@2.5.4':
1008
1085
dependencies:
1009
-
'@tauri-apps/api': 2.7.0
1086
+
'@tauri-apps/api': 2.9.0
1010
1087
1011
-
'@tauri-apps/plugin-process@2.0.0-rc.0':
1088
+
'@tauri-apps/plugin-process@2.3.1':
1012
1089
dependencies:
1013
-
'@tauri-apps/api': 2.0.0-rc.0
1090
+
'@tauri-apps/api': 2.9.0
1014
1091
1015
-
'@tauri-apps/plugin-shell@2.0.0-rc.0':
1092
+
'@tauri-apps/plugin-shell@2.3.3':
1016
1093
dependencies:
1017
-
'@tauri-apps/api': 2.0.0-rc.0
1094
+
'@tauri-apps/api': 2.9.0
1018
1095
1019
1096
'@types/animejs@3.1.13': {}
1020
1097
1021
1098
'@types/babel__core@7.20.5':
1022
1099
dependencies:
1023
-
'@babel/parser': 7.28.0
1024
-
'@babel/types': 7.28.2
1100
+
'@babel/parser': 7.28.5
1101
+
'@babel/types': 7.28.5
1025
1102
'@types/babel__generator': 7.27.0
1026
1103
'@types/babel__template': 7.4.4
1027
-
'@types/babel__traverse': 7.20.7
1104
+
'@types/babel__traverse': 7.28.0
1028
1105
1029
1106
'@types/babel__generator@7.27.0':
1030
1107
dependencies:
1031
-
'@babel/types': 7.28.2
1108
+
'@babel/types': 7.28.5
1032
1109
1033
1110
'@types/babel__template@7.4.4':
1034
1111
dependencies:
1035
-
'@babel/parser': 7.28.0
1036
-
'@babel/types': 7.28.2
1112
+
'@babel/parser': 7.28.5
1113
+
'@babel/types': 7.28.5
1037
1114
1038
-
'@types/babel__traverse@7.20.7':
1115
+
'@types/babel__traverse@7.28.0':
1039
1116
dependencies:
1040
-
'@babel/types': 7.28.2
1117
+
'@babel/types': 7.28.5
1041
1118
1042
1119
'@types/estree@1.0.8': {}
1043
1120
1044
-
animejs@3.2.2: {}
1121
+
animejs@4.2.2: {}
1045
1122
1046
-
babel-plugin-jsx-dom-expressions@0.39.8(@babel/core@7.28.0):
1123
+
babel-plugin-jsx-dom-expressions@0.40.3(@babel/core@7.28.5):
1047
1124
dependencies:
1048
-
'@babel/core': 7.28.0
1125
+
'@babel/core': 7.28.5
1049
1126
'@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
1127
+
'@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5)
1128
+
'@babel/types': 7.28.5
1052
1129
html-entities: 2.3.3
1053
1130
parse5: 7.3.0
1054
-
validate-html-nesting: 1.2.3
1055
1131
1056
-
babel-preset-solid@1.9.6(@babel/core@7.28.0):
1132
+
babel-preset-solid@1.9.10(@babel/core@7.28.5)(solid-js@1.9.10):
1057
1133
dependencies:
1058
-
'@babel/core': 7.28.0
1059
-
babel-plugin-jsx-dom-expressions: 0.39.8(@babel/core@7.28.0)
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
1060
1138
1061
-
browserslist@4.25.1:
1139
+
baseline-browser-mapping@2.8.25: {}
1140
+
1141
+
browserslist@4.27.0:
1062
1142
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)
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)
1067
1148
1068
-
caniuse-lite@1.0.30001731: {}
1149
+
caniuse-lite@1.0.30001754: {}
1069
1150
1070
1151
convert-source-map@2.0.0: {}
1071
1152
1072
1153
csstype@3.1.3: {}
1073
1154
1074
-
debug@4.4.1:
1155
+
debug@4.4.3:
1075
1156
dependencies:
1076
1157
ms: 2.1.3
1077
1158
1078
-
electron-to-chromium@1.5.193: {}
1159
+
electron-to-chromium@1.5.248: {}
1079
1160
1080
1161
entities@6.0.1: {}
1081
1162
1082
-
esbuild@0.21.5:
1163
+
esbuild@0.25.12:
1083
1164
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
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
1107
1191
1108
1192
escalade@3.2.0: {}
1109
1193
1194
+
fdir@6.5.0(picomatch@4.0.3):
1195
+
optionalDependencies:
1196
+
picomatch: 4.0.3
1197
+
1110
1198
fsevents@2.3.3:
1111
1199
optional: true
1112
1200
···
1134
1222
1135
1223
nanoid@3.3.11: {}
1136
1224
1137
-
node-releases@2.0.19: {}
1225
+
node-releases@2.0.27: {}
1138
1226
1139
1227
parse5@7.3.0:
1140
1228
dependencies:
···
1142
1230
1143
1231
picocolors@1.1.1: {}
1144
1232
1233
+
picomatch@4.0.3: {}
1234
+
1145
1235
postcss@8.5.6:
1146
1236
dependencies:
1147
1237
nanoid: 3.3.11
1148
1238
picocolors: 1.1.1
1149
1239
source-map-js: 1.2.1
1150
1240
1151
-
rollup@4.46.2:
1241
+
rollup@4.52.5:
1152
1242
dependencies:
1153
1243
'@types/estree': 1.0.8
1154
1244
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
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
1175
1267
fsevents: 2.3.3
1176
1268
1177
1269
semver@6.3.1: {}
1178
1270
1179
-
seroval-plugins@1.3.2(seroval@1.3.2):
1271
+
seroval-plugins@1.3.3(seroval@1.3.2):
1180
1272
dependencies:
1181
1273
seroval: 1.3.2
1182
1274
1183
1275
seroval@1.3.2: {}
1184
1276
1185
-
solid-js@1.9.7:
1277
+
solid-js@1.9.10:
1186
1278
dependencies:
1187
1279
csstype: 3.1.3
1188
1280
seroval: 1.3.2
1189
-
seroval-plugins: 1.3.2(seroval@1.3.2)
1281
+
seroval-plugins: 1.3.3(seroval@1.3.2)
1190
1282
1191
-
solid-refresh@0.6.3(solid-js@1.9.7):
1283
+
solid-refresh@0.6.3(solid-js@1.9.10):
1192
1284
dependencies:
1193
-
'@babel/generator': 7.28.0
1285
+
'@babel/generator': 7.28.5
1194
1286
'@babel/helper-module-imports': 7.27.1
1195
-
'@babel/types': 7.28.2
1196
-
solid-js: 1.9.7
1287
+
'@babel/types': 7.28.5
1288
+
solid-js: 1.9.10
1197
1289
transitivePeerDependencies:
1198
1290
- supports-color
1199
1291
1200
1292
source-map-js@1.2.1: {}
1201
1293
1202
-
typescript@5.8.3: {}
1294
+
tinyglobby@0.2.15:
1295
+
dependencies:
1296
+
fdir: 6.5.0(picomatch@4.0.3)
1297
+
picomatch: 4.0.3
1203
1298
1204
-
update-browserslist-db@1.1.3(browserslist@4.25.1):
1299
+
typescript@5.9.3: {}
1300
+
1301
+
update-browserslist-db@1.1.4(browserslist@4.27.0):
1205
1302
dependencies:
1206
-
browserslist: 4.25.1
1303
+
browserslist: 4.27.0
1207
1304
escalade: 3.2.0
1208
1305
picocolors: 1.1.1
1209
1306
1210
-
validate-html-nesting@1.2.3: {}
1211
-
1212
-
vite-plugin-solid@2.11.8(solid-js@1.9.7)(vite@5.4.19):
1307
+
vite-plugin-solid@2.11.10(solid-js@1.9.10)(vite@7.2.2):
1213
1308
dependencies:
1214
-
'@babel/core': 7.28.0
1309
+
'@babel/core': 7.28.5
1215
1310
'@types/babel__core': 7.20.5
1216
-
babel-preset-solid: 1.9.6(@babel/core@7.28.0)
1311
+
babel-preset-solid: 1.9.10(@babel/core@7.28.5)(solid-js@1.9.10)
1217
1312
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)
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)
1222
1317
transitivePeerDependencies:
1223
1318
- supports-color
1224
1319
1225
-
vite@5.4.19:
1320
+
vite@7.2.2:
1226
1321
dependencies:
1227
-
esbuild: 0.21.5
1322
+
esbuild: 0.25.12
1323
+
fdir: 6.5.0(picomatch@4.0.3)
1324
+
picomatch: 4.0.3
1228
1325
postcss: 8.5.6
1229
-
rollup: 4.46.2
1326
+
rollup: 4.52.5
1327
+
tinyglobby: 0.2.15
1230
1328
optionalDependencies:
1231
1329
fsevents: 2.3.3
1232
1330
1233
-
vitefu@1.1.1(vite@5.4.19):
1331
+
vitefu@1.1.1(vite@7.2.2):
1234
1332
optionalDependencies:
1235
-
vite: 5.4.19
1333
+
vite: 7.2.2
1236
1334
1237
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
-6
src/Components/App.tsx
+26
-6
src/Components/App.tsx
···
1
-
import { onMount } from "solid-js";
2
-
import anime from "animejs";
1
+
import { createSignal, onMount } from "solid-js";
3
2
4
-
import NavBar from "./NavBar";
5
3
import PhotoList from "./PhotoList";
6
4
import PhotoViewer from "./PhotoViewer";
7
5
import SettingsMenu from "./SettingsMenu";
6
+
import { animate, utils } from "animejs";
7
+
import { listen } from "@tauri-apps/api/event";
8
8
9
9
let App = () => {
10
+
let [ errorText, setErrorText ] = createSignal('');
11
+
10
12
onMount(() => {
11
-
anime.set('.settings',
13
+
utils.set('.settings',
12
14
{
13
15
display: 'none',
14
16
opacity: 0,
15
17
translateX: '500px'
16
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
+
});
17
38
})
18
39
19
40
return (
20
41
<div class="container">
21
-
<NavBar />
22
-
23
42
<PhotoList />
24
43
<PhotoViewer />
25
44
26
45
<SettingsMenu />
27
46
28
47
<div class="copy-notif">Image Copied!</div>
48
+
<div class="error-notif">{ errorText() }</div>
29
49
</div>
30
50
);
31
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
5
6
6
const MONTHS = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
7
7
8
+
let multilayerIcon = new Image();
9
+
multilayerIcon.src = '/icon/layer-group-solid-full.svg';
10
+
8
11
export class PhotoListRenderingManager{
9
12
private _layout: PhotoListRow[] = [];
10
13
private _canvas!: HTMLCanvasElement;
···
22
25
23
26
let lastDateString = null;
24
27
let row = new PhotoListRow();
25
-
row.Height = 100;
28
+
row.Height = 0;
26
29
27
30
for (let i = 0; i < window.PhotoManager.FilteredPhotos.length; i++) {
28
31
let photo = window.PhotoManager.FilteredPhotos[i];
···
60
63
61
64
public Render( ctx: CanvasRenderingContext2D, canvas: HTMLCanvasElement, scroll: number ){
62
65
let currentY = 0;
63
-
66
+
64
67
// Loop through each row
65
68
for (let i = 0; i < this._layout.length; i++) {
66
69
let row = this._layout[i];
···
124
127
// ctx.strokeStyle = '#f00';
125
128
// ctx.strokeRect((rowXPos - row.Width / 2) + canvas.width / 2, currentY - scroll, photo.scaledWidth!, row.Height);
126
129
127
-
if(!photo.loaded)
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)
128
141
// If the photo is not loaded, start a new task and load it in that task
129
142
setTimeout(() => photo.loadImage(), 1);
130
143
else{
···
136
149
// Photo is already loaded so we should draw it on the application
137
150
ctx.globalAlpha = photo.frames / 100;
138
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);
139
155
140
156
if(photo.frames < 100)
141
157
photo.frames += 10;
+84
-16
src/Components/Managers/PhotoManager.tsx
+84
-16
src/Components/Managers/PhotoManager.tsx
···
46
46
if(photoPaths.length <= Vars.MAX_PHOTOS_BULK_LOAD)
47
47
setHasBeenIndexed(true);
48
48
49
+
let photoLayers: Photo[] = [];
50
+
49
51
photoPaths.forEach(( path: string, i: number ) => {
50
52
let photo
51
53
···
54
56
else
55
57
photo = new Photo(path, false, i);
56
58
57
-
this.Photos.push(photo);
59
+
if(!photo.legacy && photo.splitPath[4]){
60
+
photoLayers.push(photo);
61
+
} else
62
+
this.Photos.push(photo);
58
63
59
64
if(photoPaths.length <= Vars.MAX_PHOTOS_BULK_LOAD)
60
65
photo.loadMeta();
61
66
})
62
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
+
63
91
this.Photos = MergeSort(this.Photos);
92
+
console.log(this.Photos[0]);
64
93
65
94
console.log(this.Photos.length + ' Photos found.');
95
+
66
96
if(this.Photos.length === 0 || photoPaths.length > Vars.MAX_PHOTOS_BULK_LOAD){
67
97
console.log('No photos found or over bulk load limit, Skipping loading stage.');
68
98
···
75
105
76
106
listen('photo_meta_loaded', ( event: any ) => {
77
107
let data: PhotoMetadata = event.payload;
78
-
108
+
79
109
let photo = this.Photos.find(x => x.path === data.path);
80
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.
81
114
115
+
photo.error = data.error;
82
116
this._lastLoaded = photo.index;
83
117
84
118
if(this._onLoadedMeta[photo.index]){
···
96
130
97
131
photo.metadata = data.metadata.split('\u0000').filter(x => x !== '')[1];
98
132
this._amountLoaded++;
99
-
133
+
134
+
photo.loadingMeta = false;
100
135
photo.metaLoaded = true;
101
136
photo.onMetaLoaded();
137
+
138
+
window.PhotoListRenderingManager.ComputeLayout();
102
139
103
140
if(this._amountLoaded === this.Photos.length - 1 && !this.HasFirstLoaded){
104
141
this.FilteredPhotos = this.Photos;
···
110
147
111
148
listen('photo_create', async ( event: any ) => {
112
149
let photo = new Photo(event.payload, false, 0);
113
-
114
-
this.Photos.forEach(p => p.index++); // Probably a really dumb way of doing this
115
-
this.Photos.splice(0, 0, photo);
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
+
}
116
177
117
178
photo.onMetaLoaded = () => this.ReloadFilters();
118
179
photo.loadMeta();
119
-
120
-
if(!window.SyncManager.IsSyncing() && window.AccountManager.Storage()?.isSyncing){
121
-
window.SyncManager.TriggerSync();
122
-
}
123
180
})
124
-
181
+
125
182
listen('photo_remove', ( event: any ) => {
126
183
this.Photos = this.Photos.filter(x => x.path !== event.payload);
127
-
this.FilteredPhotos = this.FilteredPhotos.filter(x => x.path !== event.payload);
128
-
184
+
129
185
if(event.payload === window.PhotoViewerManager.CurrentPhoto()?.path)
130
186
window.PhotoViewerManager.Close()
131
187
···
168
224
public ReloadFilters(){
169
225
this.FilteredPhotos = [];
170
226
227
+
if(this._filter === ''){
228
+
this.FilteredPhotos = this.Photos;
229
+
window.PhotoListRenderingManager.ComputeLayout();
230
+
231
+
return;
232
+
}
233
+
171
234
switch(this._filterType){
172
235
case FilterType.USER:
173
236
this.Photos.map(p => {
174
237
if(p.metadata){
175
238
try{
176
239
let meta = JSON.parse(p.metadata);
177
-
let photo = meta.players.find(( y: any ) => y.displayName.toLowerCase().includes(this._filter) || y.id === this._filter);
240
+
let photo = meta.players.find(( y: any ) =>
241
+
y.displayName.toLowerCase().includes(this._filter) ||
242
+
y.id === this._filter
243
+
);
178
244
179
245
if(photo)this.FilteredPhotos.push(p);
180
246
} catch(e){}
···
186
252
if(p.metadata){
187
253
try{
188
254
let meta = JSON.parse(p.metadata);
189
-
let photo = meta.world.name.toLowerCase().includes(this._filter) || meta.world.id === this._filter;
190
-
255
+
let photo =
256
+
meta.world.name.toLowerCase().includes(this._filter) ||
257
+
meta.world.id === this._filter;
258
+
191
259
if(photo)this.FilteredPhotos.push(p);
192
260
} catch(e){}
193
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
-
}
+84
-70
src/Components/PhotoList.tsx
+84
-70
src/Components/PhotoList.tsx
···
1
-
import { onCleanup, onMount } from "solid-js";
1
+
import { createSignal, onCleanup, onMount, Show } from "solid-js";
2
2
import { listen } from '@tauri-apps/api/event';
3
3
import { Window } from "@tauri-apps/api/window";
4
4
5
-
import anime from "animejs";
6
5
import FilterMenu from "./FilterMenu";
7
6
import { ViewState } from "./Managers/ViewManager";
8
7
import { invoke } from "@tauri-apps/api/core";
8
+
import { animate, utils } from "animejs";
9
9
10
10
enum ListPopup{
11
11
FILTERS,
···
13
13
}
14
14
15
15
let PhotoList = () => {
16
-
let photoTreeLoadingContainer: HTMLElement;
17
-
18
16
let scrollToTop: HTMLElement;
19
17
let scrollToTopActive = false;
20
18
21
19
let photoContainer: HTMLCanvasElement;
22
-
let photoContainerBG: HTMLCanvasElement;
23
20
24
21
let filterContainer: HTMLDivElement;
25
22
26
23
let ctx: CanvasRenderingContext2D;
27
-
let ctxBG: CanvasRenderingContext2D;
28
24
29
25
let scroll: number = 0;
30
26
let targetScroll: number = 0;
···
32
28
let quitRender: boolean = true;
33
29
34
30
let currentPopup = ListPopup.NONE;
31
+
32
+
let [ updateAvailable, setUpdateAvailable ] = createSignal(false);
35
33
36
34
Window.getCurrent().isVisible().then(visible => {
37
35
quitRender = !visible;
···
39
37
40
38
41
39
window.ViewManager.OnStateTransition(ViewState.PHOTO_LIST, ViewState.SETTINGS, () => {
42
-
anime({ targets: photoContainer, opacity: 0, easing: 'easeInOutQuad', duration: 100 });
43
-
anime({ targets: '.filter-options', opacity: 0, easing: 'easeInOutQuad', duration: 100 });
44
-
anime({ targets: '.reload-photos', opacity: 0, easing: 'easeInOutQuad', duration: 100 });
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 });
45
43
});
46
44
47
45
window.ViewManager.OnStateTransition(ViewState.SETTINGS, ViewState.PHOTO_LIST, () => {
48
-
anime({ targets: photoContainer, opacity: 1, easing: 'easeInOutQuad', duration: 100 });
49
-
anime({ targets: '.filter-options', opacity: 1, easing: 'easeInOutQuad', duration: 100 });
50
-
anime({ targets: '.reload-photos', opacity: 1, easing: 'easeInOutQuad', duration: 100 });
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 });
51
49
});
52
50
53
51
54
52
window.ViewManager.OnStateTransition(ViewState.PHOTO_LIST, ViewState.PHOTO_VIEWER, () => {
55
-
anime({ targets: photoContainer, opacity: 0, easing: 'easeInOutQuad', duration: 100 });
56
-
anime({ targets: '.filter-options', opacity: 0, easing: 'easeInOutQuad', duration: 100 });
57
-
anime({ targets: '.reload-photos', opacity: 0, easing: 'easeInOutQuad', duration: 100 });
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 });
58
56
});
59
57
60
58
window.ViewManager.OnStateTransition(ViewState.PHOTO_VIEWER, ViewState.PHOTO_LIST, () => {
61
-
anime({ targets: photoContainer, opacity: 1, easing: 'easeInOutQuad', duration: 100 });
62
-
anime({ targets: '.filter-options', opacity: 1, easing: 'easeInOutQuad', duration: 100 });
63
-
anime({ targets: '.reload-photos', opacity: 1, easing: 'easeInOutQuad', duration: 100 });
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 });
64
62
});
65
63
66
64
···
74
72
photoContainer.width = window.innerWidth;
75
73
photoContainer.height = window.innerHeight;
76
74
77
-
photoContainerBG.width = window.innerWidth;
78
-
photoContainerBG.height = window.innerHeight;
79
-
80
75
window.PhotoListRenderingManager.ComputeLayout();
81
76
}
82
77
83
78
let closeCurrentPopup = () => {
84
79
switch(currentPopup){
85
80
case ListPopup.FILTERS:
86
-
anime({
87
-
targets: filterContainer!,
81
+
animate(filterContainer!, {
88
82
opacity: 0,
83
+
translateY: '10px',
89
84
easing: 'easeInOutQuad',
90
85
duration: 100,
91
-
complete: () => {
86
+
onComplete: () => {
92
87
filterContainer!.style.display = 'none';
93
88
currentPopup = ListPopup.NONE;
94
89
}
···
106
101
107
102
if(!scrollToTopActive && scroll > photoContainer.height){
108
103
scrollToTop.style.display = 'flex';
109
-
anime({ targets: scrollToTop, opacity: 1, translateY: '0px', easing: 'easeInOutQuad', duration: 100 });
104
+
animate(scrollToTop, { opacity: 1, translateY: '0px', easing: 'easeInOutQuad', duration: 100 });
110
105
111
106
scrollToTopActive = true;
112
107
} else if(scrollToTopActive && scroll < photoContainer.height){
113
-
anime({ targets: scrollToTop, opacity: 0, translateY: '-10px', complete: () => scrollToTop.style.display = 'none', easing: 'easeInOutQuad', duration: 100 });
108
+
animate(scrollToTop, { opacity: 0, translateY: '-10px', onComplete: () => scrollToTop.style.display = 'none', easing: 'easeInOutQuad', duration: 100 });
109
+
114
110
scrollToTopActive = false;
115
111
}
116
112
117
-
if(!ctx || !ctxBG)return;
113
+
if(!ctx)return;
118
114
ctx.clearRect(0, 0, photoContainer.width, photoContainer.height);
119
-
ctxBG.clearRect(0, 0, photoContainerBG.width, photoContainerBG.height);
120
115
121
-
scroll = scroll + (targetScroll - scroll) * 0.2;
116
+
scroll = scroll + (targetScroll - scroll) * 0.1;
122
117
123
118
window.PhotoListRenderingManager.Render(ctx, photoContainer!, scroll);
124
119
···
131
126
132
127
ctx.fillText("It's looking empty in here! You have no photos :O", photoContainer.width / 2, photoContainer.height / 2);
133
128
}
134
-
135
-
ctxBG.drawImage(photoContainer, 0, 0);
136
129
}
137
130
138
131
listen('hide-window', () => {
···
146
139
147
140
photoContainer.width = window.innerWidth;
148
141
photoContainer.height = window.innerHeight;
149
-
150
-
photoContainerBG.width = window.innerWidth;
151
-
photoContainerBG.height = window.innerHeight;
152
142
153
143
if(window.PhotoManager.HasFirstLoaded){
154
144
requestAnimationFrame(render);
···
159
149
window.PhotoManager.OnLoadingFinished(() => {
160
150
invoke('close_splashscreen');
161
151
162
-
anime({
163
-
targets: photoTreeLoadingContainer,
164
-
height: 0,
165
-
easing: 'easeInOutQuad',
166
-
duration: 500,
167
-
opacity: 0,
168
-
complete: () => {
169
-
photoTreeLoadingContainer.style.display = 'none';
170
-
}
171
-
})
172
-
173
-
anime({
174
-
targets: '.reload-photos',
152
+
animate('.reload-photos', {
175
153
opacity: 1,
176
154
duration: 150,
177
155
easing: 'easeInOutQuad'
178
156
})
179
157
180
158
window.PhotoListRenderingManager.SetCanvas(photoContainer!);
181
-
window.PhotoListRenderingManager.ComputeLayout();
182
-
183
159
render();
184
160
});
185
161
186
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
187
179
ctx = photoContainer.getContext('2d')!;
188
-
ctxBG = photoContainerBG.getContext('2d')!;
189
180
190
181
window.PhotoManager.Load();
191
182
192
-
anime.set(scrollToTop, { opacity: 0, translateY: '-10px', display: 'none' });
183
+
utils.set(scrollToTop, { opacity: 0, translateY: '-10px', display: 'none' });
193
184
194
185
photoContainer.onwheel = ( e: WheelEvent ) => {
195
-
targetScroll += e.deltaY;
186
+
targetScroll += e.deltaY * 2;
196
187
197
188
if(targetScroll < 0)
198
189
targetScroll = 0;
···
204
195
photoContainer.width = window.innerWidth;
205
196
photoContainer.height = window.innerHeight;
206
197
207
-
photoContainerBG.width = window.innerWidth;
208
-
photoContainerBG.height = window.innerHeight;
209
-
210
198
photoContainer.onclick = ( e: MouseEvent ) => {
211
199
let photo = window.PhotoManager.FilteredPhotos.find(x =>
212
200
e.clientX > x.x &&
···
233
221
234
222
return (
235
223
<div class="photo-list">
236
-
<div ref={filterContainer!} class="filter-container" style={{
237
-
height: window.PhotoManager.HasBeenIndexed() ? '83px' : '110px',
238
-
width: window.PhotoManager.HasBeenIndexed() ? '600px' : '650px'
239
-
}}>
224
+
<div ref={filterContainer!} class="filter-container">
240
225
<FilterMenu />
241
226
</div>
242
227
243
-
<div class="photo-tree-loading" ref={( el ) => photoTreeLoadingContainer = el}>Scanning Photo Tree...</div>
244
-
245
228
<div class="scroll-to-top" ref={( el ) => scrollToTop = el} onClick={() => targetScroll = 0}>
246
229
<div class="icon">
247
230
<img draggable="false" src="/icon/angle-up-solid.svg"></img>
248
231
</div>
249
232
</div>
250
-
<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())}>
251
-
<div class="icon" style={{ width: '17px' }}>
252
-
<img draggable="false" width="17" height="17" src="/icon/arrows-rotate-solid.svg"></img>
253
-
</div>
254
-
</div>
255
233
256
234
<div class="filter-options">
257
235
<div>
···
261
239
262
240
filterContainer!.style.display = 'block';
263
241
264
-
anime({
265
-
targets: filterContainer!,
242
+
animate(filterContainer!, {
266
243
opacity: 1,
244
+
translateY: 0,
267
245
easing: 'easeInOutQuad',
268
246
duration: 100
269
247
});
270
-
}} class="icon" style={{ width: '20px', height: '20px', padding: '20px' }}>
248
+
}} class="icon">
271
249
<img draggable="false" style={{ width: "20px", height: "20px" }} src="/icon/sliders-solid.svg"></img>
272
250
</div>
273
251
<div class="icon-label">Filters</div>
274
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>
275
290
</div>
276
291
277
292
<canvas class="photo-container" ref={( el ) => photoContainer = el}></canvas>
278
-
<canvas class="photo-container-bg" ref={( el ) => photoContainerBG = el}></canvas>
279
293
</div>
280
294
)
281
295
}
+210
-87
src/Components/PhotoViewer.tsx
+210
-87
src/Components/PhotoViewer.tsx
···
1
1
import { For, Show, createEffect, onCleanup, onMount } from "solid-js";
2
2
import { invoke } from '@tauri-apps/api/core';
3
-
import anime from 'animejs';
4
3
import { WorldCache } from "./Structs/WorldCache";
4
+
import { animate, JSAnimation, utils } from "animejs";
5
5
6
6
let PhotoViewer = () => {
7
7
let viewer: HTMLElement;
···
21
21
let viewerContextMenuButtons: HTMLElement[] = [];
22
22
23
23
let allowedToOpenTray = false;
24
-
let trayInAnimation = false;
25
24
26
25
let authorProfileButton: HTMLDivElement;
26
+
27
+
let photoLayerManager!: HTMLDivElement;
27
28
28
29
let switchPhotoWithKey = ( e: KeyboardEvent ) => {
29
30
switch(e.key){
···
52
53
}
53
54
}
54
55
56
+
let trayAnimation: JSAnimation[] = [];
57
+
55
58
let openTray = () => {
56
-
if(trayOpen || trayInAnimation)return;
59
+
if(trayOpen)return;
60
+
trayOpen = true;
57
61
58
-
trayOpen = true;
59
-
trayInAnimation = true;
62
+
trayAnimation.forEach(anim => anim.cancel());
60
63
61
64
window.CloseAllPopups.forEach(p => p());
62
-
anime({ targets: photoTray, bottom: '0px', duration: 500 });
65
+
trayAnimation[0] = animate(photoTray, { bottom: '-150px', duration: 500, ease: 'outElastic' });
63
66
64
-
anime({
65
-
targets: photoControls,
67
+
trayAnimation[1] = animate(photoControls, {
66
68
bottom: '160px',
69
+
ease: 'outElastic',
67
70
scale: '0.75',
68
71
opacity: 0,
69
72
duration: 500,
70
-
complete: () => {
73
+
onComplete: () => {
71
74
photoControls.style.display = 'none';
72
-
trayInAnimation = false;
73
75
}
74
76
});
75
77
76
78
photoTrayCloseBtn.style.display = 'flex';
77
-
anime({
78
-
targets: photoTrayCloseBtn,
79
+
trayAnimation[2] = animate(photoTrayCloseBtn, {
79
80
bottom: '160px',
81
+
ease: 'outElastic',
80
82
opacity: 1,
81
83
scale: 1,
82
84
duration: 500
···
84
86
}
85
87
86
88
let copyImage = () => {
87
-
invoke('copy_image', { path: window.PhotoViewerManager.CurrentPhoto()!.path })
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 })
88
105
.then(() => {
89
-
anime.set('.copy-notif', { translateX: '-50%', translateY: '-100px' });
90
-
anime({
91
-
targets: '.copy-notif',
106
+
utils.set('.copy-notif', { translateX: '-50%', translateY: '-100px' });
107
+
animate('.copy-notif', {
108
+
ease: 'outElastic',
92
109
opacity: 1,
93
110
translateY: '0px'
94
111
});
95
112
96
113
setTimeout(() => {
97
-
anime({
98
-
targets: '.copy-notif',
114
+
animate('.copy-notif', {
115
+
ease: 'outElastic',
99
116
opacity: 0,
100
117
translateY: '-100px'
101
118
});
···
104
121
}
105
122
106
123
let closeTray = () => {
107
-
if(!trayOpen || trayInAnimation)return;
108
-
trayInAnimation = true;
124
+
if(!trayOpen)return;
125
+
trayOpen = false;
126
+
127
+
trayAnimation.forEach(anim => anim.cancel());
109
128
110
129
window.CloseAllPopups.forEach(p => p());
111
-
anime({ targets: photoTray, bottom: '-150px', duration: 500 });
130
+
trayAnimation[0] = animate(photoTray, { bottom: '-300px', duration: 500, ease: 'outElastic' });
112
131
113
-
anime({
114
-
targets: photoTrayCloseBtn,
132
+
trayAnimation[2] = animate(photoTrayCloseBtn, {
115
133
bottom: '10px',
116
134
scale: '0.75',
135
+
ease: 'outElastic',
117
136
opacity: 0,
118
137
duration: 500,
119
-
complete: () => {
138
+
onComplete: () => {
120
139
photoTrayCloseBtn.style.display = 'none';
121
-
trayOpen = false;
122
-
trayInAnimation = false;
123
140
}
124
141
});
125
142
126
143
photoControls.style.display = 'flex';
127
-
anime({
128
-
targets: photoControls,
144
+
trayAnimation[1] = animate(photoControls, {
129
145
bottom: '10px',
146
+
ease: 'outElastic',
130
147
opacity: 1,
131
148
scale: 1,
132
149
duration: 500,
133
150
})
134
151
}
135
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
+
136
175
onMount(() => {
137
-
anime.set(photoControls, { translateX: '-50%' });
138
-
anime.set(photoTrayCloseBtn, { translateX: '-50%', opacity: 0, scale: '0.75', bottom: '10px' });
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' });
139
179
140
180
window.addEventListener('keyup', switchPhotoWithKey);
181
+
window.addEventListener('resize', () => resizeImage());
141
182
142
183
let contextMenuOpen = false;
143
184
window.CloseAllPopups.push(() => {
144
185
contextMenuOpen = false;
145
-
anime.set(viewerContextMenu, { opacity: 1, rotate: '0deg' });
186
+
utils.set(viewerContextMenu, { opacity: 1, rotate: '0deg' });
146
187
147
-
anime({
148
-
targets: viewerContextMenu,
188
+
animate(viewerContextMenu, {
149
189
opacity: 0,
150
190
easing: 'easeInOutQuad',
151
191
rotate: '30deg',
152
192
duration: 100,
153
-
complete: () => {
193
+
onComplete: () => {
154
194
viewerContextMenu.style.display = 'none';
155
195
}
156
196
})
157
197
});
158
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
+
159
206
viewerContextMenuButtons[0].onclick = async () => {
160
207
window.CloseAllPopups.forEach(p => p());
161
208
// Context Menu -> Open file location
···
174
221
if(contextMenuOpen){
175
222
contextMenuOpen = false;
176
223
177
-
anime.set(viewerContextMenu, { opacity: 1, rotate: '0deg' });
224
+
utils.set(viewerContextMenu, { opacity: 1, rotate: '0deg' });
178
225
179
-
anime({
180
-
targets: viewerContextMenu,
226
+
animate(viewerContextMenu, {
181
227
opacity: 0,
182
228
rotate: '30deg',
183
229
easing: 'easeInOutQuad',
184
230
duration: 100,
185
-
complete: () => {
231
+
onComplete: () => {
186
232
viewerContextMenu.style.display = 'none';
187
233
}
188
234
})
···
193
239
viewerContextMenu.style.left = e.clientX + 'px';
194
240
viewerContextMenu.style.display = 'block';
195
241
196
-
anime.set(viewerContextMenu, { opacity: 0, rotate: '-30deg' });
242
+
utils.set(viewerContextMenu, { opacity: 0, rotate: '-30deg' });
197
243
198
-
anime({
199
-
targets: viewerContextMenu,
244
+
animate(viewerContextMenu, {
200
245
opacity: 1,
201
246
rotate: '0deg',
202
247
easing: 'easeInOutQuad',
···
215
260
imageViewer.src = (window.OS === "windows" ? "http://photo.localhost/" : 'photo://localhost/') + window.PhotoViewerManager.CurrentPhoto()?.path.split('\\').join('/') + "?full";
216
261
imageViewer.crossOrigin = 'anonymous';
217
262
218
-
anime({
219
-
targets: imageViewer,
263
+
imageViewer.onload = () => { resizeImage(); }
264
+
265
+
animate(imageViewer, {
220
266
opacity: 1,
221
267
delay: 50,
222
268
duration: 150,
···
276
322
let id = doc.getElementsByTagName('xmp:Author')[0]!.innerHTML;
277
323
278
324
authorProfileButton!.style.display = 'flex';
279
-
authorProfileButton!.onclick = () =>
325
+
authorProfileButton!.onclick = () => {
326
+
console.log(id);
280
327
invoke('open_url', { url: 'https://vrchat.com/home/user/' + id });
328
+
}
281
329
} catch(e){
282
330
console.error(e);
283
331
console.log('Couldn\'t decode metadata')
···
290
338
}
291
339
} else{
292
340
trayButton.style.display = 'none';
341
+
authorProfileButton!.style.display = 'none';
342
+
293
343
closeTray();
294
344
}
295
345
}
···
300
350
if(photo && !isOpen){
301
351
viewer.style.display = 'flex';
302
352
303
-
anime({
304
-
targets: viewer,
353
+
animate(viewer, {
305
354
opacity: 1,
306
355
easing: 'easeInOutQuad',
307
356
duration: 150
308
357
});
309
-
310
-
anime({
311
-
targets: '.navbar',
312
-
top: '-50px'
313
-
})
314
358
315
-
anime.set('.prev-button', { left: '-50px', top: '50%' });
316
-
anime.set('.next-button', { right: '-50px', top: '50%' });
359
+
utils.set('.prev-button', { left: '-50px', top: '50%' });
360
+
utils.set('.next-button', { right: '-50px', top: '50%' });
317
361
318
-
anime({ targets: '.prev-button', left: '0', easing: 'easeInOutQuad', duration: 100 });
319
-
anime({ targets: '.next-button', right: '0', easing: 'easeInOutQuad', duration: 100 });
362
+
animate('.prev-button', { left: '0', easing: 'easeInOutQuad', duration: 100 });
363
+
animate('.next-button', { right: '0', easing: 'easeInOutQuad', duration: 100 });
320
364
321
365
window.CloseAllPopups.forEach(p => p());
322
366
} else if(!photo && isOpen){
323
-
anime({
324
-
targets: viewer,
367
+
animate(viewer, {
325
368
opacity: 0,
326
369
easing: 'easeInOutQuad',
327
370
duration: 150,
328
-
complete: () => {
371
+
onComplete: () => {
329
372
viewer.style.display = 'none';
330
373
}
331
374
});
332
-
333
-
anime({
334
-
targets: '.navbar',
335
-
top: '0px'
336
-
})
337
375
338
376
window.CloseAllPopups.forEach(p => p());
339
377
340
-
anime({ targets: '.prev-button', top: '75%', easing: 'easeInOutQuad', duration: 100 });
341
-
anime({ targets: '.next-button', top: '75%', easing: 'easeInOutQuad', duration: 100 });
378
+
animate('.prev-button', { top: '75%', easing: 'easeInOutQuad', duration: 100 });
379
+
animate('.next-button', { top: '75%', easing: 'easeInOutQuad', duration: 100 });
342
380
}
343
381
344
382
isOpen = photo != null;
···
379
417
)
380
418
}
381
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
+
382
447
return (
383
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
+
384
483
<div class="photo-context-menu" ref={( el ) => viewerContextMenu = el}>
385
484
<div ref={( el ) => viewerContextMenuButtons.push(el)}>Open file location</div>
386
485
<div ref={( el ) => viewerContextMenuButtons.push(el)}>Copy image</div>
387
486
</div>
388
487
389
488
<div class="viewer-close viewer-button" onClick={() => window.PhotoViewerManager.Close()}>
390
-
<div class="icon" style={{ width: '10px', margin: '0' }}>
489
+
<div class="icon-small" style={{ width: '10px', margin: '0' }}>
391
490
<img draggable="false" src="/icon/x-solid.svg"></img>
392
491
</div>
393
492
</div>
394
-
<img class="image-container" ref={( el ) => imageViewer = el} />
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>
395
503
396
504
<div class="prev-button" onClick={() => {
397
505
window.CloseAllPopups.forEach(p => p());
398
506
window.PhotoViewerManager.PreviousPhoto();
399
507
}}>
400
-
<div class="icon" style={{ width: '15px', margin: '0' }}>
508
+
<div class="icon-small" style={{ width: '15px', margin: '0' }}>
401
509
<img draggable="false" src="/icon/arrow-left-solid.svg"></img>
402
510
</div>
403
511
</div>
···
406
514
window.CloseAllPopups.forEach(p => p());
407
515
window.PhotoViewerManager.NextPhoto();
408
516
}}>
409
-
<div class="icon" style={{ width: '15px', margin: '0' }}>
517
+
<div class="icon-small" style={{ width: '15px', margin: '0' }}>
410
518
<img draggable="false" src="/icon/arrow-right-solid.svg"></img>
411
519
</div>
412
520
</div>
···
417
525
onClick={() => closeTray()}
418
526
ref={( el ) => photoTrayCloseBtn = el}
419
527
>
420
-
<div class="icon" style={{ width: '12px', margin: '0' }}>
528
+
<div class="icon-small" style={{ width: '12px', margin: '0' }}>
421
529
<img draggable="false" src="/icon/angle-down-solid.svg"></img>
422
530
</div>
423
531
</div>
424
532
425
533
<div class="control-buttons" ref={( el ) => photoControls = el}>
426
534
<div class="viewer-button"
427
-
onMouseOver={( el ) => anime({ targets: el.currentTarget, width: '40px', height: '40px', 'margin-left': '15px', 'margin-right': '15px', 'margin-top': '-10px' })}
428
-
onMouseLeave={( el ) => anime({ targets: el.currentTarget, width: '30px', height: '30px', 'margin-left': '20px', 'margin-right': '20px', 'margin-top': '0px' })}
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' })}
429
537
onClick={() => { copyImage(); }}>
430
-
<div class="icon" style={{ width: '12px', margin: '0' }}>
538
+
<div class="icon-small" style={{ width: '12px', margin: '0' }}>
431
539
<img draggable="false" src="/icon/copy-solid.svg"></img>
432
540
</div>
433
541
</div>
434
542
<div class="viewer-button" style={{ width: '50px' }}
435
-
onMouseOver={( el ) => anime({ targets: el.currentTarget, width: '70px', height: '30px', 'margin-left': '10px', 'margin-right': '10px' })}
436
-
onMouseLeave={( el ) => anime({ targets: el.currentTarget, width: '50px', height: '30px', 'margin-left': '20px', 'margin-right': '20px' })}
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' })}
437
545
ref={( el ) => trayButton = el}
438
546
onClick={() => openTray()}
439
547
>
440
-
<div class="icon" style={{ width: '12px', margin: '0' }}>
548
+
<div class="icon-small" style={{ width: '12px', margin: '0' }}>
441
549
<img draggable="false" src="/icon/angle-up-solid.svg"></img>
442
550
</div>
443
551
</div>
444
552
445
553
<div class="viewer-button"
446
554
ref={authorProfileButton!}
447
-
onMouseOver={( el ) => anime({ targets: el.currentTarget, width: '40px', height: '40px', 'margin-left': '15px', 'margin-right': '15px', 'margin-top': '-10px' })}
448
-
onMouseLeave={( el ) => anime({ targets: el.currentTarget, width: '30px', height: '30px', 'margin-left': '20px', 'margin-right': '20px', 'margin-top': '0px' })}
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' })}
449
557
>
450
-
<div class="icon" style={{ width: '12px', margin: '0' }}>
558
+
<div class="icon-small" style={{ width: '12px', margin: '0' }}>
451
559
<img draggable="false" src="/icon/user-solid.svg"></img>
452
560
</div>
453
561
</div>
454
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
+
455
575
<div class="viewer-button"
456
-
onMouseOver={( el ) => anime({ targets: el.currentTarget, width: '40px', height: '40px', 'margin-left': '15px', 'margin-right': '15px', 'margin-top': '-10px' })}
457
-
onMouseLeave={( el ) => anime({ targets: el.currentTarget, width: '30px', height: '30px', 'margin-left': '20px', 'margin-right': '20px', 'margin-top': '0px' })}
458
-
onClick={() => window.ConfirmationBoxManager.SetConfirmationBox("Are you sure you want to delete this photo?", async () => { invoke("delete_photo", {
459
-
path: window.PhotoViewerManager.CurrentPhoto()?.path,
460
-
token: (await invoke('get_config_value_string', { key: 'token' })) || "none",
461
-
isSyncing: window.AccountManager.hasAccount() ? window.AccountManager.Storage()?.isSyncing : false
462
-
});
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 });
463
586
})}>
464
-
<div class="icon" style={{ width: '12px', margin: '0' }}>
587
+
<div class="icon-small" style={{ width: '12px', margin: '0' }}>
465
588
<img draggable="false" src="/icon/trash-solid.svg"></img>
466
589
</div>
467
590
</div>
+180
-143
src/Components/SettingsMenu.tsx
+180
-143
src/Components/SettingsMenu.tsx
···
1
1
import { onCleanup, onMount, Show } from "solid-js";
2
2
import { bytesToFormatted } from "../utils";
3
3
import { invoke } from '@tauri-apps/api/core';
4
-
import anime from "animejs";
5
4
import { ViewState } from "./Managers/ViewManager";
5
+
import { animate, utils } from "animejs";
6
6
7
7
let SettingsMenu = () => {
8
-
let sliderBar: HTMLElement;
9
-
let settingsContainer: HTMLElement;
10
-
let currentButton = 0;
11
-
let lastClickedButton = -1;
8
+
// let sliderBar: HTMLElement;
9
+
// let settingsContainer: HTMLElement;
10
+
// let currentButton = 0;
11
+
// let lastClickedButton = -1;
12
12
let finalPathConfirm: HTMLElement;
13
13
let finalPathInput: HTMLElement;
14
14
let finalPathData: string;
···
17
17
let closeWithKey = ( e: KeyboardEvent ) => {
18
18
if(e.key === 'Escape'){
19
19
window.ViewManager.ChangeState(ViewState.PHOTO_LIST);
20
-
anime({
21
-
targets: '.settings',
20
+
console.log('h');
21
+
animate('.settings',{
22
22
opacity: 0,
23
23
translateX: '500px',
24
24
easing: 'easeInOutQuad',
25
25
duration: 250,
26
-
complete: () => {
27
-
anime.set('.settings', { display: 'none' });
26
+
onComplete: () => {
27
+
console.log('h');
28
+
utils.set('.settings', { display: 'none' });
28
29
}
29
30
})
30
31
}
···
34
35
if(await invoke('get_config_value_string', { key: 'transparent' }) === "true"){
35
36
invoke('set_config_value_string', { key: 'transparent', value: 'true' });
36
37
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 });
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 });
39
40
} else{
40
41
invoke('set_config_value_string', { key: 'transparent', value: 'false' });
41
42
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 });
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 });
44
45
}
45
46
46
-
let sliderMouseDown = false;
47
-
let mouseStartX = 0;
47
+
// let sliderMouseDown = false;
48
+
// let mouseStartX = 0;
48
49
49
-
let width = window.innerWidth;
50
-
let buttons = [ 370, 680 ];
50
+
// let width = window.innerWidth;
51
+
// let buttons = [ 370, 680 ];
51
52
52
-
let sliderPos = width / 2 - buttons[currentButton];
53
-
let sliderScale = width / (buttons[1] - buttons[0]);
53
+
// let sliderPos = width / 2 - buttons[currentButton];
54
+
// let sliderScale = width / (buttons[1] - buttons[0]);
54
55
55
-
let render = () => {
56
-
requestAnimationFrame(render);
56
+
// let render = () => {
57
+
// requestAnimationFrame(render);
57
58
58
-
if(!sliderMouseDown){
59
-
sliderPos = sliderPos + (width / 2 - buttons[currentButton] - sliderPos) * 0.25;
60
-
anime.set(sliderBar, { translateX: sliderPos });
59
+
// if(!sliderMouseDown){
60
+
// sliderPos = sliderPos + (width / 2 - buttons[currentButton] - sliderPos) * 0.25;
61
+
// utils.set(sliderBar, { translateX: sliderPos });
61
62
62
-
settingsContainer.style.left = (sliderPos - (width / 2 - buttons[0])) * sliderScale + 'px';
63
-
}
64
-
}
63
+
// settingsContainer.style.left = (sliderPos - (width / 2 - buttons[0])) * sliderScale + 'px';
64
+
// }
65
+
// }
65
66
66
-
render();
67
-
anime.set(sliderBar, { translateX: sliderPos });
67
+
// render();
68
+
// utils.set(sliderBar, { translateX: sliderPos });
68
69
69
-
sliderBar.addEventListener('touchstart', ( e: TouchEvent ) => {
70
-
sliderMouseDown = true;
71
-
mouseStartX = e.touches[0].clientX;
72
-
})
70
+
// sliderBar.addEventListener('touchstart', ( e: TouchEvent ) => {
71
+
// sliderMouseDown = true;
72
+
// mouseStartX = e.touches[0].clientX;
73
+
// })
73
74
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
-
})
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
+
// })
80
81
81
82
window.addEventListener('keyup', closeWithKey);
82
83
83
-
window.addEventListener('touchend', ( e: TouchEvent ) => {
84
-
if(sliderMouseDown){
85
-
sliderPos = sliderPos - (mouseStartX - e.touches[0].clientX);
84
+
// window.addEventListener('touchend', ( e: TouchEvent ) => {
85
+
// if(sliderMouseDown){
86
+
// sliderPos = sliderPos - (mouseStartX - e.touches[0].clientX);
86
87
87
-
anime.set(sliderBar, { translateX: sliderPos - (mouseStartX - e.touches[0].clientX) });
88
-
sliderMouseDown = false;
88
+
// utils.set(sliderBar, { translateX: sliderPos - (mouseStartX - e.touches[0].clientX) });
89
+
// sliderMouseDown = false;
89
90
90
-
if(Math.abs(mouseStartX - e.touches[0].clientX) > 50){
91
-
let shortestDistance = 0;
92
-
let selectedButton = -1;
91
+
// if(Math.abs(mouseStartX - e.touches[0].clientX) > 50){
92
+
// let shortestDistance = 0;
93
+
// let selectedButton = -1;
93
94
94
-
buttons.forEach(( pos, indx ) => {
95
-
let dis = Math.abs(sliderPos - (width / 2 - pos));
95
+
// buttons.forEach(( pos, indx ) => {
96
+
// let dis = Math.abs(sliderPos - (width / 2 - pos));
96
97
97
-
if(selectedButton === -1){
98
-
shortestDistance = dis;
99
-
selectedButton = indx;
100
-
} else if(shortestDistance > dis){
101
-
shortestDistance = dis;
102
-
selectedButton = indx;
103
-
}
104
-
})
98
+
// if(selectedButton === -1){
99
+
// shortestDistance = dis;
100
+
// selectedButton = indx;
101
+
// } else if(shortestDistance > dis){
102
+
// shortestDistance = dis;
103
+
// selectedButton = indx;
104
+
// }
105
+
// })
105
106
106
-
currentButton = selectedButton;
107
-
} else if(lastClickedButton != -1){
108
-
currentButton = lastClickedButton;
109
-
lastClickedButton = -1
110
-
}
111
-
}
112
-
})
107
+
// currentButton = selectedButton;
108
+
// } else if(lastClickedButton != -1){
109
+
// currentButton = lastClickedButton;
110
+
// lastClickedButton = -1
111
+
// }
112
+
// }
113
+
// })
113
114
114
-
sliderBar.addEventListener('mousedown', ( e: MouseEvent ) => {
115
-
sliderMouseDown = true;
116
-
mouseStartX = e.clientX;
117
-
});
115
+
// sliderBar.addEventListener('mousedown', ( e: MouseEvent ) => {
116
+
// sliderMouseDown = true;
117
+
// mouseStartX = e.clientX;
118
+
// });
118
119
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
-
})
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
+
// })
126
127
127
-
window.addEventListener('mouseup', ( e: MouseEvent ) => {
128
-
if(sliderMouseDown){
129
-
sliderPos = sliderPos - (mouseStartX - e.clientX);
128
+
// window.addEventListener('mouseup', ( e: MouseEvent ) => {
129
+
// if(sliderMouseDown){
130
+
// sliderPos = sliderPos - (mouseStartX - e.clientX);
130
131
131
-
anime.set(sliderBar, { translateX: sliderPos - (mouseStartX - e.clientX) });
132
-
sliderMouseDown = false;
132
+
// utils.set(sliderBar, { translateX: sliderPos - (mouseStartX - e.clientX) });
133
+
// sliderMouseDown = false;
133
134
134
-
if(Math.abs(mouseStartX - e.clientX) > 50){
135
-
let shortestDistance = 0;
136
-
let selectedButton = -1;
135
+
// if(Math.abs(mouseStartX - e.clientX) > 50){
136
+
// let shortestDistance = 0;
137
+
// let selectedButton = -1;
137
138
138
-
buttons.forEach(( pos, indx ) => {
139
-
let dis = Math.abs(sliderPos - (width / 2 - pos));
139
+
// buttons.forEach(( pos, indx ) => {
140
+
// let dis = Math.abs(sliderPos - (width / 2 - pos));
140
141
141
-
if(selectedButton === -1){
142
-
shortestDistance = dis;
143
-
selectedButton = indx;
144
-
} else if(shortestDistance > dis){
145
-
shortestDistance = dis;
146
-
selectedButton = indx;
147
-
}
148
-
})
142
+
// if(selectedButton === -1){
143
+
// shortestDistance = dis;
144
+
// selectedButton = indx;
145
+
// } else if(shortestDistance > dis){
146
+
// shortestDistance = dis;
147
+
// selectedButton = indx;
148
+
// }
149
+
// })
149
150
150
-
currentButton = selectedButton;
151
-
} else if(lastClickedButton != -1){
152
-
currentButton = lastClickedButton;
153
-
lastClickedButton = -1
154
-
}
155
-
}
156
-
})
151
+
// currentButton = selectedButton;
152
+
// } else if(lastClickedButton != -1){
153
+
// currentButton = lastClickedButton;
154
+
// lastClickedButton = -1
155
+
// }
156
+
// }
157
+
// })
157
158
158
-
window.addEventListener('resize', () => {
159
-
width = window.innerWidth;
160
-
sliderPos = width / 2 - buttons[currentButton];
161
-
sliderScale = width / (buttons[1] - buttons[0]);
159
+
// window.addEventListener('resize', () => {
160
+
// width = window.innerWidth;
161
+
// sliderPos = width / 2 - buttons[currentButton];
162
+
// sliderScale = width / (buttons[1] - buttons[0]);
162
163
163
-
anime.set(sliderBar, { translateX: sliderPos });
164
-
})
164
+
// utils.set(sliderBar, { translateX: sliderPos });
165
+
// })
165
166
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
-
})
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
+
// })
175
176
})
176
177
177
178
onCleanup(() => {
···
180
181
181
182
return (
182
183
<div class="settings">
183
-
<div class="settings-container" ref={( el ) => settingsContainer = el}>
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">
184
201
<div class="settings-block">
185
202
<h1>Storage Settings</h1>
186
203
<p>{ window.PhotoManager.PhotoCount() } Photos ({ bytesToFormatted(window.PhotoManager.PhotoSize(), 0) })</p>
···
199
216
200
217
<label for="start-in-bg-check">
201
218
<div class="selection-box">
202
-
<div class="icon" style={{ width: '10px', margin: '0', display: 'inline-flex' }}>
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>
223
+
</label>
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' }}>
203
241
<img draggable="false" width="10" height="10" src="/icon/check-solid.svg"></img>
204
242
</div>
205
243
</div>
···
223
261
224
262
<label for="start-with-win-check">
225
263
<div class="selection-box">
226
-
<div class="icon" style={{ width: '10px', margin: '0', display: 'inline-flex' }}>
264
+
<div class="icon-small" style={{ margin: '0', display: 'inline-flex' }}>
227
265
<img draggable="false" width="10" height="10" src="/icon/check-solid.svg"></img>
228
266
</div>
229
267
</div>
···
238
276
if(el.target.checked){
239
277
invoke('set_config_value_string', { key: 'transparent', value: 'true' });
240
278
241
-
anime({ targets: document.body, background: 'rgba(0, 0, 0, 0.5)', easing: 'linear', duration: 100 });
242
-
anime({ targets: '.settings', background: 'rgba(0, 0, 0, 0.5)', easing: 'linear', duration: 100 });
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 });
243
281
} else{
244
282
invoke('set_config_value_string', { key: 'transparent', value: 'false' });
245
283
246
-
anime({ targets: document.body, background: 'rgba(0, 0, 0, 1)', easing: 'linear', duration: 100 });
247
-
anime({ targets: '.settings', background: 'rgba(0, 0, 0, 0)', easing: 'linear', duration: 100 });
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 });
248
286
}
249
287
}} />
250
288
Window Transparency
251
289
252
290
<label for="transparent-check">
253
291
<div class="selection-box">
254
-
<div class="icon" style={{ width: '10px', margin: '0', display: 'inline-flex' }}>
292
+
<div class="icon-small" style={{ margin: '0', display: 'inline-flex' }}>
255
293
<img draggable="false" width="10" height="10" src="/icon/check-solid.svg"></img>
256
294
</div>
257
295
</div>
···
276
314
</span>
277
315
<span style={{ display: 'none' }} ref={( el ) => finalPathConfirm = el}>
278
316
<span class="path" style={{ color: 'green' }} onClick={async () => {
279
-
finalPathPreviousData = finalPathData;
280
-
finalPathConfirm.style.display = 'none';
317
+
let changed = await invoke('change_final_path', { newPath: finalPathData });
281
318
282
-
await invoke('change_final_path', { newPath: finalPathData });
283
-
await invoke('relaunch');
319
+
if(changed){
320
+
finalPathPreviousData = finalPathData;
321
+
finalPathConfirm.style.display = 'none';
284
322
285
-
anime({
286
-
targets: '.settings',
287
-
opacity: 0,
288
-
translateX: '500px',
289
-
easing: 'easeInOutQuad',
290
-
duration: 250,
291
-
complete: () => {
292
-
anime.set('.settings', { display: 'none' });
293
-
}
294
-
})
323
+
window.location.reload();
295
324
296
-
window.location.reload();
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
+
}
297
337
}}>
298
338
Save
299
339
</span>
···
316
356
<br />
317
357
<p>VRChat Photo Manager supports photos with extra metadata provided by VRCX.</p>
318
358
</div>
319
-
<div class="settings-block">
320
-
<p>WIP</p>
321
-
</div>
322
359
</div>
323
360
324
-
<div class="slide-bar-tri"></div>
361
+
{/* <div class="slide-bar-tri"></div>
325
362
<div class="slide-bar">
326
363
<div class="inner-slide-bar" ref={( el ) => sliderBar = el}>
327
364
<div class="slider-dot"></div>
···
339
376
<div class="slider-dot"></div>
340
377
<div class="slider-dot"></div>
341
378
</div>
342
-
</div>
379
+
</div> */}
343
380
</div>
344
381
)
345
382
}
+43
-16
src/Components/Structs/Photo.ts
+43
-16
src/Components/Structs/Photo.ts
···
6
6
export class Photo{
7
7
path: string;
8
8
loaded: boolean = false;
9
+
loadingMeta: boolean = false;
9
10
loading: boolean = false;
10
11
metaLoaded: boolean = false;
11
12
image?: HTMLCanvasElement;
···
14
15
height?: number;
15
16
loadingRotate: number = 0;
16
17
metadata: any;
18
+
19
+
error: boolean = false;
17
20
18
21
frames: number = 0;
19
22
shown: boolean = false;
···
29
32
legacy: boolean = false;
30
33
index: number = 0;
31
34
35
+
splitPath: string[];
36
+
37
+
playerLayer: Photo | null = null;
38
+
environmentLayer: Photo | null = null;
39
+
isMultiLayer = false;
40
+
32
41
public onMetaLoaded: () => void = () => {};
33
42
34
43
constructor( path: string, isLegacy: boolean = false, i: number ){
···
37
46
this.index = i;
38
47
39
48
let split = this.path.split('_');
49
+
this.splitPath = split;
40
50
41
51
if(this.legacy)
42
52
this.dateString = split[2];
43
53
else
44
54
this.dateString = split[1];
45
55
56
+
let timeString;
57
+
if(this.legacy)
58
+
timeString = split[3];
59
+
else
60
+
timeString = split[2];
61
+
46
62
let splitDateString = this.dateString.split('-');
63
+
let splitTimeString = timeString.split('-');
47
64
48
65
this.date = new Date();
49
66
···
51
68
this.date.setMonth(parseInt(splitDateString[1]));
52
69
this.date.setDate(parseInt(splitDateString[2]));
53
70
54
-
let resSplit = split[3].split('x');
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;
55
87
56
-
let width = parseInt(resSplit[0]);
57
-
let height = parseInt(resSplit[1]);
88
+
// let scale = Vars.PHOTO_HEIGHT / this.height;
58
89
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
-
}
90
+
// this.scaledWidth = this.width * scale;
91
+
// this.scaledHeight = Vars.PHOTO_HEIGHT;
92
+
// }
68
93
}
69
94
70
95
loadMeta(){
96
+
this.loadingMeta = true;
71
97
invoke('load_photo_meta', { photo: this.path });
72
98
}
73
99
74
100
loadImage(){
75
-
if(this.loading || this.loaded || imagesLoading >= Vars.MAX_IMAGE_LOAD)return;
76
-
77
-
// this.loadMeta();
101
+
if(this.loadingMeta || this.loading || this.loaded || imagesLoading >= Vars.MAX_IMAGE_LOAD)return;
78
102
if(!this.metaLoaded)return this.loadMeta();
79
103
80
104
this.loading = true;
81
-
82
105
imagesLoading++;
83
106
84
107
this.image = document.createElement('canvas');
···
98
121
this.loading = false;
99
122
100
123
imagesLoading--;
124
+
}
125
+
126
+
this.imageEl.onerror = () => {
127
+
console.log('Cannot load image');
101
128
}
102
129
}
103
130
}
+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
3
4
4
declare global{
5
5
interface Window {
6
-
AccountManager: AccountManager;
7
6
LoadingManager: LoadingManager;
8
7
PhotoManager: PhotoManager;
9
8
ConfirmationBoxManager: ConfirmationBoxManager;
10
9
PhotoViewerManager: PhotoViewerManager;
11
10
WorldCacheManager: WorldCacheManager;
12
11
PhotoListRenderingManager: PhotoListRenderingManager;
13
-
SyncManager: SyncManager;
14
12
ViewManager: ViewManager;
15
13
16
14
CloseAllPopups: (() => void)[];
···
23
21
24
22
window.oncontextmenu = ( e ) => e.preventDefault();
25
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
+
26
32
import "./styles.css";
33
+
27
34
import App from "./Components/App";
28
35
import { invoke } from "@tauri-apps/api/core";
29
36
30
-
import { AccountManager } from "./Components/Managers/AccountManager";
31
37
import { LoadingManager } from "./Components/Managers/LoadingManager";
32
38
import { PhotoManager } from "./Components/Managers/PhotoManager";
33
39
import { ConfirmationBoxManager } from "./Components/Managers/ConfirmationBoxManager";
34
40
import { PhotoViewerManager } from "./Components/Managers/PhotoViewerManager";
35
41
import { WorldCacheManager } from "./Components/Managers/WorldCacheManager";
36
42
import { PhotoListRenderingManager } from "./Components/Managers/PhotoListRenderingManager";
37
-
import { SyncManager } from "./Components/Managers/SyncManager";
38
43
import { ViewManager } from "./Components/Managers/ViewManager";
39
44
40
-
window.AccountManager = new AccountManager();
41
45
window.LoadingManager = new LoadingManager();
42
46
window.PhotoManager = new PhotoManager();
43
47
window.ConfirmationBoxManager = new ConfirmationBoxManager();
44
48
window.PhotoViewerManager = new PhotoViewerManager();
45
49
window.WorldCacheManager = new WorldCacheManager();
46
50
window.PhotoListRenderingManager = new PhotoListRenderingManager();
47
-
window.SyncManager = new SyncManager();
48
51
window.ViewManager = new ViewManager();
49
52
50
53
(async () => {
+11
-768
src/styles.css
+11
-768
src/styles.css
···
7
7
background: #000;
8
8
margin: 0;
9
9
font-family: Rubik, 'Courier New';
10
+
overflow: hidden;
11
+
}
12
+
13
+
* {
14
+
box-sizing: border-box;
10
15
}
11
16
12
17
.loading{
···
24
29
align-items: center;
25
30
}
26
31
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
32
.confirmation-box{
487
33
position: fixed;
488
34
top: 0;
···
490
36
width: 100%;
491
37
height: 100%;
492
38
z-index: 15;
493
-
background: #0005;
39
+
background: rgba(0, 0, 0, 0.76);
494
40
transition: 0.25s;
495
-
backdrop-filter: blur(10px);
496
-
-webkit-backdrop-filter: blur(10px);
497
41
}
498
42
499
43
.confirmation-box-container{
···
553
97
box-shadow: #000a inset 0 0 10px;
554
98
}
555
99
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;
100
+
img{
101
+
max-width: 100%;
102
+
max-height: 100%;
566
103
}
567
104
568
-
.copy-notif{
105
+
.error-notif{
569
106
position: fixed;
570
107
top: 40px;
571
108
left: 50%;
572
109
color: white;
573
110
transform: translateX(-50%) translateY(-100px);
574
-
background: #8885;
111
+
background: rgba(43, 43, 43, 0.76);
575
112
padding: 10px 40px;
576
113
backdrop-filter: blur(10px);
577
114
-webkit-backdrop-filter: blur(10px);
···
580
117
z-index: 12;
581
118
opacity: 0;
582
119
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
120
}
+917
-1002
src-tauri/Cargo.lock
+917
-1002
src-tauri/Cargo.lock
···
4
4
5
5
[[package]]
6
6
name = "VRChatPhotoManager"
7
-
version = "0.2.5"
7
+
version = "0.2.7"
8
8
dependencies = [
9
9
"arboard",
10
-
"dirs 5.0.1",
10
+
"dirs",
11
11
"fast_image_resize",
12
12
"image",
13
13
"mslnk",
···
19
19
"serde_json",
20
20
"tauri",
21
21
"tauri-build",
22
-
"tauri-plugin-deep-link",
23
22
"tauri-plugin-http",
24
23
"tauri-plugin-process",
25
24
"tauri-plugin-shell",
···
27
26
]
28
27
29
28
[[package]]
30
-
name = "addr2line"
31
-
version = "0.24.2"
32
-
source = "registry+https://github.com/rust-lang/crates.io-index"
33
-
checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
34
-
dependencies = [
35
-
"gimli",
36
-
]
37
-
38
-
[[package]]
39
29
name = "adler2"
40
30
version = "2.0.1"
41
31
source = "registry+https://github.com/rust-lang/crates.io-index"
···
43
33
44
34
[[package]]
45
35
name = "aho-corasick"
46
-
version = "1.1.3"
36
+
version = "1.1.4"
47
37
source = "registry+https://github.com/rust-lang/crates.io-index"
48
-
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
38
+
checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
49
39
dependencies = [
50
40
"memchr",
51
41
]
···
75
65
]
76
66
77
67
[[package]]
78
-
name = "android-tzdata"
79
-
version = "0.1.1"
80
-
source = "registry+https://github.com/rust-lang/crates.io-index"
81
-
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
82
-
83
-
[[package]]
84
68
name = "android_system_properties"
85
69
version = "0.1.5"
86
70
source = "registry+https://github.com/rust-lang/crates.io-index"
···
91
75
92
76
[[package]]
93
77
name = "anyhow"
94
-
version = "1.0.98"
78
+
version = "1.0.100"
95
79
source = "registry+https://github.com/rust-lang/crates.io-index"
96
-
checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"
80
+
checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
97
81
98
82
[[package]]
99
83
name = "arbitrary"
100
-
version = "1.4.1"
84
+
version = "1.4.2"
101
85
source = "registry+https://github.com/rust-lang/crates.io-index"
102
-
checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223"
86
+
checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1"
103
87
104
88
[[package]]
105
89
name = "arboard"
106
-
version = "3.6.0"
90
+
version = "3.6.1"
107
91
source = "registry+https://github.com/rust-lang/crates.io-index"
108
-
checksum = "55f533f8e0af236ffe5eb979b99381df3258853f00ba2e44b6e1955292c75227"
92
+
checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf"
109
93
dependencies = [
110
94
"clipboard-win",
111
95
"image",
112
96
"log",
113
-
"objc2 0.6.1",
97
+
"objc2 0.6.3",
114
98
"objc2-app-kit",
115
99
"objc2-core-foundation",
116
100
"objc2-core-graphics",
117
-
"objc2-foundation 0.3.1",
101
+
"objc2-foundation 0.3.2",
118
102
"parking_lot",
119
103
"percent-encoding",
120
-
"windows-sys 0.59.0",
104
+
"windows-sys 0.60.2",
121
105
"x11rb",
122
106
]
123
107
···
129
113
dependencies = [
130
114
"proc-macro2",
131
115
"quote",
132
-
"syn 2.0.104",
116
+
"syn 2.0.109",
133
117
]
134
118
135
119
[[package]]
···
164
148
165
149
[[package]]
166
150
name = "async-executor"
167
-
version = "1.13.2"
151
+
version = "1.13.3"
168
152
source = "registry+https://github.com/rust-lang/crates.io-index"
169
-
checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa"
153
+
checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8"
170
154
dependencies = [
171
155
"async-task",
172
156
"concurrent-queue",
···
177
161
]
178
162
179
163
[[package]]
180
-
name = "async-fs"
181
-
version = "2.1.3"
182
-
source = "registry+https://github.com/rust-lang/crates.io-index"
183
-
checksum = "09f7e37c0ed80b2a977691c47dae8625cfb21e205827106c64f7c588766b2e50"
184
-
dependencies = [
185
-
"async-lock",
186
-
"blocking",
187
-
"futures-lite",
188
-
]
189
-
190
-
[[package]]
191
164
name = "async-io"
192
-
version = "2.5.0"
165
+
version = "2.6.0"
193
166
source = "registry+https://github.com/rust-lang/crates.io-index"
194
-
checksum = "19634d6336019ef220f09fd31168ce5c184b295cbf80345437cc36094ef223ca"
167
+
checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc"
195
168
dependencies = [
196
-
"async-lock",
169
+
"autocfg",
197
170
"cfg-if",
198
171
"concurrent-queue",
199
172
"futures-io",
200
173
"futures-lite",
201
174
"parking",
202
175
"polling",
203
-
"rustix 1.0.8",
176
+
"rustix",
204
177
"slab",
205
-
"windows-sys 0.60.2",
178
+
"windows-sys 0.61.2",
206
179
]
207
180
208
181
[[package]]
209
182
name = "async-lock"
210
-
version = "3.4.0"
183
+
version = "3.4.1"
211
184
source = "registry+https://github.com/rust-lang/crates.io-index"
212
-
checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
185
+
checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc"
213
186
dependencies = [
214
187
"event-listener",
215
188
"event-listener-strategy",
···
218
191
219
192
[[package]]
220
193
name = "async-process"
221
-
version = "2.4.0"
194
+
version = "2.5.0"
222
195
source = "registry+https://github.com/rust-lang/crates.io-index"
223
-
checksum = "65daa13722ad51e6ab1a1b9c01299142bc75135b337923cfa10e79bbbd669f00"
196
+
checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75"
224
197
dependencies = [
225
198
"async-channel",
226
199
"async-io",
···
231
204
"cfg-if",
232
205
"event-listener",
233
206
"futures-lite",
234
-
"rustix 1.0.8",
207
+
"rustix",
235
208
]
236
209
237
210
[[package]]
···
242
215
dependencies = [
243
216
"proc-macro2",
244
217
"quote",
245
-
"syn 2.0.104",
218
+
"syn 2.0.109",
246
219
]
247
220
248
221
[[package]]
249
222
name = "async-signal"
250
-
version = "0.2.12"
223
+
version = "0.2.13"
251
224
source = "registry+https://github.com/rust-lang/crates.io-index"
252
-
checksum = "f567af260ef69e1d52c2b560ce0ea230763e6fbb9214a85d768760a920e3e3c1"
225
+
checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c"
253
226
dependencies = [
254
227
"async-io",
255
228
"async-lock",
···
257
230
"cfg-if",
258
231
"futures-core",
259
232
"futures-io",
260
-
"rustix 1.0.8",
233
+
"rustix",
261
234
"signal-hook-registry",
262
235
"slab",
263
-
"windows-sys 0.60.2",
236
+
"windows-sys 0.61.2",
264
237
]
265
238
266
239
[[package]]
···
271
244
272
245
[[package]]
273
246
name = "async-trait"
274
-
version = "0.1.88"
247
+
version = "0.1.89"
275
248
source = "registry+https://github.com/rust-lang/crates.io-index"
276
-
checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5"
249
+
checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
277
250
dependencies = [
278
251
"proc-macro2",
279
252
"quote",
280
-
"syn 2.0.104",
253
+
"syn 2.0.109",
281
254
]
282
255
283
256
[[package]]
···
317
290
318
291
[[package]]
319
292
name = "av1-grain"
320
-
version = "0.2.4"
293
+
version = "0.2.5"
321
294
source = "registry+https://github.com/rust-lang/crates.io-index"
322
-
checksum = "4f3efb2ca85bc610acfa917b5aaa36f3fcbebed5b3182d7f877b02531c4b80c8"
295
+
checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8"
323
296
dependencies = [
324
297
"anyhow",
325
298
"arrayvec",
···
331
304
332
305
[[package]]
333
306
name = "avif-serialize"
334
-
version = "0.8.5"
307
+
version = "0.8.6"
335
308
source = "registry+https://github.com/rust-lang/crates.io-index"
336
-
checksum = "2ea8ef51aced2b9191c08197f55450d830876d9933f8f48a429b354f1d496b42"
309
+
checksum = "47c8fbc0f831f4519fe8b810b6a7a91410ec83031b8233f730a0480029f6a23f"
337
310
dependencies = [
338
311
"arrayvec",
339
312
]
340
313
341
314
[[package]]
342
-
name = "backtrace"
343
-
version = "0.3.75"
344
-
source = "registry+https://github.com/rust-lang/crates.io-index"
345
-
checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002"
346
-
dependencies = [
347
-
"addr2line",
348
-
"cfg-if",
349
-
"libc",
350
-
"miniz_oxide",
351
-
"object",
352
-
"rustc-demangle",
353
-
"windows-targets 0.52.6",
354
-
]
355
-
356
-
[[package]]
357
315
name = "base64"
358
316
version = "0.21.7"
359
317
source = "registry+https://github.com/rust-lang/crates.io-index"
···
367
325
368
326
[[package]]
369
327
name = "bit_field"
370
-
version = "0.10.2"
328
+
version = "0.10.3"
371
329
source = "registry+https://github.com/rust-lang/crates.io-index"
372
-
checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61"
330
+
checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6"
373
331
374
332
[[package]]
375
333
name = "bitflags"
···
379
337
380
338
[[package]]
381
339
name = "bitflags"
382
-
version = "2.9.1"
340
+
version = "2.10.0"
383
341
source = "registry+https://github.com/rust-lang/crates.io-index"
384
-
checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
342
+
checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
385
343
dependencies = [
386
-
"serde",
344
+
"serde_core",
387
345
]
388
346
389
347
[[package]]
···
412
370
413
371
[[package]]
414
372
name = "block2"
415
-
version = "0.6.1"
373
+
version = "0.6.2"
416
374
source = "registry+https://github.com/rust-lang/crates.io-index"
417
-
checksum = "340d2f0bdb2a43c1d3cd40513185b2bd7def0aa1052f956455114bc98f82dcf2"
375
+
checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5"
418
376
dependencies = [
419
-
"objc2 0.6.1",
377
+
"objc2 0.6.3",
420
378
]
421
379
422
380
[[package]]
···
434
392
435
393
[[package]]
436
394
name = "brotli"
437
-
version = "8.0.1"
395
+
version = "8.0.2"
438
396
source = "registry+https://github.com/rust-lang/crates.io-index"
439
-
checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d"
397
+
checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560"
440
398
dependencies = [
441
399
"alloc-no-stdlib",
442
400
"alloc-stdlib",
···
467
425
468
426
[[package]]
469
427
name = "bytemuck"
470
-
version = "1.23.1"
428
+
version = "1.24.0"
471
429
source = "registry+https://github.com/rust-lang/crates.io-index"
472
-
checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422"
430
+
checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4"
473
431
474
432
[[package]]
475
433
name = "byteorder"
···
498
456
source = "registry+https://github.com/rust-lang/crates.io-index"
499
457
checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2"
500
458
dependencies = [
501
-
"bitflags 2.9.1",
459
+
"bitflags 2.10.0",
502
460
"cairo-sys-rs",
503
461
"glib",
504
462
"libc",
···
519
477
520
478
[[package]]
521
479
name = "camino"
522
-
version = "1.1.10"
480
+
version = "1.2.1"
523
481
source = "registry+https://github.com/rust-lang/crates.io-index"
524
-
checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab"
482
+
checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609"
525
483
dependencies = [
526
-
"serde",
484
+
"serde_core",
527
485
]
528
486
529
487
[[package]]
···
546
504
"semver",
547
505
"serde",
548
506
"serde_json",
549
-
"thiserror 2.0.12",
507
+
"thiserror 2.0.17",
550
508
]
551
509
552
510
[[package]]
···
556
514
checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77"
557
515
dependencies = [
558
516
"serde",
559
-
"toml 0.9.4",
517
+
"toml 0.9.8",
560
518
]
561
519
562
520
[[package]]
563
521
name = "cc"
564
-
version = "1.2.30"
522
+
version = "1.2.45"
565
523
source = "registry+https://github.com/rust-lang/crates.io-index"
566
-
checksum = "deec109607ca693028562ed836a5f1c4b8bd77755c4e132fc5ce11b0b6211ae7"
524
+
checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe"
567
525
dependencies = [
526
+
"find-msvc-tools",
568
527
"jobserver",
569
528
"libc",
570
529
"shlex",
···
599
558
600
559
[[package]]
601
560
name = "cfg-if"
602
-
version = "1.0.1"
561
+
version = "1.0.4"
603
562
source = "registry+https://github.com/rust-lang/crates.io-index"
604
-
checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268"
563
+
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
605
564
606
565
[[package]]
607
566
name = "cfg_aliases"
···
611
570
612
571
[[package]]
613
572
name = "chrono"
614
-
version = "0.4.41"
573
+
version = "0.4.42"
615
574
source = "registry+https://github.com/rust-lang/crates.io-index"
616
-
checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d"
575
+
checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2"
617
576
dependencies = [
618
-
"android-tzdata",
619
577
"iana-time-zone",
620
578
"num-traits",
621
579
"serde",
622
-
"windows-link",
580
+
"windows-link 0.2.1",
623
581
]
624
582
625
583
[[package]]
···
743
701
source = "registry+https://github.com/rust-lang/crates.io-index"
744
702
checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1"
745
703
dependencies = [
746
-
"bitflags 2.9.1",
704
+
"bitflags 2.10.0",
747
705
"core-foundation 0.10.1",
748
706
"core-graphics-types",
749
707
"foreign-types 0.5.0",
···
756
714
source = "registry+https://github.com/rust-lang/crates.io-index"
757
715
checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
758
716
dependencies = [
759
-
"bitflags 2.9.1",
717
+
"bitflags 2.10.0",
760
718
"core-foundation 0.10.1",
761
719
"libc",
762
720
]
···
853
811
checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
854
812
dependencies = [
855
813
"quote",
856
-
"syn 2.0.104",
814
+
"syn 2.0.109",
857
815
]
858
816
859
817
[[package]]
···
863
821
checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501"
864
822
dependencies = [
865
823
"quote",
866
-
"syn 2.0.104",
824
+
"syn 2.0.109",
867
825
]
868
826
869
827
[[package]]
870
828
name = "darling"
871
-
version = "0.20.11"
829
+
version = "0.21.3"
872
830
source = "registry+https://github.com/rust-lang/crates.io-index"
873
-
checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee"
831
+
checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0"
874
832
dependencies = [
875
833
"darling_core",
876
834
"darling_macro",
···
878
836
879
837
[[package]]
880
838
name = "darling_core"
881
-
version = "0.20.11"
839
+
version = "0.21.3"
882
840
source = "registry+https://github.com/rust-lang/crates.io-index"
883
-
checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e"
841
+
checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4"
884
842
dependencies = [
885
843
"fnv",
886
844
"ident_case",
887
845
"proc-macro2",
888
846
"quote",
889
847
"strsim",
890
-
"syn 2.0.104",
848
+
"syn 2.0.109",
891
849
]
892
850
893
851
[[package]]
894
852
name = "darling_macro"
895
-
version = "0.20.11"
853
+
version = "0.21.3"
896
854
source = "registry+https://github.com/rust-lang/crates.io-index"
897
-
checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
855
+
checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81"
898
856
dependencies = [
899
857
"darling_core",
900
858
"quote",
901
-
"syn 2.0.104",
859
+
"syn 2.0.109",
902
860
]
903
861
904
862
[[package]]
905
863
name = "data-url"
906
-
version = "0.3.1"
864
+
version = "0.3.2"
907
865
source = "registry+https://github.com/rust-lang/crates.io-index"
908
-
checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a"
866
+
checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376"
909
867
910
868
[[package]]
911
869
name = "deranged"
912
-
version = "0.4.0"
870
+
version = "0.5.5"
913
871
source = "registry+https://github.com/rust-lang/crates.io-index"
914
-
checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e"
872
+
checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587"
915
873
dependencies = [
916
874
"powerfmt",
917
-
"serde",
918
-
]
919
-
920
-
[[package]]
921
-
name = "derivative"
922
-
version = "2.2.0"
923
-
source = "registry+https://github.com/rust-lang/crates.io-index"
924
-
checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
925
-
dependencies = [
926
-
"proc-macro2",
927
-
"quote",
928
-
"syn 1.0.109",
875
+
"serde_core",
929
876
]
930
877
931
878
[[package]]
···
938
885
"proc-macro2",
939
886
"quote",
940
887
"rustc_version",
941
-
"syn 2.0.104",
888
+
"syn 2.0.109",
942
889
]
943
890
944
891
[[package]]
···
953
900
954
901
[[package]]
955
902
name = "dirs"
956
-
version = "5.0.1"
957
-
source = "registry+https://github.com/rust-lang/crates.io-index"
958
-
checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
959
-
dependencies = [
960
-
"dirs-sys 0.4.1",
961
-
]
962
-
963
-
[[package]]
964
-
name = "dirs"
965
903
version = "6.0.0"
966
904
source = "registry+https://github.com/rust-lang/crates.io-index"
967
905
checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
968
906
dependencies = [
969
-
"dirs-sys 0.5.0",
970
-
]
971
-
972
-
[[package]]
973
-
name = "dirs-sys"
974
-
version = "0.4.1"
975
-
source = "registry+https://github.com/rust-lang/crates.io-index"
976
-
checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
977
-
dependencies = [
978
-
"libc",
979
-
"option-ext",
980
-
"redox_users 0.4.6",
981
-
"windows-sys 0.48.0",
907
+
"dirs-sys",
982
908
]
983
909
984
910
[[package]]
···
989
915
dependencies = [
990
916
"libc",
991
917
"option-ext",
992
-
"redox_users 0.5.2",
993
-
"windows-sys 0.60.2",
918
+
"redox_users",
919
+
"windows-sys 0.61.2",
994
920
]
995
921
996
922
[[package]]
···
1005
931
source = "registry+https://github.com/rust-lang/crates.io-index"
1006
932
checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec"
1007
933
dependencies = [
1008
-
"bitflags 2.9.1",
1009
-
"objc2 0.6.1",
934
+
"bitflags 2.10.0",
935
+
"objc2 0.6.3",
1010
936
]
1011
937
1012
938
[[package]]
···
1017
943
dependencies = [
1018
944
"proc-macro2",
1019
945
"quote",
1020
-
"syn 2.0.104",
946
+
"syn 2.0.109",
1021
947
]
1022
948
1023
949
[[package]]
1024
950
name = "dlopen2"
1025
-
version = "0.7.0"
951
+
version = "0.8.0"
1026
952
source = "registry+https://github.com/rust-lang/crates.io-index"
1027
-
checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6"
953
+
checksum = "b54f373ccf864bf587a89e880fb7610f8d73f3045f13580948ccbcaff26febff"
1028
954
dependencies = [
1029
955
"dlopen2_derive",
1030
956
"libc",
···
1040
966
dependencies = [
1041
967
"proc-macro2",
1042
968
"quote",
1043
-
"syn 2.0.104",
969
+
"syn 2.0.109",
1044
970
]
1045
971
1046
972
[[package]]
···
1054
980
1055
981
[[package]]
1056
982
name = "document-features"
1057
-
version = "0.2.11"
983
+
version = "0.2.12"
1058
984
source = "registry+https://github.com/rust-lang/crates.io-index"
1059
-
checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d"
985
+
checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61"
1060
986
dependencies = [
1061
987
"litrs",
1062
988
]
···
1105
1031
1106
1032
[[package]]
1107
1033
name = "embed-resource"
1108
-
version = "3.0.5"
1034
+
version = "3.0.6"
1109
1035
source = "registry+https://github.com/rust-lang/crates.io-index"
1110
-
checksum = "4c6d81016d6c977deefb2ef8d8290da019e27cc26167e102185da528e6c0ab38"
1036
+
checksum = "55a075fc573c64510038d7ee9abc7990635863992f83ebc52c8b433b8411a02e"
1111
1037
dependencies = [
1112
1038
"cc",
1113
1039
"memchr",
1114
1040
"rustc_version",
1115
-
"toml 0.9.4",
1041
+
"toml 0.9.8",
1116
1042
"vswhom",
1117
1043
"winreg",
1118
1044
]
···
1156
1082
dependencies = [
1157
1083
"proc-macro2",
1158
1084
"quote",
1159
-
"syn 2.0.104",
1085
+
"syn 2.0.109",
1160
1086
]
1161
1087
1162
1088
[[package]]
···
1176
1102
dependencies = [
1177
1103
"proc-macro2",
1178
1104
"quote",
1179
-
"syn 2.0.104",
1105
+
"syn 2.0.109",
1180
1106
]
1181
1107
1182
1108
[[package]]
···
1187
1113
1188
1114
[[package]]
1189
1115
name = "erased-serde"
1190
-
version = "0.4.6"
1116
+
version = "0.4.9"
1191
1117
source = "registry+https://github.com/rust-lang/crates.io-index"
1192
-
checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7"
1118
+
checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3"
1193
1119
dependencies = [
1194
1120
"serde",
1121
+
"serde_core",
1195
1122
"typeid",
1196
1123
]
1197
1124
1198
1125
[[package]]
1199
1126
name = "errno"
1200
-
version = "0.3.13"
1127
+
version = "0.3.14"
1201
1128
source = "registry+https://github.com/rust-lang/crates.io-index"
1202
-
checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad"
1129
+
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
1203
1130
dependencies = [
1204
1131
"libc",
1205
-
"windows-sys 0.60.2",
1132
+
"windows-sys 0.61.2",
1206
1133
]
1207
1134
1208
1135
[[package]]
···
1213
1140
1214
1141
[[package]]
1215
1142
name = "event-listener"
1216
-
version = "5.4.0"
1143
+
version = "5.4.1"
1217
1144
source = "registry+https://github.com/rust-lang/crates.io-index"
1218
-
checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae"
1145
+
checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab"
1219
1146
dependencies = [
1220
1147
"concurrent-queue",
1221
1148
"parking",
···
1249
1176
1250
1177
[[package]]
1251
1178
name = "fast_image_resize"
1252
-
version = "4.2.3"
1179
+
version = "5.3.0"
1253
1180
source = "registry+https://github.com/rust-lang/crates.io-index"
1254
-
checksum = "43e5ce628b529e9bd2e2f378c1193215104b526fd494a572aa23414adc4e5553"
1181
+
checksum = "1bd1eda71e8af93f8b00e189404235d82f4de77ea4a0d182b44a7f03994d647c"
1255
1182
dependencies = [
1256
1183
"bytemuck",
1257
1184
"cfg-if",
1258
1185
"document-features",
1259
1186
"image",
1260
1187
"num-traits",
1261
-
"thiserror 1.0.69",
1188
+
"thiserror 2.0.17",
1262
1189
]
1263
1190
1264
1191
[[package]]
···
1268
1195
checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
1269
1196
1270
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]]
1271
1218
name = "fdeflate"
1272
1219
version = "0.3.7"
1273
1220
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1287
1234
]
1288
1235
1289
1236
[[package]]
1290
-
name = "filetime"
1291
-
version = "0.2.25"
1237
+
name = "find-msvc-tools"
1238
+
version = "0.1.4"
1292
1239
source = "registry+https://github.com/rust-lang/crates.io-index"
1293
-
checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586"
1294
-
dependencies = [
1295
-
"cfg-if",
1296
-
"libc",
1297
-
"libredox",
1298
-
"windows-sys 0.59.0",
1299
-
]
1240
+
checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127"
1300
1241
1301
1242
[[package]]
1302
1243
name = "flate2"
1303
-
version = "1.1.2"
1244
+
version = "1.1.5"
1304
1245
source = "registry+https://github.com/rust-lang/crates.io-index"
1305
-
checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d"
1246
+
checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb"
1306
1247
dependencies = [
1307
1248
"crc32fast",
1308
1249
"miniz_oxide",
···
1341
1282
dependencies = [
1342
1283
"proc-macro2",
1343
1284
"quote",
1344
-
"syn 2.0.104",
1285
+
"syn 2.0.109",
1345
1286
]
1346
1287
1347
1288
[[package]]
···
1358
1299
1359
1300
[[package]]
1360
1301
name = "form_urlencoded"
1361
-
version = "1.2.1"
1302
+
version = "1.2.2"
1362
1303
source = "registry+https://github.com/rust-lang/crates.io-index"
1363
-
checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
1304
+
checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
1364
1305
dependencies = [
1365
1306
"percent-encoding",
1366
1307
]
···
1419
1360
1420
1361
[[package]]
1421
1362
name = "futures-lite"
1422
-
version = "2.6.0"
1363
+
version = "2.6.1"
1423
1364
source = "registry+https://github.com/rust-lang/crates.io-index"
1424
-
checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532"
1365
+
checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad"
1425
1366
dependencies = [
1426
1367
"fastrand",
1427
1368
"futures-core",
···
1438
1379
dependencies = [
1439
1380
"proc-macro2",
1440
1381
"quote",
1441
-
"syn 2.0.104",
1382
+
"syn 2.0.109",
1442
1383
]
1443
1384
1444
1385
[[package]]
···
1580
1521
1581
1522
[[package]]
1582
1523
name = "generic-array"
1583
-
version = "0.14.7"
1524
+
version = "0.14.9"
1584
1525
source = "registry+https://github.com/rust-lang/crates.io-index"
1585
-
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
1526
+
checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2"
1586
1527
dependencies = [
1587
1528
"typenum",
1588
1529
"version_check",
···
1590
1531
1591
1532
[[package]]
1592
1533
name = "gethostname"
1593
-
version = "0.4.3"
1534
+
version = "1.1.0"
1594
1535
source = "registry+https://github.com/rust-lang/crates.io-index"
1595
-
checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818"
1536
+
checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8"
1596
1537
dependencies = [
1597
-
"libc",
1598
-
"windows-targets 0.48.5",
1538
+
"rustix",
1539
+
"windows-link 0.2.1",
1599
1540
]
1600
1541
1601
1542
[[package]]
···
1624
1565
1625
1566
[[package]]
1626
1567
name = "getrandom"
1627
-
version = "0.3.3"
1568
+
version = "0.3.4"
1628
1569
source = "registry+https://github.com/rust-lang/crates.io-index"
1629
-
checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
1570
+
checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
1630
1571
dependencies = [
1631
1572
"cfg-if",
1632
1573
"js-sys",
1633
1574
"libc",
1634
1575
"r-efi",
1635
-
"wasi 0.14.2+wasi-0.2.4",
1576
+
"wasip2",
1636
1577
"wasm-bindgen",
1637
1578
]
1638
1579
···
1647
1588
]
1648
1589
1649
1590
[[package]]
1650
-
name = "gimli"
1651
-
version = "0.31.1"
1652
-
source = "registry+https://github.com/rust-lang/crates.io-index"
1653
-
checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
1654
-
1655
-
[[package]]
1656
1591
name = "gio"
1657
1592
version = "0.18.4"
1658
1593
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1690
1625
source = "registry+https://github.com/rust-lang/crates.io-index"
1691
1626
checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5"
1692
1627
dependencies = [
1693
-
"bitflags 2.9.1",
1628
+
"bitflags 2.10.0",
1694
1629
"futures-channel",
1695
1630
"futures-core",
1696
1631
"futures-executor",
···
1718
1653
"proc-macro-error",
1719
1654
"proc-macro2",
1720
1655
"quote",
1721
-
"syn 2.0.104",
1656
+
"syn 2.0.109",
1722
1657
]
1723
1658
1724
1659
[[package]]
···
1733
1668
1734
1669
[[package]]
1735
1670
name = "glob"
1736
-
version = "0.3.2"
1671
+
version = "0.3.3"
1737
1672
source = "registry+https://github.com/rust-lang/crates.io-index"
1738
-
checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2"
1673
+
checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
1739
1674
1740
1675
[[package]]
1741
1676
name = "gobject-sys"
···
1797
1732
"proc-macro-error",
1798
1733
"proc-macro2",
1799
1734
"quote",
1800
-
"syn 2.0.104",
1735
+
"syn 2.0.109",
1801
1736
]
1802
1737
1803
1738
[[package]]
1804
1739
name = "h2"
1805
-
version = "0.4.11"
1740
+
version = "0.4.12"
1806
1741
source = "registry+https://github.com/rust-lang/crates.io-index"
1807
-
checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785"
1742
+
checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386"
1808
1743
dependencies = [
1809
1744
"atomic-waker",
1810
1745
"bytes",
···
1812
1747
"futures-core",
1813
1748
"futures-sink",
1814
1749
"http",
1815
-
"indexmap 2.10.0",
1750
+
"indexmap 2.12.0",
1816
1751
"slab",
1817
1752
"tokio",
1818
1753
"tokio-util",
···
1821
1756
1822
1757
[[package]]
1823
1758
name = "half"
1824
-
version = "2.6.0"
1759
+
version = "2.7.1"
1825
1760
source = "registry+https://github.com/rust-lang/crates.io-index"
1826
-
checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9"
1761
+
checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b"
1827
1762
dependencies = [
1828
1763
"cfg-if",
1829
1764
"crunchy",
1765
+
"zerocopy",
1830
1766
]
1831
1767
1832
1768
[[package]]
···
1843
1779
1844
1780
[[package]]
1845
1781
name = "hashbrown"
1846
-
version = "0.15.4"
1782
+
version = "0.16.0"
1847
1783
source = "registry+https://github.com/rust-lang/crates.io-index"
1848
-
checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5"
1784
+
checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d"
1849
1785
1850
1786
[[package]]
1851
1787
name = "heck"
···
1925
1861
1926
1862
[[package]]
1927
1863
name = "hyper"
1928
-
version = "1.6.0"
1864
+
version = "1.7.0"
1929
1865
source = "registry+https://github.com/rust-lang/crates.io-index"
1930
-
checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80"
1866
+
checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e"
1931
1867
dependencies = [
1868
+
"atomic-waker",
1932
1869
"bytes",
1933
1870
"futures-channel",
1934
-
"futures-util",
1871
+
"futures-core",
1935
1872
"h2",
1936
1873
"http",
1937
1874
"http-body",
1938
1875
"httparse",
1939
1876
"itoa",
1940
1877
"pin-project-lite",
1878
+
"pin-utils",
1941
1879
"smallvec",
1942
1880
"tokio",
1943
1881
"want",
···
1978
1916
1979
1917
[[package]]
1980
1918
name = "hyper-util"
1981
-
version = "0.1.16"
1919
+
version = "0.1.17"
1982
1920
source = "registry+https://github.com/rust-lang/crates.io-index"
1983
-
checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e"
1921
+
checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8"
1984
1922
dependencies = [
1985
1923
"base64 0.22.1",
1986
1924
"bytes",
···
1994
1932
"libc",
1995
1933
"percent-encoding",
1996
1934
"pin-project-lite",
1997
-
"socket2 0.6.0",
1935
+
"socket2",
1998
1936
"system-configuration",
1999
1937
"tokio",
2000
1938
"tower-service",
···
2004
1942
2005
1943
[[package]]
2006
1944
name = "iana-time-zone"
2007
-
version = "0.1.63"
1945
+
version = "0.1.64"
2008
1946
source = "registry+https://github.com/rust-lang/crates.io-index"
2009
-
checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8"
1947
+
checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb"
2010
1948
dependencies = [
2011
1949
"android_system_properties",
2012
1950
"core-foundation-sys",
···
2014
1952
"js-sys",
2015
1953
"log",
2016
1954
"wasm-bindgen",
2017
-
"windows-core",
1955
+
"windows-core 0.62.2",
2018
1956
]
2019
1957
2020
1958
[[package]]
···
2033
1971
checksum = "cc50b891e4acf8fe0e71ef88ec43ad82ee07b3810ad09de10f1d01f072ed4b98"
2034
1972
dependencies = [
2035
1973
"byteorder",
2036
-
"png",
1974
+
"png 0.17.16",
2037
1975
]
2038
1976
2039
1977
[[package]]
2040
1978
name = "icu_collections"
2041
-
version = "2.0.0"
1979
+
version = "2.1.1"
2042
1980
source = "registry+https://github.com/rust-lang/crates.io-index"
2043
-
checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47"
1981
+
checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43"
2044
1982
dependencies = [
2045
1983
"displaydoc",
2046
1984
"potential_utf",
···
2051
1989
2052
1990
[[package]]
2053
1991
name = "icu_locale_core"
2054
-
version = "2.0.0"
1992
+
version = "2.1.1"
2055
1993
source = "registry+https://github.com/rust-lang/crates.io-index"
2056
-
checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a"
1994
+
checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6"
2057
1995
dependencies = [
2058
1996
"displaydoc",
2059
1997
"litemap",
···
2064
2002
2065
2003
[[package]]
2066
2004
name = "icu_normalizer"
2067
-
version = "2.0.0"
2005
+
version = "2.1.1"
2068
2006
source = "registry+https://github.com/rust-lang/crates.io-index"
2069
-
checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979"
2007
+
checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599"
2070
2008
dependencies = [
2071
-
"displaydoc",
2072
2009
"icu_collections",
2073
2010
"icu_normalizer_data",
2074
2011
"icu_properties",
···
2079
2016
2080
2017
[[package]]
2081
2018
name = "icu_normalizer_data"
2082
-
version = "2.0.0"
2019
+
version = "2.1.1"
2083
2020
source = "registry+https://github.com/rust-lang/crates.io-index"
2084
-
checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3"
2021
+
checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
2085
2022
2086
2023
[[package]]
2087
2024
name = "icu_properties"
2088
-
version = "2.0.1"
2025
+
version = "2.1.1"
2089
2026
source = "registry+https://github.com/rust-lang/crates.io-index"
2090
-
checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b"
2027
+
checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99"
2091
2028
dependencies = [
2092
-
"displaydoc",
2093
2029
"icu_collections",
2094
2030
"icu_locale_core",
2095
2031
"icu_properties_data",
2096
2032
"icu_provider",
2097
-
"potential_utf",
2098
2033
"zerotrie",
2099
2034
"zerovec",
2100
2035
]
2101
2036
2102
2037
[[package]]
2103
2038
name = "icu_properties_data"
2104
-
version = "2.0.1"
2039
+
version = "2.1.1"
2105
2040
source = "registry+https://github.com/rust-lang/crates.io-index"
2106
-
checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632"
2041
+
checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899"
2107
2042
2108
2043
[[package]]
2109
2044
name = "icu_provider"
2110
-
version = "2.0.0"
2045
+
version = "2.1.1"
2111
2046
source = "registry+https://github.com/rust-lang/crates.io-index"
2112
-
checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af"
2047
+
checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
2113
2048
dependencies = [
2114
2049
"displaydoc",
2115
2050
"icu_locale_core",
2116
-
"stable_deref_trait",
2117
-
"tinystr",
2118
2051
"writeable",
2119
2052
"yoke",
2120
2053
"zerofrom",
···
2130
2063
2131
2064
[[package]]
2132
2065
name = "idna"
2133
-
version = "1.0.3"
2066
+
version = "1.1.0"
2134
2067
source = "registry+https://github.com/rust-lang/crates.io-index"
2135
-
checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e"
2068
+
checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
2136
2069
dependencies = [
2137
2070
"idna_adapter",
2138
2071
"smallvec",
···
2151
2084
2152
2085
[[package]]
2153
2086
name = "image"
2154
-
version = "0.25.6"
2087
+
version = "0.25.8"
2155
2088
source = "registry+https://github.com/rust-lang/crates.io-index"
2156
-
checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a"
2089
+
checksum = "529feb3e6769d234375c4cf1ee2ce713682b8e76538cb13f9fc23e1400a591e7"
2157
2090
dependencies = [
2158
2091
"bytemuck",
2159
2092
"byteorder-lite",
···
2161
2094
"exr",
2162
2095
"gif",
2163
2096
"image-webp",
2097
+
"moxcms",
2164
2098
"num-traits",
2165
-
"png",
2099
+
"png 0.18.0",
2166
2100
"qoi",
2167
2101
"ravif",
2168
2102
"rayon",
···
2174
2108
2175
2109
[[package]]
2176
2110
name = "image-webp"
2177
-
version = "0.2.3"
2111
+
version = "0.2.4"
2178
2112
source = "registry+https://github.com/rust-lang/crates.io-index"
2179
-
checksum = "f6970fe7a5300b4b42e62c52efa0187540a5bef546c60edaf554ef595d2e6f0b"
2113
+
checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3"
2180
2114
dependencies = [
2181
2115
"byteorder-lite",
2182
2116
"quick-error",
···
2184
2118
2185
2119
[[package]]
2186
2120
name = "imgref"
2187
-
version = "1.11.0"
2121
+
version = "1.12.0"
2188
2122
source = "registry+https://github.com/rust-lang/crates.io-index"
2189
-
checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408"
2123
+
checksum = "e7c5cedc30da3a610cac6b4ba17597bdf7152cf974e8aab3afb3d54455e371c8"
2190
2124
2191
2125
[[package]]
2192
2126
name = "indexmap"
···
2201
2135
2202
2136
[[package]]
2203
2137
name = "indexmap"
2204
-
version = "2.10.0"
2138
+
version = "2.12.0"
2205
2139
source = "registry+https://github.com/rust-lang/crates.io-index"
2206
-
checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661"
2140
+
checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f"
2207
2141
dependencies = [
2208
2142
"equivalent",
2209
-
"hashbrown 0.15.4",
2143
+
"hashbrown 0.16.0",
2210
2144
"serde",
2145
+
"serde_core",
2211
2146
]
2212
2147
2213
2148
[[package]]
···
2221
2156
2222
2157
[[package]]
2223
2158
name = "inotify"
2224
-
version = "0.9.6"
2159
+
version = "0.11.0"
2225
2160
source = "registry+https://github.com/rust-lang/crates.io-index"
2226
-
checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff"
2161
+
checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3"
2227
2162
dependencies = [
2228
-
"bitflags 1.3.2",
2163
+
"bitflags 2.10.0",
2229
2164
"inotify-sys",
2230
2165
"libc",
2231
2166
]
···
2247
2182
dependencies = [
2248
2183
"proc-macro2",
2249
2184
"quote",
2250
-
"syn 2.0.104",
2251
-
]
2252
-
2253
-
[[package]]
2254
-
name = "io-uring"
2255
-
version = "0.7.9"
2256
-
source = "registry+https://github.com/rust-lang/crates.io-index"
2257
-
checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4"
2258
-
dependencies = [
2259
-
"bitflags 2.9.1",
2260
-
"cfg-if",
2261
-
"libc",
2185
+
"syn 2.0.109",
2262
2186
]
2263
2187
2264
2188
[[package]]
···
2269
2193
2270
2194
[[package]]
2271
2195
name = "iri-string"
2272
-
version = "0.7.8"
2196
+
version = "0.7.9"
2273
2197
source = "registry+https://github.com/rust-lang/crates.io-index"
2274
-
checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2"
2198
+
checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397"
2275
2199
dependencies = [
2276
2200
"memchr",
2277
2201
"serde",
···
2358
2282
2359
2283
[[package]]
2360
2284
name = "jobserver"
2361
-
version = "0.1.33"
2285
+
version = "0.1.34"
2362
2286
source = "registry+https://github.com/rust-lang/crates.io-index"
2363
-
checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a"
2287
+
checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"
2364
2288
dependencies = [
2365
-
"getrandom 0.3.3",
2289
+
"getrandom 0.3.4",
2366
2290
"libc",
2367
2291
]
2368
2292
2369
2293
[[package]]
2370
-
name = "jpeg-decoder"
2371
-
version = "0.3.2"
2372
-
source = "registry+https://github.com/rust-lang/crates.io-index"
2373
-
checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07"
2374
-
2375
-
[[package]]
2376
2294
name = "js-sys"
2377
-
version = "0.3.77"
2295
+
version = "0.3.82"
2378
2296
source = "registry+https://github.com/rust-lang/crates.io-index"
2379
-
checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
2297
+
checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65"
2380
2298
dependencies = [
2381
2299
"once_cell",
2382
2300
"wasm-bindgen",
···
2410
2328
source = "registry+https://github.com/rust-lang/crates.io-index"
2411
2329
checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a"
2412
2330
dependencies = [
2413
-
"bitflags 2.9.1",
2331
+
"bitflags 2.10.0",
2414
2332
"serde",
2415
2333
"unicode-segmentation",
2416
2334
]
···
2443
2361
dependencies = [
2444
2362
"cssparser",
2445
2363
"html5ever",
2446
-
"indexmap 2.10.0",
2364
+
"indexmap 2.12.0",
2447
2365
"selectors",
2448
2366
]
2449
2367
···
2455
2373
2456
2374
[[package]]
2457
2375
name = "lebe"
2458
-
version = "0.5.2"
2376
+
version = "0.5.3"
2459
2377
source = "registry+https://github.com/rust-lang/crates.io-index"
2460
-
checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
2378
+
checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8"
2461
2379
2462
2380
[[package]]
2463
2381
name = "libappindicator"
···
2485
2403
2486
2404
[[package]]
2487
2405
name = "libc"
2488
-
version = "0.2.174"
2406
+
version = "0.2.177"
2489
2407
source = "registry+https://github.com/rust-lang/crates.io-index"
2490
-
checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
2408
+
checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
2491
2409
2492
2410
[[package]]
2493
2411
name = "libfuzzer-sys"
···
2511
2429
2512
2430
[[package]]
2513
2431
name = "libredox"
2514
-
version = "0.1.9"
2432
+
version = "0.1.10"
2515
2433
source = "registry+https://github.com/rust-lang/crates.io-index"
2516
-
checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3"
2434
+
checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb"
2517
2435
dependencies = [
2518
-
"bitflags 2.9.1",
2436
+
"bitflags 2.10.0",
2519
2437
"libc",
2520
-
"redox_syscall",
2521
2438
]
2522
2439
2523
2440
[[package]]
2524
2441
name = "linux-raw-sys"
2525
-
version = "0.4.15"
2442
+
version = "0.11.0"
2526
2443
source = "registry+https://github.com/rust-lang/crates.io-index"
2527
-
checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
2528
-
2529
-
[[package]]
2530
-
name = "linux-raw-sys"
2531
-
version = "0.9.4"
2532
-
source = "registry+https://github.com/rust-lang/crates.io-index"
2533
-
checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12"
2444
+
checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
2534
2445
2535
2446
[[package]]
2536
2447
name = "litemap"
2537
-
version = "0.8.0"
2448
+
version = "0.8.1"
2538
2449
source = "registry+https://github.com/rust-lang/crates.io-index"
2539
-
checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956"
2450
+
checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
2540
2451
2541
2452
[[package]]
2542
2453
name = "litrs"
2543
-
version = "0.4.2"
2454
+
version = "1.0.0"
2544
2455
source = "registry+https://github.com/rust-lang/crates.io-index"
2545
-
checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed"
2456
+
checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092"
2546
2457
2547
2458
[[package]]
2548
2459
name = "lock_api"
2549
-
version = "0.4.13"
2460
+
version = "0.4.14"
2550
2461
source = "registry+https://github.com/rust-lang/crates.io-index"
2551
-
checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765"
2462
+
checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
2552
2463
dependencies = [
2553
-
"autocfg",
2554
2464
"scopeguard",
2555
2465
]
2556
2466
2557
2467
[[package]]
2558
2468
name = "log"
2559
-
version = "0.4.27"
2469
+
version = "0.4.28"
2560
2470
source = "registry+https://github.com/rust-lang/crates.io-index"
2561
-
checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
2471
+
checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
2562
2472
2563
2473
[[package]]
2564
2474
name = "loop9"
···
2603
2513
dependencies = [
2604
2514
"proc-macro2",
2605
2515
"quote",
2606
-
"syn 2.0.104",
2516
+
"syn 2.0.109",
2607
2517
]
2608
2518
2609
2519
[[package]]
···
2624
2534
2625
2535
[[package]]
2626
2536
name = "memchr"
2627
-
version = "2.7.5"
2537
+
version = "2.7.6"
2628
2538
source = "registry+https://github.com/rust-lang/crates.io-index"
2629
-
checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
2539
+
checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
2630
2540
2631
2541
[[package]]
2632
2542
name = "memoffset"
···
2644
2554
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
2645
2555
2646
2556
[[package]]
2647
-
name = "minimal-lexical"
2648
-
version = "0.2.1"
2649
-
source = "registry+https://github.com/rust-lang/crates.io-index"
2650
-
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
2651
-
2652
-
[[package]]
2653
2557
name = "miniz_oxide"
2654
2558
version = "0.8.9"
2655
2559
source = "registry+https://github.com/rust-lang/crates.io-index"
···
2661
2565
2662
2566
[[package]]
2663
2567
name = "mio"
2664
-
version = "0.8.11"
2568
+
version = "1.1.0"
2665
2569
source = "registry+https://github.com/rust-lang/crates.io-index"
2666
-
checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
2570
+
checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873"
2667
2571
dependencies = [
2668
2572
"libc",
2669
2573
"log",
2670
2574
"wasi 0.11.1+wasi-snapshot-preview1",
2671
-
"windows-sys 0.48.0",
2575
+
"windows-sys 0.61.2",
2672
2576
]
2673
2577
2674
2578
[[package]]
2675
-
name = "mio"
2676
-
version = "1.0.4"
2579
+
name = "moxcms"
2580
+
version = "0.7.9"
2677
2581
source = "registry+https://github.com/rust-lang/crates.io-index"
2678
-
checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c"
2582
+
checksum = "0fbdd3d7436f8b5e892b8b7ea114271ff0fa00bc5acae845d53b07d498616ef6"
2679
2583
dependencies = [
2680
-
"libc",
2681
-
"wasi 0.11.1+wasi-snapshot-preview1",
2682
-
"windows-sys 0.59.0",
2584
+
"num-traits",
2585
+
"pxfm",
2683
2586
]
2684
2587
2685
2588
[[package]]
···
2703
2606
"dpi",
2704
2607
"gtk",
2705
2608
"keyboard-types",
2706
-
"objc2 0.6.1",
2609
+
"objc2 0.6.3",
2707
2610
"objc2-app-kit",
2708
2611
"objc2-core-foundation",
2709
-
"objc2-foundation 0.3.1",
2612
+
"objc2-foundation 0.3.2",
2710
2613
"once_cell",
2711
-
"png",
2614
+
"png 0.17.16",
2712
2615
"serde",
2713
-
"thiserror 2.0.12",
2616
+
"thiserror 2.0.17",
2714
2617
"windows-sys 0.60.2",
2715
2618
]
2716
2619
···
2737
2640
source = "registry+https://github.com/rust-lang/crates.io-index"
2738
2641
checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4"
2739
2642
dependencies = [
2740
-
"bitflags 2.9.1",
2643
+
"bitflags 2.10.0",
2741
2644
"jni-sys",
2742
2645
"log",
2743
2646
"ndk-sys",
···
2769
2672
2770
2673
[[package]]
2771
2674
name = "nix"
2772
-
version = "0.27.1"
2675
+
version = "0.30.1"
2773
2676
source = "registry+https://github.com/rust-lang/crates.io-index"
2774
-
checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
2677
+
checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
2775
2678
dependencies = [
2776
-
"bitflags 2.9.1",
2679
+
"bitflags 2.10.0",
2777
2680
"cfg-if",
2681
+
"cfg_aliases",
2778
2682
"libc",
2779
2683
"memoffset",
2780
2684
]
···
2787
2691
2788
2692
[[package]]
2789
2693
name = "nom"
2790
-
version = "7.1.3"
2694
+
version = "8.0.0"
2791
2695
source = "registry+https://github.com/rust-lang/crates.io-index"
2792
-
checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
2696
+
checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405"
2793
2697
dependencies = [
2794
2698
"memchr",
2795
-
"minimal-lexical",
2796
2699
]
2797
2700
2798
2701
[[package]]
···
2803
2706
2804
2707
[[package]]
2805
2708
name = "notify"
2806
-
version = "6.1.1"
2709
+
version = "8.2.0"
2807
2710
source = "registry+https://github.com/rust-lang/crates.io-index"
2808
-
checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d"
2711
+
checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3"
2809
2712
dependencies = [
2810
-
"bitflags 2.9.1",
2811
-
"crossbeam-channel",
2812
-
"filetime",
2713
+
"bitflags 2.10.0",
2813
2714
"fsevent-sys",
2814
2715
"inotify",
2815
2716
"kqueue",
2816
2717
"libc",
2817
2718
"log",
2818
-
"mio 0.8.11",
2719
+
"mio",
2720
+
"notify-types",
2819
2721
"walkdir",
2820
-
"windows-sys 0.48.0",
2722
+
"windows-sys 0.60.2",
2821
2723
]
2822
2724
2823
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]]
2824
2732
name = "num-bigint"
2825
2733
version = "0.4.6"
2826
2734
source = "registry+https://github.com/rust-lang/crates.io-index"
···
2844
2752
dependencies = [
2845
2753
"proc-macro2",
2846
2754
"quote",
2847
-
"syn 2.0.104",
2755
+
"syn 2.0.109",
2848
2756
]
2849
2757
2850
2758
[[package]]
···
2878
2786
2879
2787
[[package]]
2880
2788
name = "num_enum"
2881
-
version = "0.7.4"
2789
+
version = "0.7.5"
2882
2790
source = "registry+https://github.com/rust-lang/crates.io-index"
2883
-
checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a"
2791
+
checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c"
2884
2792
dependencies = [
2885
2793
"num_enum_derive",
2886
2794
"rustversion",
···
2888
2796
2889
2797
[[package]]
2890
2798
name = "num_enum_derive"
2891
-
version = "0.7.4"
2799
+
version = "0.7.5"
2892
2800
source = "registry+https://github.com/rust-lang/crates.io-index"
2893
-
checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d"
2801
+
checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7"
2894
2802
dependencies = [
2895
-
"proc-macro-crate 2.0.2",
2803
+
"proc-macro-crate 3.4.0",
2896
2804
"proc-macro2",
2897
2805
"quote",
2898
-
"syn 2.0.104",
2806
+
"syn 2.0.109",
2899
2807
]
2900
2808
2901
2809
[[package]]
···
2916
2824
2917
2825
[[package]]
2918
2826
name = "objc2"
2919
-
version = "0.6.1"
2827
+
version = "0.6.3"
2920
2828
source = "registry+https://github.com/rust-lang/crates.io-index"
2921
-
checksum = "88c6597e14493ab2e44ce58f2fdecf095a51f12ca57bec060a11c57332520551"
2829
+
checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05"
2922
2830
dependencies = [
2923
2831
"objc2-encode",
2924
2832
"objc2-exception-helper",
···
2926
2834
2927
2835
[[package]]
2928
2836
name = "objc2-app-kit"
2929
-
version = "0.3.1"
2837
+
version = "0.3.2"
2930
2838
source = "registry+https://github.com/rust-lang/crates.io-index"
2931
-
checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc"
2839
+
checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c"
2932
2840
dependencies = [
2933
-
"bitflags 2.9.1",
2934
-
"block2 0.6.1",
2841
+
"bitflags 2.10.0",
2842
+
"block2 0.6.2",
2935
2843
"libc",
2936
-
"objc2 0.6.1",
2844
+
"objc2 0.6.3",
2937
2845
"objc2-cloud-kit",
2938
2846
"objc2-core-data",
2939
2847
"objc2-core-foundation",
2940
2848
"objc2-core-graphics",
2941
2849
"objc2-core-image",
2942
-
"objc2-foundation 0.3.1",
2943
-
"objc2-quartz-core 0.3.1",
2850
+
"objc2-core-text",
2851
+
"objc2-core-video",
2852
+
"objc2-foundation 0.3.2",
2853
+
"objc2-quartz-core 0.3.2",
2944
2854
]
2945
2855
2946
2856
[[package]]
2947
2857
name = "objc2-cloud-kit"
2948
-
version = "0.3.1"
2858
+
version = "0.3.2"
2949
2859
source = "registry+https://github.com/rust-lang/crates.io-index"
2950
-
checksum = "17614fdcd9b411e6ff1117dfb1d0150f908ba83a7df81b1f118005fe0a8ea15d"
2860
+
checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c"
2951
2861
dependencies = [
2952
-
"bitflags 2.9.1",
2953
-
"objc2 0.6.1",
2954
-
"objc2-foundation 0.3.1",
2862
+
"bitflags 2.10.0",
2863
+
"objc2 0.6.3",
2864
+
"objc2-foundation 0.3.2",
2955
2865
]
2956
2866
2957
2867
[[package]]
2958
2868
name = "objc2-core-data"
2959
-
version = "0.3.1"
2869
+
version = "0.3.2"
2960
2870
source = "registry+https://github.com/rust-lang/crates.io-index"
2961
-
checksum = "291fbbf7d29287518e8686417cf7239c74700fd4b607623140a7d4a3c834329d"
2871
+
checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa"
2962
2872
dependencies = [
2963
-
"bitflags 2.9.1",
2964
-
"objc2 0.6.1",
2965
-
"objc2-foundation 0.3.1",
2873
+
"bitflags 2.10.0",
2874
+
"objc2 0.6.3",
2875
+
"objc2-foundation 0.3.2",
2966
2876
]
2967
2877
2968
2878
[[package]]
2969
2879
name = "objc2-core-foundation"
2970
-
version = "0.3.1"
2880
+
version = "0.3.2"
2971
2881
source = "registry+https://github.com/rust-lang/crates.io-index"
2972
-
checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166"
2882
+
checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
2973
2883
dependencies = [
2974
-
"bitflags 2.9.1",
2884
+
"bitflags 2.10.0",
2975
2885
"dispatch2",
2976
-
"objc2 0.6.1",
2886
+
"objc2 0.6.3",
2977
2887
]
2978
2888
2979
2889
[[package]]
2980
2890
name = "objc2-core-graphics"
2981
-
version = "0.3.1"
2891
+
version = "0.3.2"
2982
2892
source = "registry+https://github.com/rust-lang/crates.io-index"
2983
-
checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4"
2893
+
checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807"
2984
2894
dependencies = [
2985
-
"bitflags 2.9.1",
2895
+
"bitflags 2.10.0",
2986
2896
"dispatch2",
2987
-
"objc2 0.6.1",
2897
+
"objc2 0.6.3",
2988
2898
"objc2-core-foundation",
2989
2899
"objc2-io-surface",
2990
2900
]
2991
2901
2992
2902
[[package]]
2993
2903
name = "objc2-core-image"
2994
-
version = "0.3.1"
2904
+
version = "0.3.2"
2995
2905
source = "registry+https://github.com/rust-lang/crates.io-index"
2996
-
checksum = "79b3dc0cc4386b6ccf21c157591b34a7f44c8e75b064f85502901ab2188c007e"
2906
+
checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006"
2997
2907
dependencies = [
2998
-
"objc2 0.6.1",
2999
-
"objc2-foundation 0.3.1",
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",
3000
2935
]
3001
2936
3002
2937
[[package]]
···
3020
2955
source = "registry+https://github.com/rust-lang/crates.io-index"
3021
2956
checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8"
3022
2957
dependencies = [
3023
-
"bitflags 2.9.1",
2958
+
"bitflags 2.10.0",
3024
2959
"block2 0.5.1",
3025
2960
"libc",
3026
2961
"objc2 0.5.2",
···
3028
2963
3029
2964
[[package]]
3030
2965
name = "objc2-foundation"
3031
-
version = "0.3.1"
2966
+
version = "0.3.2"
3032
2967
source = "registry+https://github.com/rust-lang/crates.io-index"
3033
-
checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c"
2968
+
checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272"
3034
2969
dependencies = [
3035
-
"bitflags 2.9.1",
3036
-
"block2 0.6.1",
2970
+
"bitflags 2.10.0",
2971
+
"block2 0.6.2",
3037
2972
"libc",
3038
-
"objc2 0.6.1",
2973
+
"objc2 0.6.3",
3039
2974
"objc2-core-foundation",
3040
2975
]
3041
2976
3042
2977
[[package]]
3043
2978
name = "objc2-io-surface"
3044
-
version = "0.3.1"
2979
+
version = "0.3.2"
3045
2980
source = "registry+https://github.com/rust-lang/crates.io-index"
3046
-
checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c"
2981
+
checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d"
3047
2982
dependencies = [
3048
-
"bitflags 2.9.1",
3049
-
"objc2 0.6.1",
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",
3050
2995
"objc2-core-foundation",
3051
2996
]
3052
2997
···
3056
3001
source = "registry+https://github.com/rust-lang/crates.io-index"
3057
3002
checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6"
3058
3003
dependencies = [
3059
-
"bitflags 2.9.1",
3004
+
"bitflags 2.10.0",
3060
3005
"block2 0.5.1",
3061
3006
"objc2 0.5.2",
3062
3007
"objc2-foundation 0.2.2",
···
3068
3013
source = "registry+https://github.com/rust-lang/crates.io-index"
3069
3014
checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a"
3070
3015
dependencies = [
3071
-
"bitflags 2.9.1",
3016
+
"bitflags 2.10.0",
3072
3017
"block2 0.5.1",
3073
3018
"objc2 0.5.2",
3074
3019
"objc2-foundation 0.2.2",
···
3077
3022
3078
3023
[[package]]
3079
3024
name = "objc2-quartz-core"
3080
-
version = "0.3.1"
3025
+
version = "0.3.2"
3081
3026
source = "registry+https://github.com/rust-lang/crates.io-index"
3082
-
checksum = "90ffb6a0cd5f182dc964334388560b12a57f7b74b3e2dec5e2722aa2dfb2ccd5"
3027
+
checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f"
3083
3028
dependencies = [
3084
-
"bitflags 2.9.1",
3085
-
"objc2 0.6.1",
3086
-
"objc2-foundation 0.3.1",
3029
+
"bitflags 2.10.0",
3030
+
"objc2 0.6.3",
3031
+
"objc2-foundation 0.3.2",
3087
3032
]
3088
3033
3089
3034
[[package]]
3090
-
name = "objc2-ui-kit"
3091
-
version = "0.3.1"
3035
+
name = "objc2-security"
3036
+
version = "0.3.2"
3092
3037
source = "registry+https://github.com/rust-lang/crates.io-index"
3093
-
checksum = "25b1312ad7bc8a0e92adae17aa10f90aae1fb618832f9b993b022b591027daed"
3038
+
checksum = "709fe137109bd1e8b5a99390f77a7d8b2961dafc1a1c5db8f2e60329ad6d895a"
3094
3039
dependencies = [
3095
-
"bitflags 2.9.1",
3096
-
"objc2 0.6.1",
3040
+
"bitflags 2.10.0",
3041
+
"objc2 0.6.3",
3097
3042
"objc2-core-foundation",
3098
-
"objc2-foundation 0.3.1",
3099
3043
]
3100
3044
3101
3045
[[package]]
3102
-
name = "objc2-web-kit"
3103
-
version = "0.3.1"
3046
+
name = "objc2-ui-kit"
3047
+
version = "0.3.2"
3104
3048
source = "registry+https://github.com/rust-lang/crates.io-index"
3105
-
checksum = "91672909de8b1ce1c2252e95bbee8c1649c9ad9d14b9248b3d7b4c47903c47ad"
3049
+
checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22"
3106
3050
dependencies = [
3107
-
"bitflags 2.9.1",
3108
-
"block2 0.6.1",
3109
-
"objc2 0.6.1",
3110
-
"objc2-app-kit",
3051
+
"bitflags 2.10.0",
3052
+
"objc2 0.6.3",
3111
3053
"objc2-core-foundation",
3112
-
"objc2-foundation 0.3.1",
3054
+
"objc2-foundation 0.3.2",
3113
3055
]
3114
3056
3115
3057
[[package]]
3116
-
name = "object"
3117
-
version = "0.36.7"
3058
+
name = "objc2-web-kit"
3059
+
version = "0.3.2"
3118
3060
source = "registry+https://github.com/rust-lang/crates.io-index"
3119
-
checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
3061
+
checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f"
3120
3062
dependencies = [
3121
-
"memchr",
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",
3122
3071
]
3123
3072
3124
3073
[[package]]
···
3141
3090
3142
3091
[[package]]
3143
3092
name = "openssl"
3144
-
version = "0.10.73"
3093
+
version = "0.10.74"
3145
3094
source = "registry+https://github.com/rust-lang/crates.io-index"
3146
-
checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8"
3095
+
checksum = "24ad14dd45412269e1a30f52ad8f0664f0f4f4a89ee8fe28c3b3527021ebb654"
3147
3096
dependencies = [
3148
-
"bitflags 2.9.1",
3097
+
"bitflags 2.10.0",
3149
3098
"cfg-if",
3150
3099
"foreign-types 0.3.2",
3151
3100
"libc",
···
3162
3111
dependencies = [
3163
3112
"proc-macro2",
3164
3113
"quote",
3165
-
"syn 2.0.104",
3114
+
"syn 2.0.109",
3166
3115
]
3167
3116
3168
3117
[[package]]
···
3173
3122
3174
3123
[[package]]
3175
3124
name = "openssl-sys"
3176
-
version = "0.9.109"
3125
+
version = "0.9.110"
3177
3126
source = "registry+https://github.com/rust-lang/crates.io-index"
3178
-
checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571"
3127
+
checksum = "0a9f0075ba3c21b09f8e8b2026584b1d18d49388648f2fbbf3c97ea8deced8e2"
3179
3128
dependencies = [
3180
3129
"cc",
3181
3130
"libc",
···
3211
3160
3212
3161
[[package]]
3213
3162
name = "os_pipe"
3214
-
version = "1.2.2"
3163
+
version = "1.2.3"
3215
3164
source = "registry+https://github.com/rust-lang/crates.io-index"
3216
-
checksum = "db335f4760b14ead6290116f2427bf33a14d4f0617d49f78a246de10c1831224"
3165
+
checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967"
3217
3166
dependencies = [
3218
3167
"libc",
3219
-
"windows-sys 0.59.0",
3168
+
"windows-sys 0.61.2",
3220
3169
]
3221
3170
3222
3171
[[package]]
···
3252
3201
3253
3202
[[package]]
3254
3203
name = "parking_lot"
3255
-
version = "0.12.4"
3204
+
version = "0.12.5"
3256
3205
source = "registry+https://github.com/rust-lang/crates.io-index"
3257
-
checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13"
3206
+
checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
3258
3207
dependencies = [
3259
3208
"lock_api",
3260
3209
"parking_lot_core",
···
3262
3211
3263
3212
[[package]]
3264
3213
name = "parking_lot_core"
3265
-
version = "0.9.11"
3214
+
version = "0.9.12"
3266
3215
source = "registry+https://github.com/rust-lang/crates.io-index"
3267
-
checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5"
3216
+
checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
3268
3217
dependencies = [
3269
3218
"cfg-if",
3270
3219
"libc",
3271
3220
"redox_syscall",
3272
3221
"smallvec",
3273
-
"windows-targets 0.52.6",
3222
+
"windows-link 0.2.1",
3274
3223
]
3275
3224
3276
3225
[[package]]
···
3287
3236
3288
3237
[[package]]
3289
3238
name = "percent-encoding"
3290
-
version = "2.3.1"
3239
+
version = "2.3.2"
3291
3240
source = "registry+https://github.com/rust-lang/crates.io-index"
3292
-
checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
3241
+
checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
3293
3242
3294
3243
[[package]]
3295
3244
name = "phf"
···
3395
3344
"phf_shared 0.11.3",
3396
3345
"proc-macro2",
3397
3346
"quote",
3398
-
"syn 2.0.104",
3347
+
"syn 2.0.109",
3399
3348
]
3400
3349
3401
3350
[[package]]
···
3456
3405
3457
3406
[[package]]
3458
3407
name = "plist"
3459
-
version = "1.7.4"
3408
+
version = "1.8.0"
3460
3409
source = "registry+https://github.com/rust-lang/crates.io-index"
3461
-
checksum = "3af6b589e163c5a788fab00ce0c0366f6efbb9959c2f9874b224936af7fce7e1"
3410
+
checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07"
3462
3411
dependencies = [
3463
3412
"base64 0.22.1",
3464
-
"indexmap 2.10.0",
3413
+
"indexmap 2.12.0",
3465
3414
"quick-xml",
3466
3415
"serde",
3467
3416
"time",
···
3481
3430
]
3482
3431
3483
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]]
3484
3446
name = "polling"
3485
-
version = "3.9.0"
3447
+
version = "3.11.0"
3486
3448
source = "registry+https://github.com/rust-lang/crates.io-index"
3487
-
checksum = "8ee9b2fa7a4517d2c91ff5bc6c297a427a96749d15f98fcdbb22c05571a4d4b7"
3449
+
checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218"
3488
3450
dependencies = [
3489
3451
"cfg-if",
3490
3452
"concurrent-queue",
3491
3453
"hermit-abi",
3492
3454
"pin-project-lite",
3493
-
"rustix 1.0.8",
3494
-
"windows-sys 0.60.2",
3455
+
"rustix",
3456
+
"windows-sys 0.61.2",
3495
3457
]
3496
3458
3497
3459
[[package]]
3498
3460
name = "potential_utf"
3499
-
version = "0.1.2"
3461
+
version = "0.1.4"
3500
3462
source = "registry+https://github.com/rust-lang/crates.io-index"
3501
-
checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585"
3463
+
checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
3502
3464
dependencies = [
3503
3465
"zerovec",
3504
3466
]
···
3542
3504
dependencies = [
3543
3505
"toml_datetime 0.6.3",
3544
3506
"toml_edit 0.20.2",
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",
3545
3516
]
3546
3517
3547
3518
[[package]]
···
3576
3547
3577
3548
[[package]]
3578
3549
name = "proc-macro2"
3579
-
version = "1.0.95"
3550
+
version = "1.0.103"
3580
3551
source = "registry+https://github.com/rust-lang/crates.io-index"
3581
-
checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
3552
+
checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
3582
3553
dependencies = [
3583
3554
"unicode-ident",
3584
3555
]
···
3599
3570
checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b"
3600
3571
dependencies = [
3601
3572
"quote",
3602
-
"syn 2.0.104",
3573
+
"syn 2.0.109",
3603
3574
]
3604
3575
3605
3576
[[package]]
···
3616
3587
dependencies = [
3617
3588
"idna",
3618
3589
"psl-types",
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",
3619
3599
]
3620
3600
3621
3601
[[package]]
···
3635
3615
3636
3616
[[package]]
3637
3617
name = "quick-xml"
3638
-
version = "0.38.0"
3618
+
version = "0.38.3"
3639
3619
source = "registry+https://github.com/rust-lang/crates.io-index"
3640
-
checksum = "8927b0664f5c5a98265138b7e3f90aa19a6b21353182469ace36d4ac527b7b1b"
3620
+
checksum = "42a232e7487fc2ef313d96dde7948e7a3c05101870d8985e4fd8d26aedd27b89"
3641
3621
dependencies = [
3642
3622
"memchr",
3643
3623
]
3644
3624
3645
3625
[[package]]
3646
3626
name = "quinn"
3647
-
version = "0.11.8"
3627
+
version = "0.11.9"
3648
3628
source = "registry+https://github.com/rust-lang/crates.io-index"
3649
-
checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8"
3629
+
checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
3650
3630
dependencies = [
3651
3631
"bytes",
3652
3632
"cfg_aliases",
···
3655
3635
"quinn-udp",
3656
3636
"rustc-hash",
3657
3637
"rustls",
3658
-
"socket2 0.5.10",
3659
-
"thiserror 2.0.12",
3638
+
"socket2",
3639
+
"thiserror 2.0.17",
3660
3640
"tokio",
3661
3641
"tracing",
3662
3642
"web-time",
···
3664
3644
3665
3645
[[package]]
3666
3646
name = "quinn-proto"
3667
-
version = "0.11.12"
3647
+
version = "0.11.13"
3668
3648
source = "registry+https://github.com/rust-lang/crates.io-index"
3669
-
checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e"
3649
+
checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31"
3670
3650
dependencies = [
3671
3651
"bytes",
3672
-
"getrandom 0.3.3",
3652
+
"getrandom 0.3.4",
3673
3653
"lru-slab",
3674
3654
"rand 0.9.2",
3675
3655
"ring",
···
3677
3657
"rustls",
3678
3658
"rustls-pki-types",
3679
3659
"slab",
3680
-
"thiserror 2.0.12",
3660
+
"thiserror 2.0.17",
3681
3661
"tinyvec",
3682
3662
"tracing",
3683
3663
"web-time",
···
3685
3665
3686
3666
[[package]]
3687
3667
name = "quinn-udp"
3688
-
version = "0.5.13"
3668
+
version = "0.5.14"
3689
3669
source = "registry+https://github.com/rust-lang/crates.io-index"
3690
-
checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970"
3670
+
checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
3691
3671
dependencies = [
3692
3672
"cfg_aliases",
3693
3673
"libc",
3694
3674
"once_cell",
3695
-
"socket2 0.5.10",
3675
+
"socket2",
3696
3676
"tracing",
3697
-
"windows-sys 0.59.0",
3677
+
"windows-sys 0.60.2",
3698
3678
]
3699
3679
3700
3680
[[package]]
3701
3681
name = "quote"
3702
-
version = "1.0.40"
3682
+
version = "1.0.42"
3703
3683
source = "registry+https://github.com/rust-lang/crates.io-index"
3704
-
checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
3684
+
checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
3705
3685
dependencies = [
3706
3686
"proc-macro2",
3707
3687
]
···
3801
3781
source = "registry+https://github.com/rust-lang/crates.io-index"
3802
3782
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
3803
3783
dependencies = [
3804
-
"getrandom 0.3.3",
3784
+
"getrandom 0.3.4",
3805
3785
]
3806
3786
3807
3787
[[package]]
···
3880
3860
3881
3861
[[package]]
3882
3862
name = "rayon"
3883
-
version = "1.10.0"
3863
+
version = "1.11.0"
3884
3864
source = "registry+https://github.com/rust-lang/crates.io-index"
3885
-
checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
3865
+
checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f"
3886
3866
dependencies = [
3887
3867
"either",
3888
3868
"rayon-core",
···
3890
3870
3891
3871
[[package]]
3892
3872
name = "rayon-core"
3893
-
version = "1.12.1"
3873
+
version = "1.13.0"
3894
3874
source = "registry+https://github.com/rust-lang/crates.io-index"
3895
-
checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
3875
+
checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
3896
3876
dependencies = [
3897
3877
"crossbeam-deque",
3898
3878
"crossbeam-utils",
···
3900
3880
3901
3881
[[package]]
3902
3882
name = "redox_syscall"
3903
-
version = "0.5.17"
3904
-
source = "registry+https://github.com/rust-lang/crates.io-index"
3905
-
checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77"
3906
-
dependencies = [
3907
-
"bitflags 2.9.1",
3908
-
]
3909
-
3910
-
[[package]]
3911
-
name = "redox_users"
3912
-
version = "0.4.6"
3883
+
version = "0.5.18"
3913
3884
source = "registry+https://github.com/rust-lang/crates.io-index"
3914
-
checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
3885
+
checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
3915
3886
dependencies = [
3916
-
"getrandom 0.2.16",
3917
-
"libredox",
3918
-
"thiserror 1.0.69",
3887
+
"bitflags 2.10.0",
3919
3888
]
3920
3889
3921
3890
[[package]]
···
3926
3895
dependencies = [
3927
3896
"getrandom 0.2.16",
3928
3897
"libredox",
3929
-
"thiserror 2.0.12",
3898
+
"thiserror 2.0.17",
3930
3899
]
3931
3900
3932
3901
[[package]]
3933
3902
name = "ref-cast"
3934
-
version = "1.0.24"
3903
+
version = "1.0.25"
3935
3904
source = "registry+https://github.com/rust-lang/crates.io-index"
3936
-
checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf"
3905
+
checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d"
3937
3906
dependencies = [
3938
3907
"ref-cast-impl",
3939
3908
]
3940
3909
3941
3910
[[package]]
3942
3911
name = "ref-cast-impl"
3943
-
version = "1.0.24"
3912
+
version = "1.0.25"
3944
3913
source = "registry+https://github.com/rust-lang/crates.io-index"
3945
-
checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7"
3914
+
checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
3946
3915
dependencies = [
3947
3916
"proc-macro2",
3948
3917
"quote",
3949
-
"syn 2.0.104",
3918
+
"syn 2.0.109",
3950
3919
]
3951
3920
3952
3921
[[package]]
3953
3922
name = "regex"
3954
-
version = "1.11.1"
3923
+
version = "1.12.2"
3955
3924
source = "registry+https://github.com/rust-lang/crates.io-index"
3956
-
checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
3925
+
checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4"
3957
3926
dependencies = [
3958
3927
"aho-corasick",
3959
3928
"memchr",
···
3963
3932
3964
3933
[[package]]
3965
3934
name = "regex-automata"
3966
-
version = "0.4.9"
3935
+
version = "0.4.13"
3967
3936
source = "registry+https://github.com/rust-lang/crates.io-index"
3968
-
checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
3937
+
checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
3969
3938
dependencies = [
3970
3939
"aho-corasick",
3971
3940
"memchr",
···
3974
3943
3975
3944
[[package]]
3976
3945
name = "regex-syntax"
3977
-
version = "0.8.5"
3946
+
version = "0.8.8"
3978
3947
source = "registry+https://github.com/rust-lang/crates.io-index"
3979
-
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
3948
+
checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
3980
3949
3981
3950
[[package]]
3982
3951
name = "reqwest"
3983
-
version = "0.12.22"
3952
+
version = "0.12.24"
3984
3953
source = "registry+https://github.com/rust-lang/crates.io-index"
3985
-
checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531"
3954
+
checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f"
3986
3955
dependencies = [
3987
3956
"base64 0.22.1",
3988
3957
"bytes",
···
4050
4019
4051
4020
[[package]]
4052
4021
name = "rust-ini"
4053
-
version = "0.21.2"
4022
+
version = "0.21.3"
4054
4023
source = "registry+https://github.com/rust-lang/crates.io-index"
4055
-
checksum = "e7295b7ce3bf4806b419dc3420745998b447178b7005e2011947b38fc5aa6791"
4024
+
checksum = "796e8d2b6696392a43bea58116b667fb4c29727dc5abd27d6acf338bb4f688c7"
4056
4025
dependencies = [
4057
4026
"cfg-if",
4058
4027
"ordered-multimap",
4059
4028
]
4060
-
4061
-
[[package]]
4062
-
name = "rustc-demangle"
4063
-
version = "0.1.26"
4064
-
source = "registry+https://github.com/rust-lang/crates.io-index"
4065
-
checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace"
4066
4029
4067
4030
[[package]]
4068
4031
name = "rustc-hash"
···
4081
4044
4082
4045
[[package]]
4083
4046
name = "rustix"
4084
-
version = "0.38.44"
4085
-
source = "registry+https://github.com/rust-lang/crates.io-index"
4086
-
checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
4087
-
dependencies = [
4088
-
"bitflags 2.9.1",
4089
-
"errno",
4090
-
"libc",
4091
-
"linux-raw-sys 0.4.15",
4092
-
"windows-sys 0.59.0",
4093
-
]
4094
-
4095
-
[[package]]
4096
-
name = "rustix"
4097
-
version = "1.0.8"
4047
+
version = "1.1.2"
4098
4048
source = "registry+https://github.com/rust-lang/crates.io-index"
4099
-
checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"
4049
+
checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
4100
4050
dependencies = [
4101
-
"bitflags 2.9.1",
4051
+
"bitflags 2.10.0",
4102
4052
"errno",
4103
4053
"libc",
4104
-
"linux-raw-sys 0.9.4",
4105
-
"windows-sys 0.60.2",
4054
+
"linux-raw-sys",
4055
+
"windows-sys 0.61.2",
4106
4056
]
4107
4057
4108
4058
[[package]]
4109
4059
name = "rustls"
4110
-
version = "0.23.31"
4060
+
version = "0.23.35"
4111
4061
source = "registry+https://github.com/rust-lang/crates.io-index"
4112
-
checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc"
4062
+
checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f"
4113
4063
dependencies = [
4114
4064
"once_cell",
4115
4065
"ring",
···
4121
4071
4122
4072
[[package]]
4123
4073
name = "rustls-pki-types"
4124
-
version = "1.12.0"
4074
+
version = "1.13.0"
4125
4075
source = "registry+https://github.com/rust-lang/crates.io-index"
4126
-
checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79"
4076
+
checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a"
4127
4077
dependencies = [
4128
4078
"web-time",
4129
4079
"zeroize",
···
4131
4081
4132
4082
[[package]]
4133
4083
name = "rustls-webpki"
4134
-
version = "0.103.4"
4084
+
version = "0.103.8"
4135
4085
source = "registry+https://github.com/rust-lang/crates.io-index"
4136
-
checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc"
4086
+
checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52"
4137
4087
dependencies = [
4138
4088
"ring",
4139
4089
"rustls-pki-types",
···
4142
4092
4143
4093
[[package]]
4144
4094
name = "rustversion"
4145
-
version = "1.0.21"
4095
+
version = "1.0.22"
4146
4096
source = "registry+https://github.com/rust-lang/crates.io-index"
4147
-
checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d"
4097
+
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
4148
4098
4149
4099
[[package]]
4150
4100
name = "ryu"
···
4163
4113
4164
4114
[[package]]
4165
4115
name = "schannel"
4166
-
version = "0.1.27"
4116
+
version = "0.1.28"
4167
4117
source = "registry+https://github.com/rust-lang/crates.io-index"
4168
-
checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d"
4118
+
checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1"
4169
4119
dependencies = [
4170
-
"windows-sys 0.59.0",
4120
+
"windows-sys 0.61.2",
4171
4121
]
4172
4122
4173
4123
[[package]]
···
4199
4149
4200
4150
[[package]]
4201
4151
name = "schemars"
4202
-
version = "1.0.4"
4152
+
version = "1.1.0"
4203
4153
source = "registry+https://github.com/rust-lang/crates.io-index"
4204
-
checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0"
4154
+
checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289"
4205
4155
dependencies = [
4206
4156
"dyn-clone",
4207
4157
"ref-cast",
···
4218
4168
"proc-macro2",
4219
4169
"quote",
4220
4170
"serde_derive_internals",
4221
-
"syn 2.0.104",
4171
+
"syn 2.0.109",
4222
4172
]
4223
4173
4224
4174
[[package]]
···
4233
4183
source = "registry+https://github.com/rust-lang/crates.io-index"
4234
4184
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
4235
4185
dependencies = [
4236
-
"bitflags 2.9.1",
4186
+
"bitflags 2.10.0",
4237
4187
"core-foundation 0.9.4",
4238
4188
"core-foundation-sys",
4239
4189
"libc",
···
4242
4192
4243
4193
[[package]]
4244
4194
name = "security-framework-sys"
4245
-
version = "2.14.0"
4195
+
version = "2.15.0"
4246
4196
source = "registry+https://github.com/rust-lang/crates.io-index"
4247
-
checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32"
4197
+
checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0"
4248
4198
dependencies = [
4249
4199
"core-foundation-sys",
4250
4200
"libc",
···
4270
4220
4271
4221
[[package]]
4272
4222
name = "semver"
4273
-
version = "1.0.26"
4223
+
version = "1.0.27"
4274
4224
source = "registry+https://github.com/rust-lang/crates.io-index"
4275
-
checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
4225
+
checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
4276
4226
dependencies = [
4277
4227
"serde",
4228
+
"serde_core",
4278
4229
]
4279
4230
4280
4231
[[package]]
4281
4232
name = "serde"
4282
-
version = "1.0.219"
4233
+
version = "1.0.228"
4283
4234
source = "registry+https://github.com/rust-lang/crates.io-index"
4284
-
checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
4235
+
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
4285
4236
dependencies = [
4237
+
"serde_core",
4286
4238
"serde_derive",
4287
4239
]
4288
4240
4289
4241
[[package]]
4290
4242
name = "serde-untagged"
4291
-
version = "0.1.7"
4243
+
version = "0.1.9"
4292
4244
source = "registry+https://github.com/rust-lang/crates.io-index"
4293
-
checksum = "299d9c19d7d466db4ab10addd5703e4c615dec2a5a16dbbafe191045e87ee66e"
4245
+
checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058"
4294
4246
dependencies = [
4295
4247
"erased-serde",
4296
4248
"serde",
4249
+
"serde_core",
4297
4250
"typeid",
4298
4251
]
4299
4252
4300
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]]
4301
4263
name = "serde_derive"
4302
-
version = "1.0.219"
4264
+
version = "1.0.228"
4303
4265
source = "registry+https://github.com/rust-lang/crates.io-index"
4304
-
checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
4266
+
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
4305
4267
dependencies = [
4306
4268
"proc-macro2",
4307
4269
"quote",
4308
-
"syn 2.0.104",
4270
+
"syn 2.0.109",
4309
4271
]
4310
4272
4311
4273
[[package]]
···
4316
4278
dependencies = [
4317
4279
"proc-macro2",
4318
4280
"quote",
4319
-
"syn 2.0.104",
4281
+
"syn 2.0.109",
4320
4282
]
4321
4283
4322
4284
[[package]]
4323
4285
name = "serde_json"
4324
-
version = "1.0.141"
4286
+
version = "1.0.145"
4325
4287
source = "registry+https://github.com/rust-lang/crates.io-index"
4326
-
checksum = "30b9eff21ebe718216c6ec64e1d9ac57087aad11efc64e32002bce4a0d4c03d3"
4288
+
checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
4327
4289
dependencies = [
4328
4290
"itoa",
4329
4291
"memchr",
4330
4292
"ryu",
4331
4293
"serde",
4294
+
"serde_core",
4332
4295
]
4333
4296
4334
4297
[[package]]
···
4339
4302
dependencies = [
4340
4303
"proc-macro2",
4341
4304
"quote",
4342
-
"syn 2.0.104",
4305
+
"syn 2.0.109",
4343
4306
]
4344
4307
4345
4308
[[package]]
···
4353
4316
4354
4317
[[package]]
4355
4318
name = "serde_spanned"
4356
-
version = "1.0.0"
4319
+
version = "1.0.3"
4357
4320
source = "registry+https://github.com/rust-lang/crates.io-index"
4358
-
checksum = "40734c41988f7306bb04f0ecf60ec0f3f1caa34290e4e8ea471dcd3346483b83"
4321
+
checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392"
4359
4322
dependencies = [
4360
-
"serde",
4323
+
"serde_core",
4361
4324
]
4362
4325
4363
4326
[[package]]
···
4374
4337
4375
4338
[[package]]
4376
4339
name = "serde_with"
4377
-
version = "3.14.0"
4340
+
version = "3.15.1"
4378
4341
source = "registry+https://github.com/rust-lang/crates.io-index"
4379
-
checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5"
4342
+
checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04"
4380
4343
dependencies = [
4381
4344
"base64 0.22.1",
4382
4345
"chrono",
4383
4346
"hex",
4384
4347
"indexmap 1.9.3",
4385
-
"indexmap 2.10.0",
4348
+
"indexmap 2.12.0",
4386
4349
"schemars 0.9.0",
4387
-
"schemars 1.0.4",
4388
-
"serde",
4389
-
"serde_derive",
4350
+
"schemars 1.1.0",
4351
+
"serde_core",
4390
4352
"serde_json",
4391
4353
"serde_with_macros",
4392
4354
"time",
···
4394
4356
4395
4357
[[package]]
4396
4358
name = "serde_with_macros"
4397
-
version = "3.14.0"
4359
+
version = "3.15.1"
4398
4360
source = "registry+https://github.com/rust-lang/crates.io-index"
4399
-
checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f"
4361
+
checksum = "b91a903660542fced4e99881aa481bdbaec1634568ee02e0b8bd57c64cb38955"
4400
4362
dependencies = [
4401
4363
"darling",
4402
4364
"proc-macro2",
4403
4365
"quote",
4404
-
"syn 2.0.104",
4366
+
"syn 2.0.109",
4405
4367
]
4406
4368
4407
4369
[[package]]
4408
4370
name = "serialize-to-javascript"
4409
-
version = "0.1.1"
4371
+
version = "0.1.2"
4410
4372
source = "registry+https://github.com/rust-lang/crates.io-index"
4411
-
checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb"
4373
+
checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5"
4412
4374
dependencies = [
4413
4375
"serde",
4414
4376
"serde_json",
···
4417
4379
4418
4380
[[package]]
4419
4381
name = "serialize-to-javascript-impl"
4420
-
version = "0.1.1"
4382
+
version = "0.1.2"
4421
4383
source = "registry+https://github.com/rust-lang/crates.io-index"
4422
-
checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763"
4384
+
checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d"
4423
4385
dependencies = [
4424
4386
"proc-macro2",
4425
4387
"quote",
4426
-
"syn 1.0.109",
4388
+
"syn 2.0.109",
4427
4389
]
4428
4390
4429
4391
[[package]]
···
4434
4396
dependencies = [
4435
4397
"nodrop",
4436
4398
"stable_deref_trait",
4437
-
]
4438
-
4439
-
[[package]]
4440
-
name = "sha1"
4441
-
version = "0.10.6"
4442
-
source = "registry+https://github.com/rust-lang/crates.io-index"
4443
-
checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
4444
-
dependencies = [
4445
-
"cfg-if",
4446
-
"cpufeatures",
4447
-
"digest",
4448
4399
]
4449
4400
4450
4401
[[package]]
···
4498
4449
4499
4450
[[package]]
4500
4451
name = "signal-hook-registry"
4501
-
version = "1.4.5"
4452
+
version = "1.4.6"
4502
4453
source = "registry+https://github.com/rust-lang/crates.io-index"
4503
-
checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410"
4454
+
checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b"
4504
4455
dependencies = [
4505
4456
"libc",
4506
4457
]
···
4534
4485
4535
4486
[[package]]
4536
4487
name = "slab"
4537
-
version = "0.4.10"
4488
+
version = "0.4.11"
4538
4489
source = "registry+https://github.com/rust-lang/crates.io-index"
4539
-
checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d"
4490
+
checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
4540
4491
4541
4492
[[package]]
4542
4493
name = "smallvec"
···
4546
4497
4547
4498
[[package]]
4548
4499
name = "socket2"
4549
-
version = "0.5.10"
4550
-
source = "registry+https://github.com/rust-lang/crates.io-index"
4551
-
checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678"
4552
-
dependencies = [
4553
-
"libc",
4554
-
"windows-sys 0.52.0",
4555
-
]
4556
-
4557
-
[[package]]
4558
-
name = "socket2"
4559
-
version = "0.6.0"
4500
+
version = "0.6.1"
4560
4501
source = "registry+https://github.com/rust-lang/crates.io-index"
4561
-
checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807"
4502
+
checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881"
4562
4503
dependencies = [
4563
4504
"libc",
4564
-
"windows-sys 0.59.0",
4505
+
"windows-sys 0.60.2",
4565
4506
]
4566
4507
4567
4508
[[package]]
···
4614
4555
4615
4556
[[package]]
4616
4557
name = "stable_deref_trait"
4617
-
version = "1.2.0"
4558
+
version = "1.2.1"
4618
4559
source = "registry+https://github.com/rust-lang/crates.io-index"
4619
-
checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
4560
+
checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
4620
4561
4621
4562
[[package]]
4622
4563
name = "static_assertions"
···
4685
4626
4686
4627
[[package]]
4687
4628
name = "syn"
4688
-
version = "2.0.104"
4629
+
version = "2.0.109"
4689
4630
source = "registry+https://github.com/rust-lang/crates.io-index"
4690
-
checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40"
4631
+
checksum = "2f17c7e013e88258aa9543dcbe81aca68a667a9ac37cd69c9fbc07858bfe0e2f"
4691
4632
dependencies = [
4692
4633
"proc-macro2",
4693
4634
"quote",
···
4711
4652
dependencies = [
4712
4653
"proc-macro2",
4713
4654
"quote",
4714
-
"syn 2.0.104",
4655
+
"syn 2.0.109",
4715
4656
]
4716
4657
4717
4658
[[package]]
···
4720
4661
source = "registry+https://github.com/rust-lang/crates.io-index"
4721
4662
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
4722
4663
dependencies = [
4723
-
"bitflags 2.9.1",
4664
+
"bitflags 2.10.0",
4724
4665
"core-foundation 0.9.4",
4725
4666
"system-configuration-sys",
4726
4667
]
···
4750
4691
4751
4692
[[package]]
4752
4693
name = "tao"
4753
-
version = "0.34.0"
4694
+
version = "0.34.5"
4754
4695
source = "registry+https://github.com/rust-lang/crates.io-index"
4755
-
checksum = "49c380ca75a231b87b6c9dd86948f035012e7171d1a7c40a9c2890489a7ffd8a"
4696
+
checksum = "f3a753bdc39c07b192151523a3f77cd0394aa75413802c883a0f6f6a0e5ee2e7"
4756
4697
dependencies = [
4757
-
"bitflags 2.9.1",
4698
+
"bitflags 2.10.0",
4699
+
"block2 0.6.2",
4758
4700
"core-foundation 0.10.1",
4759
4701
"core-graphics",
4760
4702
"crossbeam-channel",
···
4771
4713
"ndk",
4772
4714
"ndk-context",
4773
4715
"ndk-sys",
4774
-
"objc2 0.6.1",
4716
+
"objc2 0.6.3",
4775
4717
"objc2-app-kit",
4776
-
"objc2-foundation 0.3.1",
4718
+
"objc2-foundation 0.3.2",
4777
4719
"once_cell",
4778
4720
"parking_lot",
4779
4721
"raw-window-handle",
···
4782
4724
"unicode-segmentation",
4783
4725
"url",
4784
4726
"windows",
4785
-
"windows-core",
4727
+
"windows-core 0.61.2",
4786
4728
"windows-version",
4787
4729
"x11-dl",
4788
4730
]
···
4795
4737
dependencies = [
4796
4738
"proc-macro2",
4797
4739
"quote",
4798
-
"syn 2.0.104",
4740
+
"syn 2.0.109",
4799
4741
]
4800
4742
4801
4743
[[package]]
···
4806
4748
4807
4749
[[package]]
4808
4750
name = "tauri"
4809
-
version = "2.7.0"
4751
+
version = "2.9.2"
4810
4752
source = "registry+https://github.com/rust-lang/crates.io-index"
4811
-
checksum = "352a4bc7bf6c25f5624227e3641adf475a6535707451b09bb83271df8b7a6ac7"
4753
+
checksum = "8bceb52453e507c505b330afe3398510e87f428ea42b6e76ecb6bd63b15965b5"
4812
4754
dependencies = [
4813
4755
"anyhow",
4814
4756
"bytes",
4815
-
"dirs 6.0.0",
4757
+
"cookie",
4758
+
"dirs",
4816
4759
"dunce",
4817
4760
"embed_plist",
4818
-
"getrandom 0.3.3",
4761
+
"getrandom 0.3.4",
4819
4762
"glob",
4820
4763
"gtk",
4821
4764
"heck 0.5.0",
···
4826
4769
"log",
4827
4770
"mime",
4828
4771
"muda",
4829
-
"objc2 0.6.1",
4772
+
"objc2 0.6.3",
4830
4773
"objc2-app-kit",
4831
-
"objc2-foundation 0.3.1",
4774
+
"objc2-foundation 0.3.2",
4832
4775
"objc2-ui-kit",
4776
+
"objc2-web-kit",
4833
4777
"percent-encoding",
4834
4778
"plist",
4835
4779
"raw-window-handle",
···
4844
4788
"tauri-runtime",
4845
4789
"tauri-runtime-wry",
4846
4790
"tauri-utils",
4847
-
"thiserror 2.0.12",
4791
+
"thiserror 2.0.17",
4848
4792
"tokio",
4849
4793
"tray-icon",
4850
4794
"url",
4851
-
"urlpattern",
4852
4795
"webkit2gtk",
4853
4796
"webview2-com",
4854
4797
"window-vibrancy",
···
4857
4800
4858
4801
[[package]]
4859
4802
name = "tauri-build"
4860
-
version = "2.3.1"
4803
+
version = "2.5.1"
4861
4804
source = "registry+https://github.com/rust-lang/crates.io-index"
4862
-
checksum = "182d688496c06bf08ea896459bf483eb29cdff35c1c4c115fb14053514303064"
4805
+
checksum = "a924b6c50fe83193f0f8b14072afa7c25b7a72752a2a73d9549b463f5fe91a38"
4863
4806
dependencies = [
4864
4807
"anyhow",
4865
4808
"cargo_toml",
4866
-
"dirs 6.0.0",
4809
+
"dirs",
4867
4810
"glob",
4868
4811
"heck 0.5.0",
4869
4812
"json-patch",
···
4873
4816
"serde_json",
4874
4817
"tauri-utils",
4875
4818
"tauri-winres",
4876
-
"toml 0.8.2",
4819
+
"toml 0.9.8",
4877
4820
"walkdir",
4878
4821
]
4879
4822
4880
4823
[[package]]
4881
4824
name = "tauri-codegen"
4882
-
version = "2.3.1"
4825
+
version = "2.5.0"
4883
4826
source = "registry+https://github.com/rust-lang/crates.io-index"
4884
-
checksum = "b54a99a6cd8e01abcfa61508177e6096a4fe2681efecee9214e962f2f073ae4a"
4827
+
checksum = "6c1fe64c74cc40f90848281a90058a6db931eb400b60205840e09801ee30f190"
4885
4828
dependencies = [
4886
4829
"base64 0.22.1",
4887
4830
"brotli",
4888
4831
"ico",
4889
4832
"json-patch",
4890
4833
"plist",
4891
-
"png",
4834
+
"png 0.17.16",
4892
4835
"proc-macro2",
4893
4836
"quote",
4894
4837
"semver",
4895
4838
"serde",
4896
4839
"serde_json",
4897
4840
"sha2",
4898
-
"syn 2.0.104",
4841
+
"syn 2.0.109",
4899
4842
"tauri-utils",
4900
-
"thiserror 2.0.12",
4843
+
"thiserror 2.0.17",
4901
4844
"time",
4902
4845
"url",
4903
4846
"uuid",
···
4906
4849
4907
4850
[[package]]
4908
4851
name = "tauri-macros"
4909
-
version = "2.3.2"
4852
+
version = "2.5.0"
4910
4853
source = "registry+https://github.com/rust-lang/crates.io-index"
4911
-
checksum = "7945b14dc45e23532f2ded6e120170bbdd4af5ceaa45784a6b33d250fbce3f9e"
4854
+
checksum = "260c5d2eb036b76206b9fca20b7be3614cfd21046c5396f7959e0e64a4b07f2f"
4912
4855
dependencies = [
4913
4856
"heck 0.5.0",
4914
4857
"proc-macro2",
4915
4858
"quote",
4916
-
"syn 2.0.104",
4859
+
"syn 2.0.109",
4917
4860
"tauri-codegen",
4918
4861
"tauri-utils",
4919
4862
]
4920
4863
4921
4864
[[package]]
4922
4865
name = "tauri-plugin"
4923
-
version = "2.3.1"
4866
+
version = "2.5.1"
4924
4867
source = "registry+https://github.com/rust-lang/crates.io-index"
4925
-
checksum = "5bd5c1e56990c70a906ef67a9851bbdba9136d26075ee9a2b19c8b46986b3e02"
4868
+
checksum = "076c78a474a7247c90cad0b6e87e593c4c620ed4efdb79cbe0214f0021f6c39d"
4926
4869
dependencies = [
4927
4870
"anyhow",
4928
4871
"glob",
···
4931
4874
"serde",
4932
4875
"serde_json",
4933
4876
"tauri-utils",
4934
-
"toml 0.8.2",
4877
+
"toml 0.9.8",
4935
4878
"walkdir",
4936
4879
]
4937
4880
4938
4881
[[package]]
4939
4882
name = "tauri-plugin-deep-link"
4940
-
version = "2.4.1"
4883
+
version = "2.4.5"
4941
4884
source = "registry+https://github.com/rust-lang/crates.io-index"
4942
-
checksum = "1fec67f32d7a06d80bd3dc009fdb678c35a66116d9cb8cd2bb32e406c2b5bbd2"
4885
+
checksum = "6e82759f7c7d51de3cbde51c04b3f2332de52436ed84541182cd8944b04e9e73"
4943
4886
dependencies = [
4944
4887
"dunce",
4888
+
"plist",
4945
4889
"rust-ini",
4946
4890
"serde",
4947
4891
"serde_json",
4948
4892
"tauri",
4949
4893
"tauri-plugin",
4950
4894
"tauri-utils",
4951
-
"thiserror 2.0.12",
4895
+
"thiserror 2.0.17",
4952
4896
"tracing",
4953
4897
"url",
4954
4898
"windows-registry",
4955
-
"windows-result",
4899
+
"windows-result 0.3.4",
4956
4900
]
4957
4901
4958
4902
[[package]]
4959
4903
name = "tauri-plugin-fs"
4960
-
version = "2.4.1"
4904
+
version = "2.4.4"
4961
4905
source = "registry+https://github.com/rust-lang/crates.io-index"
4962
-
checksum = "8c6ef84ee2f2094ce093e55106d90d763ba343fad57566992962e8f76d113f99"
4906
+
checksum = "47df422695255ecbe7bac7012440eddaeefd026656171eac9559f5243d3230d9"
4963
4907
dependencies = [
4964
4908
"anyhow",
4965
4909
"dunce",
···
4972
4916
"tauri",
4973
4917
"tauri-plugin",
4974
4918
"tauri-utils",
4975
-
"thiserror 2.0.12",
4976
-
"toml 0.8.2",
4919
+
"thiserror 2.0.17",
4920
+
"toml 0.9.8",
4977
4921
"url",
4978
4922
]
4979
4923
4980
4924
[[package]]
4981
4925
name = "tauri-plugin-http"
4982
-
version = "2.5.1"
4926
+
version = "2.5.4"
4983
4927
source = "registry+https://github.com/rust-lang/crates.io-index"
4984
-
checksum = "fcde333d97e565a7765aad82f32d8672458f7bd77b6ee653830d5dded9d7b5c2"
4928
+
checksum = "c00685aceab12643cf024f712ab0448ba8fcadf86f2391d49d2e5aa732aacc70"
4985
4929
dependencies = [
4986
4930
"bytes",
4987
4931
"cookie_store",
···
4995
4939
"tauri",
4996
4940
"tauri-plugin",
4997
4941
"tauri-plugin-fs",
4998
-
"thiserror 2.0.12",
4942
+
"thiserror 2.0.17",
4999
4943
"tokio",
5000
4944
"url",
5001
4945
"urlpattern",
···
5003
4947
5004
4948
[[package]]
5005
4949
name = "tauri-plugin-process"
5006
-
version = "2.3.0"
4950
+
version = "2.3.1"
5007
4951
source = "registry+https://github.com/rust-lang/crates.io-index"
5008
-
checksum = "7461c622a5ea00eb9cd9f7a08dbd3bf79484499fd5c21aa2964677f64ca651ab"
4952
+
checksum = "d55511a7bf6cd70c8767b02c97bf8134fa434daf3926cfc1be0a0f94132d165a"
5009
4953
dependencies = [
5010
4954
"tauri",
5011
4955
"tauri-plugin",
···
5013
4957
5014
4958
[[package]]
5015
4959
name = "tauri-plugin-shell"
5016
-
version = "2.3.0"
4960
+
version = "2.3.3"
5017
4961
source = "registry+https://github.com/rust-lang/crates.io-index"
5018
-
checksum = "2b9ffadec5c3523f11e8273465cacb3d86ea7652a28e6e2a2e9b5c182f791d25"
4962
+
checksum = "c374b6db45f2a8a304f0273a15080d98c70cde86178855fc24653ba657a1144c"
5019
4963
dependencies = [
5020
4964
"encoding_rs",
5021
4965
"log",
···
5028
4972
"shared_child",
5029
4973
"tauri",
5030
4974
"tauri-plugin",
5031
-
"thiserror 2.0.12",
4975
+
"thiserror 2.0.17",
5032
4976
"tokio",
5033
4977
]
5034
4978
5035
4979
[[package]]
5036
4980
name = "tauri-plugin-single-instance"
5037
-
version = "2.2.0"
4981
+
version = "2.3.6"
5038
4982
source = "registry+https://github.com/rust-lang/crates.io-index"
5039
-
checksum = "0f36019ee9832dc99e4450bb55a21cfad8633b19c2c18bd17c7741939b070ede"
4983
+
checksum = "dd707f8c86b4e3004e2c141fa24351f1909ba40ce1b8437e30d5ed5277dd3710"
5040
4984
dependencies = [
5041
4985
"serde",
5042
4986
"serde_json",
5043
4987
"tauri",
5044
4988
"tauri-plugin-deep-link",
5045
-
"thiserror 2.0.12",
4989
+
"thiserror 2.0.17",
5046
4990
"tracing",
5047
-
"windows-sys 0.59.0",
4991
+
"windows-sys 0.60.2",
5048
4992
"zbus",
5049
4993
]
5050
4994
5051
4995
[[package]]
5052
4996
name = "tauri-runtime"
5053
-
version = "2.7.1"
4997
+
version = "2.9.1"
5054
4998
source = "registry+https://github.com/rust-lang/crates.io-index"
5055
-
checksum = "2b1cc885be806ea15ff7b0eb47098a7b16323d9228876afda329e34e2d6c4676"
4999
+
checksum = "9368f09358496f2229313fccb37682ad116b7f46fa76981efe116994a0628926"
5056
5000
dependencies = [
5057
5001
"cookie",
5058
5002
"dpi",
5059
5003
"gtk",
5060
5004
"http",
5061
5005
"jni",
5062
-
"objc2 0.6.1",
5006
+
"objc2 0.6.3",
5063
5007
"objc2-ui-kit",
5008
+
"objc2-web-kit",
5064
5009
"raw-window-handle",
5065
5010
"serde",
5066
5011
"serde_json",
5067
5012
"tauri-utils",
5068
-
"thiserror 2.0.12",
5013
+
"thiserror 2.0.17",
5069
5014
"url",
5015
+
"webkit2gtk",
5016
+
"webview2-com",
5070
5017
"windows",
5071
5018
]
5072
5019
5073
5020
[[package]]
5074
5021
name = "tauri-runtime-wry"
5075
-
version = "2.7.2"
5022
+
version = "2.9.1"
5076
5023
source = "registry+https://github.com/rust-lang/crates.io-index"
5077
-
checksum = "fe653a2fbbef19fe898efc774bc52c8742576342a33d3d028c189b57eb1d2439"
5024
+
checksum = "929f5df216f5c02a9e894554401bcdab6eec3e39ec6a4a7731c7067fc8688a93"
5078
5025
dependencies = [
5079
5026
"gtk",
5080
5027
"http",
5081
5028
"jni",
5082
5029
"log",
5083
-
"objc2 0.6.1",
5030
+
"objc2 0.6.3",
5084
5031
"objc2-app-kit",
5085
-
"objc2-foundation 0.3.1",
5032
+
"objc2-foundation 0.3.2",
5086
5033
"once_cell",
5087
5034
"percent-encoding",
5088
5035
"raw-window-handle",
···
5099
5046
5100
5047
[[package]]
5101
5048
name = "tauri-utils"
5102
-
version = "2.6.0"
5049
+
version = "2.8.0"
5103
5050
source = "registry+https://github.com/rust-lang/crates.io-index"
5104
-
checksum = "9330c15cabfe1d9f213478c9e8ec2b0c76dab26bb6f314b8ad1c8a568c1d186e"
5051
+
checksum = "f6b8bbe426abdbf52d050e52ed693130dbd68375b9ad82a3fb17efb4c8d85673"
5105
5052
dependencies = [
5106
5053
"anyhow",
5107
5054
"brotli",
···
5127
5074
"serde_json",
5128
5075
"serde_with",
5129
5076
"swift-rs",
5130
-
"thiserror 2.0.12",
5131
-
"toml 0.8.2",
5077
+
"thiserror 2.0.17",
5078
+
"toml 0.9.8",
5132
5079
"url",
5133
5080
"urlpattern",
5134
5081
"uuid",
···
5137
5084
5138
5085
[[package]]
5139
5086
name = "tauri-winres"
5140
-
version = "0.3.2"
5087
+
version = "0.3.3"
5141
5088
source = "registry+https://github.com/rust-lang/crates.io-index"
5142
-
checksum = "7c6d9028d41d4de835e3c482c677a8cb88137ac435d6ff9a71f392d4421576c9"
5089
+
checksum = "fd21509dd1fa9bd355dc29894a6ff10635880732396aa38c0066c1e6c1ab8074"
5143
5090
dependencies = [
5144
5091
"embed-resource",
5145
-
"indexmap 2.10.0",
5146
-
"toml 0.9.4",
5092
+
"toml 0.9.8",
5147
5093
]
5148
5094
5149
5095
[[package]]
5150
5096
name = "tempfile"
5151
-
version = "3.20.0"
5097
+
version = "3.23.0"
5152
5098
source = "registry+https://github.com/rust-lang/crates.io-index"
5153
-
checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1"
5099
+
checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"
5154
5100
dependencies = [
5155
5101
"fastrand",
5156
-
"getrandom 0.3.3",
5102
+
"getrandom 0.3.4",
5157
5103
"once_cell",
5158
-
"rustix 1.0.8",
5159
-
"windows-sys 0.59.0",
5104
+
"rustix",
5105
+
"windows-sys 0.61.2",
5160
5106
]
5161
5107
5162
5108
[[package]]
···
5181
5127
5182
5128
[[package]]
5183
5129
name = "thiserror"
5184
-
version = "2.0.12"
5130
+
version = "2.0.17"
5185
5131
source = "registry+https://github.com/rust-lang/crates.io-index"
5186
-
checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708"
5132
+
checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
5187
5133
dependencies = [
5188
-
"thiserror-impl 2.0.12",
5134
+
"thiserror-impl 2.0.17",
5189
5135
]
5190
5136
5191
5137
[[package]]
···
5196
5142
dependencies = [
5197
5143
"proc-macro2",
5198
5144
"quote",
5199
-
"syn 2.0.104",
5145
+
"syn 2.0.109",
5200
5146
]
5201
5147
5202
5148
[[package]]
5203
5149
name = "thiserror-impl"
5204
-
version = "2.0.12"
5150
+
version = "2.0.17"
5205
5151
source = "registry+https://github.com/rust-lang/crates.io-index"
5206
-
checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d"
5152
+
checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
5207
5153
dependencies = [
5208
5154
"proc-macro2",
5209
5155
"quote",
5210
-
"syn 2.0.104",
5156
+
"syn 2.0.109",
5211
5157
]
5212
5158
5213
5159
[[package]]
5214
5160
name = "tiff"
5215
-
version = "0.9.1"
5161
+
version = "0.10.3"
5216
5162
source = "registry+https://github.com/rust-lang/crates.io-index"
5217
-
checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e"
5163
+
checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f"
5218
5164
dependencies = [
5165
+
"fax",
5219
5166
"flate2",
5220
-
"jpeg-decoder",
5167
+
"half",
5168
+
"quick-error",
5221
5169
"weezl",
5170
+
"zune-jpeg",
5222
5171
]
5223
5172
5224
5173
[[package]]
5225
5174
name = "time"
5226
-
version = "0.3.41"
5175
+
version = "0.3.44"
5227
5176
source = "registry+https://github.com/rust-lang/crates.io-index"
5228
-
checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40"
5177
+
checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d"
5229
5178
dependencies = [
5230
5179
"deranged",
5231
5180
"itoa",
···
5238
5187
5239
5188
[[package]]
5240
5189
name = "time-core"
5241
-
version = "0.1.4"
5190
+
version = "0.1.6"
5242
5191
source = "registry+https://github.com/rust-lang/crates.io-index"
5243
-
checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c"
5192
+
checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b"
5244
5193
5245
5194
[[package]]
5246
5195
name = "time-macros"
5247
-
version = "0.2.22"
5196
+
version = "0.2.24"
5248
5197
source = "registry+https://github.com/rust-lang/crates.io-index"
5249
-
checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49"
5198
+
checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3"
5250
5199
dependencies = [
5251
5200
"num-conv",
5252
5201
"time-core",
···
5263
5212
5264
5213
[[package]]
5265
5214
name = "tinystr"
5266
-
version = "0.8.1"
5215
+
version = "0.8.2"
5267
5216
source = "registry+https://github.com/rust-lang/crates.io-index"
5268
-
checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b"
5217
+
checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
5269
5218
dependencies = [
5270
5219
"displaydoc",
5271
5220
"zerovec",
···
5273
5222
5274
5223
[[package]]
5275
5224
name = "tinyvec"
5276
-
version = "1.9.0"
5225
+
version = "1.10.0"
5277
5226
source = "registry+https://github.com/rust-lang/crates.io-index"
5278
-
checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71"
5227
+
checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa"
5279
5228
dependencies = [
5280
5229
"tinyvec_macros",
5281
5230
]
···
5288
5237
5289
5238
[[package]]
5290
5239
name = "tokio"
5291
-
version = "1.47.0"
5240
+
version = "1.48.0"
5292
5241
source = "registry+https://github.com/rust-lang/crates.io-index"
5293
-
checksum = "43864ed400b6043a4757a25c7a64a8efde741aed79a056a2fb348a406701bb35"
5242
+
checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408"
5294
5243
dependencies = [
5295
-
"backtrace",
5296
5244
"bytes",
5297
-
"io-uring",
5298
5245
"libc",
5299
-
"mio 1.0.4",
5246
+
"mio",
5300
5247
"pin-project-lite",
5301
-
"slab",
5302
-
"socket2 0.6.0",
5248
+
"socket2",
5303
5249
"tokio-macros",
5304
-
"windows-sys 0.59.0",
5250
+
"windows-sys 0.61.2",
5305
5251
]
5306
5252
5307
5253
[[package]]
5308
5254
name = "tokio-macros"
5309
-
version = "2.5.0"
5255
+
version = "2.6.0"
5310
5256
source = "registry+https://github.com/rust-lang/crates.io-index"
5311
-
checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
5257
+
checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
5312
5258
dependencies = [
5313
5259
"proc-macro2",
5314
5260
"quote",
5315
-
"syn 2.0.104",
5261
+
"syn 2.0.109",
5316
5262
]
5317
5263
5318
5264
[[package]]
···
5327
5273
5328
5274
[[package]]
5329
5275
name = "tokio-rustls"
5330
-
version = "0.26.2"
5276
+
version = "0.26.4"
5331
5277
source = "registry+https://github.com/rust-lang/crates.io-index"
5332
-
checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b"
5278
+
checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
5333
5279
dependencies = [
5334
5280
"rustls",
5335
5281
"tokio",
···
5337
5283
5338
5284
[[package]]
5339
5285
name = "tokio-util"
5340
-
version = "0.7.15"
5286
+
version = "0.7.17"
5341
5287
source = "registry+https://github.com/rust-lang/crates.io-index"
5342
-
checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df"
5288
+
checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594"
5343
5289
dependencies = [
5344
5290
"bytes",
5345
5291
"futures-core",
···
5362
5308
5363
5309
[[package]]
5364
5310
name = "toml"
5365
-
version = "0.9.4"
5311
+
version = "0.9.8"
5366
5312
source = "registry+https://github.com/rust-lang/crates.io-index"
5367
-
checksum = "41ae868b5a0f67631c14589f7e250c1ea2c574ee5ba21c6c8dd4b1485705a5a1"
5313
+
checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8"
5368
5314
dependencies = [
5369
-
"indexmap 2.10.0",
5370
-
"serde",
5371
-
"serde_spanned 1.0.0",
5372
-
"toml_datetime 0.7.0",
5315
+
"indexmap 2.12.0",
5316
+
"serde_core",
5317
+
"serde_spanned 1.0.3",
5318
+
"toml_datetime 0.7.3",
5373
5319
"toml_parser",
5374
5320
"toml_writer",
5375
-
"winnow 0.7.12",
5321
+
"winnow 0.7.13",
5376
5322
]
5377
5323
5378
5324
[[package]]
···
5386
5332
5387
5333
[[package]]
5388
5334
name = "toml_datetime"
5389
-
version = "0.7.0"
5335
+
version = "0.7.3"
5390
5336
source = "registry+https://github.com/rust-lang/crates.io-index"
5391
-
checksum = "bade1c3e902f58d73d3f294cd7f20391c1cb2fbcb643b73566bc773971df91e3"
5337
+
checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533"
5392
5338
dependencies = [
5393
-
"serde",
5339
+
"serde_core",
5394
5340
]
5395
5341
5396
5342
[[package]]
···
5399
5345
source = "registry+https://github.com/rust-lang/crates.io-index"
5400
5346
checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
5401
5347
dependencies = [
5402
-
"indexmap 2.10.0",
5348
+
"indexmap 2.12.0",
5403
5349
"toml_datetime 0.6.3",
5404
5350
"winnow 0.5.40",
5405
5351
]
···
5410
5356
source = "registry+https://github.com/rust-lang/crates.io-index"
5411
5357
checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
5412
5358
dependencies = [
5413
-
"indexmap 2.10.0",
5359
+
"indexmap 2.12.0",
5414
5360
"serde",
5415
5361
"serde_spanned 0.6.9",
5416
5362
"toml_datetime 0.6.3",
···
5418
5364
]
5419
5365
5420
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]]
5421
5379
name = "toml_parser"
5422
-
version = "1.0.1"
5380
+
version = "1.0.4"
5423
5381
source = "registry+https://github.com/rust-lang/crates.io-index"
5424
-
checksum = "97200572db069e74c512a14117b296ba0a80a30123fbbb5aa1f4a348f639ca30"
5382
+
checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e"
5425
5383
dependencies = [
5426
-
"winnow 0.7.12",
5384
+
"winnow 0.7.13",
5427
5385
]
5428
5386
5429
5387
[[package]]
5430
5388
name = "toml_writer"
5431
-
version = "1.0.2"
5389
+
version = "1.0.4"
5432
5390
source = "registry+https://github.com/rust-lang/crates.io-index"
5433
-
checksum = "fcc842091f2def52017664b53082ecbbeb5c7731092bad69d2c63050401dfd64"
5391
+
checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2"
5434
5392
5435
5393
[[package]]
5436
5394
name = "tower"
···
5453
5411
source = "registry+https://github.com/rust-lang/crates.io-index"
5454
5412
checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
5455
5413
dependencies = [
5456
-
"bitflags 2.9.1",
5414
+
"bitflags 2.10.0",
5457
5415
"bytes",
5458
5416
"futures-util",
5459
5417
"http",
···
5496
5454
dependencies = [
5497
5455
"proc-macro2",
5498
5456
"quote",
5499
-
"syn 2.0.104",
5457
+
"syn 2.0.109",
5500
5458
]
5501
5459
5502
5460
[[package]]
···
5510
5468
5511
5469
[[package]]
5512
5470
name = "tray-icon"
5513
-
version = "0.21.1"
5471
+
version = "0.21.2"
5514
5472
source = "registry+https://github.com/rust-lang/crates.io-index"
5515
-
checksum = "a0d92153331e7d02ec09137538996a7786fe679c629c279e82a6be762b7e6fe2"
5473
+
checksum = "e3d5572781bee8e3f994d7467084e1b1fd7a93ce66bd480f8156ba89dee55a2b"
5516
5474
dependencies = [
5517
5475
"crossbeam-channel",
5518
-
"dirs 6.0.0",
5476
+
"dirs",
5519
5477
"libappindicator",
5520
5478
"muda",
5521
-
"objc2 0.6.1",
5479
+
"objc2 0.6.3",
5522
5480
"objc2-app-kit",
5523
5481
"objc2-core-foundation",
5524
5482
"objc2-core-graphics",
5525
-
"objc2-foundation 0.3.1",
5483
+
"objc2-foundation 0.3.2",
5526
5484
"once_cell",
5527
-
"png",
5485
+
"png 0.17.16",
5528
5486
"serde",
5529
-
"thiserror 2.0.12",
5530
-
"windows-sys 0.59.0",
5487
+
"thiserror 2.0.17",
5488
+
"windows-sys 0.60.2",
5531
5489
]
5532
5490
5533
5491
[[package]]
···
5544
5502
5545
5503
[[package]]
5546
5504
name = "typenum"
5547
-
version = "1.18.0"
5505
+
version = "1.19.0"
5548
5506
source = "registry+https://github.com/rust-lang/crates.io-index"
5549
-
checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
5507
+
checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
5550
5508
5551
5509
[[package]]
5552
5510
name = "uds_windows"
···
5602
5560
5603
5561
[[package]]
5604
5562
name = "unicode-ident"
5605
-
version = "1.0.18"
5563
+
version = "1.0.22"
5606
5564
source = "registry+https://github.com/rust-lang/crates.io-index"
5607
-
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
5565
+
checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
5608
5566
5609
5567
[[package]]
5610
5568
name = "unicode-segmentation"
···
5620
5578
5621
5579
[[package]]
5622
5580
name = "url"
5623
-
version = "2.5.4"
5581
+
version = "2.5.7"
5624
5582
source = "registry+https://github.com/rust-lang/crates.io-index"
5625
-
checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60"
5583
+
checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b"
5626
5584
dependencies = [
5627
5585
"form_urlencoded",
5628
5586
"idna",
···
5656
5614
5657
5615
[[package]]
5658
5616
name = "uuid"
5659
-
version = "1.17.0"
5617
+
version = "1.18.1"
5660
5618
source = "registry+https://github.com/rust-lang/crates.io-index"
5661
-
checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d"
5619
+
checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2"
5662
5620
dependencies = [
5663
-
"getrandom 0.3.3",
5621
+
"getrandom 0.3.4",
5664
5622
"js-sys",
5665
5623
"serde",
5666
5624
"wasm-bindgen",
···
5685
5643
5686
5644
[[package]]
5687
5645
name = "version-compare"
5688
-
version = "0.2.0"
5646
+
version = "0.2.1"
5689
5647
source = "registry+https://github.com/rust-lang/crates.io-index"
5690
-
checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b"
5648
+
checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e"
5691
5649
5692
5650
[[package]]
5693
5651
name = "version_check"
···
5747
5705
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
5748
5706
5749
5707
[[package]]
5750
-
name = "wasi"
5751
-
version = "0.14.2+wasi-0.2.4"
5708
+
name = "wasip2"
5709
+
version = "1.0.1+wasi-0.2.4"
5752
5710
source = "registry+https://github.com/rust-lang/crates.io-index"
5753
-
checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
5711
+
checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
5754
5712
dependencies = [
5755
-
"wit-bindgen-rt",
5713
+
"wit-bindgen",
5756
5714
]
5757
5715
5758
5716
[[package]]
5759
5717
name = "wasm-bindgen"
5760
-
version = "0.2.100"
5718
+
version = "0.2.105"
5761
5719
source = "registry+https://github.com/rust-lang/crates.io-index"
5762
-
checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
5720
+
checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60"
5763
5721
dependencies = [
5764
5722
"cfg-if",
5765
5723
"once_cell",
5766
5724
"rustversion",
5767
5725
"wasm-bindgen-macro",
5768
-
]
5769
-
5770
-
[[package]]
5771
-
name = "wasm-bindgen-backend"
5772
-
version = "0.2.100"
5773
-
source = "registry+https://github.com/rust-lang/crates.io-index"
5774
-
checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
5775
-
dependencies = [
5776
-
"bumpalo",
5777
-
"log",
5778
-
"proc-macro2",
5779
-
"quote",
5780
-
"syn 2.0.104",
5781
5726
"wasm-bindgen-shared",
5782
5727
]
5783
5728
5784
5729
[[package]]
5785
5730
name = "wasm-bindgen-futures"
5786
-
version = "0.4.50"
5731
+
version = "0.4.55"
5787
5732
source = "registry+https://github.com/rust-lang/crates.io-index"
5788
-
checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61"
5733
+
checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0"
5789
5734
dependencies = [
5790
5735
"cfg-if",
5791
5736
"js-sys",
···
5796
5741
5797
5742
[[package]]
5798
5743
name = "wasm-bindgen-macro"
5799
-
version = "0.2.100"
5744
+
version = "0.2.105"
5800
5745
source = "registry+https://github.com/rust-lang/crates.io-index"
5801
-
checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
5746
+
checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2"
5802
5747
dependencies = [
5803
5748
"quote",
5804
5749
"wasm-bindgen-macro-support",
···
5806
5751
5807
5752
[[package]]
5808
5753
name = "wasm-bindgen-macro-support"
5809
-
version = "0.2.100"
5754
+
version = "0.2.105"
5810
5755
source = "registry+https://github.com/rust-lang/crates.io-index"
5811
-
checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
5756
+
checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc"
5812
5757
dependencies = [
5758
+
"bumpalo",
5813
5759
"proc-macro2",
5814
5760
"quote",
5815
-
"syn 2.0.104",
5816
-
"wasm-bindgen-backend",
5761
+
"syn 2.0.109",
5817
5762
"wasm-bindgen-shared",
5818
5763
]
5819
5764
5820
5765
[[package]]
5821
5766
name = "wasm-bindgen-shared"
5822
-
version = "0.2.100"
5767
+
version = "0.2.105"
5823
5768
source = "registry+https://github.com/rust-lang/crates.io-index"
5824
-
checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
5769
+
checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76"
5825
5770
dependencies = [
5826
5771
"unicode-ident",
5827
5772
]
···
5841
5786
5842
5787
[[package]]
5843
5788
name = "web-sys"
5844
-
version = "0.3.77"
5789
+
version = "0.3.82"
5845
5790
source = "registry+https://github.com/rust-lang/crates.io-index"
5846
-
checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
5791
+
checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1"
5847
5792
dependencies = [
5848
5793
"js-sys",
5849
5794
"wasm-bindgen",
···
5905
5850
5906
5851
[[package]]
5907
5852
name = "webpki-roots"
5908
-
version = "1.0.2"
5853
+
version = "1.0.4"
5909
5854
source = "registry+https://github.com/rust-lang/crates.io-index"
5910
-
checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2"
5855
+
checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e"
5911
5856
dependencies = [
5912
5857
"rustls-pki-types",
5913
5858
]
···
5921
5866
"webview2-com-macros",
5922
5867
"webview2-com-sys",
5923
5868
"windows",
5924
-
"windows-core",
5869
+
"windows-core 0.61.2",
5925
5870
"windows-implement",
5926
5871
"windows-interface",
5927
5872
]
···
5934
5879
dependencies = [
5935
5880
"proc-macro2",
5936
5881
"quote",
5937
-
"syn 2.0.104",
5882
+
"syn 2.0.109",
5938
5883
]
5939
5884
5940
5885
[[package]]
···
5943
5888
source = "registry+https://github.com/rust-lang/crates.io-index"
5944
5889
checksum = "36695906a1b53a3bf5c4289621efedac12b73eeb0b89e7e1a89b517302d5d75c"
5945
5890
dependencies = [
5946
-
"thiserror 2.0.12",
5891
+
"thiserror 2.0.17",
5947
5892
"windows",
5948
-
"windows-core",
5893
+
"windows-core 0.61.2",
5949
5894
]
5950
5895
5951
5896
[[package]]
···
5972
5917
5973
5918
[[package]]
5974
5919
name = "winapi-util"
5975
-
version = "0.1.9"
5920
+
version = "0.1.11"
5976
5921
source = "registry+https://github.com/rust-lang/crates.io-index"
5977
-
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
5922
+
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
5978
5923
dependencies = [
5979
-
"windows-sys 0.59.0",
5924
+
"windows-sys 0.61.2",
5980
5925
]
5981
5926
5982
5927
[[package]]
···
5991
5936
source = "registry+https://github.com/rust-lang/crates.io-index"
5992
5937
checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c"
5993
5938
dependencies = [
5994
-
"objc2 0.6.1",
5939
+
"objc2 0.6.3",
5995
5940
"objc2-app-kit",
5996
5941
"objc2-core-foundation",
5997
-
"objc2-foundation 0.3.1",
5942
+
"objc2-foundation 0.3.2",
5998
5943
"raw-window-handle",
5999
5944
"windows-sys 0.59.0",
6000
5945
"windows-version",
···
6007
5952
checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893"
6008
5953
dependencies = [
6009
5954
"windows-collections",
6010
-
"windows-core",
5955
+
"windows-core 0.61.2",
6011
5956
"windows-future",
6012
-
"windows-link",
5957
+
"windows-link 0.1.3",
6013
5958
"windows-numerics",
6014
5959
]
6015
5960
···
6019
5964
source = "registry+https://github.com/rust-lang/crates.io-index"
6020
5965
checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8"
6021
5966
dependencies = [
6022
-
"windows-core",
5967
+
"windows-core 0.61.2",
6023
5968
]
6024
5969
6025
5970
[[package]]
···
6030
5975
dependencies = [
6031
5976
"windows-implement",
6032
5977
"windows-interface",
6033
-
"windows-link",
6034
-
"windows-result",
6035
-
"windows-strings",
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",
6036
5994
]
6037
5995
6038
5996
[[package]]
···
6041
5999
source = "registry+https://github.com/rust-lang/crates.io-index"
6042
6000
checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
6043
6001
dependencies = [
6044
-
"windows-core",
6045
-
"windows-link",
6002
+
"windows-core 0.61.2",
6003
+
"windows-link 0.1.3",
6046
6004
"windows-threading",
6047
6005
]
6048
6006
6049
6007
[[package]]
6050
6008
name = "windows-implement"
6051
-
version = "0.60.0"
6009
+
version = "0.60.2"
6052
6010
source = "registry+https://github.com/rust-lang/crates.io-index"
6053
-
checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
6011
+
checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
6054
6012
dependencies = [
6055
6013
"proc-macro2",
6056
6014
"quote",
6057
-
"syn 2.0.104",
6015
+
"syn 2.0.109",
6058
6016
]
6059
6017
6060
6018
[[package]]
6061
6019
name = "windows-interface"
6062
-
version = "0.59.1"
6020
+
version = "0.59.3"
6063
6021
source = "registry+https://github.com/rust-lang/crates.io-index"
6064
-
checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
6022
+
checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
6065
6023
dependencies = [
6066
6024
"proc-macro2",
6067
6025
"quote",
6068
-
"syn 2.0.104",
6026
+
"syn 2.0.109",
6069
6027
]
6070
6028
6071
6029
[[package]]
···
6075
6033
checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
6076
6034
6077
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]]
6078
6042
name = "windows-numerics"
6079
6043
version = "0.2.0"
6080
6044
source = "registry+https://github.com/rust-lang/crates.io-index"
6081
6045
checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
6082
6046
dependencies = [
6083
-
"windows-core",
6084
-
"windows-link",
6047
+
"windows-core 0.61.2",
6048
+
"windows-link 0.1.3",
6085
6049
]
6086
6050
6087
6051
[[package]]
···
6090
6054
source = "registry+https://github.com/rust-lang/crates.io-index"
6091
6055
checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e"
6092
6056
dependencies = [
6093
-
"windows-link",
6094
-
"windows-result",
6095
-
"windows-strings",
6057
+
"windows-link 0.1.3",
6058
+
"windows-result 0.3.4",
6059
+
"windows-strings 0.4.2",
6096
6060
]
6097
6061
6098
6062
[[package]]
···
6101
6065
source = "registry+https://github.com/rust-lang/crates.io-index"
6102
6066
checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
6103
6067
dependencies = [
6104
-
"windows-link",
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",
6105
6078
]
6106
6079
6107
6080
[[package]]
···
6110
6083
source = "registry+https://github.com/rust-lang/crates.io-index"
6111
6084
checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
6112
6085
dependencies = [
6113
-
"windows-link",
6086
+
"windows-link 0.1.3",
6114
6087
]
6115
6088
6116
6089
[[package]]
6117
-
name = "windows-sys"
6118
-
version = "0.45.0"
6090
+
name = "windows-strings"
6091
+
version = "0.5.1"
6119
6092
source = "registry+https://github.com/rust-lang/crates.io-index"
6120
-
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
6093
+
checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
6121
6094
dependencies = [
6122
-
"windows-targets 0.42.2",
6095
+
"windows-link 0.2.1",
6123
6096
]
6124
6097
6125
6098
[[package]]
6126
6099
name = "windows-sys"
6127
-
version = "0.48.0"
6100
+
version = "0.45.0"
6128
6101
source = "registry+https://github.com/rust-lang/crates.io-index"
6129
-
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
6102
+
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
6130
6103
dependencies = [
6131
-
"windows-targets 0.48.5",
6104
+
"windows-targets 0.42.2",
6132
6105
]
6133
6106
6134
6107
[[package]]
···
6155
6128
source = "registry+https://github.com/rust-lang/crates.io-index"
6156
6129
checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
6157
6130
dependencies = [
6158
-
"windows-targets 0.53.3",
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",
6159
6141
]
6160
6142
6161
6143
[[package]]
···
6175
6157
6176
6158
[[package]]
6177
6159
name = "windows-targets"
6178
-
version = "0.48.5"
6179
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6180
-
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
6181
-
dependencies = [
6182
-
"windows_aarch64_gnullvm 0.48.5",
6183
-
"windows_aarch64_msvc 0.48.5",
6184
-
"windows_i686_gnu 0.48.5",
6185
-
"windows_i686_msvc 0.48.5",
6186
-
"windows_x86_64_gnu 0.48.5",
6187
-
"windows_x86_64_gnullvm 0.48.5",
6188
-
"windows_x86_64_msvc 0.48.5",
6189
-
]
6190
-
6191
-
[[package]]
6192
-
name = "windows-targets"
6193
6160
version = "0.52.6"
6194
6161
source = "registry+https://github.com/rust-lang/crates.io-index"
6195
6162
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
···
6206
6173
6207
6174
[[package]]
6208
6175
name = "windows-targets"
6209
-
version = "0.53.3"
6176
+
version = "0.53.5"
6210
6177
source = "registry+https://github.com/rust-lang/crates.io-index"
6211
-
checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91"
6178
+
checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
6212
6179
dependencies = [
6213
-
"windows-link",
6214
-
"windows_aarch64_gnullvm 0.53.0",
6215
-
"windows_aarch64_msvc 0.53.0",
6216
-
"windows_i686_gnu 0.53.0",
6217
-
"windows_i686_gnullvm 0.53.0",
6218
-
"windows_i686_msvc 0.53.0",
6219
-
"windows_x86_64_gnu 0.53.0",
6220
-
"windows_x86_64_gnullvm 0.53.0",
6221
-
"windows_x86_64_msvc 0.53.0",
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",
6222
6189
]
6223
6190
6224
6191
[[package]]
···
6227
6194
source = "registry+https://github.com/rust-lang/crates.io-index"
6228
6195
checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
6229
6196
dependencies = [
6230
-
"windows-link",
6197
+
"windows-link 0.1.3",
6231
6198
]
6232
6199
6233
6200
[[package]]
6234
6201
name = "windows-version"
6235
-
version = "0.1.4"
6202
+
version = "0.1.7"
6236
6203
source = "registry+https://github.com/rust-lang/crates.io-index"
6237
-
checksum = "e04a5c6627e310a23ad2358483286c7df260c964eb2d003d8efd6d0f4e79265c"
6204
+
checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631"
6238
6205
dependencies = [
6239
-
"windows-link",
6206
+
"windows-link 0.2.1",
6240
6207
]
6241
6208
6242
6209
[[package]]
···
6244
6211
version = "0.42.2"
6245
6212
source = "registry+https://github.com/rust-lang/crates.io-index"
6246
6213
checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
6247
-
6248
-
[[package]]
6249
-
name = "windows_aarch64_gnullvm"
6250
-
version = "0.48.5"
6251
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6252
-
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
6253
6214
6254
6215
[[package]]
6255
6216
name = "windows_aarch64_gnullvm"
···
6259
6220
6260
6221
[[package]]
6261
6222
name = "windows_aarch64_gnullvm"
6262
-
version = "0.53.0"
6223
+
version = "0.53.1"
6263
6224
source = "registry+https://github.com/rust-lang/crates.io-index"
6264
-
checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
6225
+
checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
6265
6226
6266
6227
[[package]]
6267
6228
name = "windows_aarch64_msvc"
···
6271
6232
6272
6233
[[package]]
6273
6234
name = "windows_aarch64_msvc"
6274
-
version = "0.48.5"
6275
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6276
-
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
6277
-
6278
-
[[package]]
6279
-
name = "windows_aarch64_msvc"
6280
6235
version = "0.52.6"
6281
6236
source = "registry+https://github.com/rust-lang/crates.io-index"
6282
6237
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
6283
6238
6284
6239
[[package]]
6285
6240
name = "windows_aarch64_msvc"
6286
-
version = "0.53.0"
6241
+
version = "0.53.1"
6287
6242
source = "registry+https://github.com/rust-lang/crates.io-index"
6288
-
checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
6243
+
checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
6289
6244
6290
6245
[[package]]
6291
6246
name = "windows_i686_gnu"
···
6295
6250
6296
6251
[[package]]
6297
6252
name = "windows_i686_gnu"
6298
-
version = "0.48.5"
6299
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6300
-
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
6301
-
6302
-
[[package]]
6303
-
name = "windows_i686_gnu"
6304
6253
version = "0.52.6"
6305
6254
source = "registry+https://github.com/rust-lang/crates.io-index"
6306
6255
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
6307
6256
6308
6257
[[package]]
6309
6258
name = "windows_i686_gnu"
6310
-
version = "0.53.0"
6259
+
version = "0.53.1"
6311
6260
source = "registry+https://github.com/rust-lang/crates.io-index"
6312
-
checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
6261
+
checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
6313
6262
6314
6263
[[package]]
6315
6264
name = "windows_i686_gnullvm"
···
6319
6268
6320
6269
[[package]]
6321
6270
name = "windows_i686_gnullvm"
6322
-
version = "0.53.0"
6271
+
version = "0.53.1"
6323
6272
source = "registry+https://github.com/rust-lang/crates.io-index"
6324
-
checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
6273
+
checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
6325
6274
6326
6275
[[package]]
6327
6276
name = "windows_i686_msvc"
···
6331
6280
6332
6281
[[package]]
6333
6282
name = "windows_i686_msvc"
6334
-
version = "0.48.5"
6335
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6336
-
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
6337
-
6338
-
[[package]]
6339
-
name = "windows_i686_msvc"
6340
6283
version = "0.52.6"
6341
6284
source = "registry+https://github.com/rust-lang/crates.io-index"
6342
6285
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
6343
6286
6344
6287
[[package]]
6345
6288
name = "windows_i686_msvc"
6346
-
version = "0.53.0"
6289
+
version = "0.53.1"
6347
6290
source = "registry+https://github.com/rust-lang/crates.io-index"
6348
-
checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
6291
+
checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
6349
6292
6350
6293
[[package]]
6351
6294
name = "windows_x86_64_gnu"
···
6355
6298
6356
6299
[[package]]
6357
6300
name = "windows_x86_64_gnu"
6358
-
version = "0.48.5"
6359
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6360
-
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
6361
-
6362
-
[[package]]
6363
-
name = "windows_x86_64_gnu"
6364
6301
version = "0.52.6"
6365
6302
source = "registry+https://github.com/rust-lang/crates.io-index"
6366
6303
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
6367
6304
6368
6305
[[package]]
6369
6306
name = "windows_x86_64_gnu"
6370
-
version = "0.53.0"
6307
+
version = "0.53.1"
6371
6308
source = "registry+https://github.com/rust-lang/crates.io-index"
6372
-
checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
6309
+
checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
6373
6310
6374
6311
[[package]]
6375
6312
name = "windows_x86_64_gnullvm"
···
6379
6316
6380
6317
[[package]]
6381
6318
name = "windows_x86_64_gnullvm"
6382
-
version = "0.48.5"
6383
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6384
-
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
6385
-
6386
-
[[package]]
6387
-
name = "windows_x86_64_gnullvm"
6388
6319
version = "0.52.6"
6389
6320
source = "registry+https://github.com/rust-lang/crates.io-index"
6390
6321
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
6391
6322
6392
6323
[[package]]
6393
6324
name = "windows_x86_64_gnullvm"
6394
-
version = "0.53.0"
6325
+
version = "0.53.1"
6395
6326
source = "registry+https://github.com/rust-lang/crates.io-index"
6396
-
checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
6327
+
checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
6397
6328
6398
6329
[[package]]
6399
6330
name = "windows_x86_64_msvc"
···
6403
6334
6404
6335
[[package]]
6405
6336
name = "windows_x86_64_msvc"
6406
-
version = "0.48.5"
6407
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6408
-
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
6409
-
6410
-
[[package]]
6411
-
name = "windows_x86_64_msvc"
6412
6337
version = "0.52.6"
6413
6338
source = "registry+https://github.com/rust-lang/crates.io-index"
6414
6339
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
6415
6340
6416
6341
[[package]]
6417
6342
name = "windows_x86_64_msvc"
6418
-
version = "0.53.0"
6343
+
version = "0.53.1"
6419
6344
source = "registry+https://github.com/rust-lang/crates.io-index"
6420
-
checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
6345
+
checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
6421
6346
6422
6347
[[package]]
6423
6348
name = "winnow"
···
6430
6355
6431
6356
[[package]]
6432
6357
name = "winnow"
6433
-
version = "0.7.12"
6358
+
version = "0.7.13"
6434
6359
source = "registry+https://github.com/rust-lang/crates.io-index"
6435
-
checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95"
6360
+
checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf"
6361
+
dependencies = [
6362
+
"memchr",
6363
+
]
6436
6364
6437
6365
[[package]]
6438
6366
name = "winreg"
···
6445
6373
]
6446
6374
6447
6375
[[package]]
6448
-
name = "wit-bindgen-rt"
6449
-
version = "0.39.0"
6376
+
name = "wit-bindgen"
6377
+
version = "0.46.0"
6450
6378
source = "registry+https://github.com/rust-lang/crates.io-index"
6451
-
checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
6452
-
dependencies = [
6453
-
"bitflags 2.9.1",
6454
-
]
6379
+
checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
6455
6380
6456
6381
[[package]]
6457
6382
name = "writeable"
6458
-
version = "0.6.1"
6383
+
version = "0.6.2"
6459
6384
source = "registry+https://github.com/rust-lang/crates.io-index"
6460
-
checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb"
6385
+
checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
6461
6386
6462
6387
[[package]]
6463
6388
name = "wry"
6464
-
version = "0.52.1"
6389
+
version = "0.53.5"
6465
6390
source = "registry+https://github.com/rust-lang/crates.io-index"
6466
-
checksum = "12a714d9ba7075aae04a6e50229d6109e3d584774b99a6a8c60de1698ca111b9"
6391
+
checksum = "728b7d4c8ec8d81cab295e0b5b8a4c263c0d41a785fb8f8c4df284e5411140a2"
6467
6392
dependencies = [
6468
6393
"base64 0.22.1",
6469
-
"block2 0.6.1",
6394
+
"block2 0.6.2",
6470
6395
"cookie",
6471
6396
"crossbeam-channel",
6397
+
"dirs",
6472
6398
"dpi",
6473
6399
"dunce",
6474
6400
"gdkx11",
···
6480
6406
"kuchikiki",
6481
6407
"libc",
6482
6408
"ndk",
6483
-
"objc2 0.6.1",
6409
+
"objc2 0.6.3",
6484
6410
"objc2-app-kit",
6485
6411
"objc2-core-foundation",
6486
-
"objc2-foundation 0.3.1",
6412
+
"objc2-foundation 0.3.2",
6487
6413
"objc2-ui-kit",
6488
6414
"objc2-web-kit",
6489
6415
"once_cell",
···
6492
6418
"sha2",
6493
6419
"soup3",
6494
6420
"tao-macros",
6495
-
"thiserror 2.0.12",
6421
+
"thiserror 2.0.17",
6496
6422
"url",
6497
6423
"webkit2gtk",
6498
6424
"webkit2gtk-sys",
6499
6425
"webview2-com",
6500
6426
"windows",
6501
-
"windows-core",
6427
+
"windows-core 0.61.2",
6502
6428
"windows-version",
6503
6429
"x11-dl",
6504
6430
]
···
6526
6452
6527
6453
[[package]]
6528
6454
name = "x11rb"
6529
-
version = "0.13.1"
6455
+
version = "0.13.2"
6530
6456
source = "registry+https://github.com/rust-lang/crates.io-index"
6531
-
checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12"
6457
+
checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414"
6532
6458
dependencies = [
6533
6459
"gethostname",
6534
-
"rustix 0.38.44",
6460
+
"rustix",
6535
6461
"x11rb-protocol",
6536
6462
]
6537
6463
6538
6464
[[package]]
6539
6465
name = "x11rb-protocol"
6540
-
version = "0.13.1"
6466
+
version = "0.13.2"
6541
6467
source = "registry+https://github.com/rust-lang/crates.io-index"
6542
-
checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d"
6543
-
6544
-
[[package]]
6545
-
name = "xdg-home"
6546
-
version = "1.3.0"
6547
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6548
-
checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6"
6549
-
dependencies = [
6550
-
"libc",
6551
-
"windows-sys 0.59.0",
6552
-
]
6468
+
checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd"
6553
6469
6554
6470
[[package]]
6555
6471
name = "yoke"
6556
-
version = "0.8.0"
6472
+
version = "0.8.1"
6557
6473
source = "registry+https://github.com/rust-lang/crates.io-index"
6558
-
checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc"
6474
+
checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954"
6559
6475
dependencies = [
6560
-
"serde",
6561
6476
"stable_deref_trait",
6562
6477
"yoke-derive",
6563
6478
"zerofrom",
···
6565
6480
6566
6481
[[package]]
6567
6482
name = "yoke-derive"
6568
-
version = "0.8.0"
6483
+
version = "0.8.1"
6569
6484
source = "registry+https://github.com/rust-lang/crates.io-index"
6570
-
checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6"
6485
+
checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
6571
6486
dependencies = [
6572
6487
"proc-macro2",
6573
6488
"quote",
6574
-
"syn 2.0.104",
6489
+
"syn 2.0.109",
6575
6490
"synstructure",
6576
6491
]
6577
6492
6578
6493
[[package]]
6579
6494
name = "zbus"
6580
-
version = "4.0.1"
6495
+
version = "5.12.0"
6581
6496
source = "registry+https://github.com/rust-lang/crates.io-index"
6582
-
checksum = "7b8e3d6ae3342792a6cc2340e4394334c7402f3d793b390d2c5494a4032b3030"
6497
+
checksum = "b622b18155f7a93d1cd2dc8c01d2d6a44e08fb9ebb7b3f9e6ed101488bad6c91"
6583
6498
dependencies = [
6584
6499
"async-broadcast",
6585
6500
"async-executor",
6586
-
"async-fs",
6587
6501
"async-io",
6588
6502
"async-lock",
6589
6503
"async-process",
···
6591
6505
"async-task",
6592
6506
"async-trait",
6593
6507
"blocking",
6594
-
"derivative",
6595
6508
"enumflags2",
6596
6509
"event-listener",
6597
6510
"futures-core",
6598
-
"futures-sink",
6599
-
"futures-util",
6511
+
"futures-lite",
6600
6512
"hex",
6601
6513
"nix",
6602
6514
"ordered-stream",
6603
-
"rand 0.8.5",
6604
6515
"serde",
6605
6516
"serde_repr",
6606
-
"sha1",
6607
-
"static_assertions",
6608
6517
"tracing",
6609
6518
"uds_windows",
6610
-
"windows-sys 0.52.0",
6611
-
"xdg-home",
6519
+
"uuid",
6520
+
"windows-sys 0.61.2",
6521
+
"winnow 0.7.13",
6612
6522
"zbus_macros",
6613
6523
"zbus_names",
6614
6524
"zvariant",
···
6616
6526
6617
6527
[[package]]
6618
6528
name = "zbus_macros"
6619
-
version = "4.0.1"
6529
+
version = "5.12.0"
6620
6530
source = "registry+https://github.com/rust-lang/crates.io-index"
6621
-
checksum = "b7a3e850ff1e7217a3b7a07eba90d37fe9bb9e89a310f718afcde5885ca9b6d7"
6531
+
checksum = "1cdb94821ca8a87ca9c298b5d1cbd80e2a8b67115d99f6e4551ac49e42b6a314"
6622
6532
dependencies = [
6623
-
"proc-macro-crate 1.3.1",
6533
+
"proc-macro-crate 3.4.0",
6624
6534
"proc-macro2",
6625
6535
"quote",
6626
-
"regex",
6627
-
"syn 1.0.109",
6536
+
"syn 2.0.109",
6537
+
"zbus_names",
6538
+
"zvariant",
6628
6539
"zvariant_utils",
6629
6540
]
6630
6541
6631
6542
[[package]]
6632
6543
name = "zbus_names"
6633
-
version = "3.0.0"
6544
+
version = "4.2.0"
6634
6545
source = "registry+https://github.com/rust-lang/crates.io-index"
6635
-
checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c"
6546
+
checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97"
6636
6547
dependencies = [
6637
6548
"serde",
6638
6549
"static_assertions",
6550
+
"winnow 0.7.13",
6639
6551
"zvariant",
6640
6552
]
6641
6553
6642
6554
[[package]]
6643
6555
name = "zerocopy"
6644
-
version = "0.8.26"
6556
+
version = "0.8.27"
6645
6557
source = "registry+https://github.com/rust-lang/crates.io-index"
6646
-
checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f"
6558
+
checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c"
6647
6559
dependencies = [
6648
6560
"zerocopy-derive",
6649
6561
]
6650
6562
6651
6563
[[package]]
6652
6564
name = "zerocopy-derive"
6653
-
version = "0.8.26"
6565
+
version = "0.8.27"
6654
6566
source = "registry+https://github.com/rust-lang/crates.io-index"
6655
-
checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181"
6567
+
checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831"
6656
6568
dependencies = [
6657
6569
"proc-macro2",
6658
6570
"quote",
6659
-
"syn 2.0.104",
6571
+
"syn 2.0.109",
6660
6572
]
6661
6573
6662
6574
[[package]]
···
6676
6588
dependencies = [
6677
6589
"proc-macro2",
6678
6590
"quote",
6679
-
"syn 2.0.104",
6591
+
"syn 2.0.109",
6680
6592
"synstructure",
6681
6593
]
6682
6594
6683
6595
[[package]]
6684
6596
name = "zeroize"
6685
-
version = "1.8.1"
6597
+
version = "1.8.2"
6686
6598
source = "registry+https://github.com/rust-lang/crates.io-index"
6687
-
checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
6599
+
checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
6688
6600
6689
6601
[[package]]
6690
6602
name = "zerotrie"
6691
-
version = "0.2.2"
6603
+
version = "0.2.3"
6692
6604
source = "registry+https://github.com/rust-lang/crates.io-index"
6693
-
checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595"
6605
+
checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851"
6694
6606
dependencies = [
6695
6607
"displaydoc",
6696
6608
"yoke",
···
6699
6611
6700
6612
[[package]]
6701
6613
name = "zerovec"
6702
-
version = "0.11.2"
6614
+
version = "0.11.5"
6703
6615
source = "registry+https://github.com/rust-lang/crates.io-index"
6704
-
checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428"
6616
+
checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
6705
6617
dependencies = [
6706
6618
"yoke",
6707
6619
"zerofrom",
···
6710
6622
6711
6623
[[package]]
6712
6624
name = "zerovec-derive"
6713
-
version = "0.11.1"
6625
+
version = "0.11.2"
6714
6626
source = "registry+https://github.com/rust-lang/crates.io-index"
6715
-
checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f"
6627
+
checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
6716
6628
dependencies = [
6717
6629
"proc-macro2",
6718
6630
"quote",
6719
-
"syn 2.0.104",
6631
+
"syn 2.0.109",
6720
6632
]
6721
6633
6722
6634
[[package]]
···
6736
6648
6737
6649
[[package]]
6738
6650
name = "zune-jpeg"
6739
-
version = "0.4.20"
6651
+
version = "0.4.21"
6740
6652
source = "registry+https://github.com/rust-lang/crates.io-index"
6741
-
checksum = "fc1f7e205ce79eb2da3cd71c5f55f3589785cb7c79f6a03d1c8d1491bda5d089"
6653
+
checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713"
6742
6654
dependencies = [
6743
6655
"zune-core",
6744
6656
]
6745
6657
6746
6658
[[package]]
6747
6659
name = "zvariant"
6748
-
version = "4.0.0"
6660
+
version = "5.8.0"
6749
6661
source = "registry+https://github.com/rust-lang/crates.io-index"
6750
-
checksum = "4e09e8be97d44eeab994d752f341e67b3b0d80512a8b315a0671d47232ef1b65"
6662
+
checksum = "2be61892e4f2b1772727be11630a62664a1826b62efa43a6fe7449521cb8744c"
6751
6663
dependencies = [
6752
6664
"endi",
6753
6665
"enumflags2",
6754
6666
"serde",
6755
-
"static_assertions",
6667
+
"winnow 0.7.13",
6756
6668
"zvariant_derive",
6669
+
"zvariant_utils",
6757
6670
]
6758
6671
6759
6672
[[package]]
6760
6673
name = "zvariant_derive"
6761
-
version = "4.0.0"
6674
+
version = "5.8.0"
6762
6675
source = "registry+https://github.com/rust-lang/crates.io-index"
6763
-
checksum = "72a5857e2856435331636a9fbb415b09243df4521a267c5bedcd5289b4d5799e"
6676
+
checksum = "da58575a1b2b20766513b1ec59d8e2e68db2745379f961f86650655e862d2006"
6764
6677
dependencies = [
6765
-
"proc-macro-crate 1.3.1",
6678
+
"proc-macro-crate 3.4.0",
6766
6679
"proc-macro2",
6767
6680
"quote",
6768
-
"syn 1.0.109",
6681
+
"syn 2.0.109",
6769
6682
"zvariant_utils",
6770
6683
]
6771
6684
6772
6685
[[package]]
6773
6686
name = "zvariant_utils"
6774
-
version = "1.1.0"
6687
+
version = "3.2.1"
6775
6688
source = "registry+https://github.com/rust-lang/crates.io-index"
6776
-
checksum = "00bedb16a193cc12451873fee2a1bc6550225acece0e36f333e68326c73c8172"
6689
+
checksum = "c6949d142f89f6916deca2232cf26a8afacf2b9fdc35ce766105e104478be599"
6777
6690
dependencies = [
6778
6691
"proc-macro2",
6779
6692
"quote",
6780
-
"syn 1.0.109",
6693
+
"serde",
6694
+
"syn 2.0.109",
6695
+
"winnow 0.7.13",
6781
6696
]
+14
-16
src-tauri/Cargo.toml
+14
-16
src-tauri/Cargo.toml
···
1
1
[package]
2
2
name = "VRChatPhotoManager"
3
-
version = "0.2.5"
3
+
version = "0.2.7-hot1"
4
4
description = "VRChat Photo Manager"
5
5
authors = ["_phaz"]
6
6
edition = "2021"
···
11
11
tauri-build = { version = "2.0.0-rc", features = [] }
12
12
13
13
[dependencies]
14
-
tauri = { version = "2.0.0-rc", features = ["tray-icon", "image-png", "devtools"] }
14
+
tauri = { version = "2.9", features = [ "tray-icon", "image-png", "devtools" ] }
15
15
serde = { version = "1.0", features = ["derive"] }
16
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"
17
+
open = "5.3"
18
+
dirs = "6.0"
19
+
notify = "8.2"
20
+
regex = "1.12"
22
21
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
-
arboard = "3.6.0"
30
-
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"
31
29
[target.'cfg(windows)'.dependencies]
32
-
mslnk = { version = "0.1.8" }
30
+
mslnk = { version = "0.1" }
33
31
34
32
[features]
35
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
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
520
},
521
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`",
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
523
"type": "string",
524
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`"
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
526
},
527
527
{
528
528
"description": "Enables the app_hide command without any pre-configured scope.",
···
567
567
"markdownDescription": "Enables the name command without any pre-configured scope."
568
568
},
569
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
+
{
570
576
"description": "Enables the remove_data_store command without any pre-configured scope.",
571
577
"type": "string",
572
578
"const": "core:app:allow-remove-data-store",
573
579
"markdownDescription": "Enables the remove_data_store command without any pre-configured scope."
574
580
},
575
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
+
{
576
588
"description": "Enables the set_app_theme command without any pre-configured scope.",
577
589
"type": "string",
578
590
"const": "core:app:allow-set-app-theme",
···
639
651
"markdownDescription": "Denies the name command without any pre-configured scope."
640
652
},
641
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
+
{
642
660
"description": "Denies the remove_data_store command without any pre-configured scope.",
643
661
"type": "string",
644
662
"const": "core:app:deny-remove-data-store",
645
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."
646
670
},
647
671
{
648
672
"description": "Denies the set_app_theme command without any pre-configured scope.",
···
1827
1851
"markdownDescription": "Enables the set_focus command without any pre-configured scope."
1828
1852
},
1829
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
+
{
1830
1860
"description": "Enables the set_fullscreen command without any pre-configured scope.",
1831
1861
"type": "string",
1832
1862
"const": "core:window:allow-set-fullscreen",
···
1897
1927
"type": "string",
1898
1928
"const": "core:window:allow-set-shadow",
1899
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."
1900
1936
},
1901
1937
{
1902
1938
"description": "Enables the set_size command without any pre-configured scope.",
···
2271
2307
"markdownDescription": "Denies the set_focus command without any pre-configured scope."
2272
2308
},
2273
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
+
{
2274
2316
"description": "Denies the set_fullscreen command without any pre-configured scope.",
2275
2317
"type": "string",
2276
2318
"const": "core:window:deny-set-fullscreen",
···
2341
2383
"type": "string",
2342
2384
"const": "core:window:deny-set-shadow",
2343
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."
2344
2392
},
2345
2393
{
2346
2394
"description": "Denies the set_size command without any pre-configured scope.",
···
2431
2479
"type": "string",
2432
2480
"const": "core:window:deny-unminimize",
2433
2481
"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
2482
},
2489
2483
{
2490
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
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
520
},
521
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`",
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
523
"type": "string",
524
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`"
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
526
},
527
527
{
528
528
"description": "Enables the app_hide command without any pre-configured scope.",
···
567
567
"markdownDescription": "Enables the name command without any pre-configured scope."
568
568
},
569
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
+
{
570
576
"description": "Enables the remove_data_store command without any pre-configured scope.",
571
577
"type": "string",
572
578
"const": "core:app:allow-remove-data-store",
573
579
"markdownDescription": "Enables the remove_data_store command without any pre-configured scope."
574
580
},
575
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
+
{
576
588
"description": "Enables the set_app_theme command without any pre-configured scope.",
577
589
"type": "string",
578
590
"const": "core:app:allow-set-app-theme",
···
639
651
"markdownDescription": "Denies the name command without any pre-configured scope."
640
652
},
641
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
+
{
642
660
"description": "Denies the remove_data_store command without any pre-configured scope.",
643
661
"type": "string",
644
662
"const": "core:app:deny-remove-data-store",
645
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."
646
670
},
647
671
{
648
672
"description": "Denies the set_app_theme command without any pre-configured scope.",
···
1827
1851
"markdownDescription": "Enables the set_focus command without any pre-configured scope."
1828
1852
},
1829
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
+
{
1830
1860
"description": "Enables the set_fullscreen command without any pre-configured scope.",
1831
1861
"type": "string",
1832
1862
"const": "core:window:allow-set-fullscreen",
···
1897
1927
"type": "string",
1898
1928
"const": "core:window:allow-set-shadow",
1899
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."
1900
1936
},
1901
1937
{
1902
1938
"description": "Enables the set_size command without any pre-configured scope.",
···
2271
2307
"markdownDescription": "Denies the set_focus command without any pre-configured scope."
2272
2308
},
2273
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
+
{
2274
2316
"description": "Denies the set_fullscreen command without any pre-configured scope.",
2275
2317
"type": "string",
2276
2318
"const": "core:window:deny-set-fullscreen",
···
2341
2383
"type": "string",
2342
2384
"const": "core:window:deny-set-shadow",
2343
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."
2344
2392
},
2345
2393
{
2346
2394
"description": "Denies the set_size command without any pre-configured scope.",
···
2431
2479
"type": "string",
2432
2480
"const": "core:window:deny-unminimize",
2433
2481
"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
2482
},
2489
2483
{
2490
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/windows-schema.json
+50
-56
src-tauri/gen/schemas/windows-schema.json
···
519
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
520
},
521
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`",
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
523
"type": "string",
524
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`"
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
526
},
527
527
{
528
528
"description": "Enables the app_hide command without any pre-configured scope.",
···
567
567
"markdownDescription": "Enables the name command without any pre-configured scope."
568
568
},
569
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
+
{
570
576
"description": "Enables the remove_data_store command without any pre-configured scope.",
571
577
"type": "string",
572
578
"const": "core:app:allow-remove-data-store",
573
579
"markdownDescription": "Enables the remove_data_store command without any pre-configured scope."
574
580
},
575
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
+
{
576
588
"description": "Enables the set_app_theme command without any pre-configured scope.",
577
589
"type": "string",
578
590
"const": "core:app:allow-set-app-theme",
···
639
651
"markdownDescription": "Denies the name command without any pre-configured scope."
640
652
},
641
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
+
{
642
660
"description": "Denies the remove_data_store command without any pre-configured scope.",
643
661
"type": "string",
644
662
"const": "core:app:deny-remove-data-store",
645
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."
646
670
},
647
671
{
648
672
"description": "Denies the set_app_theme command without any pre-configured scope.",
···
1827
1851
"markdownDescription": "Enables the set_focus command without any pre-configured scope."
1828
1852
},
1829
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
+
{
1830
1860
"description": "Enables the set_fullscreen command without any pre-configured scope.",
1831
1861
"type": "string",
1832
1862
"const": "core:window:allow-set-fullscreen",
···
1897
1927
"type": "string",
1898
1928
"const": "core:window:allow-set-shadow",
1899
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."
1900
1936
},
1901
1937
{
1902
1938
"description": "Enables the set_size command without any pre-configured scope.",
···
2271
2307
"markdownDescription": "Denies the set_focus command without any pre-configured scope."
2272
2308
},
2273
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
+
{
2274
2316
"description": "Denies the set_fullscreen command without any pre-configured scope.",
2275
2317
"type": "string",
2276
2318
"const": "core:window:deny-set-fullscreen",
···
2341
2383
"type": "string",
2342
2384
"const": "core:window:deny-set-shadow",
2343
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."
2344
2392
},
2345
2393
{
2346
2394
"description": "Denies the set_size command without any pre-configured scope.",
···
2431
2479
"type": "string",
2432
2480
"const": "core:window:deny-unminimize",
2433
2481
"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
2482
},
2489
2483
{
2490
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`",
+17
-9
src-tauri/src/frontend_calls/change_final_path.rs
+17
-9
src-tauri/src/frontend_calls/change_final_path.rs
···
1
1
use std::fs;
2
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");
3
+
use tauri::{Emitter, State, Window};
8
4
9
-
fs::write(&config_path, new_path.as_bytes()).unwrap();
5
+
use crate::util::cache::Cache;
10
6
7
+
#[tauri::command]
8
+
pub fn change_final_path(new_path: &str, window: Window, cache: State<Cache>) -> bool {
11
9
match fs::metadata(&new_path) {
12
-
Ok(_) => {}
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
+
}
13
20
Err(_) => {
14
-
fs::create_dir(&new_path).unwrap();
21
+
window.emit("vrcpm-error", "Error Changing Path: Path does not exist.").unwrap();
22
+
false
15
23
}
16
-
};
24
+
}
17
25
}
+5
-3
src-tauri/src/frontend_calls/close_splashscreen.rs
+5
-3
src-tauri/src/frontend_calls/close_splashscreen.rs
···
1
1
use std::env;
2
-
use tauri::{ Emitter, Manager };
2
+
use tauri::{ Emitter, Manager, State };
3
+
4
+
use crate::frontend_calls::config::Config;
3
5
4
6
use super::config::get_config_value_string;
5
7
6
8
#[tauri::command]
7
-
pub fn close_splashscreen( window: tauri::Window ) {
9
+
pub fn close_splashscreen( window: tauri::Window, config: State<Config> ) {
8
10
let args: Vec<String> = env::args().collect();
9
11
10
12
let mut show = true;
···
14
16
}
15
17
}
16
18
17
-
let value: String = match get_config_value_string("start-in-bg".to_owned()) { Some(val) => val, None => "false".to_owned() };
19
+
let value: String = match get_config_value_string("start-in-bg".to_owned(), config) { Some(val) => val, None => "false".to_owned() };
18
20
if value == "true"{
19
21
show = false;
20
22
}
+43
-22
src-tauri/src/frontend_calls/config.rs
+43
-22
src-tauri/src/frontend_calls/config.rs
···
1
-
use std::{fs, path::PathBuf};
1
+
use std::{fs, path::PathBuf, sync::Mutex};
2
2
3
3
use serde_json::Value;
4
+
use tauri::State;
4
5
5
6
pub fn get_config_path() -> PathBuf {
6
7
let path = dirs::config_dir()
···
17
18
path
18
19
}
19
20
20
-
#[tauri::command]
21
-
pub fn set_config_value_string(key: String, value: String) {
22
-
let path = get_config_path();
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();
23
48
24
-
let mut config: Value = serde_json::from_str(&fs::read_to_string(&path).unwrap()).unwrap();
25
-
config[key] = Value::from(value);
49
+
fs::write(path, string).unwrap();
50
+
}
51
+
}
26
52
27
-
fs::write(path, config.to_string()).unwrap();
53
+
#[tauri::command]
54
+
pub fn set_config_value_string( key: String, value: String, config: State<Config> ) {
55
+
config.set(key, Value::from(value));
28
56
}
29
57
30
58
#[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();
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();
35
62
36
63
if string.is_some() {
37
64
Some(string.unwrap().to_owned())
···
41
68
}
42
69
43
70
#[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();
71
+
pub fn set_config_value_int( key: String, value: i64, config: State<Config> ) {
72
+
config.set(key, Value::from(value));
51
73
}
52
74
53
75
#[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()
76
+
pub fn get_config_value_int( key: String, config: State<Config> ) -> Option<i64> {
77
+
let string = config.get(key);
78
+
string.as_i64()
58
79
}
+4
-4
src-tauri/src/frontend_calls/copy_image.rs
+4
-4
src-tauri/src/frontend_calls/copy_image.rs
···
1
-
use std::{borrow::Cow, fs::{self, File}, io::BufReader, sync::Mutex};
1
+
use std::{ borrow::Cow, sync::Mutex };
2
2
3
-
use arboard::{Clipboard, ImageData};
4
-
use image::{codecs::png::PngDecoder, EncodableLayout, GenericImageView, ImageDecoder};
3
+
use arboard::{ Clipboard, ImageData };
4
+
use image::GenericImageView;
5
5
use tauri::State;
6
6
7
-
use crate::{ frontend_calls::get_user_photos_path::get_user_photos_path, pngmeta::PNGImage, util::cache::Cache };
7
+
use crate::{ frontend_calls::get_user_photos_path::get_user_photos_path, util::cache::Cache };
8
8
9
9
#[tauri::command]
10
10
pub fn copy_image( path: String, clipboard: State<Mutex<Clipboard>>, cache: State<Cache> ) {
+2
-16
src-tauri/src/frontend_calls/delete_photo.rs
+2
-16
src-tauri/src/frontend_calls/delete_photo.rs
···
1
1
use tauri::State;
2
2
3
3
use crate::util::cache::Cache;
4
-
use std::{ fs, thread, time::Duration };
4
+
use std::{ fs, thread };
5
5
6
6
// Delete a photo when the users confirms the prompt in the ui
7
7
#[tauri::command]
8
-
pub fn delete_photo(path: String, token: String, is_syncing: bool, cache: State<Cache>) {
8
+
pub fn delete_photo(path: String, cache: State<Cache>) {
9
9
let photo_path = cache.get("photo-path".into());
10
10
11
11
thread::spawn(move || {
12
12
let p = photo_path.unwrap() + "/" + &path;
13
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
14
});
29
15
}
+21
-3
src-tauri/src/frontend_calls/load_photo_meta.rs
+21
-3
src-tauri/src/frontend_calls/load_photo_meta.rs
···
20
20
let mut buffer = Vec::new();
21
21
22
22
let _out = file.read_to_end(&mut buffer);
23
-
window
24
-
.emit("photo_meta_loaded", PNGImage::new(buffer, photo))
25
-
.unwrap();
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
+
}
26
44
}
27
45
Err(_) => {
28
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
16
let base_dir = cache.get("photo-path".into()).unwrap();
17
17
18
18
thread::spawn(move || {
19
-
20
19
let mut photos: Vec<path::PathBuf> = Vec::new();
21
20
let mut size: usize = 0;
22
21
22
+
let re = Regex::new(r"^[0-9]{4}-[0-9]{2}$").unwrap();
23
+
23
24
for folder in fs::read_dir(&base_dir).unwrap() {
24
25
let f = folder.unwrap();
26
+
if !re.is_match(f.file_name().to_str().unwrap()){ continue; }
25
27
26
28
if f.metadata().unwrap().is_dir() {
27
29
for photo in fs::read_dir(f.path()).unwrap() {
···
30
32
if p.metadata().unwrap().is_file() {
31
33
let fname = p.path();
32
34
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
35
let name = p.file_name();
39
36
let name = name.to_str().unwrap();
40
37
41
-
let re3_match = re3.is_match(name);
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);
42
45
43
-
if re1.is_match(name) || re2.is_match(name) || re3_match {
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 {
44
50
let path = fname.to_path_buf().clone();
45
51
let metadata = fs::metadata(&path).unwrap();
46
52
-3
src-tauri/src/frontend_calls/mod.rs
-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
7
8
8
#[cfg(target_os = "linux")]
9
9
{
10
-
let url = url.replace("\\", "/");
11
-
let mut path: Vec<&str> = url.split("/").collect();
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
+
];
12
27
13
-
path.pop();
14
-
Command::new("xdg-open").arg(path.join("/")).spawn().unwrap();
28
+
for command in commands{
29
+
if Command::new(command.0).args(command.1).spawn().is_ok() { break; } }
15
30
}
16
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
-
}
+29
-28
src-tauri/src/main.rs
+29
-28
src-tauri/src/main.rs
···
1
1
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
2
2
3
3
mod frontend_calls;
4
-
mod photosync;
5
4
mod pngmeta;
6
5
mod util;
7
6
mod worldscraper;
···
16
15
use util::{ cache::Cache, get_photo_path::get_photo_path };
17
16
use std::{ env, fs, sync::Mutex, thread };
18
17
use tauri::{ Emitter, Manager, State, WindowEvent };
19
-
use tauri_plugin_deep_link::DeepLinkExt;
20
18
21
-
// TODO: Linux support
19
+
use crate::frontend_calls::config::{get_config_value_string, Config};
22
20
23
21
fn main() {
24
22
#[cfg(target_os = "linux")]
···
79
77
80
78
println!("Loading App...");
81
79
let photos_path = util::get_photo_path::get_photo_path();
80
+
println!("Loading photos from: {:#?}", &photos_path);
82
81
83
82
cache.insert("photo-path".into(), photos_path.to_str().unwrap().to_owned());
84
83
···
89
88
}
90
89
};
91
90
92
-
// Updater only supports windows, so don't update if on linux
93
-
#[cfg(windows)]
94
-
util::check_updates::check_updates(container_folder);
95
-
96
91
// Listen for file updates, store each update in an mpsc channel and send to the frontend
97
92
let (sender, receiver) = std::sync::mpsc::channel();
98
93
let mut watcher = notify::recommended_watcher(move | res: Result<notify::Event, notify::Error> | {
···
103
98
let path = event.paths.first().unwrap();
104
99
let name = path.file_name().unwrap().to_str().unwrap().to_owned();
105
100
106
-
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();
107
-
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();
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
108
109
-
if
110
-
re1.is_match(&name) ||
111
-
re2.is_match(&name)
112
-
{
109
+
if re1_match || re2_match{
113
110
sender.send((2, path.strip_prefix(get_photo_path()).unwrap().to_str().unwrap().to_owned())).unwrap();
114
111
}
115
112
},
···
117
114
let path = event.paths.first().unwrap();
118
115
let name = path.file_name().unwrap().to_str().unwrap().to_owned();
119
116
120
-
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();
121
-
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();
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);
122
124
123
-
if
124
-
re1.is_match(&name) ||
125
-
re2.is_match(&name)
126
-
{
125
+
if re1_match || re2_match{
127
126
thread::sleep(time::Duration::from_millis(1000));
128
127
sender.send((1, path.strip_prefix(get_photo_path()).unwrap().to_str().unwrap().to_owned())).unwrap();
129
128
}
···
146
145
let clipboard = Clipboard::new().unwrap();
147
146
148
147
tauri::Builder::default()
149
-
.plugin(tauri_plugin_single_instance::init(| app, argv, _cwd | {
148
+
.plugin(tauri_plugin_single_instance::init(| app, _argv, _cwd | {
150
149
app.get_webview_window("main").unwrap().show().unwrap();
151
-
util::handle_deeplink::handle_deeplink(argv[1].clone(), app);
152
150
}))
153
-
.plugin(tauri_plugin_deep_link::init())
154
151
.plugin(tauri_plugin_process::init())
155
152
.plugin(tauri_plugin_http::init())
156
153
.plugin(tauri_plugin_shell::init())
···
159
156
util::handle_uri_proto::handle_uri_proto(req, res, cache);
160
157
})
161
158
.on_window_event(|window, event| match event {
162
-
WindowEvent::CloseRequested { api, .. } => {
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
+
163
168
window.hide().unwrap();
164
169
api.prevent_close();
165
170
}
166
171
_ => {}
167
172
})
173
+
.manage(Config::new())
168
174
.manage(cache)
169
175
.manage(Mutex::new(clipboard))
170
176
.setup(|app| {
171
177
let handle = app.handle();
172
-
173
-
app.deep_link().register("vrcpm").unwrap();
174
178
util::setup_traymenu::setup_traymenu(handle);
175
179
176
180
// reads the file update mpsc channel and sends the events to the frontend
···
194
198
Ok(())
195
199
})
196
200
.invoke_handler(tauri::generate_handler![
197
-
start_user_auth::start_user_auth,
198
201
load_photos::load_photos,
199
202
close_splashscreen::close_splashscreen,
200
203
load_photo_meta::load_photo_meta,
···
206
209
start_with_win::start_with_win,
207
210
get_user_photos_path::get_user_photos_path,
208
211
change_final_path::change_final_path,
209
-
sync_photos::sync_photos,
210
212
util::get_version::get_version,
211
-
relaunch::relaunch,
212
213
config::set_config_value_string,
213
214
config::get_config_value_string,
214
215
config::set_config_value_int,
-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
-
}
+8
-24
src-tauri/src/pngmeta.rs
+8
-24
src-tauri/src/pngmeta.rs
···
1
-
use serde::ser::{Serialize, SerializeStruct, Serializer};
2
1
use std::str;
3
2
4
-
#[derive(Clone)]
3
+
use serde::Serialize;
4
+
5
+
#[derive(Clone, Debug, Serialize)]
5
6
pub struct PNGImage {
6
7
pub width: u32,
7
8
pub height: u32,
···
12
13
pub interlace_method: u8,
13
14
pub metadata: String,
14
15
pub path: String,
16
+
pub error: bool
15
17
}
16
18
17
19
impl PNGImage {
18
-
pub fn new(buff: Vec<u8>, path: String) -> PNGImage {
20
+
pub fn new(buff: Vec<u8>, path: String) -> Result<PNGImage, &'static str> {
19
21
if buff[0] != 0x89
20
22
|| buff[1] != 0x50
21
23
|| buff[2] != 0x4E
···
26
28
|| buff[7] != 0x0A
27
29
{
28
30
dbg!(path);
29
-
panic!("Image is not a PNG file");
31
+
return Err("Image is not a PNG file");
30
32
}
31
33
32
34
let mut img = PNGImage {
···
39
41
interlace_method: 0,
40
42
metadata: "".to_string(),
41
43
path: path,
44
+
error: false
42
45
};
43
46
44
47
img.read_png_chunk(8, buff);
45
-
img
48
+
Ok(img)
46
49
}
47
50
48
51
fn read_png_chunk(&mut self, start_byte: usize, buff: Vec<u8>) {
···
82
85
}
83
86
}
84
87
}
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
-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
···
7
7
8
8
match fs::read_to_string(config_path) {
9
9
Ok(path) => {
10
-
path::PathBuf::from(path)
10
+
let p = path::PathBuf::from(path);
11
+
12
+
if fs::exists(&p).unwrap(){
13
+
p
14
+
} else{
15
+
dirs::picture_dir().unwrap().join("VRChat")
16
+
}
11
17
},
12
18
Err(_) => {
13
19
let p = dirs::picture_dir().unwrap().join("VRChat");
-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
33
return;
34
34
}
35
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
36
#[cfg(windows)]
43
37
let path = uri.path().split_at(1).1;
44
38
-2
src-tauri/src/util/mod.rs
-2
src-tauri/src/util/mod.rs
+3
-3
src-tauri/tauri.conf.json
+3
-3
src-tauri/tauri.conf.json
···
15
15
"icons/icon.ico"
16
16
]
17
17
},
18
-
"productName": "vrchat-photo-manager",
18
+
"productName": "VRChat Photo Manager",
19
19
"version": "0.0.1",
20
20
"identifier": "uk.phaz.vrcpm",
21
21
"plugins": {
···
23
23
},
24
24
"app": {
25
25
"security": {
26
-
"csp": "https://photos.phazed.xyz; connect-src ipc: http://ipc.localhost"
26
+
"csp": "connect-src https://api.github.com ipc: http://ipc.localhost"
27
27
},
28
28
"windows": [
29
29
{
···
35
35
"minWidth": 600,
36
36
"minHeight": 400,
37
37
"visible": false,
38
-
"decorations": false,
38
+
"decorations": true,
39
39
"transparent": true
40
40
}
41
41
]
+1
-1
vite.config.ts
+1
-1
vite.config.ts
···
11
11
12
12
// https://vitejs.dev/config/
13
13
export default defineConfig(async () => ({
14
-
plugins: [solid(),], //fullReloadAlways],
14
+
plugins: [solid(), fullReloadAlways],
15
15
16
16
// Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build`
17
17
//