this repo has no description
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

✨ Add desktop notification when encoding finished

+582 -31
+518 -4
Cargo.lock
··· 141 141 ] 142 142 143 143 [[package]] 144 + name = "async-broadcast" 145 + version = "0.7.2" 146 + source = "registry+https://github.com/rust-lang/crates.io-index" 147 + checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" 148 + dependencies = [ 149 + "event-listener 5.4.1", 150 + "event-listener-strategy", 151 + "futures-core", 152 + "pin-project-lite", 153 + ] 154 + 155 + [[package]] 156 + name = "async-channel" 157 + version = "2.5.0" 158 + source = "registry+https://github.com/rust-lang/crates.io-index" 159 + checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" 160 + dependencies = [ 161 + "concurrent-queue", 162 + "event-listener-strategy", 163 + "futures-core", 164 + "pin-project-lite", 165 + ] 166 + 167 + [[package]] 168 + name = "async-executor" 169 + version = "1.13.3" 170 + source = "registry+https://github.com/rust-lang/crates.io-index" 171 + checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" 172 + dependencies = [ 173 + "async-task", 174 + "concurrent-queue", 175 + "fastrand", 176 + "futures-lite", 177 + "pin-project-lite", 178 + "slab", 179 + ] 180 + 181 + [[package]] 182 + name = "async-io" 183 + version = "2.6.0" 184 + source = "registry+https://github.com/rust-lang/crates.io-index" 185 + checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" 186 + dependencies = [ 187 + "autocfg", 188 + "cfg-if 1.0.4", 189 + "concurrent-queue", 190 + "futures-io", 191 + "futures-lite", 192 + "parking", 193 + "polling", 194 + "rustix", 195 + "slab", 196 + "windows-sys 0.61.2", 197 + ] 198 + 199 + [[package]] 200 + name = "async-lock" 201 + version = "3.4.1" 202 + source = "registry+https://github.com/rust-lang/crates.io-index" 203 + checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" 204 + dependencies = [ 205 + "event-listener 5.4.1", 206 + "event-listener-strategy", 207 + "pin-project-lite", 208 + ] 209 + 210 + [[package]] 144 211 name = "async-priority-channel" 145 212 version = "0.2.0" 146 213 source = "registry+https://github.com/rust-lang/crates.io-index" 147 214 checksum = "acde96f444d31031f760c5c43dc786b97d3e1cb2ee49dd06898383fe9a999758" 148 215 dependencies = [ 149 - "event-listener", 216 + "event-listener 4.0.3", 217 + ] 218 + 219 + [[package]] 220 + name = "async-process" 221 + version = "2.5.0" 222 + source = "registry+https://github.com/rust-lang/crates.io-index" 223 + checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" 224 + dependencies = [ 225 + "async-channel", 226 + "async-io", 227 + "async-lock", 228 + "async-signal", 229 + "async-task", 230 + "blocking", 231 + "cfg-if 1.0.4", 232 + "event-listener 5.4.1", 233 + "futures-lite", 234 + "rustix", 235 + ] 236 + 237 + [[package]] 238 + name = "async-recursion" 239 + version = "1.1.1" 240 + source = "registry+https://github.com/rust-lang/crates.io-index" 241 + checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" 242 + dependencies = [ 243 + "proc-macro2", 244 + "quote", 245 + "syn 2.0.108", 246 + ] 247 + 248 + [[package]] 249 + name = "async-signal" 250 + version = "0.2.13" 251 + source = "registry+https://github.com/rust-lang/crates.io-index" 252 + checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" 253 + dependencies = [ 254 + "async-io", 255 + "async-lock", 256 + "atomic-waker", 257 + "cfg-if 1.0.4", 258 + "futures-core", 259 + "futures-io", 260 + "rustix", 261 + "signal-hook-registry", 262 + "slab", 263 + "windows-sys 0.61.2", 264 + ] 265 + 266 + [[package]] 267 + name = "async-task" 268 + version = "4.7.1" 269 + source = "registry+https://github.com/rust-lang/crates.io-index" 270 + checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" 271 + 272 + [[package]] 273 + name = "async-trait" 274 + version = "0.1.89" 275 + source = "registry+https://github.com/rust-lang/crates.io-index" 276 + checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" 277 + dependencies = [ 278 + "proc-macro2", 279 + "quote", 280 + "syn 2.0.108", 150 281 ] 151 282 152 283 [[package]] ··· 179 310 source = "registry+https://github.com/rust-lang/crates.io-index" 180 311 checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" 181 312 dependencies = [ 182 - "hermit-abi", 313 + "hermit-abi 0.1.19", 183 314 "libc", 184 315 "winapi 0.3.9", 185 316 ] ··· 337 468 checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" 338 469 dependencies = [ 339 470 "byte-tools", 471 + ] 472 + 473 + [[package]] 474 + name = "block2" 475 + version = "0.6.2" 476 + source = "registry+https://github.com/rust-lang/crates.io-index" 477 + checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" 478 + dependencies = [ 479 + "objc2", 480 + ] 481 + 482 + [[package]] 483 + name = "blocking" 484 + version = "1.6.2" 485 + source = "registry+https://github.com/rust-lang/crates.io-index" 486 + checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" 487 + dependencies = [ 488 + "async-channel", 489 + "async-task", 490 + "futures-io", 491 + "futures-lite", 492 + "piper", 340 493 ] 341 494 342 495 [[package]] ··· 1044 1197 ] 1045 1198 1046 1199 [[package]] 1200 + name = "dispatch2" 1201 + version = "0.3.0" 1202 + source = "registry+https://github.com/rust-lang/crates.io-index" 1203 + checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" 1204 + dependencies = [ 1205 + "bitflags 2.10.0", 1206 + "objc2", 1207 + ] 1208 + 1209 + [[package]] 1047 1210 name = "displaydoc" 1048 1211 version = "0.2.5" 1049 1212 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1148 1311 ] 1149 1312 1150 1313 [[package]] 1314 + name = "endi" 1315 + version = "1.1.0" 1316 + source = "registry+https://github.com/rust-lang/crates.io-index" 1317 + checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" 1318 + 1319 + [[package]] 1320 + name = "enumflags2" 1321 + version = "0.7.12" 1322 + source = "registry+https://github.com/rust-lang/crates.io-index" 1323 + checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" 1324 + dependencies = [ 1325 + "enumflags2_derive", 1326 + "serde", 1327 + ] 1328 + 1329 + [[package]] 1330 + name = "enumflags2_derive" 1331 + version = "0.7.12" 1332 + source = "registry+https://github.com/rust-lang/crates.io-index" 1333 + checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" 1334 + dependencies = [ 1335 + "proc-macro2", 1336 + "quote", 1337 + "syn 2.0.108", 1338 + ] 1339 + 1340 + [[package]] 1151 1341 name = "env_filter" 1152 1342 version = "0.1.4" 1153 1343 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1218 1408 ] 1219 1409 1220 1410 [[package]] 1411 + name = "event-listener" 1412 + version = "5.4.1" 1413 + source = "registry+https://github.com/rust-lang/crates.io-index" 1414 + checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" 1415 + dependencies = [ 1416 + "concurrent-queue", 1417 + "parking", 1418 + "pin-project-lite", 1419 + ] 1420 + 1421 + [[package]] 1422 + name = "event-listener-strategy" 1423 + version = "0.5.4" 1424 + source = "registry+https://github.com/rust-lang/crates.io-index" 1425 + checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" 1426 + dependencies = [ 1427 + "event-listener 5.4.1", 1428 + "pin-project-lite", 1429 + ] 1430 + 1431 + [[package]] 1221 1432 name = "fake-simd" 1222 1433 version = "0.1.2" 1223 1434 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1427 1638 version = "0.3.31" 1428 1639 source = "registry+https://github.com/rust-lang/crates.io-index" 1429 1640 checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" 1641 + 1642 + [[package]] 1643 + name = "futures-lite" 1644 + version = "2.6.1" 1645 + source = "registry+https://github.com/rust-lang/crates.io-index" 1646 + checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" 1647 + dependencies = [ 1648 + "fastrand", 1649 + "futures-core", 1650 + "futures-io", 1651 + "parking", 1652 + "pin-project-lite", 1653 + ] 1430 1654 1431 1655 [[package]] 1432 1656 name = "futures-macro" ··· 2499 2723 ] 2500 2724 2501 2725 [[package]] 2726 + name = "hermit-abi" 2727 + version = "0.5.2" 2728 + source = "registry+https://github.com/rust-lang/crates.io-index" 2729 + checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" 2730 + 2731 + [[package]] 2502 2732 name = "hex" 2503 2733 version = "0.4.3" 2504 2734 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3165 3395 checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" 3166 3396 3167 3397 [[package]] 3398 + name = "mac-notification-sys" 3399 + version = "0.6.8" 3400 + source = "registry+https://github.com/rust-lang/crates.io-index" 3401 + checksum = "4ee70bb2bba058d58e252d2944582d634fc884fc9c489a966d428dedcf653e97" 3402 + dependencies = [ 3403 + "cc", 3404 + "objc2", 3405 + "objc2-foundation", 3406 + "time", 3407 + ] 3408 + 3409 + [[package]] 3168 3410 name = "malloc_buf" 3169 3411 version = "0.0.6" 3170 3412 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3231 3473 checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" 3232 3474 dependencies = [ 3233 3475 "libc", 3476 + ] 3477 + 3478 + [[package]] 3479 + name = "memoffset" 3480 + version = "0.9.1" 3481 + source = "registry+https://github.com/rust-lang/crates.io-index" 3482 + checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" 3483 + dependencies = [ 3484 + "autocfg", 3234 3485 ] 3235 3486 3236 3487 [[package]] ··· 3469 3720 "cfg-if 1.0.4", 3470 3721 "cfg_aliases", 3471 3722 "libc", 3723 + "memoffset", 3472 3724 ] 3473 3725 3474 3726 [[package]] ··· 3515 3767 ] 3516 3768 3517 3769 [[package]] 3770 + name = "notify-rust" 3771 + version = "4.11.7" 3772 + source = "registry+https://github.com/rust-lang/crates.io-index" 3773 + checksum = "6442248665a5aa2514e794af3b39661a8e73033b1cc5e59899e1276117ee4400" 3774 + dependencies = [ 3775 + "futures-lite", 3776 + "log", 3777 + "mac-notification-sys", 3778 + "serde", 3779 + "tauri-winrt-notification", 3780 + "zbus", 3781 + ] 3782 + 3783 + [[package]] 3518 3784 name = "notify-types" 3519 3785 version = "2.0.0" 3520 3786 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3581 3847 ] 3582 3848 3583 3849 [[package]] 3850 + name = "objc2" 3851 + version = "0.6.3" 3852 + source = "registry+https://github.com/rust-lang/crates.io-index" 3853 + checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" 3854 + dependencies = [ 3855 + "objc2-encode", 3856 + ] 3857 + 3858 + [[package]] 3859 + name = "objc2-core-foundation" 3860 + version = "0.3.2" 3861 + source = "registry+https://github.com/rust-lang/crates.io-index" 3862 + checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" 3863 + dependencies = [ 3864 + "bitflags 2.10.0", 3865 + "dispatch2", 3866 + "objc2", 3867 + ] 3868 + 3869 + [[package]] 3870 + name = "objc2-encode" 3871 + version = "4.1.0" 3872 + source = "registry+https://github.com/rust-lang/crates.io-index" 3873 + checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" 3874 + 3875 + [[package]] 3876 + name = "objc2-foundation" 3877 + version = "0.3.2" 3878 + source = "registry+https://github.com/rust-lang/crates.io-index" 3879 + checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" 3880 + dependencies = [ 3881 + "bitflags 2.10.0", 3882 + "block2", 3883 + "libc", 3884 + "objc2", 3885 + "objc2-core-foundation", 3886 + ] 3887 + 3888 + [[package]] 3584 3889 name = "object" 3585 3890 version = "0.37.3" 3586 3891 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3643 3948 checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" 3644 3949 dependencies = [ 3645 3950 "num-traits", 3951 + ] 3952 + 3953 + [[package]] 3954 + name = "ordered-stream" 3955 + version = "0.2.0" 3956 + source = "registry+https://github.com/rust-lang/crates.io-index" 3957 + checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" 3958 + dependencies = [ 3959 + "futures-core", 3960 + "pin-project-lite", 3646 3961 ] 3647 3962 3648 3963 [[package]] ··· 3770 4085 checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 3771 4086 3772 4087 [[package]] 4088 + name = "piper" 4089 + version = "0.2.4" 4090 + source = "registry+https://github.com/rust-lang/crates.io-index" 4091 + checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" 4092 + dependencies = [ 4093 + "atomic-waker", 4094 + "fastrand", 4095 + "futures-io", 4096 + ] 4097 + 4098 + [[package]] 3773 4099 name = "pkcs8" 3774 4100 version = "0.10.2" 3775 4101 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3799 4125 dependencies = [ 3800 4126 "base64", 3801 4127 "indexmap", 3802 - "quick-xml", 4128 + "quick-xml 0.38.3", 3803 4129 "serde", 3804 4130 "time", 3805 4131 ] ··· 3818 4144 ] 3819 4145 3820 4146 [[package]] 4147 + name = "polling" 4148 + version = "3.11.0" 4149 + source = "registry+https://github.com/rust-lang/crates.io-index" 4150 + checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" 4151 + dependencies = [ 4152 + "cfg-if 1.0.4", 4153 + "concurrent-queue", 4154 + "hermit-abi 0.5.2", 4155 + "pin-project-lite", 4156 + "rustix", 4157 + "windows-sys 0.61.2", 4158 + ] 4159 + 4160 + [[package]] 3821 4161 name = "portable-atomic" 3822 4162 version = "1.11.1" 3823 4163 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3866 4206 ] 3867 4207 3868 4208 [[package]] 4209 + name = "proc-macro-crate" 4210 + version = "3.4.0" 4211 + source = "registry+https://github.com/rust-lang/crates.io-index" 4212 + checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" 4213 + dependencies = [ 4214 + "toml_edit 0.23.7", 4215 + ] 4216 + 4217 + [[package]] 3869 4218 name = "proc-macro2" 3870 4219 version = "1.0.103" 3871 4220 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3905 4254 3906 4255 [[package]] 3907 4256 name = "quick-xml" 4257 + version = "0.37.5" 4258 + source = "registry+https://github.com/rust-lang/crates.io-index" 4259 + checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" 4260 + dependencies = [ 4261 + "memchr", 4262 + ] 4263 + 4264 + [[package]] 4265 + name = "quick-xml" 3908 4266 version = "0.38.3" 3909 4267 source = "registry+https://github.com/rust-lang/crates.io-index" 3910 4268 checksum = "42a232e7487fc2ef313d96dde7948e7a3c05101870d8985e4fd8d26aedd27b89" ··· 4497 4855 ] 4498 4856 4499 4857 [[package]] 4858 + name = "serde_repr" 4859 + version = "0.1.20" 4860 + source = "registry+https://github.com/rust-lang/crates.io-index" 4861 + checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" 4862 + dependencies = [ 4863 + "proc-macro2", 4864 + "quote", 4865 + "syn 2.0.108", 4866 + ] 4867 + 4868 + [[package]] 4500 4869 name = "serde_spanned" 4501 4870 version = "0.6.9" 4502 4871 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4595 4964 "nanoid", 4596 4965 "ndarray", 4597 4966 "nih_plug", 4967 + "notify-rust", 4598 4968 "once_cell", 4599 - "quick-xml", 4969 + "quick-xml 0.38.3", 4600 4970 "rand 0.9.2", 4601 4971 "rayon", 4602 4972 "resvg", ··· 4895 5265 dependencies = [ 4896 5266 "filetime", 4897 5267 "libc", 5268 + ] 5269 + 5270 + [[package]] 5271 + name = "tauri-winrt-notification" 5272 + version = "0.7.2" 5273 + source = "registry+https://github.com/rust-lang/crates.io-index" 5274 + checksum = "0b1e66e07de489fe43a46678dd0b8df65e0c973909df1b60ba33874e297ba9b9" 5275 + dependencies = [ 5276 + "quick-xml 0.37.5", 5277 + "thiserror 2.0.17", 5278 + "windows 0.61.3", 5279 + "windows-version", 4898 5280 ] 4899 5281 4900 5282 [[package]] ··· 5317 5699 checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" 5318 5700 5319 5701 [[package]] 5702 + name = "uds_windows" 5703 + version = "1.1.0" 5704 + source = "registry+https://github.com/rust-lang/crates.io-index" 5705 + checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" 5706 + dependencies = [ 5707 + "memoffset", 5708 + "tempfile", 5709 + "winapi 0.3.9", 5710 + ] 5711 + 5712 + [[package]] 5320 5713 name = "unicase" 5321 5714 version = "2.8.1" 5322 5715 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5459 5852 version = "0.2.2" 5460 5853 source = "registry+https://github.com/rust-lang/crates.io-index" 5461 5854 checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" 5855 + 5856 + [[package]] 5857 + name = "uuid" 5858 + version = "1.18.1" 5859 + source = "registry+https://github.com/rust-lang/crates.io-index" 5860 + checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" 5861 + dependencies = [ 5862 + "js-sys", 5863 + "serde", 5864 + "wasm-bindgen", 5865 + ] 5462 5866 5463 5867 [[package]] 5464 5868 name = "valuable" ··· 5948 6352 ] 5949 6353 5950 6354 [[package]] 6355 + name = "windows-version" 6356 + version = "0.1.7" 6357 + source = "registry+https://github.com/rust-lang/crates.io-index" 6358 + checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631" 6359 + dependencies = [ 6360 + "windows-link 0.2.1", 6361 + ] 6362 + 6363 + [[package]] 5951 6364 name = "windows_aarch64_gnullvm" 5952 6365 version = "0.42.2" 5953 6366 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6181 6594 ] 6182 6595 6183 6596 [[package]] 6597 + name = "zbus" 6598 + version = "5.12.0" 6599 + source = "registry+https://github.com/rust-lang/crates.io-index" 6600 + checksum = "b622b18155f7a93d1cd2dc8c01d2d6a44e08fb9ebb7b3f9e6ed101488bad6c91" 6601 + dependencies = [ 6602 + "async-broadcast", 6603 + "async-executor", 6604 + "async-io", 6605 + "async-lock", 6606 + "async-process", 6607 + "async-recursion", 6608 + "async-task", 6609 + "async-trait", 6610 + "blocking", 6611 + "enumflags2", 6612 + "event-listener 5.4.1", 6613 + "futures-core", 6614 + "futures-lite", 6615 + "hex", 6616 + "nix", 6617 + "ordered-stream", 6618 + "serde", 6619 + "serde_repr", 6620 + "tracing", 6621 + "uds_windows", 6622 + "uuid", 6623 + "windows-sys 0.61.2", 6624 + "winnow 0.7.13", 6625 + "zbus_macros", 6626 + "zbus_names", 6627 + "zvariant", 6628 + ] 6629 + 6630 + [[package]] 6631 + name = "zbus_macros" 6632 + version = "5.12.0" 6633 + source = "registry+https://github.com/rust-lang/crates.io-index" 6634 + checksum = "1cdb94821ca8a87ca9c298b5d1cbd80e2a8b67115d99f6e4551ac49e42b6a314" 6635 + dependencies = [ 6636 + "proc-macro-crate", 6637 + "proc-macro2", 6638 + "quote", 6639 + "syn 2.0.108", 6640 + "zbus_names", 6641 + "zvariant", 6642 + "zvariant_utils", 6643 + ] 6644 + 6645 + [[package]] 6646 + name = "zbus_names" 6647 + version = "4.2.0" 6648 + source = "registry+https://github.com/rust-lang/crates.io-index" 6649 + checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" 6650 + dependencies = [ 6651 + "serde", 6652 + "static_assertions", 6653 + "winnow 0.7.13", 6654 + "zvariant", 6655 + ] 6656 + 6657 + [[package]] 6184 6658 name = "zerocopy" 6185 6659 version = "0.8.27" 6186 6660 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6280 6754 dependencies = [ 6281 6755 "zune-core", 6282 6756 ] 6757 + 6758 + [[package]] 6759 + name = "zvariant" 6760 + version = "5.8.0" 6761 + source = "registry+https://github.com/rust-lang/crates.io-index" 6762 + checksum = "2be61892e4f2b1772727be11630a62664a1826b62efa43a6fe7449521cb8744c" 6763 + dependencies = [ 6764 + "endi", 6765 + "enumflags2", 6766 + "serde", 6767 + "winnow 0.7.13", 6768 + "zvariant_derive", 6769 + "zvariant_utils", 6770 + ] 6771 + 6772 + [[package]] 6773 + name = "zvariant_derive" 6774 + version = "5.8.0" 6775 + source = "registry+https://github.com/rust-lang/crates.io-index" 6776 + checksum = "da58575a1b2b20766513b1ec59d8e2e68db2745379f961f86650655e862d2006" 6777 + dependencies = [ 6778 + "proc-macro-crate", 6779 + "proc-macro2", 6780 + "quote", 6781 + "syn 2.0.108", 6782 + "zvariant_utils", 6783 + ] 6784 + 6785 + [[package]] 6786 + name = "zvariant_utils" 6787 + version = "3.2.1" 6788 + source = "registry+https://github.com/rust-lang/crates.io-index" 6789 + checksum = "c6949d142f89f6916deca2232cf26a8afacf2b9fdc35ce766105e104478be599" 6790 + dependencies = [ 6791 + "proc-macro2", 6792 + "quote", 6793 + "serde", 6794 + "syn 2.0.108", 6795 + "winnow 0.7.13", 6796 + ]
+2 -1
Cargo.toml
··· 49 49 "dep:miette", 50 50 ] 51 51 web = ["dep:wasm-bindgen", "dep:web-sys"] 52 - video = ["dep:env_logger", "dep:vgv"] 52 + video = ["dep:env_logger", "dep:vgv", "dep:notify-rust"] 53 53 video-server = ["dep:axum"] 54 54 55 55 [dependencies] ··· 110 110 quick-xml = "0.38.3" 111 111 vgv = { git = "https://github.com/gwennlbh/vgvf", version = "0.1.0", optional = true} 112 112 serde-aux = "4.7.0" 113 + notify-rust = { version = "4.11.7", optional = true } 113 114 114 115 115 116 [dev-dependencies]
+3 -1
src/main.rs
··· 151 151 ); 152 152 Ok(()) 153 153 }) 154 - .encode(args.arg_file) 154 + .encode(args.arg_file)?; 155 + 156 + Ok(()) 155 157 }
+4
src/video/encoders/ffmpeg.rs
··· 80 80 } 81 81 82 82 impl Encoder for FFMpegEncoder { 83 + fn name(&self) -> String { 84 + "FFMpeg".into() 85 + } 86 + 83 87 fn encode_frame(&mut self, output: EngineOutput) -> Result<()> { 84 88 if let EngineOutput::Frame { svg, dimensions } = output { 85 89 // TODO prendre width et height sur la node svg au lieu de devoir donnner un canvas initial (la grid size peut changer depuis l'initial canvas)
+1
src/video/encoders/mod.rs
··· 5 5 pub mod vgv; 6 6 7 7 pub trait Encoder { 8 + fn name(&self) -> String; 8 9 fn encode_frame(&mut self, output: EngineOutput) -> Result<()>; 9 10 fn finish(&mut self) -> Result<()>; 10 11 fn finish_message(&self, time_elapsed: std::time::Duration) -> String;
+4
src/video/encoders/vgv.rs
··· 53 53 } 54 54 55 55 impl Encoder for VGVEncoder { 56 + fn name(&self) -> String { 57 + "VGV".into() 58 + } 59 + 56 60 fn encode_frame(&mut self, output: EngineOutput) -> Result<()> { 57 61 if let EngineOutput::Frame { ref svg, .. } = output { 58 62 self.encoder.encode_svg(match svg {
+50 -25
src/video/encoding.rs
··· 3 3 use crate::video::encoders::Encoder; 4 4 use crate::video::encoders::vgv::VGVTranscodeMode; 5 5 use crate::video::engine::EngineOutput; 6 - use anyhow::Result; 6 + use anyhow::{Result, anyhow}; 7 7 use measure_time::debug_time; 8 8 use std::path::PathBuf; 9 9 use std::thread; 10 10 11 11 impl<AdditionalContext: Default> Video<AdditionalContext> { 12 - pub fn encode(&mut self, output_file: impl Into<PathBuf>) -> Result<()> { 12 + pub fn encode( 13 + &mut self, 14 + output_file: impl Into<PathBuf> + Clone, 15 + ) -> Result<std::time::Duration> { 13 16 debug_time!("encode"); 14 17 15 - let encoder = self.setup_encoder(output_file)?; 18 + let encoder = self.setup_encoder(output_file.clone())?; 19 + let encoder_name = encoder.name(); 16 20 17 - self.encode_with(encoder) 21 + let time_taken = self.encode_with(encoder)?; 22 + 23 + let _ = notify_rust::Notification::new() 24 + .appname("Shapemaker") 25 + .summary(&format!( 26 + "{} is ready", 27 + ui::format_filepath(&output_file.into()) 28 + )) 29 + .body(&format!( 30 + "Encoded with {encoder_name} in {}", 31 + ui::format_duration(time_taken) 32 + )) 33 + .show(); 34 + 35 + Ok(time_taken) 18 36 } 19 37 20 38 fn setup_encoder( ··· 87 105 pub fn encode_with( 88 106 &mut self, 89 107 mut encoder: Box<dyn Encoder + Send>, 90 - ) -> Result<()> { 108 + ) -> Result<std::time::Duration> { 91 109 debug_time!("encode_with"); 92 110 93 111 self.progress.remove(&self.progress_bars.loading); ··· 99 117 100 118 let (tx, rx) = std::sync::mpsc::sync_channel::<EngineOutput>(1_000); 101 119 102 - let encoder_thread = thread::spawn(move || { 103 - for output in rx.iter() { 104 - match output { 105 - EngineOutput::Finished => break, 106 - EngineOutput::Frame { .. } => { 107 - pb.inc(1); 108 - pb.set_message(encoder.progress_message( 109 - pb.position(), 110 - pb.length().unwrap(), 111 - )); 120 + let encoder_thread = 121 + thread::spawn(move || -> Result<std::time::Duration> { 122 + for output in rx.iter() { 123 + match output { 124 + EngineOutput::Finished => break, 125 + EngineOutput::Frame { .. } => { 126 + pb.inc(1); 127 + pb.set_message(encoder.progress_message( 128 + pb.position(), 129 + pb.length().unwrap(), 130 + )); 131 + } 112 132 } 133 + 134 + encoder.encode_frame(output)?; 113 135 } 114 136 115 - encoder.encode_frame(output).expect("Couldn't encode frame"); 116 - } 137 + let time_taken = pb.elapsed(); 138 + let finish_message = encoder.finish_message(time_taken); 117 139 118 - let finish_message = encoder.finish_message(pb.elapsed()); 140 + encoder.finish()?; 119 141 120 - encoder.finish().expect("Couldn't finish encoding"); 142 + pb.finish(); 143 + pb.log("Encoded", &finish_message); 121 144 122 - pb.finish(); 123 - pb.log("Encoded", &finish_message); 124 - }); 145 + Ok(time_taken) 146 + }); 125 147 126 148 self.render_with_overrides(tx)?; 127 149 128 - encoder_thread.join().expect("Encoder thread panicked"); 150 + let time_taken = encoder_thread 151 + .join() 152 + .map_err(|e| anyhow!("Encoder thread panicked: {e:?}")) 153 + .flatten()?; 129 154 130 - self.progress.clear().unwrap(); 155 + let _ = self.progress.clear(); 131 156 132 - Ok(()) 157 + Ok(time_taken) 133 158 } 134 159 135 160 #[allow(dead_code)]