+8
-10
README.md
+8
-10
README.md
···
1
1
# VRChat Photo Manager (BETA)
2
2
3
-
Install [here](https://cdn.phaz.uk/vrcpm/vrcpm-installer.exe) (Windows)
3
+
Windows users: Download the setup.exe file [here](https://github.com/phaze-the-dumb/VRChat-Photo-Manager/releases/latest)
4
4
5
-
Install [here](https://github.com/phaze-the-dumb/VRChat-Photo-Manager/releases) (Linux)
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
6
8
7
9
## Feedback / Bug Reports
8
10
···
14
16
15
17
You can find your app version under appllication settings.
16
18
17
-
(Please note that there are not debug releases for versions: 0.1.0, 0.1.1, 0.1.2, 0.1.3)
18
-
19
19
## A photo manager for VRChat.
20
20
21
-

21
+
<img width="1352" height="739" alt="image" src="https://github.com/user-attachments/assets/bc702ee6-8891-463d-a987-c2db1dc24678" />
22
22
23
-
Files with VRCX metadata:
23
+
Files with VRCX metadata + Fetches world information from VRChat:
24
24
25
-

26
-
27
-
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" />
28
26
29
27
Searching for photos taken in specific worlds / with specific users:
30
28
31
-

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.4
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/vrcpm-rs.exe builds/$VERSION/vrchat-$VERSION.exe
22
-
mv src-tauri/target/x86_64-pc-windows-gnu/debug/vrcpm-rs.exe builds/$VERSION/vrchat-$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
+39
-1
changelog
+39
-1
changelog
···
92
92
- Implemented a view transition handler, should help with transitions when the app is scaled
93
93
94
94
v0.2.5:
95
-
- Fixed the "Start with windows" button appearing on linux
95
+
- Fixed the "Start with windows" button appearing on linux
96
+
- Fixed linux tray icon title
97
+
- Fixed build-release.sh script outputting the wrong names for windows builds
98
+
- Fixed clipboard on linux ( and sped it up on windows )
99
+
- Fixed some icons not fading out when moving to the settings menu
100
+
- Removed the auto updater
101
+
- Removed account login stuff
102
+
- Fixed app name on windows
103
+
- Update styles
104
+
- Fixed filters removing photos without metadata
105
+
106
+
v0.2.6:
107
+
- Fixed photos not being loaded if they're too low resolution
108
+
- Fixed "Open in folder" not selecting files on linux
109
+
- Fixed scroll to top button not animating out
110
+
- Fixed scroll to top button being ontop of filters menu
111
+
- Fixed photo ordering
112
+
- Fixed broken legacy named photos
113
+
- Fixed photos being loaded with the wrong resolution
114
+
115
+
- Added support for multilayer photos
116
+
- Added close to tray toggle
117
+
- Added update available prompt
118
+
119
+
- Remove all sync stuff
120
+
- Removed automatic updates
121
+
122
+
Hotfix 1:
123
+
- Fixed loading when an image file is corrupted
124
+
- Fixed update prompt when not connected to internet
125
+
126
+
v0.2.7:
127
+
- Fixed image resizing when window is thinner than image
128
+
- Fixed closing settings with keybinds
129
+
- Fixed the behaviour of changing the photo path
130
+
- Fixed loading photos in folders that aren't VRChat folders
131
+
132
+
Hotfix 1:
133
+
- Fixed resizing images (again)
+12
-12
package.json
+12
-12
package.json
···
12
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
-
}
+1
src/Components/Managers/ViewManager.tsx
+1
src/Components/Managers/ViewManager.tsx
···
9
9
private _eventListeners: { from: ViewState, to: ViewState, cb: () => void }[] = [];
10
10
11
11
public ChangeState( state: ViewState ){
12
+
console.log('From: ' + this._state + ' To: ' + state);
12
13
this._eventListeners.filter(x => x.from === this._state && x.to === state).forEach(c => c.cb());
13
14
this._state = state;
14
15
}
+84
-66
src/Components/PhotoList.tsx
+84
-66
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 });
40
+
animate(photoContainer, { opacity: 0.5, filter: 'blur(10px)', easing: 'easeInOutQuad', duration: 100 });
41
+
animate('.filter-options', { opacity: 0, easing: 'easeInOutQuad', duration: 100 });
42
+
animate('.scroll-to-top', { opacity: 0, easing: 'easeInOutQuad', duration: 100 });
43
43
});
44
44
45
45
window.ViewManager.OnStateTransition(ViewState.SETTINGS, ViewState.PHOTO_LIST, () => {
46
-
anime({ targets: photoContainer, 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 });
47
49
});
48
50
49
51
50
52
window.ViewManager.OnStateTransition(ViewState.PHOTO_LIST, ViewState.PHOTO_VIEWER, () => {
51
-
anime({ targets: photoContainer, opacity: 0, easing: 'easeInOutQuad', duration: 100 });
52
-
anime({ targets: '.filter-options', opacity: 0, easing: 'easeInOutQuad', duration: 100 });
53
-
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 });
54
56
});
55
57
56
58
window.ViewManager.OnStateTransition(ViewState.PHOTO_VIEWER, ViewState.PHOTO_LIST, () => {
57
-
anime({ targets: photoContainer, opacity: 1, easing: 'easeInOutQuad', duration: 100 });
58
-
anime({ targets: '.filter-options', opacity: 1, easing: 'easeInOutQuad', duration: 100 });
59
-
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 });
60
62
});
61
63
62
64
···
70
72
photoContainer.width = window.innerWidth;
71
73
photoContainer.height = window.innerHeight;
72
74
73
-
photoContainerBG.width = window.innerWidth;
74
-
photoContainerBG.height = window.innerHeight;
75
-
76
75
window.PhotoListRenderingManager.ComputeLayout();
77
76
}
78
77
79
78
let closeCurrentPopup = () => {
80
79
switch(currentPopup){
81
80
case ListPopup.FILTERS:
82
-
anime({
83
-
targets: filterContainer!,
81
+
animate(filterContainer!, {
84
82
opacity: 0,
83
+
translateY: '10px',
85
84
easing: 'easeInOutQuad',
86
85
duration: 100,
87
-
complete: () => {
86
+
onComplete: () => {
88
87
filterContainer!.style.display = 'none';
89
88
currentPopup = ListPopup.NONE;
90
89
}
···
102
101
103
102
if(!scrollToTopActive && scroll > photoContainer.height){
104
103
scrollToTop.style.display = 'flex';
105
-
anime({ targets: scrollToTop, opacity: 1, translateY: '0px', easing: 'easeInOutQuad', duration: 100 });
104
+
animate(scrollToTop, { opacity: 1, translateY: '0px', easing: 'easeInOutQuad', duration: 100 });
106
105
107
106
scrollToTopActive = true;
108
107
} else if(scrollToTopActive && scroll < photoContainer.height){
109
-
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
+
110
110
scrollToTopActive = false;
111
111
}
112
112
113
-
if(!ctx || !ctxBG)return;
113
+
if(!ctx)return;
114
114
ctx.clearRect(0, 0, photoContainer.width, photoContainer.height);
115
-
ctxBG.clearRect(0, 0, photoContainerBG.width, photoContainerBG.height);
116
115
117
-
scroll = scroll + (targetScroll - scroll) * 0.2;
116
+
scroll = scroll + (targetScroll - scroll) * 0.1;
118
117
119
118
window.PhotoListRenderingManager.Render(ctx, photoContainer!, scroll);
120
119
···
127
126
128
127
ctx.fillText("It's looking empty in here! You have no photos :O", photoContainer.width / 2, photoContainer.height / 2);
129
128
}
130
-
131
-
ctxBG.drawImage(photoContainer, 0, 0);
132
129
}
133
130
134
131
listen('hide-window', () => {
···
143
140
photoContainer.width = window.innerWidth;
144
141
photoContainer.height = window.innerHeight;
145
142
146
-
photoContainerBG.width = window.innerWidth;
147
-
photoContainerBG.height = window.innerHeight;
148
-
149
143
if(window.PhotoManager.HasFirstLoaded){
150
144
requestAnimationFrame(render);
151
145
window.PhotoManager.HasFirstLoaded = false;
···
155
149
window.PhotoManager.OnLoadingFinished(() => {
156
150
invoke('close_splashscreen');
157
151
158
-
anime({
159
-
targets: photoTreeLoadingContainer,
160
-
height: 0,
161
-
easing: 'easeInOutQuad',
162
-
duration: 500,
163
-
opacity: 0,
164
-
complete: () => {
165
-
photoTreeLoadingContainer.style.display = 'none';
166
-
}
167
-
})
168
-
169
-
anime({
170
-
targets: '.reload-photos',
152
+
animate('.reload-photos', {
171
153
opacity: 1,
172
154
duration: 150,
173
155
easing: 'easeInOutQuad'
174
156
})
175
157
176
158
window.PhotoListRenderingManager.SetCanvas(photoContainer!);
177
-
window.PhotoListRenderingManager.ComputeLayout();
178
-
179
159
render();
180
160
});
181
161
182
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
183
179
ctx = photoContainer.getContext('2d')!;
184
-
ctxBG = photoContainerBG.getContext('2d')!;
185
180
186
181
window.PhotoManager.Load();
187
182
188
-
anime.set(scrollToTop, { opacity: 0, translateY: '-10px', display: 'none' });
183
+
utils.set(scrollToTop, { opacity: 0, translateY: '-10px', display: 'none' });
189
184
190
185
photoContainer.onwheel = ( e: WheelEvent ) => {
191
-
targetScroll += e.deltaY;
186
+
targetScroll += e.deltaY * 2;
192
187
193
188
if(targetScroll < 0)
194
189
targetScroll = 0;
···
199
194
200
195
photoContainer.width = window.innerWidth;
201
196
photoContainer.height = window.innerHeight;
202
-
203
-
photoContainerBG.width = window.innerWidth;
204
-
photoContainerBG.height = window.innerHeight;
205
197
206
198
photoContainer.onclick = ( e: MouseEvent ) => {
207
199
let photo = window.PhotoManager.FilteredPhotos.find(x =>
···
229
221
230
222
return (
231
223
<div class="photo-list">
232
-
<div ref={filterContainer!} class="filter-container" style={{
233
-
height: window.PhotoManager.HasBeenIndexed() ? '83px' : '110px',
234
-
width: window.PhotoManager.HasBeenIndexed() ? '600px' : '650px'
235
-
}}>
224
+
<div ref={filterContainer!} class="filter-container">
236
225
<FilterMenu />
237
226
</div>
238
227
239
-
<div class="photo-tree-loading" ref={( el ) => photoTreeLoadingContainer = el}>Scanning Photo Tree...</div>
240
-
241
228
<div class="scroll-to-top" ref={( el ) => scrollToTop = el} onClick={() => targetScroll = 0}>
242
229
<div class="icon">
243
230
<img draggable="false" src="/icon/angle-up-solid.svg"></img>
244
231
</div>
245
232
</div>
246
-
<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())}>
247
-
<div class="icon" style={{ width: '17px' }}>
248
-
<img draggable="false" width="17" height="17" src="/icon/arrows-rotate-solid.svg"></img>
249
-
</div>
250
-
</div>
251
233
252
234
<div class="filter-options">
253
235
<div>
···
257
239
258
240
filterContainer!.style.display = 'block';
259
241
260
-
anime({
261
-
targets: filterContainer!,
242
+
animate(filterContainer!, {
262
243
opacity: 1,
244
+
translateY: 0,
263
245
easing: 'easeInOutQuad',
264
246
duration: 100
265
247
});
266
-
}} class="icon" style={{ width: '20px', height: '20px', padding: '20px' }}>
248
+
}} class="icon">
267
249
<img draggable="false" style={{ width: "20px", height: "20px" }} src="/icon/sliders-solid.svg"></img>
268
250
</div>
269
251
<div class="icon-label">Filters</div>
270
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>
271
290
</div>
272
291
273
292
<canvas class="photo-container" ref={( el ) => photoContainer = el}></canvas>
274
-
<canvas class="photo-container-bg" ref={( el ) => photoContainerBG = el}></canvas>
275
293
</div>
276
294
)
277
295
}
+218
-110
src/Components/PhotoViewer.tsx
+218
-110
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
-
let canvas = document.createElement('canvas');
88
-
let ctx = canvas.getContext('2d')!;
89
-
90
-
canvas.width = window.PhotoViewerManager.CurrentPhoto()?.width || 0;
91
-
canvas.height = window.PhotoViewerManager.CurrentPhoto()?.height || 0;
92
-
93
-
ctx.drawImage(imageViewer, 0, 0);
94
-
95
-
canvas.toBlob(( blob ) => {
96
-
navigator.clipboard.write([
97
-
new ClipboardItem({
98
-
'image/png': blob!
99
-
})
100
-
]);
101
-
102
-
canvas.remove();
89
+
let path;
90
+
let photo = window.PhotoViewerManager.CurrentPhoto()!;
103
91
104
-
anime.set('.copy-notif', { translateX: '-50%', translateY: '-100px' });
105
-
anime({
106
-
targets: '.copy-notif',
107
-
opacity: 1,
108
-
translateY: '0px'
109
-
});
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
+
}
110
103
111
-
setTimeout(() => {
112
-
anime({
113
-
targets: '.copy-notif',
114
-
opacity: 0,
115
-
translateY: '-100px'
104
+
invoke('copy_image', { path })
105
+
.then(() => {
106
+
utils.set('.copy-notif', { translateX: '-50%', translateY: '-100px' });
107
+
animate('.copy-notif', {
108
+
ease: 'outElastic',
109
+
opacity: 1,
110
+
translateY: '0px'
116
111
});
117
-
}, 2000);
118
-
});
112
+
113
+
setTimeout(() => {
114
+
animate('.copy-notif', {
115
+
ease: 'outElastic',
116
+
opacity: 0,
117
+
translateY: '-100px'
118
+
});
119
+
}, 2000);
120
+
})
119
121
}
120
122
121
123
let closeTray = () => {
122
-
if(!trayOpen || trayInAnimation)return;
123
-
trayInAnimation = true;
124
+
if(!trayOpen)return;
125
+
trayOpen = false;
126
+
127
+
trayAnimation.forEach(anim => anim.cancel());
124
128
125
129
window.CloseAllPopups.forEach(p => p());
126
-
anime({ targets: photoTray, bottom: '-150px', duration: 500 });
130
+
trayAnimation[0] = animate(photoTray, { bottom: '-300px', duration: 500, ease: 'outElastic' });
127
131
128
-
anime({
129
-
targets: photoTrayCloseBtn,
132
+
trayAnimation[2] = animate(photoTrayCloseBtn, {
130
133
bottom: '10px',
131
134
scale: '0.75',
135
+
ease: 'outElastic',
132
136
opacity: 0,
133
137
duration: 500,
134
-
complete: () => {
138
+
onComplete: () => {
135
139
photoTrayCloseBtn.style.display = 'none';
136
-
trayOpen = false;
137
-
trayInAnimation = false;
138
140
}
139
141
});
140
142
141
143
photoControls.style.display = 'flex';
142
-
anime({
143
-
targets: photoControls,
144
+
trayAnimation[1] = animate(photoControls, {
144
145
bottom: '10px',
146
+
ease: 'outElastic',
145
147
opacity: 1,
146
148
scale: 1,
147
149
duration: 500,
148
150
})
149
151
}
150
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
+
151
175
onMount(() => {
152
-
anime.set(photoControls, { translateX: '-50%' });
153
-
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' });
154
179
155
180
window.addEventListener('keyup', switchPhotoWithKey);
181
+
window.addEventListener('resize', () => resizeImage());
156
182
157
183
let contextMenuOpen = false;
158
184
window.CloseAllPopups.push(() => {
159
185
contextMenuOpen = false;
160
-
anime.set(viewerContextMenu, { opacity: 1, rotate: '0deg' });
186
+
utils.set(viewerContextMenu, { opacity: 1, rotate: '0deg' });
161
187
162
-
anime({
163
-
targets: viewerContextMenu,
188
+
animate(viewerContextMenu, {
164
189
opacity: 0,
165
190
easing: 'easeInOutQuad',
166
191
rotate: '30deg',
167
192
duration: 100,
168
-
complete: () => {
193
+
onComplete: () => {
169
194
viewerContextMenu.style.display = 'none';
170
195
}
171
196
})
172
197
});
173
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
+
174
206
viewerContextMenuButtons[0].onclick = async () => {
175
207
window.CloseAllPopups.forEach(p => p());
176
208
// Context Menu -> Open file location
···
189
221
if(contextMenuOpen){
190
222
contextMenuOpen = false;
191
223
192
-
anime.set(viewerContextMenu, { opacity: 1, rotate: '0deg' });
224
+
utils.set(viewerContextMenu, { opacity: 1, rotate: '0deg' });
193
225
194
-
anime({
195
-
targets: viewerContextMenu,
226
+
animate(viewerContextMenu, {
196
227
opacity: 0,
197
228
rotate: '30deg',
198
229
easing: 'easeInOutQuad',
199
230
duration: 100,
200
-
complete: () => {
231
+
onComplete: () => {
201
232
viewerContextMenu.style.display = 'none';
202
233
}
203
234
})
···
208
239
viewerContextMenu.style.left = e.clientX + 'px';
209
240
viewerContextMenu.style.display = 'block';
210
241
211
-
anime.set(viewerContextMenu, { opacity: 0, rotate: '-30deg' });
242
+
utils.set(viewerContextMenu, { opacity: 0, rotate: '-30deg' });
212
243
213
-
anime({
214
-
targets: viewerContextMenu,
244
+
animate(viewerContextMenu, {
215
245
opacity: 1,
216
246
rotate: '0deg',
217
247
easing: 'easeInOutQuad',
···
230
260
imageViewer.src = (window.OS === "windows" ? "http://photo.localhost/" : 'photo://localhost/') + window.PhotoViewerManager.CurrentPhoto()?.path.split('\\').join('/') + "?full";
231
261
imageViewer.crossOrigin = 'anonymous';
232
262
233
-
anime({
234
-
targets: imageViewer,
263
+
imageViewer.onload = () => { resizeImage(); }
264
+
265
+
animate(imageViewer, {
235
266
opacity: 1,
236
267
delay: 50,
237
268
duration: 150,
···
291
322
let id = doc.getElementsByTagName('xmp:Author')[0]!.innerHTML;
292
323
293
324
authorProfileButton!.style.display = 'flex';
294
-
authorProfileButton!.onclick = () =>
325
+
authorProfileButton!.onclick = () => {
326
+
console.log(id);
295
327
invoke('open_url', { url: 'https://vrchat.com/home/user/' + id });
328
+
}
296
329
} catch(e){
297
330
console.error(e);
298
331
console.log('Couldn\'t decode metadata')
···
305
338
}
306
339
} else{
307
340
trayButton.style.display = 'none';
341
+
authorProfileButton!.style.display = 'none';
342
+
308
343
closeTray();
309
344
}
310
345
}
···
315
350
if(photo && !isOpen){
316
351
viewer.style.display = 'flex';
317
352
318
-
anime({
319
-
targets: viewer,
353
+
animate(viewer, {
320
354
opacity: 1,
321
355
easing: 'easeInOutQuad',
322
356
duration: 150
323
357
});
324
-
325
-
anime({
326
-
targets: '.navbar',
327
-
top: '-50px'
328
-
})
329
358
330
-
anime.set('.prev-button', { left: '-50px', top: '50%' });
331
-
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%' });
332
361
333
-
anime({ targets: '.prev-button', left: '0', easing: 'easeInOutQuad', duration: 100 });
334
-
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 });
335
364
336
365
window.CloseAllPopups.forEach(p => p());
337
366
} else if(!photo && isOpen){
338
-
anime({
339
-
targets: viewer,
367
+
animate(viewer, {
340
368
opacity: 0,
341
369
easing: 'easeInOutQuad',
342
370
duration: 150,
343
-
complete: () => {
371
+
onComplete: () => {
344
372
viewer.style.display = 'none';
345
373
}
346
374
});
347
-
348
-
anime({
349
-
targets: '.navbar',
350
-
top: '0px'
351
-
})
352
375
353
376
window.CloseAllPopups.forEach(p => p());
354
377
355
-
anime({ targets: '.prev-button', top: '75%', easing: 'easeInOutQuad', duration: 100 });
356
-
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 });
357
380
}
358
381
359
382
isOpen = photo != null;
···
394
417
)
395
418
}
396
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
+
397
447
return (
398
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
+
399
483
<div class="photo-context-menu" ref={( el ) => viewerContextMenu = el}>
400
484
<div ref={( el ) => viewerContextMenuButtons.push(el)}>Open file location</div>
401
485
<div ref={( el ) => viewerContextMenuButtons.push(el)}>Copy image</div>
402
486
</div>
403
487
404
488
<div class="viewer-close viewer-button" onClick={() => window.PhotoViewerManager.Close()}>
405
-
<div class="icon" style={{ width: '10px', margin: '0' }}>
489
+
<div class="icon-small" style={{ width: '10px', margin: '0' }}>
406
490
<img draggable="false" src="/icon/x-solid.svg"></img>
407
491
</div>
408
492
</div>
409
-
<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>
410
503
411
504
<div class="prev-button" onClick={() => {
412
505
window.CloseAllPopups.forEach(p => p());
413
506
window.PhotoViewerManager.PreviousPhoto();
414
507
}}>
415
-
<div class="icon" style={{ width: '15px', margin: '0' }}>
508
+
<div class="icon-small" style={{ width: '15px', margin: '0' }}>
416
509
<img draggable="false" src="/icon/arrow-left-solid.svg"></img>
417
510
</div>
418
511
</div>
···
421
514
window.CloseAllPopups.forEach(p => p());
422
515
window.PhotoViewerManager.NextPhoto();
423
516
}}>
424
-
<div class="icon" style={{ width: '15px', margin: '0' }}>
517
+
<div class="icon-small" style={{ width: '15px', margin: '0' }}>
425
518
<img draggable="false" src="/icon/arrow-right-solid.svg"></img>
426
519
</div>
427
520
</div>
···
432
525
onClick={() => closeTray()}
433
526
ref={( el ) => photoTrayCloseBtn = el}
434
527
>
435
-
<div class="icon" style={{ width: '12px', margin: '0' }}>
528
+
<div class="icon-small" style={{ width: '12px', margin: '0' }}>
436
529
<img draggable="false" src="/icon/angle-down-solid.svg"></img>
437
530
</div>
438
531
</div>
439
532
440
533
<div class="control-buttons" ref={( el ) => photoControls = el}>
441
534
<div class="viewer-button"
442
-
onMouseOver={( el ) => anime({ targets: el.currentTarget, width: '40px', height: '40px', 'margin-left': '15px', 'margin-right': '15px', 'margin-top': '-10px' })}
443
-
onMouseLeave={( el ) => anime({ targets: el.currentTarget, width: '30px', height: '30px', 'margin-left': '20px', 'margin-right': '20px', 'margin-top': '0px' })}
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' })}
444
537
onClick={() => { copyImage(); }}>
445
-
<div class="icon" style={{ width: '12px', margin: '0' }}>
538
+
<div class="icon-small" style={{ width: '12px', margin: '0' }}>
446
539
<img draggable="false" src="/icon/copy-solid.svg"></img>
447
540
</div>
448
541
</div>
449
542
<div class="viewer-button" style={{ width: '50px' }}
450
-
onMouseOver={( el ) => anime({ targets: el.currentTarget, width: '70px', height: '30px', 'margin-left': '10px', 'margin-right': '10px' })}
451
-
onMouseLeave={( el ) => anime({ targets: el.currentTarget, width: '50px', height: '30px', 'margin-left': '20px', 'margin-right': '20px' })}
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' })}
452
545
ref={( el ) => trayButton = el}
453
546
onClick={() => openTray()}
454
547
>
455
-
<div class="icon" style={{ width: '12px', margin: '0' }}>
548
+
<div class="icon-small" style={{ width: '12px', margin: '0' }}>
456
549
<img draggable="false" src="/icon/angle-up-solid.svg"></img>
457
550
</div>
458
551
</div>
459
552
460
553
<div class="viewer-button"
461
554
ref={authorProfileButton!}
462
-
onMouseOver={( el ) => anime({ targets: el.currentTarget, width: '40px', height: '40px', 'margin-left': '15px', 'margin-right': '15px', 'margin-top': '-10px' })}
463
-
onMouseLeave={( el ) => anime({ targets: el.currentTarget, width: '30px', height: '30px', 'margin-left': '20px', 'margin-right': '20px', 'margin-top': '0px' })}
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' })}
464
557
>
465
-
<div class="icon" style={{ width: '12px', margin: '0' }}>
558
+
<div class="icon-small" style={{ width: '12px', margin: '0' }}>
466
559
<img draggable="false" src="/icon/user-solid.svg"></img>
467
560
</div>
468
561
</div>
469
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
+
470
575
<div class="viewer-button"
471
-
onMouseOver={( el ) => anime({ targets: el.currentTarget, width: '40px', height: '40px', 'margin-left': '15px', 'margin-right': '15px', 'margin-top': '-10px' })}
472
-
onMouseLeave={( el ) => anime({ targets: el.currentTarget, width: '30px', height: '30px', 'margin-left': '20px', 'margin-right': '20px', 'margin-top': '0px' })}
473
-
onClick={() => window.ConfirmationBoxManager.SetConfirmationBox("Are you sure you want to delete this photo?", async () => { invoke("delete_photo", {
474
-
path: window.PhotoViewerManager.CurrentPhoto()?.path,
475
-
token: (await invoke('get_config_value_string', { key: 'token' })) || "none",
476
-
isSyncing: window.AccountManager.hasAccount() ? window.AccountManager.Storage()?.isSyncing : false
477
-
});
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 });
478
586
})}>
479
-
<div class="icon" style={{ width: '12px', margin: '0' }}>
587
+
<div class="icon-small" style={{ width: '12px', margin: '0' }}>
480
588
<img draggable="false" src="/icon/trash-solid.svg"></img>
481
589
</div>
482
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
}
+971
-974
src-tauri/Cargo.lock
+971
-974
src-tauri/Cargo.lock
···
3
3
version = 4
4
4
5
5
[[package]]
6
-
name = "addr2line"
7
-
version = "0.24.2"
8
-
source = "registry+https://github.com/rust-lang/crates.io-index"
9
-
checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
6
+
name = "VRChatPhotoManager"
7
+
version = "0.2.7"
10
8
dependencies = [
11
-
"gimli",
9
+
"arboard",
10
+
"dirs",
11
+
"fast_image_resize",
12
+
"image",
13
+
"mslnk",
14
+
"notify",
15
+
"open",
16
+
"regex",
17
+
"reqwest",
18
+
"serde",
19
+
"serde_json",
20
+
"tauri",
21
+
"tauri-build",
22
+
"tauri-plugin-http",
23
+
"tauri-plugin-process",
24
+
"tauri-plugin-shell",
25
+
"tauri-plugin-single-instance",
12
26
]
13
27
14
28
[[package]]
···
19
33
20
34
[[package]]
21
35
name = "aho-corasick"
22
-
version = "1.1.3"
36
+
version = "1.1.4"
23
37
source = "registry+https://github.com/rust-lang/crates.io-index"
24
-
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
38
+
checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
25
39
dependencies = [
26
40
"memchr",
27
41
]
···
51
65
]
52
66
53
67
[[package]]
54
-
name = "android-tzdata"
55
-
version = "0.1.1"
56
-
source = "registry+https://github.com/rust-lang/crates.io-index"
57
-
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
58
-
59
-
[[package]]
60
68
name = "android_system_properties"
61
69
version = "0.1.5"
62
70
source = "registry+https://github.com/rust-lang/crates.io-index"
···
67
75
68
76
[[package]]
69
77
name = "anyhow"
70
-
version = "1.0.98"
78
+
version = "1.0.100"
71
79
source = "registry+https://github.com/rust-lang/crates.io-index"
72
-
checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"
80
+
checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
73
81
74
82
[[package]]
75
83
name = "arbitrary"
76
-
version = "1.4.1"
84
+
version = "1.4.2"
77
85
source = "registry+https://github.com/rust-lang/crates.io-index"
78
-
checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223"
86
+
checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1"
87
+
88
+
[[package]]
89
+
name = "arboard"
90
+
version = "3.6.1"
91
+
source = "registry+https://github.com/rust-lang/crates.io-index"
92
+
checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf"
93
+
dependencies = [
94
+
"clipboard-win",
95
+
"image",
96
+
"log",
97
+
"objc2 0.6.3",
98
+
"objc2-app-kit",
99
+
"objc2-core-foundation",
100
+
"objc2-core-graphics",
101
+
"objc2-foundation 0.3.2",
102
+
"parking_lot",
103
+
"percent-encoding",
104
+
"windows-sys 0.60.2",
105
+
"x11rb",
106
+
]
79
107
80
108
[[package]]
81
109
name = "arg_enum_proc_macro"
···
85
113
dependencies = [
86
114
"proc-macro2",
87
115
"quote",
88
-
"syn 2.0.104",
116
+
"syn 2.0.109",
89
117
]
90
118
91
119
[[package]]
···
120
148
121
149
[[package]]
122
150
name = "async-executor"
123
-
version = "1.13.2"
151
+
version = "1.13.3"
124
152
source = "registry+https://github.com/rust-lang/crates.io-index"
125
-
checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa"
153
+
checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8"
126
154
dependencies = [
127
155
"async-task",
128
156
"concurrent-queue",
···
133
161
]
134
162
135
163
[[package]]
136
-
name = "async-fs"
137
-
version = "2.1.3"
138
-
source = "registry+https://github.com/rust-lang/crates.io-index"
139
-
checksum = "09f7e37c0ed80b2a977691c47dae8625cfb21e205827106c64f7c588766b2e50"
140
-
dependencies = [
141
-
"async-lock",
142
-
"blocking",
143
-
"futures-lite",
144
-
]
145
-
146
-
[[package]]
147
164
name = "async-io"
148
-
version = "2.5.0"
165
+
version = "2.6.0"
149
166
source = "registry+https://github.com/rust-lang/crates.io-index"
150
-
checksum = "19634d6336019ef220f09fd31168ce5c184b295cbf80345437cc36094ef223ca"
167
+
checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc"
151
168
dependencies = [
152
-
"async-lock",
169
+
"autocfg",
153
170
"cfg-if",
154
171
"concurrent-queue",
155
172
"futures-io",
···
158
175
"polling",
159
176
"rustix",
160
177
"slab",
161
-
"windows-sys 0.60.2",
178
+
"windows-sys 0.61.2",
162
179
]
163
180
164
181
[[package]]
165
182
name = "async-lock"
166
-
version = "3.4.0"
183
+
version = "3.4.1"
167
184
source = "registry+https://github.com/rust-lang/crates.io-index"
168
-
checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
185
+
checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc"
169
186
dependencies = [
170
187
"event-listener",
171
188
"event-listener-strategy",
···
174
191
175
192
[[package]]
176
193
name = "async-process"
177
-
version = "2.4.0"
194
+
version = "2.5.0"
178
195
source = "registry+https://github.com/rust-lang/crates.io-index"
179
-
checksum = "65daa13722ad51e6ab1a1b9c01299142bc75135b337923cfa10e79bbbd669f00"
196
+
checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75"
180
197
dependencies = [
181
198
"async-channel",
182
199
"async-io",
···
198
215
dependencies = [
199
216
"proc-macro2",
200
217
"quote",
201
-
"syn 2.0.104",
218
+
"syn 2.0.109",
202
219
]
203
220
204
221
[[package]]
205
222
name = "async-signal"
206
-
version = "0.2.12"
223
+
version = "0.2.13"
207
224
source = "registry+https://github.com/rust-lang/crates.io-index"
208
-
checksum = "f567af260ef69e1d52c2b560ce0ea230763e6fbb9214a85d768760a920e3e3c1"
225
+
checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c"
209
226
dependencies = [
210
227
"async-io",
211
228
"async-lock",
···
216
233
"rustix",
217
234
"signal-hook-registry",
218
235
"slab",
219
-
"windows-sys 0.60.2",
236
+
"windows-sys 0.61.2",
220
237
]
221
238
222
239
[[package]]
···
227
244
228
245
[[package]]
229
246
name = "async-trait"
230
-
version = "0.1.88"
247
+
version = "0.1.89"
231
248
source = "registry+https://github.com/rust-lang/crates.io-index"
232
-
checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5"
249
+
checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
233
250
dependencies = [
234
251
"proc-macro2",
235
252
"quote",
236
-
"syn 2.0.104",
253
+
"syn 2.0.109",
237
254
]
238
255
239
256
[[package]]
···
273
290
274
291
[[package]]
275
292
name = "av1-grain"
276
-
version = "0.2.4"
293
+
version = "0.2.5"
277
294
source = "registry+https://github.com/rust-lang/crates.io-index"
278
-
checksum = "4f3efb2ca85bc610acfa917b5aaa36f3fcbebed5b3182d7f877b02531c4b80c8"
295
+
checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8"
279
296
dependencies = [
280
297
"anyhow",
281
298
"arrayvec",
···
287
304
288
305
[[package]]
289
306
name = "avif-serialize"
290
-
version = "0.8.5"
307
+
version = "0.8.6"
291
308
source = "registry+https://github.com/rust-lang/crates.io-index"
292
-
checksum = "2ea8ef51aced2b9191c08197f55450d830876d9933f8f48a429b354f1d496b42"
309
+
checksum = "47c8fbc0f831f4519fe8b810b6a7a91410ec83031b8233f730a0480029f6a23f"
293
310
dependencies = [
294
311
"arrayvec",
295
312
]
296
313
297
314
[[package]]
298
-
name = "backtrace"
299
-
version = "0.3.75"
300
-
source = "registry+https://github.com/rust-lang/crates.io-index"
301
-
checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002"
302
-
dependencies = [
303
-
"addr2line",
304
-
"cfg-if",
305
-
"libc",
306
-
"miniz_oxide",
307
-
"object",
308
-
"rustc-demangle",
309
-
"windows-targets 0.52.6",
310
-
]
311
-
312
-
[[package]]
313
315
name = "base64"
314
316
version = "0.21.7"
315
317
source = "registry+https://github.com/rust-lang/crates.io-index"
···
323
325
324
326
[[package]]
325
327
name = "bit_field"
326
-
version = "0.10.2"
328
+
version = "0.10.3"
327
329
source = "registry+https://github.com/rust-lang/crates.io-index"
328
-
checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61"
330
+
checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6"
329
331
330
332
[[package]]
331
333
name = "bitflags"
···
335
337
336
338
[[package]]
337
339
name = "bitflags"
338
-
version = "2.9.1"
340
+
version = "2.10.0"
339
341
source = "registry+https://github.com/rust-lang/crates.io-index"
340
-
checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
342
+
checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
341
343
dependencies = [
342
-
"serde",
344
+
"serde_core",
343
345
]
344
346
345
347
[[package]]
···
368
370
369
371
[[package]]
370
372
name = "block2"
371
-
version = "0.6.1"
373
+
version = "0.6.2"
372
374
source = "registry+https://github.com/rust-lang/crates.io-index"
373
-
checksum = "340d2f0bdb2a43c1d3cd40513185b2bd7def0aa1052f956455114bc98f82dcf2"
375
+
checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5"
374
376
dependencies = [
375
-
"objc2 0.6.1",
377
+
"objc2 0.6.3",
376
378
]
377
379
378
380
[[package]]
···
390
392
391
393
[[package]]
392
394
name = "brotli"
393
-
version = "8.0.1"
395
+
version = "8.0.2"
394
396
source = "registry+https://github.com/rust-lang/crates.io-index"
395
-
checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d"
397
+
checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560"
396
398
dependencies = [
397
399
"alloc-no-stdlib",
398
400
"alloc-stdlib",
···
423
425
424
426
[[package]]
425
427
name = "bytemuck"
426
-
version = "1.23.1"
428
+
version = "1.24.0"
427
429
source = "registry+https://github.com/rust-lang/crates.io-index"
428
-
checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422"
430
+
checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4"
429
431
430
432
[[package]]
431
433
name = "byteorder"
···
454
456
source = "registry+https://github.com/rust-lang/crates.io-index"
455
457
checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2"
456
458
dependencies = [
457
-
"bitflags 2.9.1",
459
+
"bitflags 2.10.0",
458
460
"cairo-sys-rs",
459
461
"glib",
460
462
"libc",
···
475
477
476
478
[[package]]
477
479
name = "camino"
478
-
version = "1.1.10"
480
+
version = "1.2.1"
479
481
source = "registry+https://github.com/rust-lang/crates.io-index"
480
-
checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab"
482
+
checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609"
481
483
dependencies = [
482
-
"serde",
484
+
"serde_core",
483
485
]
484
486
485
487
[[package]]
···
502
504
"semver",
503
505
"serde",
504
506
"serde_json",
505
-
"thiserror 2.0.12",
507
+
"thiserror 2.0.17",
506
508
]
507
509
508
510
[[package]]
···
512
514
checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77"
513
515
dependencies = [
514
516
"serde",
515
-
"toml 0.9.4",
517
+
"toml 0.9.8",
516
518
]
517
519
518
520
[[package]]
519
521
name = "cc"
520
-
version = "1.2.30"
522
+
version = "1.2.45"
521
523
source = "registry+https://github.com/rust-lang/crates.io-index"
522
-
checksum = "deec109607ca693028562ed836a5f1c4b8bd77755c4e132fc5ce11b0b6211ae7"
524
+
checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe"
523
525
dependencies = [
526
+
"find-msvc-tools",
524
527
"jobserver",
525
528
"libc",
526
529
"shlex",
···
555
558
556
559
[[package]]
557
560
name = "cfg-if"
558
-
version = "1.0.1"
561
+
version = "1.0.4"
559
562
source = "registry+https://github.com/rust-lang/crates.io-index"
560
-
checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268"
563
+
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
561
564
562
565
[[package]]
563
566
name = "cfg_aliases"
···
567
570
568
571
[[package]]
569
572
name = "chrono"
570
-
version = "0.4.41"
573
+
version = "0.4.42"
571
574
source = "registry+https://github.com/rust-lang/crates.io-index"
572
-
checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d"
575
+
checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2"
573
576
dependencies = [
574
-
"android-tzdata",
575
577
"iana-time-zone",
576
578
"num-traits",
577
579
"serde",
578
-
"windows-link",
580
+
"windows-link 0.2.1",
581
+
]
582
+
583
+
[[package]]
584
+
name = "clipboard-win"
585
+
version = "5.4.1"
586
+
source = "registry+https://github.com/rust-lang/crates.io-index"
587
+
checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4"
588
+
dependencies = [
589
+
"error-code",
579
590
]
580
591
581
592
[[package]]
···
690
701
source = "registry+https://github.com/rust-lang/crates.io-index"
691
702
checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1"
692
703
dependencies = [
693
-
"bitflags 2.9.1",
704
+
"bitflags 2.10.0",
694
705
"core-foundation 0.10.1",
695
706
"core-graphics-types",
696
707
"foreign-types 0.5.0",
···
703
714
source = "registry+https://github.com/rust-lang/crates.io-index"
704
715
checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
705
716
dependencies = [
706
-
"bitflags 2.9.1",
717
+
"bitflags 2.10.0",
707
718
"core-foundation 0.10.1",
708
719
"libc",
709
720
]
···
800
811
checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
801
812
dependencies = [
802
813
"quote",
803
-
"syn 2.0.104",
814
+
"syn 2.0.109",
804
815
]
805
816
806
817
[[package]]
···
810
821
checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501"
811
822
dependencies = [
812
823
"quote",
813
-
"syn 2.0.104",
824
+
"syn 2.0.109",
814
825
]
815
826
816
827
[[package]]
817
828
name = "darling"
818
-
version = "0.20.11"
829
+
version = "0.21.3"
819
830
source = "registry+https://github.com/rust-lang/crates.io-index"
820
-
checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee"
831
+
checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0"
821
832
dependencies = [
822
833
"darling_core",
823
834
"darling_macro",
···
825
836
826
837
[[package]]
827
838
name = "darling_core"
828
-
version = "0.20.11"
839
+
version = "0.21.3"
829
840
source = "registry+https://github.com/rust-lang/crates.io-index"
830
-
checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e"
841
+
checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4"
831
842
dependencies = [
832
843
"fnv",
833
844
"ident_case",
834
845
"proc-macro2",
835
846
"quote",
836
847
"strsim",
837
-
"syn 2.0.104",
848
+
"syn 2.0.109",
838
849
]
839
850
840
851
[[package]]
841
852
name = "darling_macro"
842
-
version = "0.20.11"
853
+
version = "0.21.3"
843
854
source = "registry+https://github.com/rust-lang/crates.io-index"
844
-
checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
855
+
checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81"
845
856
dependencies = [
846
857
"darling_core",
847
858
"quote",
848
-
"syn 2.0.104",
859
+
"syn 2.0.109",
849
860
]
850
861
851
862
[[package]]
852
863
name = "data-url"
853
-
version = "0.3.1"
864
+
version = "0.3.2"
854
865
source = "registry+https://github.com/rust-lang/crates.io-index"
855
-
checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a"
866
+
checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376"
856
867
857
868
[[package]]
858
869
name = "deranged"
859
-
version = "0.4.0"
870
+
version = "0.5.5"
860
871
source = "registry+https://github.com/rust-lang/crates.io-index"
861
-
checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e"
872
+
checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587"
862
873
dependencies = [
863
874
"powerfmt",
864
-
"serde",
865
-
]
866
-
867
-
[[package]]
868
-
name = "derivative"
869
-
version = "2.2.0"
870
-
source = "registry+https://github.com/rust-lang/crates.io-index"
871
-
checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
872
-
dependencies = [
873
-
"proc-macro2",
874
-
"quote",
875
-
"syn 1.0.109",
875
+
"serde_core",
876
876
]
877
877
878
878
[[package]]
···
885
885
"proc-macro2",
886
886
"quote",
887
887
"rustc_version",
888
-
"syn 2.0.104",
888
+
"syn 2.0.109",
889
889
]
890
890
891
891
[[package]]
···
900
900
901
901
[[package]]
902
902
name = "dirs"
903
-
version = "5.0.1"
904
-
source = "registry+https://github.com/rust-lang/crates.io-index"
905
-
checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
906
-
dependencies = [
907
-
"dirs-sys 0.4.1",
908
-
]
909
-
910
-
[[package]]
911
-
name = "dirs"
912
903
version = "6.0.0"
913
904
source = "registry+https://github.com/rust-lang/crates.io-index"
914
905
checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
915
906
dependencies = [
916
-
"dirs-sys 0.5.0",
917
-
]
918
-
919
-
[[package]]
920
-
name = "dirs-sys"
921
-
version = "0.4.1"
922
-
source = "registry+https://github.com/rust-lang/crates.io-index"
923
-
checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
924
-
dependencies = [
925
-
"libc",
926
-
"option-ext",
927
-
"redox_users 0.4.6",
928
-
"windows-sys 0.48.0",
907
+
"dirs-sys",
929
908
]
930
909
931
910
[[package]]
···
936
915
dependencies = [
937
916
"libc",
938
917
"option-ext",
939
-
"redox_users 0.5.2",
940
-
"windows-sys 0.60.2",
918
+
"redox_users",
919
+
"windows-sys 0.61.2",
941
920
]
942
921
943
922
[[package]]
···
952
931
source = "registry+https://github.com/rust-lang/crates.io-index"
953
932
checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec"
954
933
dependencies = [
955
-
"bitflags 2.9.1",
956
-
"objc2 0.6.1",
934
+
"bitflags 2.10.0",
935
+
"objc2 0.6.3",
957
936
]
958
937
959
938
[[package]]
···
964
943
dependencies = [
965
944
"proc-macro2",
966
945
"quote",
967
-
"syn 2.0.104",
946
+
"syn 2.0.109",
968
947
]
969
948
970
949
[[package]]
971
950
name = "dlopen2"
972
-
version = "0.7.0"
951
+
version = "0.8.0"
973
952
source = "registry+https://github.com/rust-lang/crates.io-index"
974
-
checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6"
953
+
checksum = "b54f373ccf864bf587a89e880fb7610f8d73f3045f13580948ccbcaff26febff"
975
954
dependencies = [
976
955
"dlopen2_derive",
977
956
"libc",
···
987
966
dependencies = [
988
967
"proc-macro2",
989
968
"quote",
990
-
"syn 2.0.104",
969
+
"syn 2.0.109",
991
970
]
992
971
993
972
[[package]]
···
1001
980
1002
981
[[package]]
1003
982
name = "document-features"
1004
-
version = "0.2.11"
983
+
version = "0.2.12"
1005
984
source = "registry+https://github.com/rust-lang/crates.io-index"
1006
-
checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d"
985
+
checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61"
1007
986
dependencies = [
1008
987
"litrs",
1009
988
]
···
1052
1031
1053
1032
[[package]]
1054
1033
name = "embed-resource"
1055
-
version = "3.0.5"
1034
+
version = "3.0.6"
1056
1035
source = "registry+https://github.com/rust-lang/crates.io-index"
1057
-
checksum = "4c6d81016d6c977deefb2ef8d8290da019e27cc26167e102185da528e6c0ab38"
1036
+
checksum = "55a075fc573c64510038d7ee9abc7990635863992f83ebc52c8b433b8411a02e"
1058
1037
dependencies = [
1059
1038
"cc",
1060
1039
"memchr",
1061
1040
"rustc_version",
1062
-
"toml 0.9.4",
1041
+
"toml 0.9.8",
1063
1042
"vswhom",
1064
1043
"winreg",
1065
1044
]
···
1103
1082
dependencies = [
1104
1083
"proc-macro2",
1105
1084
"quote",
1106
-
"syn 2.0.104",
1085
+
"syn 2.0.109",
1107
1086
]
1108
1087
1109
1088
[[package]]
···
1123
1102
dependencies = [
1124
1103
"proc-macro2",
1125
1104
"quote",
1126
-
"syn 2.0.104",
1105
+
"syn 2.0.109",
1127
1106
]
1128
1107
1129
1108
[[package]]
···
1134
1113
1135
1114
[[package]]
1136
1115
name = "erased-serde"
1137
-
version = "0.4.6"
1116
+
version = "0.4.9"
1138
1117
source = "registry+https://github.com/rust-lang/crates.io-index"
1139
-
checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7"
1118
+
checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3"
1140
1119
dependencies = [
1141
1120
"serde",
1121
+
"serde_core",
1142
1122
"typeid",
1143
1123
]
1144
1124
1145
1125
[[package]]
1146
1126
name = "errno"
1147
-
version = "0.3.13"
1127
+
version = "0.3.14"
1148
1128
source = "registry+https://github.com/rust-lang/crates.io-index"
1149
-
checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad"
1129
+
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
1150
1130
dependencies = [
1151
1131
"libc",
1152
-
"windows-sys 0.60.2",
1132
+
"windows-sys 0.61.2",
1153
1133
]
1154
1134
1155
1135
[[package]]
1136
+
name = "error-code"
1137
+
version = "3.3.2"
1138
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1139
+
checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59"
1140
+
1141
+
[[package]]
1156
1142
name = "event-listener"
1157
-
version = "5.4.0"
1143
+
version = "5.4.1"
1158
1144
source = "registry+https://github.com/rust-lang/crates.io-index"
1159
-
checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae"
1145
+
checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab"
1160
1146
dependencies = [
1161
1147
"concurrent-queue",
1162
1148
"parking",
···
1190
1176
1191
1177
[[package]]
1192
1178
name = "fast_image_resize"
1193
-
version = "4.2.3"
1179
+
version = "5.3.0"
1194
1180
source = "registry+https://github.com/rust-lang/crates.io-index"
1195
-
checksum = "43e5ce628b529e9bd2e2f378c1193215104b526fd494a572aa23414adc4e5553"
1181
+
checksum = "1bd1eda71e8af93f8b00e189404235d82f4de77ea4a0d182b44a7f03994d647c"
1196
1182
dependencies = [
1197
1183
"bytemuck",
1198
1184
"cfg-if",
1199
1185
"document-features",
1200
1186
"image",
1201
1187
"num-traits",
1202
-
"thiserror 1.0.69",
1188
+
"thiserror 2.0.17",
1203
1189
]
1204
1190
1205
1191
[[package]]
···
1209
1195
checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
1210
1196
1211
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]]
1212
1218
name = "fdeflate"
1213
1219
version = "0.3.7"
1214
1220
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1228
1234
]
1229
1235
1230
1236
[[package]]
1231
-
name = "filetime"
1232
-
version = "0.2.25"
1237
+
name = "find-msvc-tools"
1238
+
version = "0.1.4"
1233
1239
source = "registry+https://github.com/rust-lang/crates.io-index"
1234
-
checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586"
1235
-
dependencies = [
1236
-
"cfg-if",
1237
-
"libc",
1238
-
"libredox",
1239
-
"windows-sys 0.59.0",
1240
-
]
1240
+
checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127"
1241
1241
1242
1242
[[package]]
1243
1243
name = "flate2"
1244
-
version = "1.1.2"
1244
+
version = "1.1.5"
1245
1245
source = "registry+https://github.com/rust-lang/crates.io-index"
1246
-
checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d"
1246
+
checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb"
1247
1247
dependencies = [
1248
1248
"crc32fast",
1249
1249
"miniz_oxide",
···
1282
1282
dependencies = [
1283
1283
"proc-macro2",
1284
1284
"quote",
1285
-
"syn 2.0.104",
1285
+
"syn 2.0.109",
1286
1286
]
1287
1287
1288
1288
[[package]]
···
1299
1299
1300
1300
[[package]]
1301
1301
name = "form_urlencoded"
1302
-
version = "1.2.1"
1302
+
version = "1.2.2"
1303
1303
source = "registry+https://github.com/rust-lang/crates.io-index"
1304
-
checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
1304
+
checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
1305
1305
dependencies = [
1306
1306
"percent-encoding",
1307
1307
]
···
1360
1360
1361
1361
[[package]]
1362
1362
name = "futures-lite"
1363
-
version = "2.6.0"
1363
+
version = "2.6.1"
1364
1364
source = "registry+https://github.com/rust-lang/crates.io-index"
1365
-
checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532"
1365
+
checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad"
1366
1366
dependencies = [
1367
1367
"fastrand",
1368
1368
"futures-core",
···
1379
1379
dependencies = [
1380
1380
"proc-macro2",
1381
1381
"quote",
1382
-
"syn 2.0.104",
1382
+
"syn 2.0.109",
1383
1383
]
1384
1384
1385
1385
[[package]]
···
1521
1521
1522
1522
[[package]]
1523
1523
name = "generic-array"
1524
-
version = "0.14.7"
1524
+
version = "0.14.9"
1525
1525
source = "registry+https://github.com/rust-lang/crates.io-index"
1526
-
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
1526
+
checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2"
1527
1527
dependencies = [
1528
1528
"typenum",
1529
1529
"version_check",
1530
+
]
1531
+
1532
+
[[package]]
1533
+
name = "gethostname"
1534
+
version = "1.1.0"
1535
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1536
+
checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8"
1537
+
dependencies = [
1538
+
"rustix",
1539
+
"windows-link 0.2.1",
1530
1540
]
1531
1541
1532
1542
[[package]]
···
1555
1565
1556
1566
[[package]]
1557
1567
name = "getrandom"
1558
-
version = "0.3.3"
1568
+
version = "0.3.4"
1559
1569
source = "registry+https://github.com/rust-lang/crates.io-index"
1560
-
checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
1570
+
checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
1561
1571
dependencies = [
1562
1572
"cfg-if",
1563
1573
"js-sys",
1564
1574
"libc",
1565
1575
"r-efi",
1566
-
"wasi 0.14.2+wasi-0.2.4",
1576
+
"wasip2",
1567
1577
"wasm-bindgen",
1568
1578
]
1569
1579
···
1578
1588
]
1579
1589
1580
1590
[[package]]
1581
-
name = "gimli"
1582
-
version = "0.31.1"
1583
-
source = "registry+https://github.com/rust-lang/crates.io-index"
1584
-
checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
1585
-
1586
-
[[package]]
1587
1591
name = "gio"
1588
1592
version = "0.18.4"
1589
1593
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1621
1625
source = "registry+https://github.com/rust-lang/crates.io-index"
1622
1626
checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5"
1623
1627
dependencies = [
1624
-
"bitflags 2.9.1",
1628
+
"bitflags 2.10.0",
1625
1629
"futures-channel",
1626
1630
"futures-core",
1627
1631
"futures-executor",
···
1649
1653
"proc-macro-error",
1650
1654
"proc-macro2",
1651
1655
"quote",
1652
-
"syn 2.0.104",
1656
+
"syn 2.0.109",
1653
1657
]
1654
1658
1655
1659
[[package]]
···
1664
1668
1665
1669
[[package]]
1666
1670
name = "glob"
1667
-
version = "0.3.2"
1671
+
version = "0.3.3"
1668
1672
source = "registry+https://github.com/rust-lang/crates.io-index"
1669
-
checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2"
1673
+
checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
1670
1674
1671
1675
[[package]]
1672
1676
name = "gobject-sys"
···
1728
1732
"proc-macro-error",
1729
1733
"proc-macro2",
1730
1734
"quote",
1731
-
"syn 2.0.104",
1735
+
"syn 2.0.109",
1732
1736
]
1733
1737
1734
1738
[[package]]
1735
1739
name = "h2"
1736
-
version = "0.4.11"
1740
+
version = "0.4.12"
1737
1741
source = "registry+https://github.com/rust-lang/crates.io-index"
1738
-
checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785"
1742
+
checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386"
1739
1743
dependencies = [
1740
1744
"atomic-waker",
1741
1745
"bytes",
···
1743
1747
"futures-core",
1744
1748
"futures-sink",
1745
1749
"http",
1746
-
"indexmap 2.10.0",
1750
+
"indexmap 2.12.0",
1747
1751
"slab",
1748
1752
"tokio",
1749
1753
"tokio-util",
···
1752
1756
1753
1757
[[package]]
1754
1758
name = "half"
1755
-
version = "2.6.0"
1759
+
version = "2.7.1"
1756
1760
source = "registry+https://github.com/rust-lang/crates.io-index"
1757
-
checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9"
1761
+
checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b"
1758
1762
dependencies = [
1759
1763
"cfg-if",
1760
1764
"crunchy",
1765
+
"zerocopy",
1761
1766
]
1762
1767
1763
1768
[[package]]
···
1774
1779
1775
1780
[[package]]
1776
1781
name = "hashbrown"
1777
-
version = "0.15.4"
1782
+
version = "0.16.0"
1778
1783
source = "registry+https://github.com/rust-lang/crates.io-index"
1779
-
checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5"
1784
+
checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d"
1780
1785
1781
1786
[[package]]
1782
1787
name = "heck"
···
1856
1861
1857
1862
[[package]]
1858
1863
name = "hyper"
1859
-
version = "1.6.0"
1864
+
version = "1.7.0"
1860
1865
source = "registry+https://github.com/rust-lang/crates.io-index"
1861
-
checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80"
1866
+
checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e"
1862
1867
dependencies = [
1868
+
"atomic-waker",
1863
1869
"bytes",
1864
1870
"futures-channel",
1865
-
"futures-util",
1871
+
"futures-core",
1866
1872
"h2",
1867
1873
"http",
1868
1874
"http-body",
1869
1875
"httparse",
1870
1876
"itoa",
1871
1877
"pin-project-lite",
1878
+
"pin-utils",
1872
1879
"smallvec",
1873
1880
"tokio",
1874
1881
"want",
···
1909
1916
1910
1917
[[package]]
1911
1918
name = "hyper-util"
1912
-
version = "0.1.16"
1919
+
version = "0.1.17"
1913
1920
source = "registry+https://github.com/rust-lang/crates.io-index"
1914
-
checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e"
1921
+
checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8"
1915
1922
dependencies = [
1916
1923
"base64 0.22.1",
1917
1924
"bytes",
···
1925
1932
"libc",
1926
1933
"percent-encoding",
1927
1934
"pin-project-lite",
1928
-
"socket2 0.6.0",
1935
+
"socket2",
1929
1936
"system-configuration",
1930
1937
"tokio",
1931
1938
"tower-service",
···
1935
1942
1936
1943
[[package]]
1937
1944
name = "iana-time-zone"
1938
-
version = "0.1.63"
1945
+
version = "0.1.64"
1939
1946
source = "registry+https://github.com/rust-lang/crates.io-index"
1940
-
checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8"
1947
+
checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb"
1941
1948
dependencies = [
1942
1949
"android_system_properties",
1943
1950
"core-foundation-sys",
···
1945
1952
"js-sys",
1946
1953
"log",
1947
1954
"wasm-bindgen",
1948
-
"windows-core",
1955
+
"windows-core 0.62.2",
1949
1956
]
1950
1957
1951
1958
[[package]]
···
1964
1971
checksum = "cc50b891e4acf8fe0e71ef88ec43ad82ee07b3810ad09de10f1d01f072ed4b98"
1965
1972
dependencies = [
1966
1973
"byteorder",
1967
-
"png",
1974
+
"png 0.17.16",
1968
1975
]
1969
1976
1970
1977
[[package]]
1971
1978
name = "icu_collections"
1972
-
version = "2.0.0"
1979
+
version = "2.1.1"
1973
1980
source = "registry+https://github.com/rust-lang/crates.io-index"
1974
-
checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47"
1981
+
checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43"
1975
1982
dependencies = [
1976
1983
"displaydoc",
1977
1984
"potential_utf",
···
1982
1989
1983
1990
[[package]]
1984
1991
name = "icu_locale_core"
1985
-
version = "2.0.0"
1992
+
version = "2.1.1"
1986
1993
source = "registry+https://github.com/rust-lang/crates.io-index"
1987
-
checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a"
1994
+
checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6"
1988
1995
dependencies = [
1989
1996
"displaydoc",
1990
1997
"litemap",
···
1995
2002
1996
2003
[[package]]
1997
2004
name = "icu_normalizer"
1998
-
version = "2.0.0"
2005
+
version = "2.1.1"
1999
2006
source = "registry+https://github.com/rust-lang/crates.io-index"
2000
-
checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979"
2007
+
checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599"
2001
2008
dependencies = [
2002
-
"displaydoc",
2003
2009
"icu_collections",
2004
2010
"icu_normalizer_data",
2005
2011
"icu_properties",
···
2010
2016
2011
2017
[[package]]
2012
2018
name = "icu_normalizer_data"
2013
-
version = "2.0.0"
2019
+
version = "2.1.1"
2014
2020
source = "registry+https://github.com/rust-lang/crates.io-index"
2015
-
checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3"
2021
+
checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
2016
2022
2017
2023
[[package]]
2018
2024
name = "icu_properties"
2019
-
version = "2.0.1"
2025
+
version = "2.1.1"
2020
2026
source = "registry+https://github.com/rust-lang/crates.io-index"
2021
-
checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b"
2027
+
checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99"
2022
2028
dependencies = [
2023
-
"displaydoc",
2024
2029
"icu_collections",
2025
2030
"icu_locale_core",
2026
2031
"icu_properties_data",
2027
2032
"icu_provider",
2028
-
"potential_utf",
2029
2033
"zerotrie",
2030
2034
"zerovec",
2031
2035
]
2032
2036
2033
2037
[[package]]
2034
2038
name = "icu_properties_data"
2035
-
version = "2.0.1"
2039
+
version = "2.1.1"
2036
2040
source = "registry+https://github.com/rust-lang/crates.io-index"
2037
-
checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632"
2041
+
checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899"
2038
2042
2039
2043
[[package]]
2040
2044
name = "icu_provider"
2041
-
version = "2.0.0"
2045
+
version = "2.1.1"
2042
2046
source = "registry+https://github.com/rust-lang/crates.io-index"
2043
-
checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af"
2047
+
checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
2044
2048
dependencies = [
2045
2049
"displaydoc",
2046
2050
"icu_locale_core",
2047
-
"stable_deref_trait",
2048
-
"tinystr",
2049
2051
"writeable",
2050
2052
"yoke",
2051
2053
"zerofrom",
···
2061
2063
2062
2064
[[package]]
2063
2065
name = "idna"
2064
-
version = "1.0.3"
2066
+
version = "1.1.0"
2065
2067
source = "registry+https://github.com/rust-lang/crates.io-index"
2066
-
checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e"
2068
+
checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
2067
2069
dependencies = [
2068
2070
"idna_adapter",
2069
2071
"smallvec",
···
2082
2084
2083
2085
[[package]]
2084
2086
name = "image"
2085
-
version = "0.25.6"
2087
+
version = "0.25.8"
2086
2088
source = "registry+https://github.com/rust-lang/crates.io-index"
2087
-
checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a"
2089
+
checksum = "529feb3e6769d234375c4cf1ee2ce713682b8e76538cb13f9fc23e1400a591e7"
2088
2090
dependencies = [
2089
2091
"bytemuck",
2090
2092
"byteorder-lite",
···
2092
2094
"exr",
2093
2095
"gif",
2094
2096
"image-webp",
2097
+
"moxcms",
2095
2098
"num-traits",
2096
-
"png",
2099
+
"png 0.18.0",
2097
2100
"qoi",
2098
2101
"ravif",
2099
2102
"rayon",
···
2105
2108
2106
2109
[[package]]
2107
2110
name = "image-webp"
2108
-
version = "0.2.3"
2111
+
version = "0.2.4"
2109
2112
source = "registry+https://github.com/rust-lang/crates.io-index"
2110
-
checksum = "f6970fe7a5300b4b42e62c52efa0187540a5bef546c60edaf554ef595d2e6f0b"
2113
+
checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3"
2111
2114
dependencies = [
2112
2115
"byteorder-lite",
2113
2116
"quick-error",
···
2115
2118
2116
2119
[[package]]
2117
2120
name = "imgref"
2118
-
version = "1.11.0"
2121
+
version = "1.12.0"
2119
2122
source = "registry+https://github.com/rust-lang/crates.io-index"
2120
-
checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408"
2123
+
checksum = "e7c5cedc30da3a610cac6b4ba17597bdf7152cf974e8aab3afb3d54455e371c8"
2121
2124
2122
2125
[[package]]
2123
2126
name = "indexmap"
···
2132
2135
2133
2136
[[package]]
2134
2137
name = "indexmap"
2135
-
version = "2.10.0"
2138
+
version = "2.12.0"
2136
2139
source = "registry+https://github.com/rust-lang/crates.io-index"
2137
-
checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661"
2140
+
checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f"
2138
2141
dependencies = [
2139
2142
"equivalent",
2140
-
"hashbrown 0.15.4",
2143
+
"hashbrown 0.16.0",
2141
2144
"serde",
2145
+
"serde_core",
2142
2146
]
2143
2147
2144
2148
[[package]]
···
2152
2156
2153
2157
[[package]]
2154
2158
name = "inotify"
2155
-
version = "0.9.6"
2159
+
version = "0.11.0"
2156
2160
source = "registry+https://github.com/rust-lang/crates.io-index"
2157
-
checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff"
2161
+
checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3"
2158
2162
dependencies = [
2159
-
"bitflags 1.3.2",
2163
+
"bitflags 2.10.0",
2160
2164
"inotify-sys",
2161
2165
"libc",
2162
2166
]
···
2178
2182
dependencies = [
2179
2183
"proc-macro2",
2180
2184
"quote",
2181
-
"syn 2.0.104",
2182
-
]
2183
-
2184
-
[[package]]
2185
-
name = "io-uring"
2186
-
version = "0.7.9"
2187
-
source = "registry+https://github.com/rust-lang/crates.io-index"
2188
-
checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4"
2189
-
dependencies = [
2190
-
"bitflags 2.9.1",
2191
-
"cfg-if",
2192
-
"libc",
2185
+
"syn 2.0.109",
2193
2186
]
2194
2187
2195
2188
[[package]]
···
2200
2193
2201
2194
[[package]]
2202
2195
name = "iri-string"
2203
-
version = "0.7.8"
2196
+
version = "0.7.9"
2204
2197
source = "registry+https://github.com/rust-lang/crates.io-index"
2205
-
checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2"
2198
+
checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397"
2206
2199
dependencies = [
2207
2200
"memchr",
2208
2201
"serde",
···
2289
2282
2290
2283
[[package]]
2291
2284
name = "jobserver"
2292
-
version = "0.1.33"
2285
+
version = "0.1.34"
2293
2286
source = "registry+https://github.com/rust-lang/crates.io-index"
2294
-
checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a"
2287
+
checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"
2295
2288
dependencies = [
2296
-
"getrandom 0.3.3",
2289
+
"getrandom 0.3.4",
2297
2290
"libc",
2298
2291
]
2299
2292
2300
2293
[[package]]
2301
-
name = "jpeg-decoder"
2302
-
version = "0.3.2"
2303
-
source = "registry+https://github.com/rust-lang/crates.io-index"
2304
-
checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07"
2305
-
2306
-
[[package]]
2307
2294
name = "js-sys"
2308
-
version = "0.3.77"
2295
+
version = "0.3.82"
2309
2296
source = "registry+https://github.com/rust-lang/crates.io-index"
2310
-
checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
2297
+
checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65"
2311
2298
dependencies = [
2312
2299
"once_cell",
2313
2300
"wasm-bindgen",
···
2341
2328
source = "registry+https://github.com/rust-lang/crates.io-index"
2342
2329
checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a"
2343
2330
dependencies = [
2344
-
"bitflags 2.9.1",
2331
+
"bitflags 2.10.0",
2345
2332
"serde",
2346
2333
"unicode-segmentation",
2347
2334
]
···
2374
2361
dependencies = [
2375
2362
"cssparser",
2376
2363
"html5ever",
2377
-
"indexmap 2.10.0",
2364
+
"indexmap 2.12.0",
2378
2365
"selectors",
2379
2366
]
2380
2367
···
2386
2373
2387
2374
[[package]]
2388
2375
name = "lebe"
2389
-
version = "0.5.2"
2376
+
version = "0.5.3"
2390
2377
source = "registry+https://github.com/rust-lang/crates.io-index"
2391
-
checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
2378
+
checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8"
2392
2379
2393
2380
[[package]]
2394
2381
name = "libappindicator"
···
2416
2403
2417
2404
[[package]]
2418
2405
name = "libc"
2419
-
version = "0.2.174"
2406
+
version = "0.2.177"
2420
2407
source = "registry+https://github.com/rust-lang/crates.io-index"
2421
-
checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
2408
+
checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
2422
2409
2423
2410
[[package]]
2424
2411
name = "libfuzzer-sys"
···
2442
2429
2443
2430
[[package]]
2444
2431
name = "libredox"
2445
-
version = "0.1.9"
2432
+
version = "0.1.10"
2446
2433
source = "registry+https://github.com/rust-lang/crates.io-index"
2447
-
checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3"
2434
+
checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb"
2448
2435
dependencies = [
2449
-
"bitflags 2.9.1",
2436
+
"bitflags 2.10.0",
2450
2437
"libc",
2451
-
"redox_syscall",
2452
2438
]
2453
2439
2454
2440
[[package]]
2455
2441
name = "linux-raw-sys"
2456
-
version = "0.9.4"
2442
+
version = "0.11.0"
2457
2443
source = "registry+https://github.com/rust-lang/crates.io-index"
2458
-
checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12"
2444
+
checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
2459
2445
2460
2446
[[package]]
2461
2447
name = "litemap"
2462
-
version = "0.8.0"
2448
+
version = "0.8.1"
2463
2449
source = "registry+https://github.com/rust-lang/crates.io-index"
2464
-
checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956"
2450
+
checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
2465
2451
2466
2452
[[package]]
2467
2453
name = "litrs"
2468
-
version = "0.4.2"
2454
+
version = "1.0.0"
2469
2455
source = "registry+https://github.com/rust-lang/crates.io-index"
2470
-
checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed"
2456
+
checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092"
2471
2457
2472
2458
[[package]]
2473
2459
name = "lock_api"
2474
-
version = "0.4.13"
2460
+
version = "0.4.14"
2475
2461
source = "registry+https://github.com/rust-lang/crates.io-index"
2476
-
checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765"
2462
+
checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
2477
2463
dependencies = [
2478
-
"autocfg",
2479
2464
"scopeguard",
2480
2465
]
2481
2466
2482
2467
[[package]]
2483
2468
name = "log"
2484
-
version = "0.4.27"
2469
+
version = "0.4.28"
2485
2470
source = "registry+https://github.com/rust-lang/crates.io-index"
2486
-
checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
2471
+
checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
2487
2472
2488
2473
[[package]]
2489
2474
name = "loop9"
···
2528
2513
dependencies = [
2529
2514
"proc-macro2",
2530
2515
"quote",
2531
-
"syn 2.0.104",
2516
+
"syn 2.0.109",
2532
2517
]
2533
2518
2534
2519
[[package]]
···
2549
2534
2550
2535
[[package]]
2551
2536
name = "memchr"
2552
-
version = "2.7.5"
2537
+
version = "2.7.6"
2553
2538
source = "registry+https://github.com/rust-lang/crates.io-index"
2554
-
checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
2539
+
checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
2555
2540
2556
2541
[[package]]
2557
2542
name = "memoffset"
···
2569
2554
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
2570
2555
2571
2556
[[package]]
2572
-
name = "minimal-lexical"
2573
-
version = "0.2.1"
2574
-
source = "registry+https://github.com/rust-lang/crates.io-index"
2575
-
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
2576
-
2577
-
[[package]]
2578
2557
name = "miniz_oxide"
2579
2558
version = "0.8.9"
2580
2559
source = "registry+https://github.com/rust-lang/crates.io-index"
···
2586
2565
2587
2566
[[package]]
2588
2567
name = "mio"
2589
-
version = "0.8.11"
2568
+
version = "1.1.0"
2590
2569
source = "registry+https://github.com/rust-lang/crates.io-index"
2591
-
checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
2570
+
checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873"
2592
2571
dependencies = [
2593
2572
"libc",
2594
2573
"log",
2595
2574
"wasi 0.11.1+wasi-snapshot-preview1",
2596
-
"windows-sys 0.48.0",
2575
+
"windows-sys 0.61.2",
2597
2576
]
2598
2577
2599
2578
[[package]]
2600
-
name = "mio"
2601
-
version = "1.0.4"
2579
+
name = "moxcms"
2580
+
version = "0.7.9"
2602
2581
source = "registry+https://github.com/rust-lang/crates.io-index"
2603
-
checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c"
2582
+
checksum = "0fbdd3d7436f8b5e892b8b7ea114271ff0fa00bc5acae845d53b07d498616ef6"
2604
2583
dependencies = [
2605
-
"libc",
2606
-
"wasi 0.11.1+wasi-snapshot-preview1",
2607
-
"windows-sys 0.59.0",
2584
+
"num-traits",
2585
+
"pxfm",
2608
2586
]
2609
2587
2610
2588
[[package]]
···
2628
2606
"dpi",
2629
2607
"gtk",
2630
2608
"keyboard-types",
2631
-
"objc2 0.6.1",
2609
+
"objc2 0.6.3",
2632
2610
"objc2-app-kit",
2633
2611
"objc2-core-foundation",
2634
-
"objc2-foundation 0.3.1",
2612
+
"objc2-foundation 0.3.2",
2635
2613
"once_cell",
2636
-
"png",
2614
+
"png 0.17.16",
2637
2615
"serde",
2638
-
"thiserror 2.0.12",
2616
+
"thiserror 2.0.17",
2639
2617
"windows-sys 0.60.2",
2640
2618
]
2641
2619
···
2662
2640
source = "registry+https://github.com/rust-lang/crates.io-index"
2663
2641
checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4"
2664
2642
dependencies = [
2665
-
"bitflags 2.9.1",
2643
+
"bitflags 2.10.0",
2666
2644
"jni-sys",
2667
2645
"log",
2668
2646
"ndk-sys",
···
2694
2672
2695
2673
[[package]]
2696
2674
name = "nix"
2697
-
version = "0.27.1"
2675
+
version = "0.30.1"
2698
2676
source = "registry+https://github.com/rust-lang/crates.io-index"
2699
-
checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
2677
+
checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
2700
2678
dependencies = [
2701
-
"bitflags 2.9.1",
2679
+
"bitflags 2.10.0",
2702
2680
"cfg-if",
2681
+
"cfg_aliases",
2703
2682
"libc",
2704
2683
"memoffset",
2705
2684
]
···
2712
2691
2713
2692
[[package]]
2714
2693
name = "nom"
2715
-
version = "7.1.3"
2694
+
version = "8.0.0"
2716
2695
source = "registry+https://github.com/rust-lang/crates.io-index"
2717
-
checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
2696
+
checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405"
2718
2697
dependencies = [
2719
2698
"memchr",
2720
-
"minimal-lexical",
2721
2699
]
2722
2700
2723
2701
[[package]]
···
2728
2706
2729
2707
[[package]]
2730
2708
name = "notify"
2731
-
version = "6.1.1"
2709
+
version = "8.2.0"
2732
2710
source = "registry+https://github.com/rust-lang/crates.io-index"
2733
-
checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d"
2711
+
checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3"
2734
2712
dependencies = [
2735
-
"bitflags 2.9.1",
2736
-
"crossbeam-channel",
2737
-
"filetime",
2713
+
"bitflags 2.10.0",
2738
2714
"fsevent-sys",
2739
2715
"inotify",
2740
2716
"kqueue",
2741
2717
"libc",
2742
2718
"log",
2743
-
"mio 0.8.11",
2719
+
"mio",
2720
+
"notify-types",
2744
2721
"walkdir",
2745
-
"windows-sys 0.48.0",
2722
+
"windows-sys 0.60.2",
2746
2723
]
2747
2724
2748
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]]
2749
2732
name = "num-bigint"
2750
2733
version = "0.4.6"
2751
2734
source = "registry+https://github.com/rust-lang/crates.io-index"
···
2769
2752
dependencies = [
2770
2753
"proc-macro2",
2771
2754
"quote",
2772
-
"syn 2.0.104",
2755
+
"syn 2.0.109",
2773
2756
]
2774
2757
2775
2758
[[package]]
···
2803
2786
2804
2787
[[package]]
2805
2788
name = "num_enum"
2806
-
version = "0.7.4"
2789
+
version = "0.7.5"
2807
2790
source = "registry+https://github.com/rust-lang/crates.io-index"
2808
-
checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a"
2791
+
checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c"
2809
2792
dependencies = [
2810
2793
"num_enum_derive",
2811
2794
"rustversion",
···
2813
2796
2814
2797
[[package]]
2815
2798
name = "num_enum_derive"
2816
-
version = "0.7.4"
2799
+
version = "0.7.5"
2817
2800
source = "registry+https://github.com/rust-lang/crates.io-index"
2818
-
checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d"
2801
+
checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7"
2819
2802
dependencies = [
2820
-
"proc-macro-crate 2.0.2",
2803
+
"proc-macro-crate 3.4.0",
2821
2804
"proc-macro2",
2822
2805
"quote",
2823
-
"syn 2.0.104",
2806
+
"syn 2.0.109",
2824
2807
]
2825
2808
2826
2809
[[package]]
···
2841
2824
2842
2825
[[package]]
2843
2826
name = "objc2"
2844
-
version = "0.6.1"
2827
+
version = "0.6.3"
2845
2828
source = "registry+https://github.com/rust-lang/crates.io-index"
2846
-
checksum = "88c6597e14493ab2e44ce58f2fdecf095a51f12ca57bec060a11c57332520551"
2829
+
checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05"
2847
2830
dependencies = [
2848
2831
"objc2-encode",
2849
2832
"objc2-exception-helper",
···
2851
2834
2852
2835
[[package]]
2853
2836
name = "objc2-app-kit"
2854
-
version = "0.3.1"
2837
+
version = "0.3.2"
2855
2838
source = "registry+https://github.com/rust-lang/crates.io-index"
2856
-
checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc"
2839
+
checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c"
2857
2840
dependencies = [
2858
-
"bitflags 2.9.1",
2859
-
"block2 0.6.1",
2841
+
"bitflags 2.10.0",
2842
+
"block2 0.6.2",
2860
2843
"libc",
2861
-
"objc2 0.6.1",
2844
+
"objc2 0.6.3",
2862
2845
"objc2-cloud-kit",
2863
2846
"objc2-core-data",
2864
2847
"objc2-core-foundation",
2865
2848
"objc2-core-graphics",
2866
2849
"objc2-core-image",
2867
-
"objc2-foundation 0.3.1",
2868
-
"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",
2869
2854
]
2870
2855
2871
2856
[[package]]
2872
2857
name = "objc2-cloud-kit"
2873
-
version = "0.3.1"
2858
+
version = "0.3.2"
2874
2859
source = "registry+https://github.com/rust-lang/crates.io-index"
2875
-
checksum = "17614fdcd9b411e6ff1117dfb1d0150f908ba83a7df81b1f118005fe0a8ea15d"
2860
+
checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c"
2876
2861
dependencies = [
2877
-
"bitflags 2.9.1",
2878
-
"objc2 0.6.1",
2879
-
"objc2-foundation 0.3.1",
2862
+
"bitflags 2.10.0",
2863
+
"objc2 0.6.3",
2864
+
"objc2-foundation 0.3.2",
2880
2865
]
2881
2866
2882
2867
[[package]]
2883
2868
name = "objc2-core-data"
2884
-
version = "0.3.1"
2869
+
version = "0.3.2"
2885
2870
source = "registry+https://github.com/rust-lang/crates.io-index"
2886
-
checksum = "291fbbf7d29287518e8686417cf7239c74700fd4b607623140a7d4a3c834329d"
2871
+
checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa"
2887
2872
dependencies = [
2888
-
"bitflags 2.9.1",
2889
-
"objc2 0.6.1",
2890
-
"objc2-foundation 0.3.1",
2873
+
"bitflags 2.10.0",
2874
+
"objc2 0.6.3",
2875
+
"objc2-foundation 0.3.2",
2891
2876
]
2892
2877
2893
2878
[[package]]
2894
2879
name = "objc2-core-foundation"
2895
-
version = "0.3.1"
2880
+
version = "0.3.2"
2896
2881
source = "registry+https://github.com/rust-lang/crates.io-index"
2897
-
checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166"
2882
+
checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
2898
2883
dependencies = [
2899
-
"bitflags 2.9.1",
2884
+
"bitflags 2.10.0",
2900
2885
"dispatch2",
2901
-
"objc2 0.6.1",
2886
+
"objc2 0.6.3",
2902
2887
]
2903
2888
2904
2889
[[package]]
2905
2890
name = "objc2-core-graphics"
2906
-
version = "0.3.1"
2891
+
version = "0.3.2"
2907
2892
source = "registry+https://github.com/rust-lang/crates.io-index"
2908
-
checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4"
2893
+
checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807"
2909
2894
dependencies = [
2910
-
"bitflags 2.9.1",
2895
+
"bitflags 2.10.0",
2911
2896
"dispatch2",
2912
-
"objc2 0.6.1",
2897
+
"objc2 0.6.3",
2913
2898
"objc2-core-foundation",
2914
2899
"objc2-io-surface",
2915
2900
]
2916
2901
2917
2902
[[package]]
2918
2903
name = "objc2-core-image"
2919
-
version = "0.3.1"
2904
+
version = "0.3.2"
2920
2905
source = "registry+https://github.com/rust-lang/crates.io-index"
2921
-
checksum = "79b3dc0cc4386b6ccf21c157591b34a7f44c8e75b064f85502901ab2188c007e"
2906
+
checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006"
2922
2907
dependencies = [
2923
-
"objc2 0.6.1",
2924
-
"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",
2925
2935
]
2926
2936
2927
2937
[[package]]
···
2945
2955
source = "registry+https://github.com/rust-lang/crates.io-index"
2946
2956
checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8"
2947
2957
dependencies = [
2948
-
"bitflags 2.9.1",
2958
+
"bitflags 2.10.0",
2949
2959
"block2 0.5.1",
2950
2960
"libc",
2951
2961
"objc2 0.5.2",
···
2953
2963
2954
2964
[[package]]
2955
2965
name = "objc2-foundation"
2956
-
version = "0.3.1"
2966
+
version = "0.3.2"
2957
2967
source = "registry+https://github.com/rust-lang/crates.io-index"
2958
-
checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c"
2968
+
checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272"
2959
2969
dependencies = [
2960
-
"bitflags 2.9.1",
2961
-
"block2 0.6.1",
2970
+
"bitflags 2.10.0",
2971
+
"block2 0.6.2",
2962
2972
"libc",
2963
-
"objc2 0.6.1",
2973
+
"objc2 0.6.3",
2964
2974
"objc2-core-foundation",
2965
2975
]
2966
2976
2967
2977
[[package]]
2968
2978
name = "objc2-io-surface"
2969
-
version = "0.3.1"
2979
+
version = "0.3.2"
2970
2980
source = "registry+https://github.com/rust-lang/crates.io-index"
2971
-
checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c"
2981
+
checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d"
2972
2982
dependencies = [
2973
-
"bitflags 2.9.1",
2974
-
"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",
2975
2995
"objc2-core-foundation",
2976
2996
]
2977
2997
···
2981
3001
source = "registry+https://github.com/rust-lang/crates.io-index"
2982
3002
checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6"
2983
3003
dependencies = [
2984
-
"bitflags 2.9.1",
3004
+
"bitflags 2.10.0",
2985
3005
"block2 0.5.1",
2986
3006
"objc2 0.5.2",
2987
3007
"objc2-foundation 0.2.2",
···
2993
3013
source = "registry+https://github.com/rust-lang/crates.io-index"
2994
3014
checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a"
2995
3015
dependencies = [
2996
-
"bitflags 2.9.1",
3016
+
"bitflags 2.10.0",
2997
3017
"block2 0.5.1",
2998
3018
"objc2 0.5.2",
2999
3019
"objc2-foundation 0.2.2",
···
3002
3022
3003
3023
[[package]]
3004
3024
name = "objc2-quartz-core"
3005
-
version = "0.3.1"
3025
+
version = "0.3.2"
3006
3026
source = "registry+https://github.com/rust-lang/crates.io-index"
3007
-
checksum = "90ffb6a0cd5f182dc964334388560b12a57f7b74b3e2dec5e2722aa2dfb2ccd5"
3027
+
checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f"
3008
3028
dependencies = [
3009
-
"bitflags 2.9.1",
3010
-
"objc2 0.6.1",
3011
-
"objc2-foundation 0.3.1",
3029
+
"bitflags 2.10.0",
3030
+
"objc2 0.6.3",
3031
+
"objc2-foundation 0.3.2",
3012
3032
]
3013
3033
3014
3034
[[package]]
3015
-
name = "objc2-ui-kit"
3016
-
version = "0.3.1"
3035
+
name = "objc2-security"
3036
+
version = "0.3.2"
3017
3037
source = "registry+https://github.com/rust-lang/crates.io-index"
3018
-
checksum = "25b1312ad7bc8a0e92adae17aa10f90aae1fb618832f9b993b022b591027daed"
3038
+
checksum = "709fe137109bd1e8b5a99390f77a7d8b2961dafc1a1c5db8f2e60329ad6d895a"
3019
3039
dependencies = [
3020
-
"bitflags 2.9.1",
3021
-
"objc2 0.6.1",
3040
+
"bitflags 2.10.0",
3041
+
"objc2 0.6.3",
3022
3042
"objc2-core-foundation",
3023
-
"objc2-foundation 0.3.1",
3024
3043
]
3025
3044
3026
3045
[[package]]
3027
-
name = "objc2-web-kit"
3028
-
version = "0.3.1"
3046
+
name = "objc2-ui-kit"
3047
+
version = "0.3.2"
3029
3048
source = "registry+https://github.com/rust-lang/crates.io-index"
3030
-
checksum = "91672909de8b1ce1c2252e95bbee8c1649c9ad9d14b9248b3d7b4c47903c47ad"
3049
+
checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22"
3031
3050
dependencies = [
3032
-
"bitflags 2.9.1",
3033
-
"block2 0.6.1",
3034
-
"objc2 0.6.1",
3035
-
"objc2-app-kit",
3051
+
"bitflags 2.10.0",
3052
+
"objc2 0.6.3",
3036
3053
"objc2-core-foundation",
3037
-
"objc2-foundation 0.3.1",
3054
+
"objc2-foundation 0.3.2",
3038
3055
]
3039
3056
3040
3057
[[package]]
3041
-
name = "object"
3042
-
version = "0.36.7"
3058
+
name = "objc2-web-kit"
3059
+
version = "0.3.2"
3043
3060
source = "registry+https://github.com/rust-lang/crates.io-index"
3044
-
checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
3061
+
checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f"
3045
3062
dependencies = [
3046
-
"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",
3047
3071
]
3048
3072
3049
3073
[[package]]
···
3066
3090
3067
3091
[[package]]
3068
3092
name = "openssl"
3069
-
version = "0.10.73"
3093
+
version = "0.10.74"
3070
3094
source = "registry+https://github.com/rust-lang/crates.io-index"
3071
-
checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8"
3095
+
checksum = "24ad14dd45412269e1a30f52ad8f0664f0f4f4a89ee8fe28c3b3527021ebb654"
3072
3096
dependencies = [
3073
-
"bitflags 2.9.1",
3097
+
"bitflags 2.10.0",
3074
3098
"cfg-if",
3075
3099
"foreign-types 0.3.2",
3076
3100
"libc",
···
3087
3111
dependencies = [
3088
3112
"proc-macro2",
3089
3113
"quote",
3090
-
"syn 2.0.104",
3114
+
"syn 2.0.109",
3091
3115
]
3092
3116
3093
3117
[[package]]
···
3098
3122
3099
3123
[[package]]
3100
3124
name = "openssl-sys"
3101
-
version = "0.9.109"
3125
+
version = "0.9.110"
3102
3126
source = "registry+https://github.com/rust-lang/crates.io-index"
3103
-
checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571"
3127
+
checksum = "0a9f0075ba3c21b09f8e8b2026584b1d18d49388648f2fbbf3c97ea8deced8e2"
3104
3128
dependencies = [
3105
3129
"cc",
3106
3130
"libc",
···
3136
3160
3137
3161
[[package]]
3138
3162
name = "os_pipe"
3139
-
version = "1.2.2"
3163
+
version = "1.2.3"
3140
3164
source = "registry+https://github.com/rust-lang/crates.io-index"
3141
-
checksum = "db335f4760b14ead6290116f2427bf33a14d4f0617d49f78a246de10c1831224"
3165
+
checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967"
3142
3166
dependencies = [
3143
3167
"libc",
3144
-
"windows-sys 0.59.0",
3168
+
"windows-sys 0.61.2",
3145
3169
]
3146
3170
3147
3171
[[package]]
···
3177
3201
3178
3202
[[package]]
3179
3203
name = "parking_lot"
3180
-
version = "0.12.4"
3204
+
version = "0.12.5"
3181
3205
source = "registry+https://github.com/rust-lang/crates.io-index"
3182
-
checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13"
3206
+
checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
3183
3207
dependencies = [
3184
3208
"lock_api",
3185
3209
"parking_lot_core",
···
3187
3211
3188
3212
[[package]]
3189
3213
name = "parking_lot_core"
3190
-
version = "0.9.11"
3214
+
version = "0.9.12"
3191
3215
source = "registry+https://github.com/rust-lang/crates.io-index"
3192
-
checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5"
3216
+
checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
3193
3217
dependencies = [
3194
3218
"cfg-if",
3195
3219
"libc",
3196
3220
"redox_syscall",
3197
3221
"smallvec",
3198
-
"windows-targets 0.52.6",
3222
+
"windows-link 0.2.1",
3199
3223
]
3200
3224
3201
3225
[[package]]
···
3212
3236
3213
3237
[[package]]
3214
3238
name = "percent-encoding"
3215
-
version = "2.3.1"
3239
+
version = "2.3.2"
3216
3240
source = "registry+https://github.com/rust-lang/crates.io-index"
3217
-
checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
3241
+
checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
3218
3242
3219
3243
[[package]]
3220
3244
name = "phf"
···
3320
3344
"phf_shared 0.11.3",
3321
3345
"proc-macro2",
3322
3346
"quote",
3323
-
"syn 2.0.104",
3347
+
"syn 2.0.109",
3324
3348
]
3325
3349
3326
3350
[[package]]
···
3381
3405
3382
3406
[[package]]
3383
3407
name = "plist"
3384
-
version = "1.7.4"
3408
+
version = "1.8.0"
3385
3409
source = "registry+https://github.com/rust-lang/crates.io-index"
3386
-
checksum = "3af6b589e163c5a788fab00ce0c0366f6efbb9959c2f9874b224936af7fce7e1"
3410
+
checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07"
3387
3411
dependencies = [
3388
3412
"base64 0.22.1",
3389
-
"indexmap 2.10.0",
3413
+
"indexmap 2.12.0",
3390
3414
"quick-xml",
3391
3415
"serde",
3392
3416
"time",
···
3406
3430
]
3407
3431
3408
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]]
3409
3446
name = "polling"
3410
-
version = "3.9.0"
3447
+
version = "3.11.0"
3411
3448
source = "registry+https://github.com/rust-lang/crates.io-index"
3412
-
checksum = "8ee9b2fa7a4517d2c91ff5bc6c297a427a96749d15f98fcdbb22c05571a4d4b7"
3449
+
checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218"
3413
3450
dependencies = [
3414
3451
"cfg-if",
3415
3452
"concurrent-queue",
3416
3453
"hermit-abi",
3417
3454
"pin-project-lite",
3418
3455
"rustix",
3419
-
"windows-sys 0.60.2",
3456
+
"windows-sys 0.61.2",
3420
3457
]
3421
3458
3422
3459
[[package]]
3423
3460
name = "potential_utf"
3424
-
version = "0.1.2"
3461
+
version = "0.1.4"
3425
3462
source = "registry+https://github.com/rust-lang/crates.io-index"
3426
-
checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585"
3463
+
checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
3427
3464
dependencies = [
3428
3465
"zerovec",
3429
3466
]
···
3470
3507
]
3471
3508
3472
3509
[[package]]
3510
+
name = "proc-macro-crate"
3511
+
version = "3.4.0"
3512
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3513
+
checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983"
3514
+
dependencies = [
3515
+
"toml_edit 0.23.7",
3516
+
]
3517
+
3518
+
[[package]]
3473
3519
name = "proc-macro-error"
3474
3520
version = "1.0.4"
3475
3521
source = "registry+https://github.com/rust-lang/crates.io-index"
···
3501
3547
3502
3548
[[package]]
3503
3549
name = "proc-macro2"
3504
-
version = "1.0.95"
3550
+
version = "1.0.103"
3505
3551
source = "registry+https://github.com/rust-lang/crates.io-index"
3506
-
checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
3552
+
checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
3507
3553
dependencies = [
3508
3554
"unicode-ident",
3509
3555
]
···
3524
3570
checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b"
3525
3571
dependencies = [
3526
3572
"quote",
3527
-
"syn 2.0.104",
3573
+
"syn 2.0.109",
3528
3574
]
3529
3575
3530
3576
[[package]]
···
3544
3590
]
3545
3591
3546
3592
[[package]]
3593
+
name = "pxfm"
3594
+
version = "0.1.25"
3595
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3596
+
checksum = "a3cbdf373972bf78df4d3b518d07003938e2c7d1fb5891e55f9cb6df57009d84"
3597
+
dependencies = [
3598
+
"num-traits",
3599
+
]
3600
+
3601
+
[[package]]
3547
3602
name = "qoi"
3548
3603
version = "0.4.1"
3549
3604
source = "registry+https://github.com/rust-lang/crates.io-index"
···
3560
3615
3561
3616
[[package]]
3562
3617
name = "quick-xml"
3563
-
version = "0.38.0"
3618
+
version = "0.38.3"
3564
3619
source = "registry+https://github.com/rust-lang/crates.io-index"
3565
-
checksum = "8927b0664f5c5a98265138b7e3f90aa19a6b21353182469ace36d4ac527b7b1b"
3620
+
checksum = "42a232e7487fc2ef313d96dde7948e7a3c05101870d8985e4fd8d26aedd27b89"
3566
3621
dependencies = [
3567
3622
"memchr",
3568
3623
]
3569
3624
3570
3625
[[package]]
3571
3626
name = "quinn"
3572
-
version = "0.11.8"
3627
+
version = "0.11.9"
3573
3628
source = "registry+https://github.com/rust-lang/crates.io-index"
3574
-
checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8"
3629
+
checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
3575
3630
dependencies = [
3576
3631
"bytes",
3577
3632
"cfg_aliases",
···
3580
3635
"quinn-udp",
3581
3636
"rustc-hash",
3582
3637
"rustls",
3583
-
"socket2 0.5.10",
3584
-
"thiserror 2.0.12",
3638
+
"socket2",
3639
+
"thiserror 2.0.17",
3585
3640
"tokio",
3586
3641
"tracing",
3587
3642
"web-time",
···
3589
3644
3590
3645
[[package]]
3591
3646
name = "quinn-proto"
3592
-
version = "0.11.12"
3647
+
version = "0.11.13"
3593
3648
source = "registry+https://github.com/rust-lang/crates.io-index"
3594
-
checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e"
3649
+
checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31"
3595
3650
dependencies = [
3596
3651
"bytes",
3597
-
"getrandom 0.3.3",
3652
+
"getrandom 0.3.4",
3598
3653
"lru-slab",
3599
3654
"rand 0.9.2",
3600
3655
"ring",
···
3602
3657
"rustls",
3603
3658
"rustls-pki-types",
3604
3659
"slab",
3605
-
"thiserror 2.0.12",
3660
+
"thiserror 2.0.17",
3606
3661
"tinyvec",
3607
3662
"tracing",
3608
3663
"web-time",
···
3610
3665
3611
3666
[[package]]
3612
3667
name = "quinn-udp"
3613
-
version = "0.5.13"
3668
+
version = "0.5.14"
3614
3669
source = "registry+https://github.com/rust-lang/crates.io-index"
3615
-
checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970"
3670
+
checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
3616
3671
dependencies = [
3617
3672
"cfg_aliases",
3618
3673
"libc",
3619
3674
"once_cell",
3620
-
"socket2 0.5.10",
3675
+
"socket2",
3621
3676
"tracing",
3622
-
"windows-sys 0.59.0",
3677
+
"windows-sys 0.60.2",
3623
3678
]
3624
3679
3625
3680
[[package]]
3626
3681
name = "quote"
3627
-
version = "1.0.40"
3682
+
version = "1.0.42"
3628
3683
source = "registry+https://github.com/rust-lang/crates.io-index"
3629
-
checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
3684
+
checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
3630
3685
dependencies = [
3631
3686
"proc-macro2",
3632
3687
]
···
3726
3781
source = "registry+https://github.com/rust-lang/crates.io-index"
3727
3782
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
3728
3783
dependencies = [
3729
-
"getrandom 0.3.3",
3784
+
"getrandom 0.3.4",
3730
3785
]
3731
3786
3732
3787
[[package]]
···
3805
3860
3806
3861
[[package]]
3807
3862
name = "rayon"
3808
-
version = "1.10.0"
3863
+
version = "1.11.0"
3809
3864
source = "registry+https://github.com/rust-lang/crates.io-index"
3810
-
checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
3865
+
checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f"
3811
3866
dependencies = [
3812
3867
"either",
3813
3868
"rayon-core",
···
3815
3870
3816
3871
[[package]]
3817
3872
name = "rayon-core"
3818
-
version = "1.12.1"
3873
+
version = "1.13.0"
3819
3874
source = "registry+https://github.com/rust-lang/crates.io-index"
3820
-
checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
3875
+
checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
3821
3876
dependencies = [
3822
3877
"crossbeam-deque",
3823
3878
"crossbeam-utils",
···
3825
3880
3826
3881
[[package]]
3827
3882
name = "redox_syscall"
3828
-
version = "0.5.17"
3883
+
version = "0.5.18"
3829
3884
source = "registry+https://github.com/rust-lang/crates.io-index"
3830
-
checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77"
3885
+
checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
3831
3886
dependencies = [
3832
-
"bitflags 2.9.1",
3833
-
]
3834
-
3835
-
[[package]]
3836
-
name = "redox_users"
3837
-
version = "0.4.6"
3838
-
source = "registry+https://github.com/rust-lang/crates.io-index"
3839
-
checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
3840
-
dependencies = [
3841
-
"getrandom 0.2.16",
3842
-
"libredox",
3843
-
"thiserror 1.0.69",
3887
+
"bitflags 2.10.0",
3844
3888
]
3845
3889
3846
3890
[[package]]
···
3851
3895
dependencies = [
3852
3896
"getrandom 0.2.16",
3853
3897
"libredox",
3854
-
"thiserror 2.0.12",
3898
+
"thiserror 2.0.17",
3855
3899
]
3856
3900
3857
3901
[[package]]
3858
3902
name = "ref-cast"
3859
-
version = "1.0.24"
3903
+
version = "1.0.25"
3860
3904
source = "registry+https://github.com/rust-lang/crates.io-index"
3861
-
checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf"
3905
+
checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d"
3862
3906
dependencies = [
3863
3907
"ref-cast-impl",
3864
3908
]
3865
3909
3866
3910
[[package]]
3867
3911
name = "ref-cast-impl"
3868
-
version = "1.0.24"
3912
+
version = "1.0.25"
3869
3913
source = "registry+https://github.com/rust-lang/crates.io-index"
3870
-
checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7"
3914
+
checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
3871
3915
dependencies = [
3872
3916
"proc-macro2",
3873
3917
"quote",
3874
-
"syn 2.0.104",
3918
+
"syn 2.0.109",
3875
3919
]
3876
3920
3877
3921
[[package]]
3878
3922
name = "regex"
3879
-
version = "1.11.1"
3923
+
version = "1.12.2"
3880
3924
source = "registry+https://github.com/rust-lang/crates.io-index"
3881
-
checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
3925
+
checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4"
3882
3926
dependencies = [
3883
3927
"aho-corasick",
3884
3928
"memchr",
···
3888
3932
3889
3933
[[package]]
3890
3934
name = "regex-automata"
3891
-
version = "0.4.9"
3935
+
version = "0.4.13"
3892
3936
source = "registry+https://github.com/rust-lang/crates.io-index"
3893
-
checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
3937
+
checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
3894
3938
dependencies = [
3895
3939
"aho-corasick",
3896
3940
"memchr",
···
3899
3943
3900
3944
[[package]]
3901
3945
name = "regex-syntax"
3902
-
version = "0.8.5"
3946
+
version = "0.8.8"
3903
3947
source = "registry+https://github.com/rust-lang/crates.io-index"
3904
-
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
3948
+
checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
3905
3949
3906
3950
[[package]]
3907
3951
name = "reqwest"
3908
-
version = "0.12.22"
3952
+
version = "0.12.24"
3909
3953
source = "registry+https://github.com/rust-lang/crates.io-index"
3910
-
checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531"
3954
+
checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f"
3911
3955
dependencies = [
3912
3956
"base64 0.22.1",
3913
3957
"bytes",
···
3975
4019
3976
4020
[[package]]
3977
4021
name = "rust-ini"
3978
-
version = "0.21.2"
4022
+
version = "0.21.3"
3979
4023
source = "registry+https://github.com/rust-lang/crates.io-index"
3980
-
checksum = "e7295b7ce3bf4806b419dc3420745998b447178b7005e2011947b38fc5aa6791"
4024
+
checksum = "796e8d2b6696392a43bea58116b667fb4c29727dc5abd27d6acf338bb4f688c7"
3981
4025
dependencies = [
3982
4026
"cfg-if",
3983
4027
"ordered-multimap",
3984
4028
]
3985
-
3986
-
[[package]]
3987
-
name = "rustc-demangle"
3988
-
version = "0.1.26"
3989
-
source = "registry+https://github.com/rust-lang/crates.io-index"
3990
-
checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace"
3991
4029
3992
4030
[[package]]
3993
4031
name = "rustc-hash"
···
4006
4044
4007
4045
[[package]]
4008
4046
name = "rustix"
4009
-
version = "1.0.8"
4047
+
version = "1.1.2"
4010
4048
source = "registry+https://github.com/rust-lang/crates.io-index"
4011
-
checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"
4049
+
checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
4012
4050
dependencies = [
4013
-
"bitflags 2.9.1",
4051
+
"bitflags 2.10.0",
4014
4052
"errno",
4015
4053
"libc",
4016
4054
"linux-raw-sys",
4017
-
"windows-sys 0.60.2",
4055
+
"windows-sys 0.61.2",
4018
4056
]
4019
4057
4020
4058
[[package]]
4021
4059
name = "rustls"
4022
-
version = "0.23.31"
4060
+
version = "0.23.35"
4023
4061
source = "registry+https://github.com/rust-lang/crates.io-index"
4024
-
checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc"
4062
+
checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f"
4025
4063
dependencies = [
4026
4064
"once_cell",
4027
4065
"ring",
···
4033
4071
4034
4072
[[package]]
4035
4073
name = "rustls-pki-types"
4036
-
version = "1.12.0"
4074
+
version = "1.13.0"
4037
4075
source = "registry+https://github.com/rust-lang/crates.io-index"
4038
-
checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79"
4076
+
checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a"
4039
4077
dependencies = [
4040
4078
"web-time",
4041
4079
"zeroize",
···
4043
4081
4044
4082
[[package]]
4045
4083
name = "rustls-webpki"
4046
-
version = "0.103.4"
4084
+
version = "0.103.8"
4047
4085
source = "registry+https://github.com/rust-lang/crates.io-index"
4048
-
checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc"
4086
+
checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52"
4049
4087
dependencies = [
4050
4088
"ring",
4051
4089
"rustls-pki-types",
···
4054
4092
4055
4093
[[package]]
4056
4094
name = "rustversion"
4057
-
version = "1.0.21"
4095
+
version = "1.0.22"
4058
4096
source = "registry+https://github.com/rust-lang/crates.io-index"
4059
-
checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d"
4097
+
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
4060
4098
4061
4099
[[package]]
4062
4100
name = "ryu"
···
4075
4113
4076
4114
[[package]]
4077
4115
name = "schannel"
4078
-
version = "0.1.27"
4116
+
version = "0.1.28"
4079
4117
source = "registry+https://github.com/rust-lang/crates.io-index"
4080
-
checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d"
4118
+
checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1"
4081
4119
dependencies = [
4082
-
"windows-sys 0.59.0",
4120
+
"windows-sys 0.61.2",
4083
4121
]
4084
4122
4085
4123
[[package]]
···
4111
4149
4112
4150
[[package]]
4113
4151
name = "schemars"
4114
-
version = "1.0.4"
4152
+
version = "1.1.0"
4115
4153
source = "registry+https://github.com/rust-lang/crates.io-index"
4116
-
checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0"
4154
+
checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289"
4117
4155
dependencies = [
4118
4156
"dyn-clone",
4119
4157
"ref-cast",
···
4130
4168
"proc-macro2",
4131
4169
"quote",
4132
4170
"serde_derive_internals",
4133
-
"syn 2.0.104",
4171
+
"syn 2.0.109",
4134
4172
]
4135
4173
4136
4174
[[package]]
···
4145
4183
source = "registry+https://github.com/rust-lang/crates.io-index"
4146
4184
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
4147
4185
dependencies = [
4148
-
"bitflags 2.9.1",
4186
+
"bitflags 2.10.0",
4149
4187
"core-foundation 0.9.4",
4150
4188
"core-foundation-sys",
4151
4189
"libc",
···
4154
4192
4155
4193
[[package]]
4156
4194
name = "security-framework-sys"
4157
-
version = "2.14.0"
4195
+
version = "2.15.0"
4158
4196
source = "registry+https://github.com/rust-lang/crates.io-index"
4159
-
checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32"
4197
+
checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0"
4160
4198
dependencies = [
4161
4199
"core-foundation-sys",
4162
4200
"libc",
···
4182
4220
4183
4221
[[package]]
4184
4222
name = "semver"
4185
-
version = "1.0.26"
4223
+
version = "1.0.27"
4186
4224
source = "registry+https://github.com/rust-lang/crates.io-index"
4187
-
checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
4225
+
checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
4188
4226
dependencies = [
4189
4227
"serde",
4228
+
"serde_core",
4190
4229
]
4191
4230
4192
4231
[[package]]
4193
4232
name = "serde"
4194
-
version = "1.0.219"
4233
+
version = "1.0.228"
4195
4234
source = "registry+https://github.com/rust-lang/crates.io-index"
4196
-
checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
4235
+
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
4197
4236
dependencies = [
4237
+
"serde_core",
4198
4238
"serde_derive",
4199
4239
]
4200
4240
4201
4241
[[package]]
4202
4242
name = "serde-untagged"
4203
-
version = "0.1.7"
4243
+
version = "0.1.9"
4204
4244
source = "registry+https://github.com/rust-lang/crates.io-index"
4205
-
checksum = "299d9c19d7d466db4ab10addd5703e4c615dec2a5a16dbbafe191045e87ee66e"
4245
+
checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058"
4206
4246
dependencies = [
4207
4247
"erased-serde",
4208
4248
"serde",
4249
+
"serde_core",
4209
4250
"typeid",
4210
4251
]
4211
4252
4212
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]]
4213
4263
name = "serde_derive"
4214
-
version = "1.0.219"
4264
+
version = "1.0.228"
4215
4265
source = "registry+https://github.com/rust-lang/crates.io-index"
4216
-
checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
4266
+
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
4217
4267
dependencies = [
4218
4268
"proc-macro2",
4219
4269
"quote",
4220
-
"syn 2.0.104",
4270
+
"syn 2.0.109",
4221
4271
]
4222
4272
4223
4273
[[package]]
···
4228
4278
dependencies = [
4229
4279
"proc-macro2",
4230
4280
"quote",
4231
-
"syn 2.0.104",
4281
+
"syn 2.0.109",
4232
4282
]
4233
4283
4234
4284
[[package]]
4235
4285
name = "serde_json"
4236
-
version = "1.0.141"
4286
+
version = "1.0.145"
4237
4287
source = "registry+https://github.com/rust-lang/crates.io-index"
4238
-
checksum = "30b9eff21ebe718216c6ec64e1d9ac57087aad11efc64e32002bce4a0d4c03d3"
4288
+
checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
4239
4289
dependencies = [
4240
4290
"itoa",
4241
4291
"memchr",
4242
4292
"ryu",
4243
4293
"serde",
4294
+
"serde_core",
4244
4295
]
4245
4296
4246
4297
[[package]]
···
4251
4302
dependencies = [
4252
4303
"proc-macro2",
4253
4304
"quote",
4254
-
"syn 2.0.104",
4305
+
"syn 2.0.109",
4255
4306
]
4256
4307
4257
4308
[[package]]
···
4265
4316
4266
4317
[[package]]
4267
4318
name = "serde_spanned"
4268
-
version = "1.0.0"
4319
+
version = "1.0.3"
4269
4320
source = "registry+https://github.com/rust-lang/crates.io-index"
4270
-
checksum = "40734c41988f7306bb04f0ecf60ec0f3f1caa34290e4e8ea471dcd3346483b83"
4321
+
checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392"
4271
4322
dependencies = [
4272
-
"serde",
4323
+
"serde_core",
4273
4324
]
4274
4325
4275
4326
[[package]]
···
4286
4337
4287
4338
[[package]]
4288
4339
name = "serde_with"
4289
-
version = "3.14.0"
4340
+
version = "3.15.1"
4290
4341
source = "registry+https://github.com/rust-lang/crates.io-index"
4291
-
checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5"
4342
+
checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04"
4292
4343
dependencies = [
4293
4344
"base64 0.22.1",
4294
4345
"chrono",
4295
4346
"hex",
4296
4347
"indexmap 1.9.3",
4297
-
"indexmap 2.10.0",
4348
+
"indexmap 2.12.0",
4298
4349
"schemars 0.9.0",
4299
-
"schemars 1.0.4",
4300
-
"serde",
4301
-
"serde_derive",
4350
+
"schemars 1.1.0",
4351
+
"serde_core",
4302
4352
"serde_json",
4303
4353
"serde_with_macros",
4304
4354
"time",
···
4306
4356
4307
4357
[[package]]
4308
4358
name = "serde_with_macros"
4309
-
version = "3.14.0"
4359
+
version = "3.15.1"
4310
4360
source = "registry+https://github.com/rust-lang/crates.io-index"
4311
-
checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f"
4361
+
checksum = "b91a903660542fced4e99881aa481bdbaec1634568ee02e0b8bd57c64cb38955"
4312
4362
dependencies = [
4313
4363
"darling",
4314
4364
"proc-macro2",
4315
4365
"quote",
4316
-
"syn 2.0.104",
4366
+
"syn 2.0.109",
4317
4367
]
4318
4368
4319
4369
[[package]]
4320
4370
name = "serialize-to-javascript"
4321
-
version = "0.1.1"
4371
+
version = "0.1.2"
4322
4372
source = "registry+https://github.com/rust-lang/crates.io-index"
4323
-
checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb"
4373
+
checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5"
4324
4374
dependencies = [
4325
4375
"serde",
4326
4376
"serde_json",
···
4329
4379
4330
4380
[[package]]
4331
4381
name = "serialize-to-javascript-impl"
4332
-
version = "0.1.1"
4382
+
version = "0.1.2"
4333
4383
source = "registry+https://github.com/rust-lang/crates.io-index"
4334
-
checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763"
4384
+
checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d"
4335
4385
dependencies = [
4336
4386
"proc-macro2",
4337
4387
"quote",
4338
-
"syn 1.0.109",
4388
+
"syn 2.0.109",
4339
4389
]
4340
4390
4341
4391
[[package]]
···
4349
4399
]
4350
4400
4351
4401
[[package]]
4352
-
name = "sha1"
4353
-
version = "0.10.6"
4354
-
source = "registry+https://github.com/rust-lang/crates.io-index"
4355
-
checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
4356
-
dependencies = [
4357
-
"cfg-if",
4358
-
"cpufeatures",
4359
-
"digest",
4360
-
]
4361
-
4362
-
[[package]]
4363
4402
name = "sha2"
4364
4403
version = "0.10.9"
4365
4404
source = "registry+https://github.com/rust-lang/crates.io-index"
···
4410
4449
4411
4450
[[package]]
4412
4451
name = "signal-hook-registry"
4413
-
version = "1.4.5"
4452
+
version = "1.4.6"
4414
4453
source = "registry+https://github.com/rust-lang/crates.io-index"
4415
-
checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410"
4454
+
checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b"
4416
4455
dependencies = [
4417
4456
"libc",
4418
4457
]
···
4446
4485
4447
4486
[[package]]
4448
4487
name = "slab"
4449
-
version = "0.4.10"
4488
+
version = "0.4.11"
4450
4489
source = "registry+https://github.com/rust-lang/crates.io-index"
4451
-
checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d"
4490
+
checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
4452
4491
4453
4492
[[package]]
4454
4493
name = "smallvec"
···
4458
4497
4459
4498
[[package]]
4460
4499
name = "socket2"
4461
-
version = "0.5.10"
4500
+
version = "0.6.1"
4462
4501
source = "registry+https://github.com/rust-lang/crates.io-index"
4463
-
checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678"
4502
+
checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881"
4464
4503
dependencies = [
4465
4504
"libc",
4466
-
"windows-sys 0.52.0",
4467
-
]
4468
-
4469
-
[[package]]
4470
-
name = "socket2"
4471
-
version = "0.6.0"
4472
-
source = "registry+https://github.com/rust-lang/crates.io-index"
4473
-
checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807"
4474
-
dependencies = [
4475
-
"libc",
4476
-
"windows-sys 0.59.0",
4505
+
"windows-sys 0.60.2",
4477
4506
]
4478
4507
4479
4508
[[package]]
···
4526
4555
4527
4556
[[package]]
4528
4557
name = "stable_deref_trait"
4529
-
version = "1.2.0"
4558
+
version = "1.2.1"
4530
4559
source = "registry+https://github.com/rust-lang/crates.io-index"
4531
-
checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
4560
+
checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
4532
4561
4533
4562
[[package]]
4534
4563
name = "static_assertions"
···
4597
4626
4598
4627
[[package]]
4599
4628
name = "syn"
4600
-
version = "2.0.104"
4629
+
version = "2.0.109"
4601
4630
source = "registry+https://github.com/rust-lang/crates.io-index"
4602
-
checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40"
4631
+
checksum = "2f17c7e013e88258aa9543dcbe81aca68a667a9ac37cd69c9fbc07858bfe0e2f"
4603
4632
dependencies = [
4604
4633
"proc-macro2",
4605
4634
"quote",
···
4623
4652
dependencies = [
4624
4653
"proc-macro2",
4625
4654
"quote",
4626
-
"syn 2.0.104",
4655
+
"syn 2.0.109",
4627
4656
]
4628
4657
4629
4658
[[package]]
···
4632
4661
source = "registry+https://github.com/rust-lang/crates.io-index"
4633
4662
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
4634
4663
dependencies = [
4635
-
"bitflags 2.9.1",
4664
+
"bitflags 2.10.0",
4636
4665
"core-foundation 0.9.4",
4637
4666
"system-configuration-sys",
4638
4667
]
···
4662
4691
4663
4692
[[package]]
4664
4693
name = "tao"
4665
-
version = "0.34.0"
4694
+
version = "0.34.5"
4666
4695
source = "registry+https://github.com/rust-lang/crates.io-index"
4667
-
checksum = "49c380ca75a231b87b6c9dd86948f035012e7171d1a7c40a9c2890489a7ffd8a"
4696
+
checksum = "f3a753bdc39c07b192151523a3f77cd0394aa75413802c883a0f6f6a0e5ee2e7"
4668
4697
dependencies = [
4669
-
"bitflags 2.9.1",
4698
+
"bitflags 2.10.0",
4699
+
"block2 0.6.2",
4670
4700
"core-foundation 0.10.1",
4671
4701
"core-graphics",
4672
4702
"crossbeam-channel",
···
4683
4713
"ndk",
4684
4714
"ndk-context",
4685
4715
"ndk-sys",
4686
-
"objc2 0.6.1",
4716
+
"objc2 0.6.3",
4687
4717
"objc2-app-kit",
4688
-
"objc2-foundation 0.3.1",
4718
+
"objc2-foundation 0.3.2",
4689
4719
"once_cell",
4690
4720
"parking_lot",
4691
4721
"raw-window-handle",
···
4694
4724
"unicode-segmentation",
4695
4725
"url",
4696
4726
"windows",
4697
-
"windows-core",
4727
+
"windows-core 0.61.2",
4698
4728
"windows-version",
4699
4729
"x11-dl",
4700
4730
]
···
4707
4737
dependencies = [
4708
4738
"proc-macro2",
4709
4739
"quote",
4710
-
"syn 2.0.104",
4740
+
"syn 2.0.109",
4711
4741
]
4712
4742
4713
4743
[[package]]
···
4718
4748
4719
4749
[[package]]
4720
4750
name = "tauri"
4721
-
version = "2.7.0"
4751
+
version = "2.9.2"
4722
4752
source = "registry+https://github.com/rust-lang/crates.io-index"
4723
-
checksum = "352a4bc7bf6c25f5624227e3641adf475a6535707451b09bb83271df8b7a6ac7"
4753
+
checksum = "8bceb52453e507c505b330afe3398510e87f428ea42b6e76ecb6bd63b15965b5"
4724
4754
dependencies = [
4725
4755
"anyhow",
4726
4756
"bytes",
4727
-
"dirs 6.0.0",
4757
+
"cookie",
4758
+
"dirs",
4728
4759
"dunce",
4729
4760
"embed_plist",
4730
-
"getrandom 0.3.3",
4761
+
"getrandom 0.3.4",
4731
4762
"glob",
4732
4763
"gtk",
4733
4764
"heck 0.5.0",
···
4738
4769
"log",
4739
4770
"mime",
4740
4771
"muda",
4741
-
"objc2 0.6.1",
4772
+
"objc2 0.6.3",
4742
4773
"objc2-app-kit",
4743
-
"objc2-foundation 0.3.1",
4774
+
"objc2-foundation 0.3.2",
4744
4775
"objc2-ui-kit",
4776
+
"objc2-web-kit",
4745
4777
"percent-encoding",
4746
4778
"plist",
4747
4779
"raw-window-handle",
···
4756
4788
"tauri-runtime",
4757
4789
"tauri-runtime-wry",
4758
4790
"tauri-utils",
4759
-
"thiserror 2.0.12",
4791
+
"thiserror 2.0.17",
4760
4792
"tokio",
4761
4793
"tray-icon",
4762
4794
"url",
4763
-
"urlpattern",
4764
4795
"webkit2gtk",
4765
4796
"webview2-com",
4766
4797
"window-vibrancy",
···
4769
4800
4770
4801
[[package]]
4771
4802
name = "tauri-build"
4772
-
version = "2.3.1"
4803
+
version = "2.5.1"
4773
4804
source = "registry+https://github.com/rust-lang/crates.io-index"
4774
-
checksum = "182d688496c06bf08ea896459bf483eb29cdff35c1c4c115fb14053514303064"
4805
+
checksum = "a924b6c50fe83193f0f8b14072afa7c25b7a72752a2a73d9549b463f5fe91a38"
4775
4806
dependencies = [
4776
4807
"anyhow",
4777
4808
"cargo_toml",
4778
-
"dirs 6.0.0",
4809
+
"dirs",
4779
4810
"glob",
4780
4811
"heck 0.5.0",
4781
4812
"json-patch",
···
4785
4816
"serde_json",
4786
4817
"tauri-utils",
4787
4818
"tauri-winres",
4788
-
"toml 0.8.2",
4819
+
"toml 0.9.8",
4789
4820
"walkdir",
4790
4821
]
4791
4822
4792
4823
[[package]]
4793
4824
name = "tauri-codegen"
4794
-
version = "2.3.1"
4825
+
version = "2.5.0"
4795
4826
source = "registry+https://github.com/rust-lang/crates.io-index"
4796
-
checksum = "b54a99a6cd8e01abcfa61508177e6096a4fe2681efecee9214e962f2f073ae4a"
4827
+
checksum = "6c1fe64c74cc40f90848281a90058a6db931eb400b60205840e09801ee30f190"
4797
4828
dependencies = [
4798
4829
"base64 0.22.1",
4799
4830
"brotli",
4800
4831
"ico",
4801
4832
"json-patch",
4802
4833
"plist",
4803
-
"png",
4834
+
"png 0.17.16",
4804
4835
"proc-macro2",
4805
4836
"quote",
4806
4837
"semver",
4807
4838
"serde",
4808
4839
"serde_json",
4809
4840
"sha2",
4810
-
"syn 2.0.104",
4841
+
"syn 2.0.109",
4811
4842
"tauri-utils",
4812
-
"thiserror 2.0.12",
4843
+
"thiserror 2.0.17",
4813
4844
"time",
4814
4845
"url",
4815
4846
"uuid",
···
4818
4849
4819
4850
[[package]]
4820
4851
name = "tauri-macros"
4821
-
version = "2.3.2"
4852
+
version = "2.5.0"
4822
4853
source = "registry+https://github.com/rust-lang/crates.io-index"
4823
-
checksum = "7945b14dc45e23532f2ded6e120170bbdd4af5ceaa45784a6b33d250fbce3f9e"
4854
+
checksum = "260c5d2eb036b76206b9fca20b7be3614cfd21046c5396f7959e0e64a4b07f2f"
4824
4855
dependencies = [
4825
4856
"heck 0.5.0",
4826
4857
"proc-macro2",
4827
4858
"quote",
4828
-
"syn 2.0.104",
4859
+
"syn 2.0.109",
4829
4860
"tauri-codegen",
4830
4861
"tauri-utils",
4831
4862
]
4832
4863
4833
4864
[[package]]
4834
4865
name = "tauri-plugin"
4835
-
version = "2.3.1"
4866
+
version = "2.5.1"
4836
4867
source = "registry+https://github.com/rust-lang/crates.io-index"
4837
-
checksum = "5bd5c1e56990c70a906ef67a9851bbdba9136d26075ee9a2b19c8b46986b3e02"
4868
+
checksum = "076c78a474a7247c90cad0b6e87e593c4c620ed4efdb79cbe0214f0021f6c39d"
4838
4869
dependencies = [
4839
4870
"anyhow",
4840
4871
"glob",
···
4843
4874
"serde",
4844
4875
"serde_json",
4845
4876
"tauri-utils",
4846
-
"toml 0.8.2",
4877
+
"toml 0.9.8",
4847
4878
"walkdir",
4848
4879
]
4849
4880
4850
4881
[[package]]
4851
4882
name = "tauri-plugin-deep-link"
4852
-
version = "2.4.1"
4883
+
version = "2.4.5"
4853
4884
source = "registry+https://github.com/rust-lang/crates.io-index"
4854
-
checksum = "1fec67f32d7a06d80bd3dc009fdb678c35a66116d9cb8cd2bb32e406c2b5bbd2"
4885
+
checksum = "6e82759f7c7d51de3cbde51c04b3f2332de52436ed84541182cd8944b04e9e73"
4855
4886
dependencies = [
4856
4887
"dunce",
4888
+
"plist",
4857
4889
"rust-ini",
4858
4890
"serde",
4859
4891
"serde_json",
4860
4892
"tauri",
4861
4893
"tauri-plugin",
4862
4894
"tauri-utils",
4863
-
"thiserror 2.0.12",
4895
+
"thiserror 2.0.17",
4864
4896
"tracing",
4865
4897
"url",
4866
4898
"windows-registry",
4867
-
"windows-result",
4899
+
"windows-result 0.3.4",
4868
4900
]
4869
4901
4870
4902
[[package]]
4871
4903
name = "tauri-plugin-fs"
4872
-
version = "2.4.1"
4904
+
version = "2.4.4"
4873
4905
source = "registry+https://github.com/rust-lang/crates.io-index"
4874
-
checksum = "8c6ef84ee2f2094ce093e55106d90d763ba343fad57566992962e8f76d113f99"
4906
+
checksum = "47df422695255ecbe7bac7012440eddaeefd026656171eac9559f5243d3230d9"
4875
4907
dependencies = [
4876
4908
"anyhow",
4877
4909
"dunce",
···
4884
4916
"tauri",
4885
4917
"tauri-plugin",
4886
4918
"tauri-utils",
4887
-
"thiserror 2.0.12",
4888
-
"toml 0.8.2",
4919
+
"thiserror 2.0.17",
4920
+
"toml 0.9.8",
4889
4921
"url",
4890
4922
]
4891
4923
4892
4924
[[package]]
4893
4925
name = "tauri-plugin-http"
4894
-
version = "2.5.1"
4926
+
version = "2.5.4"
4895
4927
source = "registry+https://github.com/rust-lang/crates.io-index"
4896
-
checksum = "fcde333d97e565a7765aad82f32d8672458f7bd77b6ee653830d5dded9d7b5c2"
4928
+
checksum = "c00685aceab12643cf024f712ab0448ba8fcadf86f2391d49d2e5aa732aacc70"
4897
4929
dependencies = [
4898
4930
"bytes",
4899
4931
"cookie_store",
···
4907
4939
"tauri",
4908
4940
"tauri-plugin",
4909
4941
"tauri-plugin-fs",
4910
-
"thiserror 2.0.12",
4942
+
"thiserror 2.0.17",
4911
4943
"tokio",
4912
4944
"url",
4913
4945
"urlpattern",
···
4915
4947
4916
4948
[[package]]
4917
4949
name = "tauri-plugin-process"
4918
-
version = "2.3.0"
4950
+
version = "2.3.1"
4919
4951
source = "registry+https://github.com/rust-lang/crates.io-index"
4920
-
checksum = "7461c622a5ea00eb9cd9f7a08dbd3bf79484499fd5c21aa2964677f64ca651ab"
4952
+
checksum = "d55511a7bf6cd70c8767b02c97bf8134fa434daf3926cfc1be0a0f94132d165a"
4921
4953
dependencies = [
4922
4954
"tauri",
4923
4955
"tauri-plugin",
···
4925
4957
4926
4958
[[package]]
4927
4959
name = "tauri-plugin-shell"
4928
-
version = "2.3.0"
4960
+
version = "2.3.3"
4929
4961
source = "registry+https://github.com/rust-lang/crates.io-index"
4930
-
checksum = "2b9ffadec5c3523f11e8273465cacb3d86ea7652a28e6e2a2e9b5c182f791d25"
4962
+
checksum = "c374b6db45f2a8a304f0273a15080d98c70cde86178855fc24653ba657a1144c"
4931
4963
dependencies = [
4932
4964
"encoding_rs",
4933
4965
"log",
···
4940
4972
"shared_child",
4941
4973
"tauri",
4942
4974
"tauri-plugin",
4943
-
"thiserror 2.0.12",
4975
+
"thiserror 2.0.17",
4944
4976
"tokio",
4945
4977
]
4946
4978
4947
4979
[[package]]
4948
4980
name = "tauri-plugin-single-instance"
4949
-
version = "2.2.0"
4981
+
version = "2.3.6"
4950
4982
source = "registry+https://github.com/rust-lang/crates.io-index"
4951
-
checksum = "0f36019ee9832dc99e4450bb55a21cfad8633b19c2c18bd17c7741939b070ede"
4983
+
checksum = "dd707f8c86b4e3004e2c141fa24351f1909ba40ce1b8437e30d5ed5277dd3710"
4952
4984
dependencies = [
4953
4985
"serde",
4954
4986
"serde_json",
4955
4987
"tauri",
4956
4988
"tauri-plugin-deep-link",
4957
-
"thiserror 2.0.12",
4989
+
"thiserror 2.0.17",
4958
4990
"tracing",
4959
-
"windows-sys 0.59.0",
4991
+
"windows-sys 0.60.2",
4960
4992
"zbus",
4961
4993
]
4962
4994
4963
4995
[[package]]
4964
4996
name = "tauri-runtime"
4965
-
version = "2.7.1"
4997
+
version = "2.9.1"
4966
4998
source = "registry+https://github.com/rust-lang/crates.io-index"
4967
-
checksum = "2b1cc885be806ea15ff7b0eb47098a7b16323d9228876afda329e34e2d6c4676"
4999
+
checksum = "9368f09358496f2229313fccb37682ad116b7f46fa76981efe116994a0628926"
4968
5000
dependencies = [
4969
5001
"cookie",
4970
5002
"dpi",
4971
5003
"gtk",
4972
5004
"http",
4973
5005
"jni",
4974
-
"objc2 0.6.1",
5006
+
"objc2 0.6.3",
4975
5007
"objc2-ui-kit",
5008
+
"objc2-web-kit",
4976
5009
"raw-window-handle",
4977
5010
"serde",
4978
5011
"serde_json",
4979
5012
"tauri-utils",
4980
-
"thiserror 2.0.12",
5013
+
"thiserror 2.0.17",
4981
5014
"url",
5015
+
"webkit2gtk",
5016
+
"webview2-com",
4982
5017
"windows",
4983
5018
]
4984
5019
4985
5020
[[package]]
4986
5021
name = "tauri-runtime-wry"
4987
-
version = "2.7.2"
5022
+
version = "2.9.1"
4988
5023
source = "registry+https://github.com/rust-lang/crates.io-index"
4989
-
checksum = "fe653a2fbbef19fe898efc774bc52c8742576342a33d3d028c189b57eb1d2439"
5024
+
checksum = "929f5df216f5c02a9e894554401bcdab6eec3e39ec6a4a7731c7067fc8688a93"
4990
5025
dependencies = [
4991
5026
"gtk",
4992
5027
"http",
4993
5028
"jni",
4994
5029
"log",
4995
-
"objc2 0.6.1",
5030
+
"objc2 0.6.3",
4996
5031
"objc2-app-kit",
4997
-
"objc2-foundation 0.3.1",
5032
+
"objc2-foundation 0.3.2",
4998
5033
"once_cell",
4999
5034
"percent-encoding",
5000
5035
"raw-window-handle",
···
5011
5046
5012
5047
[[package]]
5013
5048
name = "tauri-utils"
5014
-
version = "2.6.0"
5049
+
version = "2.8.0"
5015
5050
source = "registry+https://github.com/rust-lang/crates.io-index"
5016
-
checksum = "9330c15cabfe1d9f213478c9e8ec2b0c76dab26bb6f314b8ad1c8a568c1d186e"
5051
+
checksum = "f6b8bbe426abdbf52d050e52ed693130dbd68375b9ad82a3fb17efb4c8d85673"
5017
5052
dependencies = [
5018
5053
"anyhow",
5019
5054
"brotli",
···
5039
5074
"serde_json",
5040
5075
"serde_with",
5041
5076
"swift-rs",
5042
-
"thiserror 2.0.12",
5043
-
"toml 0.8.2",
5077
+
"thiserror 2.0.17",
5078
+
"toml 0.9.8",
5044
5079
"url",
5045
5080
"urlpattern",
5046
5081
"uuid",
···
5049
5084
5050
5085
[[package]]
5051
5086
name = "tauri-winres"
5052
-
version = "0.3.2"
5087
+
version = "0.3.3"
5053
5088
source = "registry+https://github.com/rust-lang/crates.io-index"
5054
-
checksum = "7c6d9028d41d4de835e3c482c677a8cb88137ac435d6ff9a71f392d4421576c9"
5089
+
checksum = "fd21509dd1fa9bd355dc29894a6ff10635880732396aa38c0066c1e6c1ab8074"
5055
5090
dependencies = [
5056
5091
"embed-resource",
5057
-
"indexmap 2.10.0",
5058
-
"toml 0.9.4",
5092
+
"toml 0.9.8",
5059
5093
]
5060
5094
5061
5095
[[package]]
5062
5096
name = "tempfile"
5063
-
version = "3.20.0"
5097
+
version = "3.23.0"
5064
5098
source = "registry+https://github.com/rust-lang/crates.io-index"
5065
-
checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1"
5099
+
checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"
5066
5100
dependencies = [
5067
5101
"fastrand",
5068
-
"getrandom 0.3.3",
5102
+
"getrandom 0.3.4",
5069
5103
"once_cell",
5070
5104
"rustix",
5071
-
"windows-sys 0.59.0",
5105
+
"windows-sys 0.61.2",
5072
5106
]
5073
5107
5074
5108
[[package]]
···
5093
5127
5094
5128
[[package]]
5095
5129
name = "thiserror"
5096
-
version = "2.0.12"
5130
+
version = "2.0.17"
5097
5131
source = "registry+https://github.com/rust-lang/crates.io-index"
5098
-
checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708"
5132
+
checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
5099
5133
dependencies = [
5100
-
"thiserror-impl 2.0.12",
5134
+
"thiserror-impl 2.0.17",
5101
5135
]
5102
5136
5103
5137
[[package]]
···
5108
5142
dependencies = [
5109
5143
"proc-macro2",
5110
5144
"quote",
5111
-
"syn 2.0.104",
5145
+
"syn 2.0.109",
5112
5146
]
5113
5147
5114
5148
[[package]]
5115
5149
name = "thiserror-impl"
5116
-
version = "2.0.12"
5150
+
version = "2.0.17"
5117
5151
source = "registry+https://github.com/rust-lang/crates.io-index"
5118
-
checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d"
5152
+
checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
5119
5153
dependencies = [
5120
5154
"proc-macro2",
5121
5155
"quote",
5122
-
"syn 2.0.104",
5156
+
"syn 2.0.109",
5123
5157
]
5124
5158
5125
5159
[[package]]
5126
5160
name = "tiff"
5127
-
version = "0.9.1"
5161
+
version = "0.10.3"
5128
5162
source = "registry+https://github.com/rust-lang/crates.io-index"
5129
-
checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e"
5163
+
checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f"
5130
5164
dependencies = [
5165
+
"fax",
5131
5166
"flate2",
5132
-
"jpeg-decoder",
5167
+
"half",
5168
+
"quick-error",
5133
5169
"weezl",
5170
+
"zune-jpeg",
5134
5171
]
5135
5172
5136
5173
[[package]]
5137
5174
name = "time"
5138
-
version = "0.3.41"
5175
+
version = "0.3.44"
5139
5176
source = "registry+https://github.com/rust-lang/crates.io-index"
5140
-
checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40"
5177
+
checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d"
5141
5178
dependencies = [
5142
5179
"deranged",
5143
5180
"itoa",
···
5150
5187
5151
5188
[[package]]
5152
5189
name = "time-core"
5153
-
version = "0.1.4"
5190
+
version = "0.1.6"
5154
5191
source = "registry+https://github.com/rust-lang/crates.io-index"
5155
-
checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c"
5192
+
checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b"
5156
5193
5157
5194
[[package]]
5158
5195
name = "time-macros"
5159
-
version = "0.2.22"
5196
+
version = "0.2.24"
5160
5197
source = "registry+https://github.com/rust-lang/crates.io-index"
5161
-
checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49"
5198
+
checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3"
5162
5199
dependencies = [
5163
5200
"num-conv",
5164
5201
"time-core",
···
5175
5212
5176
5213
[[package]]
5177
5214
name = "tinystr"
5178
-
version = "0.8.1"
5215
+
version = "0.8.2"
5179
5216
source = "registry+https://github.com/rust-lang/crates.io-index"
5180
-
checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b"
5217
+
checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
5181
5218
dependencies = [
5182
5219
"displaydoc",
5183
5220
"zerovec",
···
5185
5222
5186
5223
[[package]]
5187
5224
name = "tinyvec"
5188
-
version = "1.9.0"
5225
+
version = "1.10.0"
5189
5226
source = "registry+https://github.com/rust-lang/crates.io-index"
5190
-
checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71"
5227
+
checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa"
5191
5228
dependencies = [
5192
5229
"tinyvec_macros",
5193
5230
]
···
5200
5237
5201
5238
[[package]]
5202
5239
name = "tokio"
5203
-
version = "1.47.0"
5240
+
version = "1.48.0"
5204
5241
source = "registry+https://github.com/rust-lang/crates.io-index"
5205
-
checksum = "43864ed400b6043a4757a25c7a64a8efde741aed79a056a2fb348a406701bb35"
5242
+
checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408"
5206
5243
dependencies = [
5207
-
"backtrace",
5208
5244
"bytes",
5209
-
"io-uring",
5210
5245
"libc",
5211
-
"mio 1.0.4",
5246
+
"mio",
5212
5247
"pin-project-lite",
5213
-
"slab",
5214
-
"socket2 0.6.0",
5248
+
"socket2",
5215
5249
"tokio-macros",
5216
-
"windows-sys 0.59.0",
5250
+
"windows-sys 0.61.2",
5217
5251
]
5218
5252
5219
5253
[[package]]
5220
5254
name = "tokio-macros"
5221
-
version = "2.5.0"
5255
+
version = "2.6.0"
5222
5256
source = "registry+https://github.com/rust-lang/crates.io-index"
5223
-
checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
5257
+
checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
5224
5258
dependencies = [
5225
5259
"proc-macro2",
5226
5260
"quote",
5227
-
"syn 2.0.104",
5261
+
"syn 2.0.109",
5228
5262
]
5229
5263
5230
5264
[[package]]
···
5239
5273
5240
5274
[[package]]
5241
5275
name = "tokio-rustls"
5242
-
version = "0.26.2"
5276
+
version = "0.26.4"
5243
5277
source = "registry+https://github.com/rust-lang/crates.io-index"
5244
-
checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b"
5278
+
checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
5245
5279
dependencies = [
5246
5280
"rustls",
5247
5281
"tokio",
···
5249
5283
5250
5284
[[package]]
5251
5285
name = "tokio-util"
5252
-
version = "0.7.15"
5286
+
version = "0.7.17"
5253
5287
source = "registry+https://github.com/rust-lang/crates.io-index"
5254
-
checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df"
5288
+
checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594"
5255
5289
dependencies = [
5256
5290
"bytes",
5257
5291
"futures-core",
···
5274
5308
5275
5309
[[package]]
5276
5310
name = "toml"
5277
-
version = "0.9.4"
5311
+
version = "0.9.8"
5278
5312
source = "registry+https://github.com/rust-lang/crates.io-index"
5279
-
checksum = "41ae868b5a0f67631c14589f7e250c1ea2c574ee5ba21c6c8dd4b1485705a5a1"
5313
+
checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8"
5280
5314
dependencies = [
5281
-
"indexmap 2.10.0",
5282
-
"serde",
5283
-
"serde_spanned 1.0.0",
5284
-
"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",
5285
5319
"toml_parser",
5286
5320
"toml_writer",
5287
-
"winnow 0.7.12",
5321
+
"winnow 0.7.13",
5288
5322
]
5289
5323
5290
5324
[[package]]
···
5298
5332
5299
5333
[[package]]
5300
5334
name = "toml_datetime"
5301
-
version = "0.7.0"
5335
+
version = "0.7.3"
5302
5336
source = "registry+https://github.com/rust-lang/crates.io-index"
5303
-
checksum = "bade1c3e902f58d73d3f294cd7f20391c1cb2fbcb643b73566bc773971df91e3"
5337
+
checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533"
5304
5338
dependencies = [
5305
-
"serde",
5339
+
"serde_core",
5306
5340
]
5307
5341
5308
5342
[[package]]
···
5311
5345
source = "registry+https://github.com/rust-lang/crates.io-index"
5312
5346
checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
5313
5347
dependencies = [
5314
-
"indexmap 2.10.0",
5348
+
"indexmap 2.12.0",
5315
5349
"toml_datetime 0.6.3",
5316
5350
"winnow 0.5.40",
5317
5351
]
···
5322
5356
source = "registry+https://github.com/rust-lang/crates.io-index"
5323
5357
checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
5324
5358
dependencies = [
5325
-
"indexmap 2.10.0",
5359
+
"indexmap 2.12.0",
5326
5360
"serde",
5327
5361
"serde_spanned 0.6.9",
5328
5362
"toml_datetime 0.6.3",
···
5330
5364
]
5331
5365
5332
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]]
5333
5379
name = "toml_parser"
5334
-
version = "1.0.1"
5380
+
version = "1.0.4"
5335
5381
source = "registry+https://github.com/rust-lang/crates.io-index"
5336
-
checksum = "97200572db069e74c512a14117b296ba0a80a30123fbbb5aa1f4a348f639ca30"
5382
+
checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e"
5337
5383
dependencies = [
5338
-
"winnow 0.7.12",
5384
+
"winnow 0.7.13",
5339
5385
]
5340
5386
5341
5387
[[package]]
5342
5388
name = "toml_writer"
5343
-
version = "1.0.2"
5389
+
version = "1.0.4"
5344
5390
source = "registry+https://github.com/rust-lang/crates.io-index"
5345
-
checksum = "fcc842091f2def52017664b53082ecbbeb5c7731092bad69d2c63050401dfd64"
5391
+
checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2"
5346
5392
5347
5393
[[package]]
5348
5394
name = "tower"
···
5365
5411
source = "registry+https://github.com/rust-lang/crates.io-index"
5366
5412
checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
5367
5413
dependencies = [
5368
-
"bitflags 2.9.1",
5414
+
"bitflags 2.10.0",
5369
5415
"bytes",
5370
5416
"futures-util",
5371
5417
"http",
···
5408
5454
dependencies = [
5409
5455
"proc-macro2",
5410
5456
"quote",
5411
-
"syn 2.0.104",
5457
+
"syn 2.0.109",
5412
5458
]
5413
5459
5414
5460
[[package]]
···
5422
5468
5423
5469
[[package]]
5424
5470
name = "tray-icon"
5425
-
version = "0.21.1"
5471
+
version = "0.21.2"
5426
5472
source = "registry+https://github.com/rust-lang/crates.io-index"
5427
-
checksum = "a0d92153331e7d02ec09137538996a7786fe679c629c279e82a6be762b7e6fe2"
5473
+
checksum = "e3d5572781bee8e3f994d7467084e1b1fd7a93ce66bd480f8156ba89dee55a2b"
5428
5474
dependencies = [
5429
5475
"crossbeam-channel",
5430
-
"dirs 6.0.0",
5476
+
"dirs",
5431
5477
"libappindicator",
5432
5478
"muda",
5433
-
"objc2 0.6.1",
5479
+
"objc2 0.6.3",
5434
5480
"objc2-app-kit",
5435
5481
"objc2-core-foundation",
5436
5482
"objc2-core-graphics",
5437
-
"objc2-foundation 0.3.1",
5483
+
"objc2-foundation 0.3.2",
5438
5484
"once_cell",
5439
-
"png",
5485
+
"png 0.17.16",
5440
5486
"serde",
5441
-
"thiserror 2.0.12",
5442
-
"windows-sys 0.59.0",
5487
+
"thiserror 2.0.17",
5488
+
"windows-sys 0.60.2",
5443
5489
]
5444
5490
5445
5491
[[package]]
···
5456
5502
5457
5503
[[package]]
5458
5504
name = "typenum"
5459
-
version = "1.18.0"
5505
+
version = "1.19.0"
5460
5506
source = "registry+https://github.com/rust-lang/crates.io-index"
5461
-
checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
5507
+
checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
5462
5508
5463
5509
[[package]]
5464
5510
name = "uds_windows"
···
5514
5560
5515
5561
[[package]]
5516
5562
name = "unicode-ident"
5517
-
version = "1.0.18"
5563
+
version = "1.0.22"
5518
5564
source = "registry+https://github.com/rust-lang/crates.io-index"
5519
-
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
5565
+
checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
5520
5566
5521
5567
[[package]]
5522
5568
name = "unicode-segmentation"
···
5532
5578
5533
5579
[[package]]
5534
5580
name = "url"
5535
-
version = "2.5.4"
5581
+
version = "2.5.7"
5536
5582
source = "registry+https://github.com/rust-lang/crates.io-index"
5537
-
checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60"
5583
+
checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b"
5538
5584
dependencies = [
5539
5585
"form_urlencoded",
5540
5586
"idna",
···
5568
5614
5569
5615
[[package]]
5570
5616
name = "uuid"
5571
-
version = "1.17.0"
5617
+
version = "1.18.1"
5572
5618
source = "registry+https://github.com/rust-lang/crates.io-index"
5573
-
checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d"
5619
+
checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2"
5574
5620
dependencies = [
5575
-
"getrandom 0.3.3",
5621
+
"getrandom 0.3.4",
5576
5622
"js-sys",
5577
5623
"serde",
5578
5624
"wasm-bindgen",
···
5597
5643
5598
5644
[[package]]
5599
5645
name = "version-compare"
5600
-
version = "0.2.0"
5646
+
version = "0.2.1"
5601
5647
source = "registry+https://github.com/rust-lang/crates.io-index"
5602
-
checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b"
5648
+
checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e"
5603
5649
5604
5650
[[package]]
5605
5651
name = "version_check"
···
5608
5654
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
5609
5655
5610
5656
[[package]]
5611
-
name = "vrcpm-rs"
5612
-
version = "0.2.4"
5613
-
dependencies = [
5614
-
"dirs 5.0.1",
5615
-
"fast_image_resize",
5616
-
"image",
5617
-
"mslnk",
5618
-
"notify",
5619
-
"open",
5620
-
"regex",
5621
-
"reqwest",
5622
-
"serde",
5623
-
"serde_json",
5624
-
"tauri",
5625
-
"tauri-build",
5626
-
"tauri-plugin-deep-link",
5627
-
"tauri-plugin-http",
5628
-
"tauri-plugin-process",
5629
-
"tauri-plugin-shell",
5630
-
"tauri-plugin-single-instance",
5631
-
]
5632
-
5633
-
[[package]]
5634
5657
name = "vswhom"
5635
5658
version = "0.1.0"
5636
5659
source = "registry+https://github.com/rust-lang/crates.io-index"
···
5682
5705
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
5683
5706
5684
5707
[[package]]
5685
-
name = "wasi"
5686
-
version = "0.14.2+wasi-0.2.4"
5708
+
name = "wasip2"
5709
+
version = "1.0.1+wasi-0.2.4"
5687
5710
source = "registry+https://github.com/rust-lang/crates.io-index"
5688
-
checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
5711
+
checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
5689
5712
dependencies = [
5690
-
"wit-bindgen-rt",
5713
+
"wit-bindgen",
5691
5714
]
5692
5715
5693
5716
[[package]]
5694
5717
name = "wasm-bindgen"
5695
-
version = "0.2.100"
5718
+
version = "0.2.105"
5696
5719
source = "registry+https://github.com/rust-lang/crates.io-index"
5697
-
checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
5720
+
checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60"
5698
5721
dependencies = [
5699
5722
"cfg-if",
5700
5723
"once_cell",
5701
5724
"rustversion",
5702
5725
"wasm-bindgen-macro",
5703
-
]
5704
-
5705
-
[[package]]
5706
-
name = "wasm-bindgen-backend"
5707
-
version = "0.2.100"
5708
-
source = "registry+https://github.com/rust-lang/crates.io-index"
5709
-
checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
5710
-
dependencies = [
5711
-
"bumpalo",
5712
-
"log",
5713
-
"proc-macro2",
5714
-
"quote",
5715
-
"syn 2.0.104",
5716
5726
"wasm-bindgen-shared",
5717
5727
]
5718
5728
5719
5729
[[package]]
5720
5730
name = "wasm-bindgen-futures"
5721
-
version = "0.4.50"
5731
+
version = "0.4.55"
5722
5732
source = "registry+https://github.com/rust-lang/crates.io-index"
5723
-
checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61"
5733
+
checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0"
5724
5734
dependencies = [
5725
5735
"cfg-if",
5726
5736
"js-sys",
···
5731
5741
5732
5742
[[package]]
5733
5743
name = "wasm-bindgen-macro"
5734
-
version = "0.2.100"
5744
+
version = "0.2.105"
5735
5745
source = "registry+https://github.com/rust-lang/crates.io-index"
5736
-
checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
5746
+
checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2"
5737
5747
dependencies = [
5738
5748
"quote",
5739
5749
"wasm-bindgen-macro-support",
···
5741
5751
5742
5752
[[package]]
5743
5753
name = "wasm-bindgen-macro-support"
5744
-
version = "0.2.100"
5754
+
version = "0.2.105"
5745
5755
source = "registry+https://github.com/rust-lang/crates.io-index"
5746
-
checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
5756
+
checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc"
5747
5757
dependencies = [
5758
+
"bumpalo",
5748
5759
"proc-macro2",
5749
5760
"quote",
5750
-
"syn 2.0.104",
5751
-
"wasm-bindgen-backend",
5761
+
"syn 2.0.109",
5752
5762
"wasm-bindgen-shared",
5753
5763
]
5754
5764
5755
5765
[[package]]
5756
5766
name = "wasm-bindgen-shared"
5757
-
version = "0.2.100"
5767
+
version = "0.2.105"
5758
5768
source = "registry+https://github.com/rust-lang/crates.io-index"
5759
-
checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
5769
+
checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76"
5760
5770
dependencies = [
5761
5771
"unicode-ident",
5762
5772
]
···
5776
5786
5777
5787
[[package]]
5778
5788
name = "web-sys"
5779
-
version = "0.3.77"
5789
+
version = "0.3.82"
5780
5790
source = "registry+https://github.com/rust-lang/crates.io-index"
5781
-
checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
5791
+
checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1"
5782
5792
dependencies = [
5783
5793
"js-sys",
5784
5794
"wasm-bindgen",
···
5840
5850
5841
5851
[[package]]
5842
5852
name = "webpki-roots"
5843
-
version = "1.0.2"
5853
+
version = "1.0.4"
5844
5854
source = "registry+https://github.com/rust-lang/crates.io-index"
5845
-
checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2"
5855
+
checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e"
5846
5856
dependencies = [
5847
5857
"rustls-pki-types",
5848
5858
]
···
5856
5866
"webview2-com-macros",
5857
5867
"webview2-com-sys",
5858
5868
"windows",
5859
-
"windows-core",
5869
+
"windows-core 0.61.2",
5860
5870
"windows-implement",
5861
5871
"windows-interface",
5862
5872
]
···
5869
5879
dependencies = [
5870
5880
"proc-macro2",
5871
5881
"quote",
5872
-
"syn 2.0.104",
5882
+
"syn 2.0.109",
5873
5883
]
5874
5884
5875
5885
[[package]]
···
5878
5888
source = "registry+https://github.com/rust-lang/crates.io-index"
5879
5889
checksum = "36695906a1b53a3bf5c4289621efedac12b73eeb0b89e7e1a89b517302d5d75c"
5880
5890
dependencies = [
5881
-
"thiserror 2.0.12",
5891
+
"thiserror 2.0.17",
5882
5892
"windows",
5883
-
"windows-core",
5893
+
"windows-core 0.61.2",
5884
5894
]
5885
5895
5886
5896
[[package]]
···
5907
5917
5908
5918
[[package]]
5909
5919
name = "winapi-util"
5910
-
version = "0.1.9"
5920
+
version = "0.1.11"
5911
5921
source = "registry+https://github.com/rust-lang/crates.io-index"
5912
-
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
5922
+
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
5913
5923
dependencies = [
5914
-
"windows-sys 0.59.0",
5924
+
"windows-sys 0.61.2",
5915
5925
]
5916
5926
5917
5927
[[package]]
···
5926
5936
source = "registry+https://github.com/rust-lang/crates.io-index"
5927
5937
checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c"
5928
5938
dependencies = [
5929
-
"objc2 0.6.1",
5939
+
"objc2 0.6.3",
5930
5940
"objc2-app-kit",
5931
5941
"objc2-core-foundation",
5932
-
"objc2-foundation 0.3.1",
5942
+
"objc2-foundation 0.3.2",
5933
5943
"raw-window-handle",
5934
5944
"windows-sys 0.59.0",
5935
5945
"windows-version",
···
5942
5952
checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893"
5943
5953
dependencies = [
5944
5954
"windows-collections",
5945
-
"windows-core",
5955
+
"windows-core 0.61.2",
5946
5956
"windows-future",
5947
-
"windows-link",
5957
+
"windows-link 0.1.3",
5948
5958
"windows-numerics",
5949
5959
]
5950
5960
···
5954
5964
source = "registry+https://github.com/rust-lang/crates.io-index"
5955
5965
checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8"
5956
5966
dependencies = [
5957
-
"windows-core",
5967
+
"windows-core 0.61.2",
5958
5968
]
5959
5969
5960
5970
[[package]]
···
5965
5975
dependencies = [
5966
5976
"windows-implement",
5967
5977
"windows-interface",
5968
-
"windows-link",
5969
-
"windows-result",
5970
-
"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",
5971
5994
]
5972
5995
5973
5996
[[package]]
···
5976
5999
source = "registry+https://github.com/rust-lang/crates.io-index"
5977
6000
checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
5978
6001
dependencies = [
5979
-
"windows-core",
5980
-
"windows-link",
6002
+
"windows-core 0.61.2",
6003
+
"windows-link 0.1.3",
5981
6004
"windows-threading",
5982
6005
]
5983
6006
5984
6007
[[package]]
5985
6008
name = "windows-implement"
5986
-
version = "0.60.0"
6009
+
version = "0.60.2"
5987
6010
source = "registry+https://github.com/rust-lang/crates.io-index"
5988
-
checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
6011
+
checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
5989
6012
dependencies = [
5990
6013
"proc-macro2",
5991
6014
"quote",
5992
-
"syn 2.0.104",
6015
+
"syn 2.0.109",
5993
6016
]
5994
6017
5995
6018
[[package]]
5996
6019
name = "windows-interface"
5997
-
version = "0.59.1"
6020
+
version = "0.59.3"
5998
6021
source = "registry+https://github.com/rust-lang/crates.io-index"
5999
-
checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
6022
+
checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
6000
6023
dependencies = [
6001
6024
"proc-macro2",
6002
6025
"quote",
6003
-
"syn 2.0.104",
6026
+
"syn 2.0.109",
6004
6027
]
6005
6028
6006
6029
[[package]]
···
6010
6033
checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
6011
6034
6012
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]]
6013
6042
name = "windows-numerics"
6014
6043
version = "0.2.0"
6015
6044
source = "registry+https://github.com/rust-lang/crates.io-index"
6016
6045
checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
6017
6046
dependencies = [
6018
-
"windows-core",
6019
-
"windows-link",
6047
+
"windows-core 0.61.2",
6048
+
"windows-link 0.1.3",
6020
6049
]
6021
6050
6022
6051
[[package]]
···
6025
6054
source = "registry+https://github.com/rust-lang/crates.io-index"
6026
6055
checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e"
6027
6056
dependencies = [
6028
-
"windows-link",
6029
-
"windows-result",
6030
-
"windows-strings",
6057
+
"windows-link 0.1.3",
6058
+
"windows-result 0.3.4",
6059
+
"windows-strings 0.4.2",
6031
6060
]
6032
6061
6033
6062
[[package]]
···
6036
6065
source = "registry+https://github.com/rust-lang/crates.io-index"
6037
6066
checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
6038
6067
dependencies = [
6039
-
"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",
6040
6078
]
6041
6079
6042
6080
[[package]]
···
6045
6083
source = "registry+https://github.com/rust-lang/crates.io-index"
6046
6084
checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
6047
6085
dependencies = [
6048
-
"windows-link",
6086
+
"windows-link 0.1.3",
6049
6087
]
6050
6088
6051
6089
[[package]]
6052
-
name = "windows-sys"
6053
-
version = "0.45.0"
6090
+
name = "windows-strings"
6091
+
version = "0.5.1"
6054
6092
source = "registry+https://github.com/rust-lang/crates.io-index"
6055
-
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
6093
+
checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
6056
6094
dependencies = [
6057
-
"windows-targets 0.42.2",
6095
+
"windows-link 0.2.1",
6058
6096
]
6059
6097
6060
6098
[[package]]
6061
6099
name = "windows-sys"
6062
-
version = "0.48.0"
6100
+
version = "0.45.0"
6063
6101
source = "registry+https://github.com/rust-lang/crates.io-index"
6064
-
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
6102
+
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
6065
6103
dependencies = [
6066
-
"windows-targets 0.48.5",
6104
+
"windows-targets 0.42.2",
6067
6105
]
6068
6106
6069
6107
[[package]]
···
6090
6128
source = "registry+https://github.com/rust-lang/crates.io-index"
6091
6129
checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
6092
6130
dependencies = [
6093
-
"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",
6094
6141
]
6095
6142
6096
6143
[[package]]
···
6110
6157
6111
6158
[[package]]
6112
6159
name = "windows-targets"
6113
-
version = "0.48.5"
6114
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6115
-
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
6116
-
dependencies = [
6117
-
"windows_aarch64_gnullvm 0.48.5",
6118
-
"windows_aarch64_msvc 0.48.5",
6119
-
"windows_i686_gnu 0.48.5",
6120
-
"windows_i686_msvc 0.48.5",
6121
-
"windows_x86_64_gnu 0.48.5",
6122
-
"windows_x86_64_gnullvm 0.48.5",
6123
-
"windows_x86_64_msvc 0.48.5",
6124
-
]
6125
-
6126
-
[[package]]
6127
-
name = "windows-targets"
6128
6160
version = "0.52.6"
6129
6161
source = "registry+https://github.com/rust-lang/crates.io-index"
6130
6162
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
···
6141
6173
6142
6174
[[package]]
6143
6175
name = "windows-targets"
6144
-
version = "0.53.3"
6176
+
version = "0.53.5"
6145
6177
source = "registry+https://github.com/rust-lang/crates.io-index"
6146
-
checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91"
6178
+
checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
6147
6179
dependencies = [
6148
-
"windows-link",
6149
-
"windows_aarch64_gnullvm 0.53.0",
6150
-
"windows_aarch64_msvc 0.53.0",
6151
-
"windows_i686_gnu 0.53.0",
6152
-
"windows_i686_gnullvm 0.53.0",
6153
-
"windows_i686_msvc 0.53.0",
6154
-
"windows_x86_64_gnu 0.53.0",
6155
-
"windows_x86_64_gnullvm 0.53.0",
6156
-
"windows_x86_64_msvc 0.53.0",
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",
6157
6189
]
6158
6190
6159
6191
[[package]]
···
6162
6194
source = "registry+https://github.com/rust-lang/crates.io-index"
6163
6195
checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
6164
6196
dependencies = [
6165
-
"windows-link",
6197
+
"windows-link 0.1.3",
6166
6198
]
6167
6199
6168
6200
[[package]]
6169
6201
name = "windows-version"
6170
-
version = "0.1.4"
6202
+
version = "0.1.7"
6171
6203
source = "registry+https://github.com/rust-lang/crates.io-index"
6172
-
checksum = "e04a5c6627e310a23ad2358483286c7df260c964eb2d003d8efd6d0f4e79265c"
6204
+
checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631"
6173
6205
dependencies = [
6174
-
"windows-link",
6206
+
"windows-link 0.2.1",
6175
6207
]
6176
6208
6177
6209
[[package]]
···
6182
6214
6183
6215
[[package]]
6184
6216
name = "windows_aarch64_gnullvm"
6185
-
version = "0.48.5"
6186
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6187
-
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
6188
-
6189
-
[[package]]
6190
-
name = "windows_aarch64_gnullvm"
6191
6217
version = "0.52.6"
6192
6218
source = "registry+https://github.com/rust-lang/crates.io-index"
6193
6219
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
6194
6220
6195
6221
[[package]]
6196
6222
name = "windows_aarch64_gnullvm"
6197
-
version = "0.53.0"
6223
+
version = "0.53.1"
6198
6224
source = "registry+https://github.com/rust-lang/crates.io-index"
6199
-
checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
6225
+
checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
6200
6226
6201
6227
[[package]]
6202
6228
name = "windows_aarch64_msvc"
···
6206
6232
6207
6233
[[package]]
6208
6234
name = "windows_aarch64_msvc"
6209
-
version = "0.48.5"
6210
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6211
-
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
6212
-
6213
-
[[package]]
6214
-
name = "windows_aarch64_msvc"
6215
6235
version = "0.52.6"
6216
6236
source = "registry+https://github.com/rust-lang/crates.io-index"
6217
6237
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
6218
6238
6219
6239
[[package]]
6220
6240
name = "windows_aarch64_msvc"
6221
-
version = "0.53.0"
6241
+
version = "0.53.1"
6222
6242
source = "registry+https://github.com/rust-lang/crates.io-index"
6223
-
checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
6243
+
checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
6224
6244
6225
6245
[[package]]
6226
6246
name = "windows_i686_gnu"
···
6230
6250
6231
6251
[[package]]
6232
6252
name = "windows_i686_gnu"
6233
-
version = "0.48.5"
6234
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6235
-
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
6236
-
6237
-
[[package]]
6238
-
name = "windows_i686_gnu"
6239
6253
version = "0.52.6"
6240
6254
source = "registry+https://github.com/rust-lang/crates.io-index"
6241
6255
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
6242
6256
6243
6257
[[package]]
6244
6258
name = "windows_i686_gnu"
6245
-
version = "0.53.0"
6259
+
version = "0.53.1"
6246
6260
source = "registry+https://github.com/rust-lang/crates.io-index"
6247
-
checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
6261
+
checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
6248
6262
6249
6263
[[package]]
6250
6264
name = "windows_i686_gnullvm"
···
6254
6268
6255
6269
[[package]]
6256
6270
name = "windows_i686_gnullvm"
6257
-
version = "0.53.0"
6271
+
version = "0.53.1"
6258
6272
source = "registry+https://github.com/rust-lang/crates.io-index"
6259
-
checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
6273
+
checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
6260
6274
6261
6275
[[package]]
6262
6276
name = "windows_i686_msvc"
···
6266
6280
6267
6281
[[package]]
6268
6282
name = "windows_i686_msvc"
6269
-
version = "0.48.5"
6270
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6271
-
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
6272
-
6273
-
[[package]]
6274
-
name = "windows_i686_msvc"
6275
6283
version = "0.52.6"
6276
6284
source = "registry+https://github.com/rust-lang/crates.io-index"
6277
6285
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
6278
6286
6279
6287
[[package]]
6280
6288
name = "windows_i686_msvc"
6281
-
version = "0.53.0"
6289
+
version = "0.53.1"
6282
6290
source = "registry+https://github.com/rust-lang/crates.io-index"
6283
-
checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
6291
+
checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
6284
6292
6285
6293
[[package]]
6286
6294
name = "windows_x86_64_gnu"
···
6290
6298
6291
6299
[[package]]
6292
6300
name = "windows_x86_64_gnu"
6293
-
version = "0.48.5"
6294
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6295
-
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
6296
-
6297
-
[[package]]
6298
-
name = "windows_x86_64_gnu"
6299
6301
version = "0.52.6"
6300
6302
source = "registry+https://github.com/rust-lang/crates.io-index"
6301
6303
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
6302
6304
6303
6305
[[package]]
6304
6306
name = "windows_x86_64_gnu"
6305
-
version = "0.53.0"
6307
+
version = "0.53.1"
6306
6308
source = "registry+https://github.com/rust-lang/crates.io-index"
6307
-
checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
6309
+
checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
6308
6310
6309
6311
[[package]]
6310
6312
name = "windows_x86_64_gnullvm"
···
6314
6316
6315
6317
[[package]]
6316
6318
name = "windows_x86_64_gnullvm"
6317
-
version = "0.48.5"
6318
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6319
-
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
6320
-
6321
-
[[package]]
6322
-
name = "windows_x86_64_gnullvm"
6323
6319
version = "0.52.6"
6324
6320
source = "registry+https://github.com/rust-lang/crates.io-index"
6325
6321
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
6326
6322
6327
6323
[[package]]
6328
6324
name = "windows_x86_64_gnullvm"
6329
-
version = "0.53.0"
6325
+
version = "0.53.1"
6330
6326
source = "registry+https://github.com/rust-lang/crates.io-index"
6331
-
checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
6327
+
checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
6332
6328
6333
6329
[[package]]
6334
6330
name = "windows_x86_64_msvc"
···
6338
6334
6339
6335
[[package]]
6340
6336
name = "windows_x86_64_msvc"
6341
-
version = "0.48.5"
6342
-
source = "registry+https://github.com/rust-lang/crates.io-index"
6343
-
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
6344
-
6345
-
[[package]]
6346
-
name = "windows_x86_64_msvc"
6347
6337
version = "0.52.6"
6348
6338
source = "registry+https://github.com/rust-lang/crates.io-index"
6349
6339
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
6350
6340
6351
6341
[[package]]
6352
6342
name = "windows_x86_64_msvc"
6353
-
version = "0.53.0"
6343
+
version = "0.53.1"
6354
6344
source = "registry+https://github.com/rust-lang/crates.io-index"
6355
-
checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
6345
+
checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
6356
6346
6357
6347
[[package]]
6358
6348
name = "winnow"
···
6365
6355
6366
6356
[[package]]
6367
6357
name = "winnow"
6368
-
version = "0.7.12"
6358
+
version = "0.7.13"
6369
6359
source = "registry+https://github.com/rust-lang/crates.io-index"
6370
-
checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95"
6360
+
checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf"
6361
+
dependencies = [
6362
+
"memchr",
6363
+
]
6371
6364
6372
6365
[[package]]
6373
6366
name = "winreg"
···
6380
6373
]
6381
6374
6382
6375
[[package]]
6383
-
name = "wit-bindgen-rt"
6384
-
version = "0.39.0"
6376
+
name = "wit-bindgen"
6377
+
version = "0.46.0"
6385
6378
source = "registry+https://github.com/rust-lang/crates.io-index"
6386
-
checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
6387
-
dependencies = [
6388
-
"bitflags 2.9.1",
6389
-
]
6379
+
checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
6390
6380
6391
6381
[[package]]
6392
6382
name = "writeable"
6393
-
version = "0.6.1"
6383
+
version = "0.6.2"
6394
6384
source = "registry+https://github.com/rust-lang/crates.io-index"
6395
-
checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb"
6385
+
checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
6396
6386
6397
6387
[[package]]
6398
6388
name = "wry"
6399
-
version = "0.52.1"
6389
+
version = "0.53.5"
6400
6390
source = "registry+https://github.com/rust-lang/crates.io-index"
6401
-
checksum = "12a714d9ba7075aae04a6e50229d6109e3d584774b99a6a8c60de1698ca111b9"
6391
+
checksum = "728b7d4c8ec8d81cab295e0b5b8a4c263c0d41a785fb8f8c4df284e5411140a2"
6402
6392
dependencies = [
6403
6393
"base64 0.22.1",
6404
-
"block2 0.6.1",
6394
+
"block2 0.6.2",
6405
6395
"cookie",
6406
6396
"crossbeam-channel",
6397
+
"dirs",
6407
6398
"dpi",
6408
6399
"dunce",
6409
6400
"gdkx11",
···
6415
6406
"kuchikiki",
6416
6407
"libc",
6417
6408
"ndk",
6418
-
"objc2 0.6.1",
6409
+
"objc2 0.6.3",
6419
6410
"objc2-app-kit",
6420
6411
"objc2-core-foundation",
6421
-
"objc2-foundation 0.3.1",
6412
+
"objc2-foundation 0.3.2",
6422
6413
"objc2-ui-kit",
6423
6414
"objc2-web-kit",
6424
6415
"once_cell",
···
6427
6418
"sha2",
6428
6419
"soup3",
6429
6420
"tao-macros",
6430
-
"thiserror 2.0.12",
6421
+
"thiserror 2.0.17",
6431
6422
"url",
6432
6423
"webkit2gtk",
6433
6424
"webkit2gtk-sys",
6434
6425
"webview2-com",
6435
6426
"windows",
6436
-
"windows-core",
6427
+
"windows-core 0.61.2",
6437
6428
"windows-version",
6438
6429
"x11-dl",
6439
6430
]
···
6460
6451
]
6461
6452
6462
6453
[[package]]
6463
-
name = "xdg-home"
6464
-
version = "1.3.0"
6454
+
name = "x11rb"
6455
+
version = "0.13.2"
6465
6456
source = "registry+https://github.com/rust-lang/crates.io-index"
6466
-
checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6"
6457
+
checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414"
6467
6458
dependencies = [
6468
-
"libc",
6469
-
"windows-sys 0.59.0",
6459
+
"gethostname",
6460
+
"rustix",
6461
+
"x11rb-protocol",
6470
6462
]
6471
6463
6472
6464
[[package]]
6465
+
name = "x11rb-protocol"
6466
+
version = "0.13.2"
6467
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6468
+
checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd"
6469
+
6470
+
[[package]]
6473
6471
name = "yoke"
6474
-
version = "0.8.0"
6472
+
version = "0.8.1"
6475
6473
source = "registry+https://github.com/rust-lang/crates.io-index"
6476
-
checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc"
6474
+
checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954"
6477
6475
dependencies = [
6478
-
"serde",
6479
6476
"stable_deref_trait",
6480
6477
"yoke-derive",
6481
6478
"zerofrom",
···
6483
6480
6484
6481
[[package]]
6485
6482
name = "yoke-derive"
6486
-
version = "0.8.0"
6483
+
version = "0.8.1"
6487
6484
source = "registry+https://github.com/rust-lang/crates.io-index"
6488
-
checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6"
6485
+
checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
6489
6486
dependencies = [
6490
6487
"proc-macro2",
6491
6488
"quote",
6492
-
"syn 2.0.104",
6489
+
"syn 2.0.109",
6493
6490
"synstructure",
6494
6491
]
6495
6492
6496
6493
[[package]]
6497
6494
name = "zbus"
6498
-
version = "4.0.1"
6495
+
version = "5.12.0"
6499
6496
source = "registry+https://github.com/rust-lang/crates.io-index"
6500
-
checksum = "7b8e3d6ae3342792a6cc2340e4394334c7402f3d793b390d2c5494a4032b3030"
6497
+
checksum = "b622b18155f7a93d1cd2dc8c01d2d6a44e08fb9ebb7b3f9e6ed101488bad6c91"
6501
6498
dependencies = [
6502
6499
"async-broadcast",
6503
6500
"async-executor",
6504
-
"async-fs",
6505
6501
"async-io",
6506
6502
"async-lock",
6507
6503
"async-process",
···
6509
6505
"async-task",
6510
6506
"async-trait",
6511
6507
"blocking",
6512
-
"derivative",
6513
6508
"enumflags2",
6514
6509
"event-listener",
6515
6510
"futures-core",
6516
-
"futures-sink",
6517
-
"futures-util",
6511
+
"futures-lite",
6518
6512
"hex",
6519
6513
"nix",
6520
6514
"ordered-stream",
6521
-
"rand 0.8.5",
6522
6515
"serde",
6523
6516
"serde_repr",
6524
-
"sha1",
6525
-
"static_assertions",
6526
6517
"tracing",
6527
6518
"uds_windows",
6528
-
"windows-sys 0.52.0",
6529
-
"xdg-home",
6519
+
"uuid",
6520
+
"windows-sys 0.61.2",
6521
+
"winnow 0.7.13",
6530
6522
"zbus_macros",
6531
6523
"zbus_names",
6532
6524
"zvariant",
···
6534
6526
6535
6527
[[package]]
6536
6528
name = "zbus_macros"
6537
-
version = "4.0.1"
6529
+
version = "5.12.0"
6538
6530
source = "registry+https://github.com/rust-lang/crates.io-index"
6539
-
checksum = "b7a3e850ff1e7217a3b7a07eba90d37fe9bb9e89a310f718afcde5885ca9b6d7"
6531
+
checksum = "1cdb94821ca8a87ca9c298b5d1cbd80e2a8b67115d99f6e4551ac49e42b6a314"
6540
6532
dependencies = [
6541
-
"proc-macro-crate 1.3.1",
6533
+
"proc-macro-crate 3.4.0",
6542
6534
"proc-macro2",
6543
6535
"quote",
6544
-
"regex",
6545
-
"syn 1.0.109",
6536
+
"syn 2.0.109",
6537
+
"zbus_names",
6538
+
"zvariant",
6546
6539
"zvariant_utils",
6547
6540
]
6548
6541
6549
6542
[[package]]
6550
6543
name = "zbus_names"
6551
-
version = "3.0.0"
6544
+
version = "4.2.0"
6552
6545
source = "registry+https://github.com/rust-lang/crates.io-index"
6553
-
checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c"
6546
+
checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97"
6554
6547
dependencies = [
6555
6548
"serde",
6556
6549
"static_assertions",
6550
+
"winnow 0.7.13",
6557
6551
"zvariant",
6558
6552
]
6559
6553
6560
6554
[[package]]
6561
6555
name = "zerocopy"
6562
-
version = "0.8.26"
6556
+
version = "0.8.27"
6563
6557
source = "registry+https://github.com/rust-lang/crates.io-index"
6564
-
checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f"
6558
+
checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c"
6565
6559
dependencies = [
6566
6560
"zerocopy-derive",
6567
6561
]
6568
6562
6569
6563
[[package]]
6570
6564
name = "zerocopy-derive"
6571
-
version = "0.8.26"
6565
+
version = "0.8.27"
6572
6566
source = "registry+https://github.com/rust-lang/crates.io-index"
6573
-
checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181"
6567
+
checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831"
6574
6568
dependencies = [
6575
6569
"proc-macro2",
6576
6570
"quote",
6577
-
"syn 2.0.104",
6571
+
"syn 2.0.109",
6578
6572
]
6579
6573
6580
6574
[[package]]
···
6594
6588
dependencies = [
6595
6589
"proc-macro2",
6596
6590
"quote",
6597
-
"syn 2.0.104",
6591
+
"syn 2.0.109",
6598
6592
"synstructure",
6599
6593
]
6600
6594
6601
6595
[[package]]
6602
6596
name = "zeroize"
6603
-
version = "1.8.1"
6597
+
version = "1.8.2"
6604
6598
source = "registry+https://github.com/rust-lang/crates.io-index"
6605
-
checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
6599
+
checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
6606
6600
6607
6601
[[package]]
6608
6602
name = "zerotrie"
6609
-
version = "0.2.2"
6603
+
version = "0.2.3"
6610
6604
source = "registry+https://github.com/rust-lang/crates.io-index"
6611
-
checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595"
6605
+
checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851"
6612
6606
dependencies = [
6613
6607
"displaydoc",
6614
6608
"yoke",
···
6617
6611
6618
6612
[[package]]
6619
6613
name = "zerovec"
6620
-
version = "0.11.2"
6614
+
version = "0.11.5"
6621
6615
source = "registry+https://github.com/rust-lang/crates.io-index"
6622
-
checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428"
6616
+
checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
6623
6617
dependencies = [
6624
6618
"yoke",
6625
6619
"zerofrom",
···
6628
6622
6629
6623
[[package]]
6630
6624
name = "zerovec-derive"
6631
-
version = "0.11.1"
6625
+
version = "0.11.2"
6632
6626
source = "registry+https://github.com/rust-lang/crates.io-index"
6633
-
checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f"
6627
+
checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
6634
6628
dependencies = [
6635
6629
"proc-macro2",
6636
6630
"quote",
6637
-
"syn 2.0.104",
6631
+
"syn 2.0.109",
6638
6632
]
6639
6633
6640
6634
[[package]]
···
6654
6648
6655
6649
[[package]]
6656
6650
name = "zune-jpeg"
6657
-
version = "0.4.20"
6651
+
version = "0.4.21"
6658
6652
source = "registry+https://github.com/rust-lang/crates.io-index"
6659
-
checksum = "fc1f7e205ce79eb2da3cd71c5f55f3589785cb7c79f6a03d1c8d1491bda5d089"
6653
+
checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713"
6660
6654
dependencies = [
6661
6655
"zune-core",
6662
6656
]
6663
6657
6664
6658
[[package]]
6665
6659
name = "zvariant"
6666
-
version = "4.0.0"
6660
+
version = "5.8.0"
6667
6661
source = "registry+https://github.com/rust-lang/crates.io-index"
6668
-
checksum = "4e09e8be97d44eeab994d752f341e67b3b0d80512a8b315a0671d47232ef1b65"
6662
+
checksum = "2be61892e4f2b1772727be11630a62664a1826b62efa43a6fe7449521cb8744c"
6669
6663
dependencies = [
6670
6664
"endi",
6671
6665
"enumflags2",
6672
6666
"serde",
6673
-
"static_assertions",
6667
+
"winnow 0.7.13",
6674
6668
"zvariant_derive",
6669
+
"zvariant_utils",
6675
6670
]
6676
6671
6677
6672
[[package]]
6678
6673
name = "zvariant_derive"
6679
-
version = "4.0.0"
6674
+
version = "5.8.0"
6680
6675
source = "registry+https://github.com/rust-lang/crates.io-index"
6681
-
checksum = "72a5857e2856435331636a9fbb415b09243df4521a267c5bedcd5289b4d5799e"
6676
+
checksum = "da58575a1b2b20766513b1ec59d8e2e68db2745379f961f86650655e862d2006"
6682
6677
dependencies = [
6683
-
"proc-macro-crate 1.3.1",
6678
+
"proc-macro-crate 3.4.0",
6684
6679
"proc-macro2",
6685
6680
"quote",
6686
-
"syn 1.0.109",
6681
+
"syn 2.0.109",
6687
6682
"zvariant_utils",
6688
6683
]
6689
6684
6690
6685
[[package]]
6691
6686
name = "zvariant_utils"
6692
-
version = "1.1.0"
6687
+
version = "3.2.1"
6693
6688
source = "registry+https://github.com/rust-lang/crates.io-index"
6694
-
checksum = "00bedb16a193cc12451873fee2a1bc6550225acece0e36f333e68326c73c8172"
6689
+
checksum = "c6949d142f89f6916deca2232cf26a8afacf2b9fdc35ce766105e104478be599"
6695
6690
dependencies = [
6696
6691
"proc-macro2",
6697
6692
"quote",
6698
-
"syn 1.0.109",
6693
+
"serde",
6694
+
"syn 2.0.109",
6695
+
"winnow 0.7.13",
6699
6696
]
+15
-16
src-tauri/Cargo.toml
+15
-16
src-tauri/Cargo.toml
···
1
1
[package]
2
-
name = "vrcpm-rs"
3
-
version = "0.2.4"
2
+
name = "VRChatPhotoManager"
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
-
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"
30
29
[target.'cfg(windows)'.dependencies]
31
-
mslnk = { version = "0.1.8" }
30
+
mslnk = { version = "0.1" }
32
31
33
32
[features]
34
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
}
+25
src-tauri/src/frontend_calls/copy_image.rs
+25
src-tauri/src/frontend_calls/copy_image.rs
···
1
+
use std::{ borrow::Cow, sync::Mutex };
2
+
3
+
use arboard::{ Clipboard, ImageData };
4
+
use image::GenericImageView;
5
+
use tauri::State;
6
+
7
+
use crate::{ frontend_calls::get_user_photos_path::get_user_photos_path, util::cache::Cache };
8
+
9
+
#[tauri::command]
10
+
pub fn copy_image( path: String, clipboard: State<Mutex<Clipboard>>, cache: State<Cache> ) {
11
+
let path = format!("{}/{}", get_user_photos_path(cache), path);
12
+
println!("Copying Image: {}", &path);
13
+
14
+
let img = image::open(path).unwrap();
15
+
let size = img.dimensions();
16
+
17
+
let img_data = ImageData {
18
+
width: size.0 as usize,
19
+
height: size.1 as usize,
20
+
bytes: Cow::from(img.into_rgba8().to_vec())
21
+
};
22
+
23
+
let mut lock = clipboard.lock().unwrap();
24
+
lock.set_image(img_data).unwrap();
25
+
}
+2
-16
src-tauri/src/frontend_calls/delete_photo.rs
+2
-16
src-tauri/src/frontend_calls/delete_photo.rs
···
1
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
+1
-3
src-tauri/src/frontend_calls/mod.rs
+1
-3
src-tauri/src/frontend_calls/mod.rs
+19
-4
src-tauri/src/frontend_calls/open_folder.rs
+19
-4
src-tauri/src/frontend_calls/open_folder.rs
···
7
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
-
}
+37
-31
src-tauri/src/main.rs
+37
-31
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;
8
7
9
8
use core::time;
9
+
use arboard::Clipboard;
10
10
use frontend_calls::*;
11
11
12
12
use notify::{ EventKind, RecursiveMode, Watcher };
13
13
use pngmeta::PNGImage;
14
14
use regex::Regex;
15
15
use util::{ cache::Cache, get_photo_path::get_photo_path };
16
-
use std::{ env, fs, thread };
16
+
use std::{ env, fs, sync::Mutex, thread };
17
17
use tauri::{ Emitter, Manager, State, WindowEvent };
18
-
use tauri_plugin_deep_link::DeepLinkExt;
19
18
20
-
// TODO: Linux support
19
+
use crate::frontend_calls::config::{get_config_value_string, Config};
21
20
22
21
fn main() {
23
22
#[cfg(target_os = "linux")]
24
-
std::env::set_var("WEBKIT_DISABLE_DMABUF_RENDERER", "1"); // Fix webkit being shit
23
+
std::env::set_var("WEBKIT_DISABLE_DMABUF_RENDERER", "1"); // Fix webkitgtk being shit
25
24
26
25
let cache = Cache::new();
27
26
···
78
77
79
78
println!("Loading App...");
80
79
let photos_path = util::get_photo_path::get_photo_path();
80
+
println!("Loading photos from: {:#?}", &photos_path);
81
81
82
82
cache.insert("photo-path".into(), photos_path.to_str().unwrap().to_owned());
83
83
···
88
88
}
89
89
};
90
90
91
-
// Updater only supports windows, so don't update if on linux
92
-
#[cfg(windows)]
93
-
util::check_updates::check_updates(container_folder);
94
-
95
91
// Listen for file updates, store each update in an mpsc channel and send to the frontend
96
92
let (sender, receiver) = std::sync::mpsc::channel();
97
93
let mut watcher = notify::recommended_watcher(move | res: Result<notify::Event, notify::Error> | {
···
102
98
let path = event.paths.first().unwrap();
103
99
let name = path.file_name().unwrap().to_str().unwrap().to_owned();
104
100
105
-
let re1 = Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}.png").unwrap();
106
-
let re2 = Regex::new(r"(?m)/VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}_wrld_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.png/gm").unwrap();
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);
107
105
108
-
if
109
-
re1.is_match(&name) ||
110
-
re2.is_match(&name)
111
-
{
106
+
let re2_match = // This is the format VRCX uses if you enable renaming photos
107
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}_wrld_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.png").unwrap().is_match(&name);
108
+
109
+
if re1_match || re2_match{
112
110
sender.send((2, path.strip_prefix(get_photo_path()).unwrap().to_str().unwrap().to_owned())).unwrap();
113
111
}
114
112
},
···
116
114
let path = event.paths.first().unwrap();
117
115
let name = path.file_name().unwrap().to_str().unwrap().to_owned();
118
116
119
-
let re1 = Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}.png").unwrap();
120
-
let re2 = Regex::new(r"(?m)/VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}_wrld_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.png/gm").unwrap();
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
121
122
-
if
123
-
re1.is_match(&name) ||
124
-
re2.is_match(&name)
125
-
{
122
+
let re2_match = // This is the format VRCX uses if you enable renaming photos
123
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}_wrld_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.png").unwrap().is_match(&name);
124
+
125
+
if re1_match || re2_match{
126
126
thread::sleep(time::Duration::from_millis(1000));
127
127
sender.send((1, path.strip_prefix(get_photo_path()).unwrap().to_str().unwrap().to_owned())).unwrap();
128
128
}
···
142
142
)
143
143
.unwrap();
144
144
145
+
let clipboard = Clipboard::new().unwrap();
146
+
145
147
tauri::Builder::default()
146
-
.plugin(tauri_plugin_single_instance::init(| app, argv, _cwd | {
148
+
.plugin(tauri_plugin_single_instance::init(| app, _argv, _cwd | {
147
149
app.get_webview_window("main").unwrap().show().unwrap();
148
-
util::handle_deeplink::handle_deeplink(argv[1].clone(), app);
149
150
}))
150
-
.plugin(tauri_plugin_deep_link::init())
151
151
.plugin(tauri_plugin_process::init())
152
152
.plugin(tauri_plugin_http::init())
153
153
.plugin(tauri_plugin_shell::init())
···
156
156
util::handle_uri_proto::handle_uri_proto(req, res, cache);
157
157
})
158
158
.on_window_event(|window, event| match event {
159
-
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
+
160
168
window.hide().unwrap();
161
169
api.prevent_close();
162
170
}
163
171
_ => {}
164
172
})
173
+
.manage(Config::new())
165
174
.manage(cache)
175
+
.manage(Mutex::new(clipboard))
166
176
.setup(|app| {
167
177
let handle = app.handle();
168
-
169
-
app.deep_link().register("vrcpm").unwrap();
170
178
util::setup_traymenu::setup_traymenu(handle);
171
179
172
180
// reads the file update mpsc channel and sends the events to the frontend
···
190
198
Ok(())
191
199
})
192
200
.invoke_handler(tauri::generate_handler![
193
-
start_user_auth::start_user_auth,
194
201
load_photos::load_photos,
195
202
close_splashscreen::close_splashscreen,
196
203
load_photo_meta::load_photo_meta,
···
202
209
start_with_win::start_with_win,
203
210
get_user_photos_path::get_user_photos_path,
204
211
change_final_path::change_final_path,
205
-
sync_photos::sync_photos,
206
212
util::get_version::get_version,
207
-
relaunch::relaunch,
208
213
config::set_config_value_string,
209
214
config::get_config_value_string,
210
215
config::set_config_value_int,
211
216
config::get_config_value_int,
212
-
get_os::get_os
217
+
get_os::get_os,
218
+
copy_image::copy_image
213
219
])
214
220
.run(tauri::generate_context!())
215
221
.expect("error while running tauri application");
-261
src-tauri/src/photosync.rs
-261
src-tauri/src/photosync.rs
···
1
-
use regex::Regex;
2
-
use reqwest;
3
-
use serde::Serialize;
4
-
use serde_json::{Error, Value};
5
-
use std::{fs, io::Write, path, time::Duration};
6
-
use tauri::Emitter;
7
-
8
-
#[derive(Clone, Serialize)]
9
-
struct PhotoUploadMeta {
10
-
photos_uploading: usize,
11
-
photos_total: usize,
12
-
}
13
-
14
-
pub fn sync_photos(token: String, path: path::PathBuf, window: tauri::Window) {
15
-
let sync_lock_path = dirs::config_dir()
16
-
.unwrap()
17
-
.join("PhazeDev/VRChatPhotoManager/.sync_lock");
18
-
19
-
match fs::metadata(&sync_lock_path) {
20
-
Ok(_) => {
21
-
return;
22
-
}
23
-
Err(_) => {}
24
-
}
25
-
26
-
fs::write(&sync_lock_path, "Currently Syncing").unwrap();
27
-
28
-
match fs::metadata(&path) {
29
-
Ok(_) => {}
30
-
Err(_) => {
31
-
fs::create_dir(&path).unwrap();
32
-
}
33
-
};
34
-
35
-
let mut photos: Vec<String> = Vec::new();
36
-
37
-
for folder in fs::read_dir(&path).unwrap() {
38
-
let f = folder.unwrap();
39
-
40
-
if f.metadata().unwrap().is_dir() {
41
-
match fs::read_dir(f.path()) {
42
-
Ok(dir) => {
43
-
for photo in dir {
44
-
let p = photo.unwrap();
45
-
46
-
let re1 = Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}.png").unwrap();
47
-
let re2 = Regex::new(
48
-
r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}_wrld_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.png").unwrap();
49
-
50
-
if re1.is_match(p.file_name().to_str().unwrap())
51
-
|| re2.is_match(p.file_name().to_str().unwrap())
52
-
{
53
-
photos.push(p.file_name().into_string().unwrap());
54
-
}
55
-
}
56
-
}
57
-
Err(_) => {}
58
-
}
59
-
}
60
-
}
61
-
62
-
let body = reqwest::blocking::get(format!(
63
-
"https://photos-cdn.phazed.xyz/api/v1/photos/exists?token={}",
64
-
&token
65
-
))
66
-
.unwrap()
67
-
.text()
68
-
.unwrap();
69
-
70
-
let body: Value = serde_json::from_str(&body).unwrap();
71
-
72
-
let mut photos_to_upload: Vec<String> = Vec::new();
73
-
let uploaded_photos = body["files"].as_array().unwrap();
74
-
75
-
let photos_len = photos.len();
76
-
77
-
for photo in &photos {
78
-
let mut found_photo = false;
79
-
80
-
for uploaded_photo in uploaded_photos {
81
-
if photo == uploaded_photo.as_str().unwrap() {
82
-
found_photo = true;
83
-
break;
84
-
}
85
-
}
86
-
87
-
if !found_photo {
88
-
photos_to_upload.push(photo.clone());
89
-
}
90
-
}
91
-
92
-
window
93
-
.emit(
94
-
"photos-upload-meta",
95
-
PhotoUploadMeta {
96
-
photos_uploading: photos_to_upload.len(),
97
-
photos_total: photos_len,
98
-
},
99
-
)
100
-
.unwrap();
101
-
102
-
let mut photos_left = photos_to_upload.len();
103
-
104
-
let client = reqwest::blocking::Client::new();
105
-
106
-
loop {
107
-
match photos_to_upload.pop() {
108
-
Some(photo) => {
109
-
let folder_name = photo.clone().replace("VRChat_", "");
110
-
let mut folder_name = folder_name.split("-");
111
-
let folder_name = format!(
112
-
"{}-{}",
113
-
folder_name.nth(0).unwrap(),
114
-
folder_name.nth(0).unwrap()
115
-
);
116
-
117
-
let full_path = format!("{}\\{}\\{}", path.to_str().unwrap(), folder_name, photo);
118
-
let file = fs::File::open(full_path);
119
-
120
-
match file {
121
-
Ok(file) => {
122
-
let res = client
123
-
.put(format!(
124
-
"https://photos-cdn.phazed.xyz/api/v1/photos?token={}",
125
-
&token
126
-
))
127
-
.header("Content-Type", "image/png")
128
-
.header("filename", photo)
129
-
.body(file)
130
-
.timeout(Duration::from_secs(120))
131
-
.send()
132
-
.unwrap()
133
-
.text()
134
-
.unwrap();
135
-
136
-
let res: Result<Value, Error> = serde_json::from_str(&res);
137
-
138
-
match res {
139
-
Ok(res) => {
140
-
if !res["ok"].as_bool().unwrap() {
141
-
println!("Failed to upload: {}", res["error"].as_str().unwrap());
142
-
143
-
window
144
-
.emit("sync-failed", res["error"].as_str().unwrap())
145
-
.unwrap();
146
-
147
-
break;
148
-
}
149
-
}
150
-
Err(err) => {
151
-
dbg!(err);
152
-
}
153
-
}
154
-
}
155
-
Err(_) => {}
156
-
}
157
-
158
-
photos_left -= 1;
159
-
window
160
-
.emit(
161
-
"photos-upload-meta",
162
-
PhotoUploadMeta {
163
-
photos_uploading: photos_left,
164
-
photos_total: photos_len,
165
-
},
166
-
)
167
-
.unwrap();
168
-
}
169
-
None => {
170
-
break;
171
-
}
172
-
}
173
-
}
174
-
175
-
println!("Finished Uploading.");
176
-
let mut photos_to_download: Vec<String> = Vec::new();
177
-
178
-
for photo in uploaded_photos {
179
-
let mut found_photo = false;
180
-
let photo = photo.as_str().unwrap().to_string();
181
-
182
-
for uploaded_photo in &photos {
183
-
if &photo == uploaded_photo {
184
-
found_photo = true;
185
-
break;
186
-
}
187
-
}
188
-
189
-
if !found_photo {
190
-
photos_to_download.push(photo);
191
-
}
192
-
}
193
-
194
-
photos_to_download.reverse();
195
-
196
-
let photos_len = photos_to_download.len();
197
-
let mut photos_left = photos_to_download.len();
198
-
199
-
loop {
200
-
match photos_to_download.pop() {
201
-
Some(photo) => {
202
-
let folder_name = photo.clone().replace("VRChat_", "");
203
-
let mut folder_name = folder_name.split("-");
204
-
let folder_name = format!(
205
-
"{}-{}",
206
-
folder_name.nth(0).unwrap(),
207
-
folder_name.nth(0).unwrap()
208
-
);
209
-
210
-
let full_path = format!("{}/{}/{}", path.to_str().unwrap(), folder_name, photo);
211
-
212
-
let res = client
213
-
.get(format!(
214
-
"https://photos-cdn.phazed.xyz/api/v1/photos?token={}&photo={}",
215
-
&token, &photo
216
-
))
217
-
.timeout(Duration::from_secs(120))
218
-
.send()
219
-
.unwrap()
220
-
.bytes();
221
-
222
-
match res {
223
-
Ok(res) => {
224
-
let folder_path = format!("{}/{}", path.to_str().unwrap(), folder_name);
225
-
match fs::metadata(&folder_path) {
226
-
Ok(_) => {}
227
-
Err(_) => {
228
-
fs::create_dir(folder_path).unwrap();
229
-
}
230
-
}
231
-
232
-
let mut file = fs::File::create(full_path).unwrap();
233
-
file.write_all(&res).unwrap();
234
-
}
235
-
Err(err) => {
236
-
dbg!(err);
237
-
}
238
-
}
239
-
240
-
photos_left -= 1;
241
-
window
242
-
.emit(
243
-
"photos-download-meta",
244
-
PhotoUploadMeta {
245
-
photos_uploading: photos_left,
246
-
photos_total: photos_len,
247
-
},
248
-
)
249
-
.unwrap();
250
-
}
251
-
None => {
252
-
break;
253
-
}
254
-
}
255
-
}
256
-
257
-
println!("Finished Downloading.");
258
-
259
-
fs::remove_file(&sync_lock_path).unwrap();
260
-
window.emit("sync-finished", "h").unwrap();
261
-
}
+17
-33
src-tauri/src/pngmeta.rs
+17
-33
src-tauri/src/pngmeta.rs
···
1
-
use serde::ser::{Serialize, SerializeStruct, Serializer};
2
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
-
width: u32,
7
-
height: u32,
8
-
bit_depth: u8,
9
-
colour_type: u8,
10
-
compression_method: u8,
11
-
filter_method: u8,
12
-
interlace_method: u8,
13
-
metadata: String,
14
-
path: String,
7
+
pub width: u32,
8
+
pub height: u32,
9
+
pub bit_depth: u8,
10
+
pub colour_type: u8,
11
+
pub compression_method: u8,
12
+
pub filter_method: u8,
13
+
pub interlace_method: u8,
14
+
pub metadata: String,
15
+
pub path: String,
16
+
pub error: bool
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
//