Rockbox open source high quality audio player as a Music Player Daemon
mpris rockbox mpd libadwaita audio rust zig deno
2
fork

Configure Feed

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

Merge pull request #79 from tsirysndr/feat/tui

tui: add rmpc as the default tui

authored by

Tsiry Sandratraina and committed by
GitHub
518bcb0d 044fee09

+1031 -65
+3
.gitmodules
··· 1 1 [submodule "deno"] 2 2 path = deno 3 3 url = https://github.com/tsirysndr/rockbox-deno.git 4 + [submodule "rmpc"] 5 + path = rmpc 6 + url = git@github.com:tsirysndr/rmpc.git
+861 -49
Cargo.lock
··· 62 62 dependencies = [ 63 63 "actix-utils", 64 64 "actix-web", 65 - "derive_more", 65 + "derive_more 0.99.18", 66 66 "futures-util", 67 67 "log", 68 68 "once_cell", ··· 81 81 "actix-web", 82 82 "bitflags 2.6.0", 83 83 "bytes", 84 - "derive_more", 84 + "derive_more 0.99.18", 85 85 "futures-core", 86 86 "http-range", 87 87 "log", ··· 108 108 "brotli", 109 109 "bytes", 110 110 "bytestring", 111 - "derive_more", 111 + "derive_more 0.99.18", 112 112 "encoding_rs", 113 113 "flate2", 114 114 "futures-core", ··· 224 224 "bytestring", 225 225 "cfg-if 1.0.0", 226 226 "cookie", 227 - "derive_more", 227 + "derive_more 0.99.18", 228 228 "encoding_rs", 229 229 "futures-core", 230 230 "futures-util", ··· 389 389 ] 390 390 391 391 [[package]] 392 + name = "aligned-vec" 393 + version = "0.5.0" 394 + source = "registry+https://github.com/rust-lang/crates.io-index" 395 + checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1" 396 + 397 + [[package]] 392 398 name = "alloc-no-stdlib" 393 399 version = "2.0.4" 394 400 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 493 499 version = "1.7.1" 494 500 source = "registry+https://github.com/rust-lang/crates.io-index" 495 501 checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" 502 + 503 + [[package]] 504 + name = "arg_enum_proc_macro" 505 + version = "0.3.4" 506 + source = "registry+https://github.com/rust-lang/crates.io-index" 507 + checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" 508 + dependencies = [ 509 + "proc-macro2", 510 + "quote", 511 + "syn 2.0.91", 512 + ] 496 513 497 514 [[package]] 498 515 name = "arrayvec" ··· 973 990 checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" 974 991 975 992 [[package]] 993 + name = "av1-grain" 994 + version = "0.2.3" 995 + source = "registry+https://github.com/rust-lang/crates.io-index" 996 + checksum = "6678909d8c5d46a42abcf571271e15fdbc0a225e3646cf23762cd415046c78bf" 997 + dependencies = [ 998 + "anyhow", 999 + "arrayvec", 1000 + "log", 1001 + "nom 7.1.3", 1002 + "num-rational", 1003 + "v_frame", 1004 + ] 1005 + 1006 + [[package]] 1007 + name = "avif-serialize" 1008 + version = "0.8.2" 1009 + source = "registry+https://github.com/rust-lang/crates.io-index" 1010 + checksum = "e335041290c43101ca215eed6f43ec437eb5a42125573f600fc3fa42b9bddd62" 1011 + dependencies = [ 1012 + "arrayvec", 1013 + ] 1014 + 1015 + [[package]] 976 1016 name = "axum" 977 1017 version = "0.7.5" 978 1018 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1165 1205 checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" 1166 1206 1167 1207 [[package]] 1208 + name = "bit_field" 1209 + version = "0.10.2" 1210 + source = "registry+https://github.com/rust-lang/crates.io-index" 1211 + checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" 1212 + 1213 + [[package]] 1168 1214 name = "bitflags" 1169 1215 version = "1.3.2" 1170 1216 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1189 1235 ] 1190 1236 1191 1237 [[package]] 1238 + name = "bitstream-io" 1239 + version = "2.6.0" 1240 + source = "registry+https://github.com/rust-lang/crates.io-index" 1241 + checksum = "6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2" 1242 + 1243 + [[package]] 1192 1244 name = "bitvec" 1193 1245 version = "1.0.1" 1194 1246 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1289 1341 ] 1290 1342 1291 1343 [[package]] 1344 + name = "built" 1345 + version = "0.7.5" 1346 + source = "registry+https://github.com/rust-lang/crates.io-index" 1347 + checksum = "c360505aed52b7ec96a3636c3f039d99103c37d1d9b4f7a8c743d3ea9ffcd03b" 1348 + 1349 + [[package]] 1292 1350 name = "bumpalo" 1293 1351 version = "3.16.0" 1294 1352 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1308 1366 version = "1.5.0" 1309 1367 source = "registry+https://github.com/rust-lang/crates.io-index" 1310 1368 checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 1369 + 1370 + [[package]] 1371 + name = "byteorder-lite" 1372 + version = "0.1.0" 1373 + source = "registry+https://github.com/rust-lang/crates.io-index" 1374 + checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" 1311 1375 1312 1376 [[package]] 1313 1377 name = "bytes" ··· 1353 1417 dependencies = [ 1354 1418 "glib-sys", 1355 1419 "libc", 1356 - "system-deps", 1420 + "system-deps 7.0.3", 1357 1421 ] 1358 1422 1359 1423 [[package]] ··· 1376 1440 ] 1377 1441 1378 1442 [[package]] 1443 + name = "cassowary" 1444 + version = "0.3.0" 1445 + source = "registry+https://github.com/rust-lang/crates.io-index" 1446 + checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" 1447 + 1448 + [[package]] 1449 + name = "castaway" 1450 + version = "0.2.3" 1451 + source = "registry+https://github.com/rust-lang/crates.io-index" 1452 + checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5" 1453 + dependencies = [ 1454 + "rustversion", 1455 + ] 1456 + 1457 + [[package]] 1379 1458 name = "cbc" 1380 1459 version = "0.1.2" 1381 1460 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1408 1487 checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" 1409 1488 dependencies = [ 1410 1489 "nom 7.1.3", 1490 + ] 1491 + 1492 + [[package]] 1493 + name = "cfg-expr" 1494 + version = "0.15.8" 1495 + source = "registry+https://github.com/rust-lang/crates.io-index" 1496 + checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" 1497 + dependencies = [ 1498 + "smallvec", 1499 + "target-lexicon", 1411 1500 ] 1412 1501 1413 1502 [[package]] ··· 1504 1593 checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019" 1505 1594 dependencies = [ 1506 1595 "clap_builder", 1596 + "clap_derive", 1507 1597 ] 1508 1598 1509 1599 [[package]] ··· 1539 1629 ] 1540 1630 1541 1631 [[package]] 1632 + name = "clap_derive" 1633 + version = "4.5.13" 1634 + source = "registry+https://github.com/rust-lang/crates.io-index" 1635 + checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" 1636 + dependencies = [ 1637 + "heck 0.5.0", 1638 + "proc-macro2", 1639 + "quote", 1640 + "syn 2.0.91", 1641 + ] 1642 + 1643 + [[package]] 1542 1644 name = "clap_lex" 1543 1645 version = "0.7.2" 1544 1646 source = "registry+https://github.com/rust-lang/crates.io-index" 1545 1647 checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" 1546 1648 1547 1649 [[package]] 1650 + name = "clap_mangen" 1651 + version = "0.2.24" 1652 + source = "registry+https://github.com/rust-lang/crates.io-index" 1653 + checksum = "fbae9cbfdc5d4fa8711c09bd7b83f644cb48281ac35bf97af3e47b0675864bdf" 1654 + dependencies = [ 1655 + "clap", 1656 + "roff", 1657 + ] 1658 + 1659 + [[package]] 1548 1660 name = "clipboard-win" 1549 1661 version = "5.4.0" 1550 1662 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1604 1716 version = "1.0.2" 1605 1717 source = "registry+https://github.com/rust-lang/crates.io-index" 1606 1718 checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" 1719 + 1720 + [[package]] 1721 + name = "compact_str" 1722 + version = "0.8.1" 1723 + source = "registry+https://github.com/rust-lang/crates.io-index" 1724 + checksum = "3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32" 1725 + dependencies = [ 1726 + "castaway", 1727 + "cfg-if 1.0.0", 1728 + "itoa", 1729 + "rustversion", 1730 + "ryu", 1731 + "static_assertions", 1732 + ] 1607 1733 1608 1734 [[package]] 1609 1735 name = "comrak" ··· 1795 1921 checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" 1796 1922 1797 1923 [[package]] 1924 + name = "crossterm" 1925 + version = "0.28.1" 1926 + source = "registry+https://github.com/rust-lang/crates.io-index" 1927 + checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" 1928 + dependencies = [ 1929 + "bitflags 2.6.0", 1930 + "crossterm_winapi", 1931 + "mio 1.0.2", 1932 + "parking_lot", 1933 + "rustix", 1934 + "serde", 1935 + "signal-hook", 1936 + "signal-hook-mio", 1937 + "winapi", 1938 + ] 1939 + 1940 + [[package]] 1941 + name = "crossterm_winapi" 1942 + version = "0.9.1" 1943 + source = "registry+https://github.com/rust-lang/crates.io-index" 1944 + checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" 1945 + dependencies = [ 1946 + "winapi", 1947 + ] 1948 + 1949 + [[package]] 1798 1950 name = "crunchy" 1799 1951 version = "0.2.2" 1800 1952 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2241 2393 dependencies = [ 2242 2394 "deno_core", 2243 2395 "deno_webgpu", 2244 - "image", 2396 + "image 0.24.9", 2245 2397 "serde", 2246 2398 "thiserror 2.0.9", 2247 2399 ] ··· 2631 2783 dependencies = [ 2632 2784 "anyhow", 2633 2785 "deno_ast", 2634 - "derive_more", 2786 + "derive_more 0.99.18", 2635 2787 "if_chain", 2636 2788 "log", 2637 2789 "once_cell", ··· 3393 3545 ] 3394 3546 3395 3547 [[package]] 3548 + name = "derive_more" 3549 + version = "1.0.0" 3550 + source = "registry+https://github.com/rust-lang/crates.io-index" 3551 + checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" 3552 + dependencies = [ 3553 + "derive_more-impl", 3554 + ] 3555 + 3556 + [[package]] 3557 + name = "derive_more-impl" 3558 + version = "1.0.0" 3559 + source = "registry+https://github.com/rust-lang/crates.io-index" 3560 + checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" 3561 + dependencies = [ 3562 + "proc-macro2", 3563 + "quote", 3564 + "syn 2.0.91", 3565 + "unicode-xid", 3566 + ] 3567 + 3568 + [[package]] 3396 3569 name = "deunicode" 3397 3570 version = "1.6.0" 3398 3571 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3512 3685 checksum = "c4d33be9473d06f75f58220f71f7a9317aca647dc061dbd3c361b0bef505fbea" 3513 3686 dependencies = [ 3514 3687 "byteorder", 3515 - "quick-error", 3688 + "quick-error 1.2.3", 3516 3689 ] 3517 3690 3518 3691 [[package]] ··· 3830 4003 ] 3831 4004 3832 4005 [[package]] 4006 + name = "enum-map" 4007 + version = "2.7.3" 4008 + source = "registry+https://github.com/rust-lang/crates.io-index" 4009 + checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" 4010 + dependencies = [ 4011 + "enum-map-derive", 4012 + ] 4013 + 4014 + [[package]] 4015 + name = "enum-map-derive" 4016 + version = "0.17.0" 4017 + source = "registry+https://github.com/rust-lang/crates.io-index" 4018 + checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" 4019 + dependencies = [ 4020 + "proc-macro2", 4021 + "quote", 4022 + "syn 2.0.91", 4023 + ] 4024 + 4025 + [[package]] 3833 4026 name = "enumflags2" 3834 4027 version = "0.7.10" 3835 4028 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3896 4089 3897 4090 [[package]] 3898 4091 name = "errno" 3899 - version = "0.3.9" 4092 + version = "0.3.10" 3900 4093 source = "registry+https://github.com/rust-lang/crates.io-index" 3901 - checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" 4094 + checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" 3902 4095 dependencies = [ 3903 4096 "libc", 3904 - "windows-sys 0.52.0", 4097 + "windows-sys 0.59.0", 3905 4098 ] 3906 4099 3907 4100 [[package]] ··· 3965 4158 ] 3966 4159 3967 4160 [[package]] 4161 + name = "exr" 4162 + version = "1.73.0" 4163 + source = "registry+https://github.com/rust-lang/crates.io-index" 4164 + checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0" 4165 + dependencies = [ 4166 + "bit_field", 4167 + "half", 4168 + "lebe", 4169 + "miniz_oxide 0.8.0", 4170 + "rayon-core", 4171 + "smallvec", 4172 + "zune-inflate", 4173 + ] 4174 + 4175 + [[package]] 3968 4176 name = "failure" 3969 4177 version = "0.1.8" 3970 4178 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4144 4352 4145 4353 [[package]] 4146 4354 name = "flate2" 4147 - version = "1.0.33" 4355 + version = "1.0.35" 4148 4356 source = "registry+https://github.com/rust-lang/crates.io-index" 4149 - checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" 4357 + checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" 4150 4358 dependencies = [ 4151 4359 "crc32fast", 4152 4360 "libz-sys", 4153 4361 "miniz_oxide 0.8.0", 4362 + ] 4363 + 4364 + [[package]] 4365 + name = "flexi_logger" 4366 + version = "0.29.8" 4367 + source = "registry+https://github.com/rust-lang/crates.io-index" 4368 + checksum = "88a5a6882b2e137c4f2664562995865084eb5a00611fba30c582ef10354c4ad8" 4369 + dependencies = [ 4370 + "chrono", 4371 + "log", 4372 + "nu-ansi-term", 4373 + "regex", 4374 + "thiserror 2.0.9", 4154 4375 ] 4155 4376 4156 4377 [[package]] ··· 4446 4667 "glib-sys", 4447 4668 "gobject-sys", 4448 4669 "libc", 4449 - "system-deps", 4670 + "system-deps 7.0.3", 4450 4671 ] 4451 4672 4452 4673 [[package]] ··· 4478 4699 "libc", 4479 4700 "pango-sys", 4480 4701 "pkg-config", 4481 - "system-deps", 4702 + "system-deps 7.0.3", 4482 4703 ] 4483 4704 4484 4705 [[package]] ··· 4516 4737 ] 4517 4738 4518 4739 [[package]] 4740 + name = "gif" 4741 + version = "0.13.1" 4742 + source = "registry+https://github.com/rust-lang/crates.io-index" 4743 + checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" 4744 + dependencies = [ 4745 + "color_quant", 4746 + "weezl", 4747 + ] 4748 + 4749 + [[package]] 4519 4750 name = "gimli" 4520 4751 version = "0.31.0" 4521 4752 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4547 4778 "glib-sys", 4548 4779 "gobject-sys", 4549 4780 "libc", 4550 - "system-deps", 4781 + "system-deps 7.0.3", 4551 4782 "windows-sys 0.52.0", 4552 4783 ] 4553 4784 ··· 4603 4834 checksum = "3d0b1827e8621fc42c0dfb228e5d57ff6a71f9699e666ece8113f979ad87c2de" 4604 4835 dependencies = [ 4605 4836 "libc", 4606 - "system-deps", 4837 + "system-deps 7.0.3", 4607 4838 ] 4608 4839 4609 4840 [[package]] ··· 4675 4906 dependencies = [ 4676 4907 "glib-sys", 4677 4908 "libc", 4678 - "system-deps", 4909 + "system-deps 7.0.3", 4679 4910 ] 4680 4911 4681 4912 [[package]] ··· 4737 4968 "glib-sys", 4738 4969 "libc", 4739 4970 "pkg-config", 4740 - "system-deps", 4971 + "system-deps 7.0.3", 4741 4972 ] 4742 4973 4743 4974 [[package]] ··· 4779 5010 "graphene-sys", 4780 5011 "libc", 4781 5012 "pango-sys", 4782 - "system-deps", 5013 + "system-deps 7.0.3", 4783 5014 ] 4784 5015 4785 5016 [[package]] ··· 4841 5072 "gsk4-sys", 4842 5073 "libc", 4843 5074 "pango-sys", 4844 - "system-deps", 5075 + "system-deps 7.0.3", 4845 5076 ] 4846 5077 4847 5078 [[package]] ··· 4889 5120 "tokio", 4890 5121 "tokio-util", 4891 5122 "tracing", 5123 + ] 5124 + 5125 + [[package]] 5126 + name = "half" 5127 + version = "2.4.1" 5128 + source = "registry+https://github.com/rust-lang/crates.io-index" 5129 + checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" 5130 + dependencies = [ 5131 + "cfg-if 1.0.0", 5132 + "crunchy", 4892 5133 ] 4893 5134 4894 5135 [[package]] ··· 5111 5352 dependencies = [ 5112 5353 "cfg-if 1.0.0", 5113 5354 "libc", 5114 - "windows", 5355 + "windows 0.52.0", 5115 5356 ] 5116 5357 5117 5358 [[package]] ··· 5329 5570 "iana-time-zone-haiku", 5330 5571 "js-sys", 5331 5572 "wasm-bindgen", 5332 - "windows-core", 5573 + "windows-core 0.52.0", 5333 5574 ] 5334 5575 5335 5576 [[package]] ··· 5543 5784 ] 5544 5785 5545 5786 [[package]] 5787 + name = "image" 5788 + version = "0.25.5" 5789 + source = "registry+https://github.com/rust-lang/crates.io-index" 5790 + checksum = "cd6f44aed642f18953a158afeb30206f4d50da59fbc66ecb53c66488de73563b" 5791 + dependencies = [ 5792 + "bytemuck", 5793 + "byteorder-lite", 5794 + "color_quant", 5795 + "exr", 5796 + "gif", 5797 + "image-webp", 5798 + "num-traits", 5799 + "png", 5800 + "qoi", 5801 + "ravif", 5802 + "rayon", 5803 + "rgb", 5804 + "tiff", 5805 + "zune-core", 5806 + "zune-jpeg", 5807 + ] 5808 + 5809 + [[package]] 5810 + name = "image-webp" 5811 + version = "0.2.0" 5812 + source = "registry+https://github.com/rust-lang/crates.io-index" 5813 + checksum = "e031e8e3d94711a9ccb5d6ea357439ef3dcbed361798bd4071dc4d9793fbe22f" 5814 + dependencies = [ 5815 + "byteorder-lite", 5816 + "quick-error 2.0.1", 5817 + ] 5818 + 5819 + [[package]] 5820 + name = "imgref" 5821 + version = "1.11.0" 5822 + source = "registry+https://github.com/rust-lang/crates.io-index" 5823 + checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408" 5824 + 5825 + [[package]] 5546 5826 name = "impl-more" 5547 5827 version = "0.1.6" 5548 5828 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5571 5851 dependencies = [ 5572 5852 "autocfg", 5573 5853 "hashbrown 0.12.3", 5854 + "serde", 5574 5855 ] 5575 5856 5576 5857 [[package]] ··· 5585 5866 ] 5586 5867 5587 5868 [[package]] 5869 + name = "indoc" 5870 + version = "2.0.5" 5871 + source = "registry+https://github.com/rust-lang/crates.io-index" 5872 + checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" 5873 + 5874 + [[package]] 5588 5875 name = "inotify" 5589 5876 version = "0.9.6" 5590 5877 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5615 5902 ] 5616 5903 5617 5904 [[package]] 5905 + name = "instability" 5906 + version = "0.3.6" 5907 + source = "registry+https://github.com/rust-lang/crates.io-index" 5908 + checksum = "894813a444908c0c8c0e221b041771d107c4a21de1d317dc49bcc66e3c9e5b3f" 5909 + dependencies = [ 5910 + "darling", 5911 + "indoc", 5912 + "proc-macro2", 5913 + "quote", 5914 + "syn 2.0.91", 5915 + ] 5916 + 5917 + [[package]] 5618 5918 name = "instant" 5619 5919 version = "0.1.13" 5620 5920 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5624 5924 "js-sys", 5625 5925 "wasm-bindgen", 5626 5926 "web-sys", 5927 + ] 5928 + 5929 + [[package]] 5930 + name = "interpolate_name" 5931 + version = "0.2.4" 5932 + source = "registry+https://github.com/rust-lang/crates.io-index" 5933 + checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" 5934 + dependencies = [ 5935 + "proc-macro2", 5936 + "quote", 5937 + "syn 2.0.91", 5627 5938 ] 5628 5939 5629 5940 [[package]] ··· 5750 6061 ] 5751 6062 5752 6063 [[package]] 6064 + name = "jpeg-decoder" 6065 + version = "0.3.1" 6066 + source = "registry+https://github.com/rust-lang/crates.io-index" 6067 + checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" 6068 + 6069 + [[package]] 5753 6070 name = "js-sys" 5754 6071 version = "0.3.76" 5755 6072 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5899 6216 ] 5900 6217 5901 6218 [[package]] 6219 + name = "lebe" 6220 + version = "0.5.2" 6221 + source = "registry+https://github.com/rust-lang/crates.io-index" 6222 + checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" 6223 + 6224 + [[package]] 5902 6225 name = "levenshtein_automata" 5903 6226 version = "0.2.1" 5904 6227 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5932 6255 "gtk4-sys", 5933 6256 "libc", 5934 6257 "pango-sys", 5935 - "system-deps", 6258 + "system-deps 7.0.3", 5936 6259 ] 5937 6260 5938 6261 [[package]] ··· 5971 6294 ] 5972 6295 5973 6296 [[package]] 6297 + name = "libfuzzer-sys" 6298 + version = "0.4.8" 6299 + source = "registry+https://github.com/rust-lang/crates.io-index" 6300 + checksum = "9b9569d2f74e257076d8c6bfa73fb505b46b851e51ddaecc825944aa3bed17fa" 6301 + dependencies = [ 6302 + "arbitrary", 6303 + "cc", 6304 + ] 6305 + 6306 + [[package]] 5974 6307 name = "libloading" 5975 6308 version = "0.7.4" 5976 6309 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6164 6497 ] 6165 6498 6166 6499 [[package]] 6500 + name = "loop9" 6501 + version = "0.1.5" 6502 + source = "registry+https://github.com/rust-lang/crates.io-index" 6503 + checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" 6504 + dependencies = [ 6505 + "imgref", 6506 + ] 6507 + 6508 + [[package]] 6167 6509 name = "lru" 6168 6510 version = "0.12.5" 6169 6511 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6239 6581 checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" 6240 6582 6241 6583 [[package]] 6584 + name = "maybe-rayon" 6585 + version = "0.1.1" 6586 + source = "registry+https://github.com/rust-lang/crates.io-index" 6587 + checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" 6588 + dependencies = [ 6589 + "cfg-if 1.0.0", 6590 + "rayon", 6591 + ] 6592 + 6593 + [[package]] 6242 6594 name = "md-5" 6243 6595 version = "0.10.6" 6244 6596 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6462 6814 6463 6815 [[package]] 6464 6816 name = "mpd-filters" 6465 - version = "0.4.1" 6817 + version = "0.4.6" 6466 6818 source = "registry+https://github.com/rust-lang/crates.io-index" 6467 - checksum = "029e541ef2a61b89028cde291b2497891cf093f97979293ffb16fb6b8814f6d8" 6819 + checksum = "4b89e16b7497fafa2be059ecccae4dcdb5f6754e208d684dee54f77b9614fc63" 6820 + dependencies = [ 6821 + "regex", 6822 + ] 6468 6823 6469 6824 [[package]] 6470 6825 name = "mpris-server" ··· 6652 7007 "memchr", 6653 7008 "minimal-lexical", 6654 7009 ] 7010 + 7011 + [[package]] 7012 + name = "noop_proc_macro" 7013 + version = "0.3.0" 7014 + source = "registry+https://github.com/rust-lang/crates.io-index" 7015 + checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" 6655 7016 6656 7017 [[package]] 6657 7018 name = "normpath" ··· 6691 7052 ] 6692 7053 6693 7054 [[package]] 7055 + name = "nu-ansi-term" 7056 + version = "0.50.1" 7057 + source = "registry+https://github.com/rust-lang/crates.io-index" 7058 + checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" 7059 + dependencies = [ 7060 + "windows-sys 0.52.0", 7061 + ] 7062 + 7063 + [[package]] 6694 7064 name = "num" 6695 7065 version = "0.4.3" 6696 7066 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6750 7120 checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" 6751 7121 6752 7122 [[package]] 7123 + name = "num-derive" 7124 + version = "0.4.2" 7125 + source = "registry+https://github.com/rust-lang/crates.io-index" 7126 + checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" 7127 + dependencies = [ 7128 + "proc-macro2", 7129 + "quote", 7130 + "syn 2.0.91", 7131 + ] 7132 + 7133 + [[package]] 6753 7134 name = "num-integer" 6754 7135 version = "0.1.46" 6755 7136 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6812 7193 checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" 6813 7194 dependencies = [ 6814 7195 "hermit-abi 0.3.9", 7196 + "libc", 7197 + ] 7198 + 7199 + [[package]] 7200 + name = "num_threads" 7201 + version = "0.1.7" 7202 + source = "registry+https://github.com/rust-lang/crates.io-index" 7203 + checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" 7204 + dependencies = [ 6815 7205 "libc", 6816 7206 ] 6817 7207 ··· 7123 7513 "glib-sys", 7124 7514 "gobject-sys", 7125 7515 "libc", 7126 - "system-deps", 7516 + "system-deps 7.0.3", 7127 7517 ] 7128 7518 7129 7519 [[package]] ··· 7593 7983 version = "1.0.15" 7594 7984 source = "registry+https://github.com/rust-lang/crates.io-index" 7595 7985 checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" 7986 + dependencies = [ 7987 + "profiling-procmacros", 7988 + ] 7989 + 7990 + [[package]] 7991 + name = "profiling-procmacros" 7992 + version = "1.0.16" 7993 + source = "registry+https://github.com/rust-lang/crates.io-index" 7994 + checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30" 7995 + dependencies = [ 7996 + "quote", 7997 + "syn 2.0.91", 7998 + ] 7596 7999 7597 8000 [[package]] 7598 8001 name = "prost" ··· 7739 8142 ] 7740 8143 7741 8144 [[package]] 8145 + name = "qoi" 8146 + version = "0.4.1" 8147 + source = "registry+https://github.com/rust-lang/crates.io-index" 8148 + checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" 8149 + dependencies = [ 8150 + "bytemuck", 8151 + ] 8152 + 8153 + [[package]] 7742 8154 name = "quanta" 7743 8155 version = "0.12.4" 7744 8156 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 7773 8185 checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" 7774 8186 7775 8187 [[package]] 8188 + name = "quick-error" 8189 + version = "2.0.1" 8190 + source = "registry+https://github.com/rust-lang/crates.io-index" 8191 + checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" 8192 + 8193 + [[package]] 7776 8194 name = "quick-junit" 7777 8195 version = "0.3.6" 7778 8196 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 7797 8215 7798 8216 [[package]] 7799 8217 name = "quinn" 7800 - version = "0.11.3" 8218 + version = "0.11.6" 7801 8219 source = "registry+https://github.com/rust-lang/crates.io-index" 7802 - checksum = "b22d8e7369034b9a7132bc2008cac12f2013c8132b45e0554e6e20e2617f2156" 8220 + checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" 7803 8221 dependencies = [ 7804 8222 "bytes", 7805 8223 "pin-project-lite", ··· 7808 8226 "rustc-hash 2.0.0", 7809 8227 "rustls 0.23.13", 7810 8228 "socket2 0.5.7", 7811 - "thiserror 1.0.63", 8229 + "thiserror 2.0.9", 7812 8230 "tokio", 7813 8231 "tracing", 7814 8232 ] 7815 8233 7816 8234 [[package]] 7817 8235 name = "quinn-proto" 7818 - version = "0.11.6" 8236 + version = "0.11.9" 7819 8237 source = "registry+https://github.com/rust-lang/crates.io-index" 7820 - checksum = "ba92fb39ec7ad06ca2582c0ca834dfeadcaf06ddfc8e635c80aa7e1c05315fdd" 8238 + checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" 7821 8239 dependencies = [ 7822 8240 "bytes", 8241 + "getrandom", 7823 8242 "rand", 7824 8243 "ring", 7825 8244 "rustc-hash 2.0.0", 7826 8245 "rustls 0.23.13", 8246 + "rustls-pki-types", 7827 8247 "slab", 7828 - "thiserror 1.0.63", 8248 + "thiserror 2.0.9", 7829 8249 "tinyvec", 7830 8250 "tracing", 8251 + "web-time", 7831 8252 ] 7832 8253 7833 8254 [[package]] ··· 7942 8363 checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab" 7943 8364 7944 8365 [[package]] 8366 + name = "ratatui" 8367 + version = "0.28.1" 8368 + source = "registry+https://github.com/rust-lang/crates.io-index" 8369 + checksum = "fdef7f9be5c0122f890d58bdf4d964349ba6a6161f705907526d891efabba57d" 8370 + dependencies = [ 8371 + "bitflags 2.6.0", 8372 + "cassowary", 8373 + "compact_str", 8374 + "crossterm", 8375 + "instability", 8376 + "itertools 0.13.0", 8377 + "lru", 8378 + "paste", 8379 + "strum 0.26.3", 8380 + "strum_macros 0.26.4", 8381 + "time", 8382 + "unicode-segmentation", 8383 + "unicode-truncate", 8384 + "unicode-width", 8385 + ] 8386 + 8387 + [[package]] 8388 + name = "rav1e" 8389 + version = "0.7.1" 8390 + source = "registry+https://github.com/rust-lang/crates.io-index" 8391 + checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9" 8392 + dependencies = [ 8393 + "arbitrary", 8394 + "arg_enum_proc_macro", 8395 + "arrayvec", 8396 + "av1-grain", 8397 + "bitstream-io", 8398 + "built", 8399 + "cfg-if 1.0.0", 8400 + "interpolate_name", 8401 + "itertools 0.12.1", 8402 + "libc", 8403 + "libfuzzer-sys", 8404 + "log", 8405 + "maybe-rayon", 8406 + "new_debug_unreachable", 8407 + "noop_proc_macro", 8408 + "num-derive", 8409 + "num-traits", 8410 + "once_cell", 8411 + "paste", 8412 + "profiling", 8413 + "rand", 8414 + "rand_chacha", 8415 + "simd_helpers", 8416 + "system-deps 6.2.2", 8417 + "thiserror 1.0.63", 8418 + "v_frame", 8419 + "wasm-bindgen", 8420 + ] 8421 + 8422 + [[package]] 8423 + name = "ravif" 8424 + version = "0.11.11" 8425 + source = "registry+https://github.com/rust-lang/crates.io-index" 8426 + checksum = "2413fd96bd0ea5cdeeb37eaf446a22e6ed7b981d792828721e74ded1980a45c6" 8427 + dependencies = [ 8428 + "avif-serialize", 8429 + "imgref", 8430 + "loop9", 8431 + "quick-error 2.0.1", 8432 + "rav1e", 8433 + "rayon", 8434 + "rgb", 8435 + ] 8436 + 8437 + [[package]] 7945 8438 name = "raw-cpuid" 7946 8439 version = "11.2.0" 7947 8440 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 8112 8605 checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" 8113 8606 dependencies = [ 8114 8607 "hostname 0.3.1", 8115 - "quick-error", 8608 + "quick-error 1.2.3", 8116 8609 ] 8117 8610 8118 8611 [[package]] ··· 8124 8617 "hmac", 8125 8618 "subtle", 8126 8619 ] 8620 + 8621 + [[package]] 8622 + name = "rgb" 8623 + version = "0.8.50" 8624 + source = "registry+https://github.com/rust-lang/crates.io-index" 8625 + checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" 8127 8626 8128 8627 [[package]] 8129 8628 name = "ring" ··· 8150 8649 ] 8151 8650 8152 8651 [[package]] 8652 + name = "rmpc" 8653 + version = "0.6.0" 8654 + dependencies = [ 8655 + "anyhow", 8656 + "base64 0.22.1", 8657 + "bitflags 2.6.0", 8658 + "chrono", 8659 + "clap", 8660 + "clap_complete", 8661 + "clap_mangen", 8662 + "color_quant", 8663 + "crossterm", 8664 + "derive_more 1.0.0", 8665 + "either", 8666 + "enum-map", 8667 + "flate2", 8668 + "flexi_logger", 8669 + "image 0.25.5", 8670 + "itertools 0.13.0", 8671 + "log", 8672 + "ratatui", 8673 + "ron", 8674 + "rustix", 8675 + "serde", 8676 + "serde_json", 8677 + "serde_with", 8678 + "strum 0.26.3", 8679 + "sysinfo", 8680 + "textwrap", 8681 + "time", 8682 + "url", 8683 + "vergen-gitcl", 8684 + "walkdir", 8685 + "which 6.0.3", 8686 + ] 8687 + 8688 + [[package]] 8153 8689 name = "rockbox" 8154 8690 version = "0.1.0" 8155 8691 dependencies = [ ··· 8160 8696 "opener", 8161 8697 "owo-colors 4.1.0", 8162 8698 "prost", 8699 + "rmpc", 8163 8700 "tokio", 8164 8701 "tonic", 8165 8702 "tonic-build", ··· 8459 8996 ] 8460 8997 8461 8998 [[package]] 8999 + name = "roff" 9000 + version = "0.2.2" 9001 + source = "registry+https://github.com/rust-lang/crates.io-index" 9002 + checksum = "88f8660c1ff60292143c98d08fc6e2f654d722db50410e3f3797d40baaf9d8f3" 9003 + 9004 + [[package]] 8462 9005 name = "ron" 8463 9006 version = "0.8.1" 8464 9007 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 8634 9177 8635 9178 [[package]] 8636 9179 name = "rustix" 8637 - version = "0.38.36" 9180 + version = "0.38.42" 8638 9181 source = "registry+https://github.com/rust-lang/crates.io-index" 8639 - checksum = "3f55e80d50763938498dd5ebb18647174e0c76dc38c5505294bb224624f30f36" 9182 + checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" 8640 9183 dependencies = [ 8641 9184 "bitflags 2.6.0", 8642 - "errno 0.3.9", 9185 + "errno 0.3.10", 8643 9186 "libc", 8644 9187 "linux-raw-sys", 8645 - "windows-sys 0.52.0", 9188 + "windows-sys 0.59.0", 8646 9189 ] 8647 9190 8648 9191 [[package]] ··· 8700 9243 version = "1.8.0" 8701 9244 source = "registry+https://github.com/rust-lang/crates.io-index" 8702 9245 checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" 9246 + dependencies = [ 9247 + "web-time", 9248 + ] 8703 9249 8704 9250 [[package]] 8705 9251 name = "rustls-tokio-stream" ··· 8736 9282 8737 9283 [[package]] 8738 9284 name = "rustversion" 8739 - version = "1.0.17" 9285 + version = "1.0.19" 8740 9286 source = "registry+https://github.com/rust-lang/crates.io-index" 8741 - checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" 9287 + checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" 8742 9288 8743 9289 [[package]] 8744 9290 name = "rustyline" ··· 8917 9463 8918 9464 [[package]] 8919 9465 name = "serde" 8920 - version = "1.0.213" 9466 + version = "1.0.217" 8921 9467 source = "registry+https://github.com/rust-lang/crates.io-index" 8922 - checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1" 9468 + checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" 8923 9469 dependencies = [ 8924 9470 "serde_derive", 8925 9471 ] ··· 8956 9502 8957 9503 [[package]] 8958 9504 name = "serde_derive" 8959 - version = "1.0.213" 9505 + version = "1.0.217" 8960 9506 source = "registry+https://github.com/rust-lang/crates.io-index" 8961 - checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5" 9507 + checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" 8962 9508 dependencies = [ 8963 9509 "proc-macro2", 8964 9510 "quote", ··· 8967 9513 8968 9514 [[package]] 8969 9515 name = "serde_json" 8970 - version = "1.0.128" 9516 + version = "1.0.134" 8971 9517 source = "registry+https://github.com/rust-lang/crates.io-index" 8972 - checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" 9518 + checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" 8973 9519 dependencies = [ 8974 9520 "indexmap 2.5.0", 8975 9521 "itoa", ··· 9024 9570 ] 9025 9571 9026 9572 [[package]] 9573 + name = "serde_with" 9574 + version = "3.12.0" 9575 + source = "registry+https://github.com/rust-lang/crates.io-index" 9576 + checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" 9577 + dependencies = [ 9578 + "base64 0.22.1", 9579 + "chrono", 9580 + "hex", 9581 + "indexmap 1.9.3", 9582 + "indexmap 2.5.0", 9583 + "serde", 9584 + "serde_derive", 9585 + "serde_json", 9586 + "serde_with_macros", 9587 + "time", 9588 + ] 9589 + 9590 + [[package]] 9591 + name = "serde_with_macros" 9592 + version = "3.12.0" 9593 + source = "registry+https://github.com/rust-lang/crates.io-index" 9594 + checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" 9595 + dependencies = [ 9596 + "darling", 9597 + "proc-macro2", 9598 + "quote", 9599 + "syn 2.0.91", 9600 + ] 9601 + 9602 + [[package]] 9027 9603 name = "serdect" 9028 9604 version = "0.2.0" 9029 9605 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 9103 9679 ] 9104 9680 9105 9681 [[package]] 9682 + name = "signal-hook-mio" 9683 + version = "0.2.4" 9684 + source = "registry+https://github.com/rust-lang/crates.io-index" 9685 + checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" 9686 + dependencies = [ 9687 + "libc", 9688 + "mio 1.0.2", 9689 + "signal-hook", 9690 + ] 9691 + 9692 + [[package]] 9106 9693 name = "signal-hook-registry" 9107 9694 version = "1.4.2" 9108 9695 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 9152 9739 ] 9153 9740 9154 9741 [[package]] 9742 + name = "simd_helpers" 9743 + version = "0.1.0" 9744 + source = "registry+https://github.com/rust-lang/crates.io-index" 9745 + checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" 9746 + dependencies = [ 9747 + "quote", 9748 + ] 9749 + 9750 + [[package]] 9155 9751 name = "simdutf8" 9156 9752 version = "0.1.4" 9157 9753 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 9228 9824 "static_assertions", 9229 9825 "version_check", 9230 9826 ] 9827 + 9828 + [[package]] 9829 + name = "smawk" 9830 + version = "0.3.2" 9831 + source = "registry+https://github.com/rust-lang/crates.io-index" 9832 + checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" 9231 9833 9232 9834 [[package]] 9233 9835 name = "socket2" ··· 10167 10769 ] 10168 10770 10169 10771 [[package]] 10772 + name = "sysinfo" 10773 + version = "0.31.4" 10774 + source = "registry+https://github.com/rust-lang/crates.io-index" 10775 + checksum = "355dbe4f8799b304b05e1b0f05fc59b2a18d36645cf169607da45bde2f69a1be" 10776 + dependencies = [ 10777 + "core-foundation-sys", 10778 + "libc", 10779 + "memchr", 10780 + "ntapi", 10781 + "rayon", 10782 + "windows 0.57.0", 10783 + ] 10784 + 10785 + [[package]] 10786 + name = "system-deps" 10787 + version = "6.2.2" 10788 + source = "registry+https://github.com/rust-lang/crates.io-index" 10789 + checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" 10790 + dependencies = [ 10791 + "cfg-expr 0.15.8", 10792 + "heck 0.5.0", 10793 + "pkg-config", 10794 + "toml 0.8.19", 10795 + "version-compare", 10796 + ] 10797 + 10798 + [[package]] 10170 10799 name = "system-deps" 10171 10800 version = "7.0.3" 10172 10801 source = "registry+https://github.com/rust-lang/crates.io-index" 10173 10802 checksum = "66d23aaf9f331227789a99e8de4c91bf46703add012bdfd45fdecdfb2975a005" 10174 10803 dependencies = [ 10175 - "cfg-expr", 10804 + "cfg-expr 0.17.1", 10176 10805 "heck 0.5.0", 10177 10806 "pkg-config", 10178 10807 "toml 0.8.19", ··· 10447 11076 ] 10448 11077 10449 11078 [[package]] 11079 + name = "textwrap" 11080 + version = "0.16.1" 11081 + source = "registry+https://github.com/rust-lang/crates.io-index" 11082 + checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" 11083 + dependencies = [ 11084 + "smawk", 11085 + "unicode-linebreak", 11086 + "unicode-width", 11087 + ] 11088 + 11089 + [[package]] 10450 11090 name = "thiserror" 10451 11091 version = "1.0.63" 10452 11092 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 10512 11152 ] 10513 11153 10514 11154 [[package]] 11155 + name = "tiff" 11156 + version = "0.9.1" 11157 + source = "registry+https://github.com/rust-lang/crates.io-index" 11158 + checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" 11159 + dependencies = [ 11160 + "flate2", 11161 + "jpeg-decoder", 11162 + "weezl", 11163 + ] 11164 + 11165 + [[package]] 10515 11166 name = "time" 10516 11167 version = "0.3.36" 10517 11168 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 10519 11170 dependencies = [ 10520 11171 "deranged", 10521 11172 "itoa", 11173 + "libc", 10522 11174 "num-conv", 11175 + "num_threads", 10523 11176 "powerfmt", 10524 11177 "serde", 10525 11178 "time-core", ··· 11056 11709 checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 11057 11710 11058 11711 [[package]] 11712 + name = "unicode-linebreak" 11713 + version = "0.1.5" 11714 + source = "registry+https://github.com/rust-lang/crates.io-index" 11715 + checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" 11716 + 11717 + [[package]] 11059 11718 name = "unicode-normalization" 11060 11719 version = "0.1.23" 11061 11720 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 11075 11734 version = "1.12.0" 11076 11735 source = "registry+https://github.com/rust-lang/crates.io-index" 11077 11736 checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" 11737 + 11738 + [[package]] 11739 + name = "unicode-truncate" 11740 + version = "1.1.0" 11741 + source = "registry+https://github.com/rust-lang/crates.io-index" 11742 + checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf" 11743 + dependencies = [ 11744 + "itertools 0.13.0", 11745 + "unicode-segmentation", 11746 + "unicode-width", 11747 + ] 11078 11748 11079 11749 [[package]] 11080 11750 name = "unicode-width" ··· 11220 11890 ] 11221 11891 11222 11892 [[package]] 11893 + name = "v_frame" 11894 + version = "0.3.8" 11895 + source = "registry+https://github.com/rust-lang/crates.io-index" 11896 + checksum = "d6f32aaa24bacd11e488aa9ba66369c7cd514885742c9fe08cfe85884db3e92b" 11897 + dependencies = [ 11898 + "aligned-vec", 11899 + "num-traits", 11900 + "wasm-bindgen", 11901 + ] 11902 + 11903 + [[package]] 11223 11904 name = "v_htmlescape" 11224 11905 version = "0.15.8" 11225 11906 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 11250 11931 checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 11251 11932 11252 11933 [[package]] 11934 + name = "vergen" 11935 + version = "9.0.2" 11936 + source = "registry+https://github.com/rust-lang/crates.io-index" 11937 + checksum = "31f25fc8f8f05df455c7941e87f093ad22522a9ff33d7a027774815acf6f0639" 11938 + dependencies = [ 11939 + "anyhow", 11940 + "derive_builder", 11941 + "rustversion", 11942 + "time", 11943 + "vergen-lib", 11944 + ] 11945 + 11946 + [[package]] 11947 + name = "vergen-gitcl" 11948 + version = "1.0.2" 11949 + source = "registry+https://github.com/rust-lang/crates.io-index" 11950 + checksum = "0227006d09f98ab00ea69e9a5e055e676a813cfbed4232986176c86a6080b997" 11951 + dependencies = [ 11952 + "anyhow", 11953 + "derive_builder", 11954 + "rustversion", 11955 + "time", 11956 + "vergen", 11957 + "vergen-lib", 11958 + ] 11959 + 11960 + [[package]] 11961 + name = "vergen-lib" 11962 + version = "0.1.5" 11963 + source = "registry+https://github.com/rust-lang/crates.io-index" 11964 + checksum = "c0c767e6751c09fc85cde58722cf2f1007e80e4c8d5a4321fc90d83dc54ca147" 11965 + dependencies = [ 11966 + "anyhow", 11967 + "derive_builder", 11968 + "rustversion", 11969 + ] 11970 + 11971 + [[package]] 11253 11972 name = "version-compare" 11254 11973 version = "0.2.0" 11255 11974 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 11420 12139 ] 11421 12140 11422 12141 [[package]] 12142 + name = "web-time" 12143 + version = "1.1.0" 12144 + source = "registry+https://github.com/rust-lang/crates.io-index" 12145 + checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" 12146 + dependencies = [ 12147 + "js-sys", 12148 + "wasm-bindgen", 12149 + ] 12150 + 12151 + [[package]] 11423 12152 name = "webpki" 11424 12153 version = "0.22.4" 11425 12154 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 11455 12184 dependencies = [ 11456 12185 "rustls-pki-types", 11457 12186 ] 12187 + 12188 + [[package]] 12189 + name = "weezl" 12190 + version = "0.1.8" 12191 + source = "registry+https://github.com/rust-lang/crates.io-index" 12192 + checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" 11458 12193 11459 12194 [[package]] 11460 12195 name = "wgpu-core" ··· 11587 12322 checksum = "5b2b1bf557d947847a30eb73f79aa6cdb3eaf3ce02f5e9599438f77896a62b3c" 11588 12323 dependencies = [ 11589 12324 "thiserror 1.0.63", 11590 - "windows", 12325 + "windows 0.52.0", 11591 12326 ] 11592 12327 11593 12328 [[package]] ··· 11627 12362 source = "registry+https://github.com/rust-lang/crates.io-index" 11628 12363 checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" 11629 12364 dependencies = [ 11630 - "windows-core", 12365 + "windows-core 0.52.0", 12366 + "windows-targets 0.52.6", 12367 + ] 12368 + 12369 + [[package]] 12370 + name = "windows" 12371 + version = "0.57.0" 12372 + source = "registry+https://github.com/rust-lang/crates.io-index" 12373 + checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" 12374 + dependencies = [ 12375 + "windows-core 0.57.0", 11631 12376 "windows-targets 0.52.6", 11632 12377 ] 11633 12378 ··· 11636 12381 version = "0.52.0" 11637 12382 source = "registry+https://github.com/rust-lang/crates.io-index" 11638 12383 checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" 12384 + dependencies = [ 12385 + "windows-targets 0.52.6", 12386 + ] 12387 + 12388 + [[package]] 12389 + name = "windows-core" 12390 + version = "0.57.0" 12391 + source = "registry+https://github.com/rust-lang/crates.io-index" 12392 + checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" 12393 + dependencies = [ 12394 + "windows-implement", 12395 + "windows-interface", 12396 + "windows-result", 12397 + "windows-targets 0.52.6", 12398 + ] 12399 + 12400 + [[package]] 12401 + name = "windows-implement" 12402 + version = "0.57.0" 12403 + source = "registry+https://github.com/rust-lang/crates.io-index" 12404 + checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" 12405 + dependencies = [ 12406 + "proc-macro2", 12407 + "quote", 12408 + "syn 2.0.91", 12409 + ] 12410 + 12411 + [[package]] 12412 + name = "windows-interface" 12413 + version = "0.57.0" 12414 + source = "registry+https://github.com/rust-lang/crates.io-index" 12415 + checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" 12416 + dependencies = [ 12417 + "proc-macro2", 12418 + "quote", 12419 + "syn 2.0.91", 12420 + ] 12421 + 12422 + [[package]] 12423 + name = "windows-result" 12424 + version = "0.1.2" 12425 + source = "registry+https://github.com/rust-lang/crates.io-index" 12426 + checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" 11639 12427 dependencies = [ 11640 12428 "windows-targets 0.52.6", 11641 12429 ] ··· 12189 12977 dependencies = [ 12190 12978 "cc", 12191 12979 "pkg-config", 12980 + ] 12981 + 12982 + [[package]] 12983 + name = "zune-core" 12984 + version = "0.4.12" 12985 + source = "registry+https://github.com/rust-lang/crates.io-index" 12986 + checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" 12987 + 12988 + [[package]] 12989 + name = "zune-inflate" 12990 + version = "0.2.54" 12991 + source = "registry+https://github.com/rust-lang/crates.io-index" 12992 + checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" 12993 + dependencies = [ 12994 + "simd-adler32", 12995 + ] 12996 + 12997 + [[package]] 12998 + name = "zune-jpeg" 12999 + version = "0.4.14" 13000 + source = "registry+https://github.com/rust-lang/crates.io-index" 13001 + checksum = "99a5bab8d7dedf81405c4bb1f2b83ea057643d9cb28778cea9eecddeedd2e028" 13002 + dependencies = [ 13003 + "zune-core", 12192 13004 ] 12193 13005 12194 13006 [[package]]
+1
Cargo.toml
··· 6 6 "webui", 7 7 ] 8 8 resolver = "2" 9 + exclude = ["rmpc"] 9 10 10 11 [workspace.package] 11 12 authors = ["Tsiry Sandratraina <tsiry.sndr@fluentci.io"]
+1 -1
README.md
··· 119 119 - [x] Fast search engine, built with [Tantivy](https://github.com/quickwit-oss/tantivy) 120 120 - [x] Desktop Client (Electron/Gtk) 121 121 - [x] Rockbox REPL 122 - - [ ] Terminal Client (TUI) 122 + - [x] Terminal Client (TUI) 123 123 - [ ] Android Library 124 124 - [ ] Mobile version (React Native) 125 125 - [ ] Stream from Youtube (audio only)
+1
cli/Cargo.toml
··· 18 18 "deflate-flate2", 19 19 ] } 20 20 deno = { path = "../deno/cli", features = ["upgrade", "__vendored_zlib_ng"] } # a custom fork of Deno with Rockbox extension 21 + rmpc = { path = "../rmpc" } 21 22 22 23 [build-dependencies] 23 24 tonic-build = "0.12.3"
+9 -1
cli/src/cmd/start.rs
··· 4 4 use rockbox::{install_rockboxd, wait_for_rockboxd}; 5 5 6 6 pub fn start() -> Result<(), Error> { 7 - install_rockboxd()?; 8 7 let video_driver = std::env::var("SDL_VIDEODRIVER").unwrap_or_else(|_| "dummy".to_string()); 9 8 10 9 let port = env::var("ROCKBOX_PORT").unwrap_or_else(|_| "6061".to_string()); 11 10 let ui_port = env::var("ROCKBOX_UI_PORT").unwrap_or_else(|_| "6062".to_string()); 12 11 let http_port = env::var("ROCKBOX_HTTP_PORT").unwrap_or_else(|_| "6063".to_string()); 12 + let mpd_port = env::var("MPD_PORT").unwrap_or("6600".to_string()); 13 + 14 + // try to connect to mpd_port to see if mpd server is already running 15 + if wait_for_rockboxd(mpd_port.parse()?, Some(1)).is_ok() { 16 + rmpc::main_tui()?; 17 + return Ok(()); 18 + } 19 + 20 + install_rockboxd()?; 13 21 14 22 match wait_for_rockboxd(port.parse()?, Some(1)) { 15 23 Ok(_) => {}
+5 -1
cli/src/main.rs
··· 34 34 .subcommand( 35 35 Command::new("community").about("Join our community on Discord to chat with us!"), 36 36 ) 37 - .subcommand(Command::new("start").about("Start the Rockbox server")) 37 + .subcommand(Command::new("start").about("Start Rockbox server")) 38 + .subcommand(Command::new("tui").about("Start Rockbox TUI")) 38 39 .subcommand( 39 40 Command::new("webui") 40 41 .about("Open the Rockbox web UI in your browser") ··· 67 68 } 68 69 Some(("repl", _)) => { 69 70 repl(); 71 + } 72 + Some(("tui", _)) => { 73 + rmpc::main_tui()?; 70 74 } 71 75 _ => { 72 76 start()?;
+1 -1
crates/mpd/Cargo.toml
··· 7 7 anyhow = "1.0.93" 8 8 chrono = "0.4.38" 9 9 futures.workspace = true 10 - mpd-filters = "0.4.1" 10 + mpd-filters = "0.4.6" 11 11 regex = "1.11.1" 12 12 rockbox-graphql = {path = "../graphql"} 13 13 rockbox-library = {path = "../library"}
+77 -2
crates/mpd/src/handlers/library.rs
··· 95 95 request: &str, 96 96 stream: &mut BufReader<TcpStream>, 97 97 ) -> Result<String, Error> { 98 - let term = request 98 + let mut term = request 99 99 .trim_matches('"') 100 100 .replace("search Album", "") 101 101 .replace("search Artist", "") ··· 105 105 .replace("search title", "") 106 106 .trim() 107 107 .to_string(); 108 + 109 + if term.starts_with("search ") { 110 + let query = &term[7..]; 111 + term = query.to_string(); 112 + term = term.trim().to_string(); 113 + term = term.trim_matches('"').to_string(); 114 + } 115 + 116 + let mut parser = Parser::new(&term); 117 + if let Ok(expr) = parser.parse() { 118 + let response = evaluate_search_expression(ctx, &expr, false) 119 + .await? 120 + .iter() 121 + .map(|x| { 122 + format!( 123 + "file: {}\nArtist: {}\nAlbum: {}\nTitle: {}\nTrack: {}\nTime: {}\nDuration: {}\n", 124 + x.path, 125 + x.artist, 126 + x.album, 127 + x.title, 128 + x.track_number.unwrap_or_default(), 129 + (x.length / 1000) as u32, 130 + x.length / 1000 131 + ) 132 + }) 133 + .collect::<String>(); 134 + let response = format!("{}OK\n", response); 135 + if !ctx.batch { 136 + stream.write_all(response.as_bytes()).await?; 137 + } 138 + return Ok(response); 139 + } 140 + 108 141 let response = ctx.library.search(SearchRequest { term }).await?; 109 142 let response = response.into_inner(); 110 143 ··· 365 398 }), 366 399 }; 367 400 368 - let tracks = repo::track::filter(ctx.pool.clone(), expr.to_sql(opts)).await?; 401 + let query = expr.to_sql(opts); 402 + 403 + let tracks = match !query.0.contains(" REGEXP") { 404 + true => repo::track::filter(ctx.pool.clone(), query).await?, 405 + false => evaluate_search_expression(ctx, expr, true).await?, 406 + }; 407 + 369 408 let mut response: String = "".to_string(); 370 409 371 410 build_file_metadata(tracks, &mut response).await?; 372 411 373 412 stream.write_all(response.as_bytes()).await?; 374 413 Ok(()) 414 + } 415 + 416 + async fn evaluate_search_expression( 417 + ctx: &mut Context, 418 + expr: &Expression, 419 + case_sensitive: bool, 420 + ) -> Result<Vec<Track>, Error> { 421 + let mut tracks = repo::track::all(ctx.pool.clone()).await?; 422 + tracks = tracks 423 + .into_iter() 424 + .filter(|track| { 425 + let mut record = HashMap::new(); 426 + record.insert("title".to_string(), track.title.clone()); 427 + record.insert("artist".to_string(), track.artist.clone()); 428 + record.insert("album".to_string(), track.album.clone()); 429 + record.insert("album_artist".to_string(), track.album_artist.clone()); 430 + record.insert("file".to_string(), track.path.clone()); 431 + record.insert("filename".to_string(), track.path.clone()); 432 + record.insert( 433 + "genre".to_string(), 434 + track.genre.clone().unwrap_or("".to_string()), 435 + ); 436 + record.insert("Title".to_string(), track.title.clone()); 437 + record.insert("Artist".to_string(), track.artist.clone()); 438 + record.insert("Album".to_string(), track.album.clone()); 439 + record.insert("AlbumArtist".to_string(), track.album_artist.clone()); 440 + record.insert("File".to_string(), track.path.clone()); 441 + record.insert("Filename".to_string(), track.path.clone()); 442 + record.insert( 443 + "Genre".to_string(), 444 + track.genre.clone().unwrap_or("".to_string()), 445 + ); 446 + expr.evaluate(&record, case_sensitive) 447 + }) 448 + .collect(); 449 + Ok(tracks) 375 450 } 376 451 377 452 async fn build_file_metadata(tracks: Vec<Track>, response: &mut String) -> Result<(), Error> {
+9 -6
crates/mpd/src/handlers/playback.rs
··· 140 140 (current_track.length / 1000) as i64 141 141 ); 142 142 let elapsed = (current_track.elapsed / 1000) as i64; 143 + let duration = (current_track.length / 1000) as i64; 143 144 144 145 let single = ctx.single.lock().await; 145 146 let single = single.as_str().replace("\"", ""); ··· 149 150 let current_playlist = ctx.current_playlist.lock().await; 150 151 if current_playlist.is_none() { 151 152 let response = format!( 152 - "state: {}\nrepeat: {}\nsingle: {}\nrandom: {}\ntime: {}\nelapsed: {}\nplaylistlength: 0\nsong: 0\nvolume: {}\naudio: {}\nbitrate: {}\nOK\n", 153 - status, repeat, single, random, time, elapsed, volume, audio, bitrate, 153 + "state: {}\nrepeat: {}\nsingle: {}\nrandom: {}\ntime: {}\nelapsed: {}\nduration: {}\nplaylistlength: 0\nsong: 0\nvolume: {}\naudio: {}\nbitrate: {}\nOK\n", 154 + status, repeat, single, random, time, elapsed, duration, volume, audio, bitrate, 154 155 ); 155 156 if !ctx.batch { 156 157 stream.write_all(response.as_bytes()).await?; ··· 163 164 let song = current_playlist.index; 164 165 165 166 let response = format!( 166 - "state: {}\nrepeat: {}\nsingle: {}\nrandom: {}\ntime: {}\nelapsed: {}\nplaylist: {}\nplaylistlength: {}\nsong: {}\nsongid: {}\nvolume: {}\naudio: {}\nbitrate: {}\nnextsong: {}\nnextsongid: {}\nOK\n", 167 - status, repeat, single, random, time, elapsed, playlistlength + 1, playlistlength, song, song + 1, volume, audio, bitrate, 167 + "state: {}\nrepeat: {}\nsingle: {}\nrandom: {}\ntime: {}\nelapsed: {}\nduration: {}\nplaylist: {}\nplaylistlength: {}\nsong: {}\nsongid: {}\nvolume: {}\naudio: {}\nbitrate: {}\nnextsong: {}\nnextsongid: {}\nOK\n", 168 + status, repeat, single, random, time, elapsed, duration, playlistlength + 1, playlistlength, song, song + 1, volume, audio, bitrate, 168 169 song + 1, song + 2, 169 170 ); 170 171 ··· 480 481 481 482 if current_playlist.is_none() { 482 483 let response = format!( 483 - "file: {}\nTitle: {}\nArtist: {}\nAlbum: {}\nTrack: {}\nDate: {}\nTime: {}\nPos: 0\nOK\n", 484 + "file: {}\nTitle: {}\nArtist: {}\nAlbum: {}\nTrack: {}\nDate: {}\nTime: {}\nPos: 0\nDuration: {}\nOK\n", 484 485 current.path, 485 486 current.title, 486 487 current.artist, ··· 488 489 current.tracknum, 489 490 current.year, 490 491 (current.elapsed / 1000) as i64, 492 + (current.length / 1000) as i64, 491 493 ); 492 494 if !ctx.batch { 493 495 stream.write_all(response.as_bytes()).await?; ··· 497 499 498 500 let current_playlist = current_playlist.as_ref().unwrap(); 499 501 let response = format!( 500 - "file: {}\nTitle: {}\nArtist: {}\nAlbum: {}\nTrack: {}\nDate: {}\nTime: {}\nPos: {}\nOK\n", 502 + "file: {}\nTitle: {}\nArtist: {}\nAlbum: {}\nTrack: {}\nDate: {}\nTime: {}\nPos: {}\nduration: {}\nOK\n", 501 503 current.path, 502 504 current.title, 503 505 current.artist, ··· 506 508 current.year, 507 509 (current.elapsed / 1000) as i64, 508 510 current_playlist.index, 511 + (current.length / 1000) as i64, 509 512 ); 510 513 if !ctx.batch { 511 514 stream.write_all(response.as_bytes()).await?;
+47 -1
crates/mpd/src/handlers/queue.rs
··· 251 251 .map(|x| { 252 252 index += 1; 253 253 format!( 254 - "file: {}\nTitle: {}\nArtist: {}\nAlbum: {}\nTime: {}\nPos: {}\nDisc: {}\nDate: {}\nAlbumArtist: {}\nTrack: {}\nId: {}\n", 254 + "file: {}\nTitle: {}\nArtist: {}\nAlbum: {}\nTime: {}\nDuration: {}\nPos: {}\nDisc: {}\nDate: {}\nAlbumArtist: {}\nTrack: {}\nId: {}\n", 255 255 x.path, 256 256 x.title, 257 257 x.artist, 258 258 x.album, 259 + (x.length / 1000) as u32, 259 260 (x.length / 1000) as u32, 260 261 index, 261 262 x.discnum, ··· 273 274 } 274 275 275 276 Ok(response) 277 + } 278 + 279 + pub async fn handle_deleteid( 280 + ctx: &mut Context, 281 + request: &str, 282 + stream: &mut BufReader<TcpStream>, 283 + ) -> Result<String, Error> { 284 + let mut idle = ctx.idle.lock().await; 285 + *idle = true; 286 + 287 + let arg = request.split_whitespace().last(); 288 + if arg.is_none() { 289 + if !ctx.batch { 290 + stream 291 + .write_all(b"ACK [2@0] {deleteid} missing argument\n") 292 + .await?; 293 + } 294 + return Ok("ACK [2@0] {deleteid} missing argument\n".to_string()); 295 + } 296 + let arg = arg.unwrap(); 297 + let arg = arg.trim(); 298 + let arg = arg.trim_matches('"'); 299 + let positions = match arg.parse::<i32>() { 300 + Ok(x) => vec![x - 1], 301 + Err(_) => { 302 + if !ctx.batch { 303 + stream 304 + .write_all(b"ACK [2@0] {deleteid} invalid argument\n") 305 + .await?; 306 + } 307 + return Ok("ACK [2@0] {deleteid} invalid argument\n".to_string()); 308 + } 309 + }; 310 + ctx.playlist 311 + .remove_tracks(RemoveTracksRequest { positions }) 312 + .await?; 313 + if !ctx.batch { 314 + stream.write_all(b"OK\n").await?; 315 + } 316 + 317 + match ctx.event_sender.send("playlist".to_string()) { 318 + Ok(_) => {} 319 + Err(_) => {} 320 + } 321 + Ok("OK\n".to_string()) 276 322 } 277 323 278 324 pub async fn handle_delete(
+11
crates/mpd/src/handlers/system.rs
··· 65 65 } 66 66 Ok(COMMANDS.to_string()) 67 67 } 68 + 69 + pub async fn handle_binarylimit( 70 + ctx: &mut Context, 71 + _request: &str, 72 + stream: &mut BufReader<TcpStream>, 73 + ) -> Result<String, Error> { 74 + if !ctx.batch { 75 + stream.write_all("OK\n".as_bytes()).await?; 76 + } 77 + Ok("OK\n".to_string()) 78 + }
+5 -3
crates/mpd/src/lib.rs
··· 13 13 handle_seekid, handle_setvol, handle_single, handle_status, handle_toggle, 14 14 }, 15 15 queue::{ 16 - handle_add, handle_addid, handle_clear, handle_delete, handle_move, handle_playlistinfo, 17 - handle_shuffle, 16 + handle_add, handle_addid, handle_clear, handle_delete, handle_deleteid, handle_move, 17 + handle_playlistinfo, handle_shuffle, 18 18 }, 19 - system::{handle_commands, handle_decoders, handle_idle, handle_noidle}, 19 + system::{handle_binarylimit, handle_commands, handle_decoders, handle_idle, handle_noidle}, 20 20 }; 21 21 use kv::{build_tracks_kv, KV}; 22 22 use rockbox_graphql::{ ··· 130 130 "shuffle" => handle_shuffle(&mut ctx, &request, &mut stream).await?, 131 131 "add" => handle_add(&mut ctx, &request, &mut stream).await?, 132 132 "addid" => handle_addid(&mut ctx, &request, &mut stream).await?, 133 + "deleteid" => handle_deleteid(&mut ctx, &request, &mut stream).await?, 133 134 "playlistinfo" => handle_playlistinfo(&mut ctx, &request, &mut stream).await?, 134 135 "delete" => handle_delete(&mut ctx, &request, &mut stream).await?, 135 136 "clear" => handle_clear(&mut ctx, &request, &mut stream).await?, ··· 160 161 "find artist" => handle_find_artist(&mut ctx, &request, &mut stream).await?, 161 162 "find album" => handle_find_album(&mut ctx, &request, &mut stream).await?, 162 163 "find title" => handle_find_title(&mut ctx, &request, &mut stream).await?, 164 + "binarylimit" => handle_binarylimit(&mut ctx, &request, &mut stream).await?, 163 165 "commands" => handle_commands(&mut ctx, &request, &mut stream).await?, 164 166 "command_list_begin" => { 165 167 handle_command_list_begin(&mut ctx, &request, &mut stream).await?
docs/preview.png

This is a binary file and will not be displayed.