From 875bdf5ebc36101e282cc7bd07830d40147422a4 Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Thu, 5 Feb 2026 14:36:01 +0300 Subject: [PATCH] various: bump dependencies; wire up dead code Signed-off-by: NotAShelf Change-Id: I12432bc956453cc4b0a2db82dce1b4976a6a6964 --- Cargo.lock | 828 +++++++++++---------- Cargo.toml | 23 +- crates/pinakes-server/src/app.rs | 16 +- crates/pinakes-ui/src/app.rs | 217 +++++- crates/pinakes-ui/src/client.rs | 39 - crates/pinakes-ui/src/components/detail.rs | 122 ++- 6 files changed, 791 insertions(+), 454 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 67e3f3f..b10016b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 4 [[package]] name = "addr2line" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" dependencies = [ "gimli", ] @@ -108,15 +108,6 @@ version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" -[[package]] -name = "ar_archive_writer" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb93bbb63b9c227414f6eb3a0adfddca591a8ce1e9b60661bb08969b87e340b" -dependencies = [ - "object 0.37.3", -] - [[package]] name = "arbitrary" version = "1.4.2" @@ -346,12 +337,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d27c3610c36aee21ce8ac510e6224498de4228ad772a171ed65643a24693a5a8" -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.1" @@ -394,6 +379,15 @@ dependencies = [ "serde_core", ] +[[package]] +name = "bitmaps" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2" +dependencies = [ + "typenum", +] + [[package]] name = "bitstream-io" version = "3.2.0" @@ -621,9 +615,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.56" +version = "4.5.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75ca66430e33a14957acc24c5077b503e7d374151b2b4b3a10c83b4ceb4be0e" +checksum = "6899ea499e3fb9305a65d5ebf6e3d2248c5fab291f300ad0a704fbe142eae31a" dependencies = [ "clap_builder", "clap_derive", @@ -631,9 +625,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.56" +version = "4.5.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793207c7fa6300a0608d1080b858e5fdbe713cdc1c8db9fb17777d8a13e63df0" +checksum = "7b12c8b680195a62a8364d16b8447b01b6c2c8f9aaf68bee653be34d4245e238" dependencies = [ "anstream", "anstyle", @@ -932,33 +926,36 @@ dependencies = [ [[package]] name = "cranelift-assembler-x64" -version = "0.117.2" +version = "0.128.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b83fcf2fc1c8954561490d02079b496fd0c757da88129981e15bfe3a548229" +checksum = "0377b13bf002a0774fcccac4f1102a10f04893d24060cf4b7350c87e4cbb647c" dependencies = [ "cranelift-assembler-x64-meta", ] [[package]] name = "cranelift-assembler-x64-meta" -version = "0.117.2" +version = "0.128.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7496a6e92b5cee48c5d772b0443df58816dee30fed6ba19b2a28e78037ecedf" +checksum = "cfa027979140d023b25bf7509fb7ede3a54c3d3871fb5ead4673c4b633f671a2" +dependencies = [ + "cranelift-srcgen", +] [[package]] name = "cranelift-bforest" -version = "0.117.2" +version = "0.128.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73a9dc0a8d3d49ee772101924968830f1c1937d650c571d3c2dd69dc36a68f41" +checksum = "618e4da87d9179a70b3c2f664451ca8898987aa6eb9f487d16988588b5d8cc40" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-bitset" -version = "0.117.2" +version = "0.128.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "573c641174c40ef31021ae4a5a3ad78974e280633502d0dfc6e362385e0c100f" +checksum = "db53764b5dad233b37b8f5dc54d3caa9900c54579195e00f17ea21f03f71aaa7" dependencies = [ "serde", "serde_derive", @@ -966,9 +963,9 @@ dependencies = [ [[package]] name = "cranelift-codegen" -version = "0.117.2" +version = "0.128.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d7c94d572615156f2db682181cadbd96342892c31e08cc26a757344319a9220" +checksum = "4ae927f1d8c0abddaa863acd201471d56e7fc6c3925104f4861ed4dc3e28b421" dependencies = [ "bumpalo", "cranelift-assembler-x64", @@ -988,39 +985,42 @@ dependencies = [ "serde", "smallvec", "target-lexicon 0.13.4", + "wasmtime-internal-math", ] [[package]] name = "cranelift-codegen-meta" -version = "0.117.2" +version = "0.128.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "beecd9fcf2c3e06da436d565de61a42676097ea6eb6b4499346ac6264b6bb9ce" +checksum = "d3fcf1e3e6757834bd2584f4cbff023fcc198e9279dcb5d684b4bb27a9b19f54" dependencies = [ - "cranelift-assembler-x64", + "cranelift-assembler-x64-meta", "cranelift-codegen-shared", + "cranelift-srcgen", + "heck 0.5.0", "pulley-interpreter", ] [[package]] name = "cranelift-codegen-shared" -version = "0.117.2" +version = "0.128.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f4ff8d2e1235f2d6e7fc3c6738be6954ba972cd295f09079ebffeca2f864e22" +checksum = "205dcb9e6ccf9d368b7466be675ff6ee54a63e36da6fe20e72d45169cf6fd254" [[package]] name = "cranelift-control" -version = "0.117.2" +version = "0.128.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "001312e9fbc7d9ca9517474d6fe71e29d07e52997fd7efe18f19e8836446ceb2" +checksum = "108eca9fcfe86026054f931eceaf57b722c1b97464bf8265323a9b5877238817" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.117.2" +version = "0.128.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb0fd6d4aae680275fcbceb08683416b744e65c8b607352043d3f0951d72b3b2" +checksum = "a0d96496910065d3165f84ff8e1e393916f4c086f88ac8e1b407678bc78735aa" dependencies = [ "cranelift-bitset", "serde", @@ -1029,9 +1029,9 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.117.2" +version = "0.128.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fd44e7e5dcea20ca104d45894748205c51365ce4cdb18f4418e3ba955971d1b" +checksum = "e303983ad7e23c850f24d9c41fc3cb346e1b930f066d3966545e4c98dac5c9fb" dependencies = [ "cranelift-codegen", "log", @@ -1041,21 +1041,27 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.117.2" +version = "0.128.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f900e0a3847d51eed0321f0777947fb852ccfce0da7fb070100357f69a2f37fc" +checksum = "24b0cf8d867d891245836cac7abafb0a5b0ea040a019d720702b3b8bcba40bfa" [[package]] name = "cranelift-native" -version = "0.117.2" +version = "0.128.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7617f13f392ebb63c5126258aca8b8eca739636ca7e4eeee301d3eff68489a6a" +checksum = "e24b641e315443e27807b69c440fe766737d7e718c68beb665a2d69259c77bf3" dependencies = [ "cranelift-codegen", "libc", "target-lexicon 0.13.4", ] +[[package]] +name = "cranelift-srcgen" +version = "0.128.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e378a54e7168a689486d67ee1f818b7e5356e54ae51a1d7a53f4f13f7f8b7a" + [[package]] name = "crc32fast" version = "1.5.0" @@ -1111,7 +1117,7 @@ dependencies = [ "document-features", "mio", "parking_lot", - "rustix 1.1.3", + "rustix", "signal-hook", "signal-hook-mio", "winapi", @@ -1503,7 +1509,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e6ec66749d1556636c5b4f661495565c155a7f78a46d4d007d7478c6bdc288c" dependencies = [ "async-trait", - "base64 0.22.1", + "base64", "bytes", "cocoa", "core-foundation 0.10.1", @@ -2412,14 +2418,15 @@ dependencies = [ [[package]] name = "fxprof-processed-profile" -version = "0.6.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27d12c0aed7f1e24276a241aadc4cb8ea9f83000f34bc062b7cc2d51e3b0fabd" +checksum = "25234f20a3ec0a962a61770cfe39ecf03cb529a6e474ad8cff025ed497eda557" dependencies = [ "bitflags 2.10.0", "debugid", - "fxhash", + "rustc-hash 2.1.1", "serde", + "serde_derive", "serde_json", ] @@ -2534,7 +2541,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" dependencies = [ - "rustix 1.1.3", + "rustix", "windows-link 0.2.1", ] @@ -2597,9 +2604,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.31.1" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" dependencies = [ "fallible-iterator 0.3.0", "indexmap", @@ -2727,9 +2734,9 @@ dependencies = [ [[package]] name = "governor" -version = "0.8.1" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be93b4ec2e4710b04d9264c0c7350cdd62a8c20e5e4ac732552ebb8f0debe8eb" +checksum = "9efcab3c1958580ff1f25a2a41be1668f7603d849bb63af523b208a3cc1223b8" dependencies = [ "cfg-if", "dashmap", @@ -2737,7 +2744,7 @@ dependencies = [ "futures-timer", "futures-util", "getrandom 0.3.4", - "no-std-compat", + "hashbrown 0.16.1", "nonzero_ext", "parking_lot", "portable-atomic", @@ -3006,13 +3013,26 @@ dependencies = [ "tower-service", ] +[[package]] +name = "hyper-timeout" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" +dependencies = [ + "hyper", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] + [[package]] name = "hyper-util" version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" dependencies = [ - "base64 0.22.1", + "base64", "bytes", "futures-channel", "futures-core", @@ -3170,6 +3190,20 @@ dependencies = [ "icu_properties", ] +[[package]] +name = "im-rc" +version = "15.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1955a75fa080c677d3972822ec4bad316169ab1cfc6c257a942c2265dbe5fe" +dependencies = [ + "bitmaps", + "rand_core 0.6.4", + "rand_xoshiro", + "sized-chunks", + "typenum", + "version_check", +] + [[package]] name = "image" version = "0.25.9" @@ -3205,7 +3239,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9481465fe767d92494987319b0b447a5829edf57f09c52bf8639396abaaeaf78" dependencies = [ - "base64 0.22.1", + "base64", "image", "rustdct", "serde", @@ -3307,15 +3341,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.14.0" @@ -3538,12 +3563,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -[[package]] -name = "leb128" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" - [[package]] name = "leb128fmt" version = "0.1.0" @@ -3655,12 +3674,6 @@ dependencies = [ "bitflags 2.10.0", ] -[[package]] -name = "linux-raw-sys" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - [[package]] name = "linux-raw-sys" version = "0.11.0" @@ -3936,7 +3949,7 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad38eb12aea514a0466ea40a80fd8cc83637065948eb4a426e4aa46261175227" dependencies = [ - "rustix 1.1.3", + "rustix", ] [[package]] @@ -4147,12 +4160,6 @@ dependencies = [ "memoffset", ] -[[package]] -name = "no-std-compat" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c" - [[package]] name = "nodrop" version = "0.1.14" @@ -4437,24 +4444,15 @@ dependencies = [ "objc", ] -[[package]] -name = "object" -version = "0.36.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" -dependencies = [ - "crc32fast", - "hashbrown 0.15.5", - "indexmap", - "memchr", -] - [[package]] name = "object" version = "0.37.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ + "crc32fast", + "hashbrown 0.15.5", + "indexmap", "memchr", ] @@ -4664,6 +4662,16 @@ dependencies = [ "sha2", ] +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap", +] + [[package]] name = "phf" version = "0.8.0" @@ -4907,7 +4915,7 @@ dependencies = [ "tokio", "toml 0.9.11+spec-1.1.0", "uuid", - "wit-bindgen 0.39.0", + "wit-bindgen 0.52.0", ] [[package]] @@ -5078,7 +5086,7 @@ version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ee9dd5fe15055d2b6806f4736aa0c9637217074e224bbec46d4041b91bb9491" dependencies = [ - "base64 0.22.1", + "base64", "byteorder", "bytes", "fallible-iterator 0.2.0", @@ -5234,21 +5242,11 @@ dependencies = [ "version_check", ] -[[package]] -name = "psm" -version = "0.1.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa96cb91275ed31d6da3e983447320c4eb219ac180fa1679a0889ff32861e2d" -dependencies = [ - "ar_archive_writer", - "cc", -] - [[package]] name = "pulldown-cmark" -version = "0.12.2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f86ba2052aebccc42cbbb3ed234b8b13ce76f75c3551a303cb2bcffcff12bb14" +checksum = "1e8bbe1a966bd2f362681a44f6edce3c2310ac21e4d5067a6e7ec396297a6ea0" dependencies = [ "bitflags 2.10.0", "getopts", @@ -5265,13 +5263,25 @@ checksum = "007d8adb5ddab6f8e3f491ac63566a7d5002cc7ed73901f72057943fa71ae1ae" [[package]] name = "pulley-interpreter" -version = "30.0.2" +version = "41.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0ecb9823083f71df8735f21f6c44f2f2b55986d674802831df20f27e26c907" +checksum = "01051a5b172e07f9197b85060e6583b942aec679dac08416647bf7e7dc916b65" dependencies = [ "cranelift-bitset", "log", - "wasmtime-math", + "pulley-macros", + "wasmtime-internal-math", +] + +[[package]] +name = "pulley-macros" +version = "41.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cf194f5b1a415ef3a44ee35056f4009092cc4038a9f7e3c7c1e392f48ee7dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", ] [[package]] @@ -5494,6 +5504,15 @@ dependencies = [ "rand_core 0.5.1", ] +[[package]] +name = "rand_xoshiro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" +dependencies = [ + "rand_core 0.6.4", +] + [[package]] name = "rangemap" version = "1.7.1" @@ -5524,7 +5543,7 @@ dependencies = [ "compact_str", "hashbrown 0.16.1", "indoc", - "itertools 0.14.0", + "itertools", "kasuari", "lru", "strum", @@ -5576,7 +5595,7 @@ dependencies = [ "hashbrown 0.16.1", "indoc", "instability", - "itertools 0.14.0", + "itertools", "line-clipping", "ratatui-core", "strum", @@ -5706,9 +5725,9 @@ dependencies = [ [[package]] name = "regalloc2" -version = "0.11.2" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc06e6b318142614e4a48bc725abbf08ff166694835c43c9dae5a9009704639a" +checksum = "08effbc1fa53aaebff69521a5c05640523fab037b34a4a2c109506bc938246fa" dependencies = [ "allocator-api2", "bumpalo", @@ -5720,9 +5739,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.12.2" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" dependencies = [ "aho-corasick", "memchr", @@ -5753,7 +5772,7 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04e9018c9d814e5f30cc16a0f03271aeab3571e609612d9fe78c1aa8d11c2f62" dependencies = [ - "base64 0.22.1", + "base64", "bytes", "encoding_rs", "futures-channel", @@ -5895,19 +5914,6 @@ dependencies = [ "transpose", ] -[[package]] -name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags 2.10.0", - "errno", - "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", -] - [[package]] name = "rustix" version = "1.1.3" @@ -5917,7 +5923,7 @@ dependencies = [ "bitflags 2.10.0", "errno", "libc", - "linux-raw-sys 0.11.0", + "linux-raw-sys", "windows-sys 0.61.2", ] @@ -6226,6 +6232,19 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + [[package]] name = "servo_arc" version = "0.2.0" @@ -6322,6 +6341,16 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +[[package]] +name = "sized-chunks" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e" +dependencies = [ + "bitmaps", + "typenum", +] + [[package]] name = "slab" version = "0.4.11" @@ -6412,15 +6441,6 @@ dependencies = [ "system-deps", ] -[[package]] -name = "spdx" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3e17e880bafaeb362a7b751ec46bdc5b61445a188f80e0606e68167cd540fa3" -dependencies = [ - "smallvec", -] - [[package]] name = "spin" version = "0.9.8" @@ -6436,12 +6456,6 @@ dependencies = [ "lock_api", ] -[[package]] -name = "sptr" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9b39299b249ad65f3b7e96443bad61c02ca5cd3589f46cb6d610a0fd6c0d6a" - [[package]] name = "stable_deref_trait" version = "1.2.1" @@ -6712,7 +6726,7 @@ dependencies = [ "fastrand", "getrandom 0.3.4", "once_cell", - "rustix 1.1.3", + "rustix", "windows-sys 0.61.2", ] @@ -6764,7 +6778,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4676b37242ccbd1aabf56edb093a4827dc49086c0ffd764a5705899e0f35f8f7" dependencies = [ "anyhow", - "base64 0.22.1", + "base64", "bitflags 2.10.0", "fancy-regex", "filedescriptor", @@ -6994,6 +7008,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-stream" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + [[package]] name = "tokio-util" version = "0.7.18" @@ -7122,6 +7147,35 @@ version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +[[package]] +name = "tonic" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a286e33f82f8a1ee2df63f4fa35c0becf4a85a0cb03091a15fd7bf0b402dc94a" +dependencies = [ + "async-trait", + "axum", + "base64", + "bytes", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "socket2", + "sync_wrapper", + "tokio", + "tokio-stream", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "tower" version = "0.5.3" @@ -7130,9 +7184,12 @@ checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" dependencies = [ "futures-core", "futures-util", + "indexmap", "pin-project-lite", + "slab", "sync_wrapper", "tokio", + "tokio-util", "tower-layer", "tower-service", "tracing", @@ -7171,9 +7228,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tower_governor" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57a2ccff6830fa835371af7541e561a90e4c07b84f72991ebac4b3cb6790dc0d" +checksum = "44de9b94d849d3c46e06a883d72d408c2de6403367b39df2b1c9d9e7b6736fe6" dependencies = [ "axum", "forwarded-header-value", @@ -7181,6 +7238,7 @@ dependencies = [ "http", "pin-project", "thiserror 2.0.18", + "tonic", "tower", "tracing", ] @@ -7271,17 +7329,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "trait-variant" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70977707304198400eb4835a78f6a9f928bf41bba420deb8fdb175cd965d77a7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - [[package]] name = "transpose" version = "0.2.3" @@ -7401,7 +7448,7 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16b380a1238663e5f8a691f9039c73e1cdae598a30e9855f541d29b08b53e9a5" dependencies = [ - "itertools 0.14.0", + "itertools", "unicode-segmentation", "unicode-width", ] @@ -7418,6 +7465,12 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + [[package]] name = "untrusted" version = "0.9.0" @@ -7646,23 +7699,34 @@ dependencies = [ ] [[package]] -name = "wasm-encoder" -version = "0.224.1" +name = "wasm-compose" +version = "0.243.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ab7a13a23790fe91ea4eb7526a1f3131001d874e3e00c2976c48861f2e82920" +checksum = "af801b6f36459023eaec63fdbaedad2fd5a4ab7dc74ecc110a8b5d375c5775e4" dependencies = [ - "leb128", - "wasmparser 0.224.1", + "anyhow", + "heck 0.5.0", + "im-rc", + "indexmap", + "log", + "petgraph", + "serde", + "serde_derive", + "serde_yaml", + "smallvec", + "wasm-encoder 0.243.0", + "wasmparser 0.243.0", + "wat", ] [[package]] name = "wasm-encoder" -version = "0.225.0" +version = "0.243.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f7eac0445cac73bcf09e6a97f83248d64356dccf9f2b100199769b6b42464e5" +checksum = "c55db9c896d70bd9fa535ce83cd4e1f2ec3726b0edd2142079f594fc3be1cb35" dependencies = [ "leb128fmt", - "wasmparser 0.225.0", + "wasmparser 0.243.0", ] [[package]] @@ -7677,19 +7741,14 @@ dependencies = [ [[package]] name = "wasm-metadata" -version = "0.225.0" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1d20d0bf2c73c32a5114cf35a5c10ccf9f9aa37a3a2c0114b3e11cbf6faac12" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" dependencies = [ "anyhow", "indexmap", - "serde", - "serde_derive", - "serde_json", - "spdx", - "url", - "wasm-encoder 0.225.0", - "wasmparser 0.225.0", + "wasm-encoder 0.244.0", + "wasmparser 0.244.0", ] [[package]] @@ -7707,9 +7766,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.224.1" +version = "0.243.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04f17a5917c2ddd3819e84c661fae0d6ba29d7b9c1f0e96c708c65a9c4188e11" +checksum = "f6d8db401b0528ec316dfbe579e6ab4152d61739cfe076706d2009127970159d" dependencies = [ "bitflags 2.10.0", "hashbrown 0.15.5", @@ -7718,18 +7777,6 @@ dependencies = [ "serde", ] -[[package]] -name = "wasmparser" -version = "0.225.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e5456165f81e64cb9908a0fe9b9d852c2c74582aa3fe2be3c2da57f937d3ae" -dependencies = [ - "bitflags 2.10.0", - "hashbrown 0.15.5", - "indexmap", - "semver", -] - [[package]] name = "wasmparser" version = "0.244.0" @@ -7737,26 +7784,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" dependencies = [ "bitflags 2.10.0", + "hashbrown 0.15.5", "indexmap", "semver", ] [[package]] name = "wasmprinter" -version = "0.224.1" +version = "0.243.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0095b53a3b09cbc2f90f789ea44aa1b17ecc2dad8b267e657c7391f3ded6293d" +checksum = "eb2b6035559e146114c29a909a3232928ee488d6507a1504d8934e8607b36d7b" dependencies = [ "anyhow", "termcolor", - "wasmparser 0.224.1", + "wasmparser 0.243.0", ] [[package]] name = "wasmtime" -version = "30.0.2" +version = "41.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809cc8780708f1deed0a7c3fcab46954f0e8c08a6fe0252772481fbc88fcf946" +checksum = "a19f56cece843fa95dd929f5568ff8739c7e3873b530ceea9eda2aa02a0b4142" dependencies = [ "addr2line", "anyhow", @@ -7766,6 +7814,7 @@ dependencies = [ "cc", "cfg-if", "encoding_rs", + "futures", "fxprof-processed-profile", "gimli", "hashbrown 0.15.5", @@ -7775,122 +7824,44 @@ dependencies = [ "log", "mach2", "memfd", - "object 0.36.7", + "object", "once_cell", - "paste", "postcard", - "psm", "pulley-interpreter", "rayon", - "rustix 0.38.44", + "rustix", "semver", "serde", "serde_derive", "serde_json", "smallvec", - "sptr", "target-lexicon 0.13.4", - "trait-variant", - "wasm-encoder 0.224.1", - "wasmparser 0.224.1", - "wasmtime-asm-macros", - "wasmtime-cache", - "wasmtime-component-macro", - "wasmtime-component-util", - "wasmtime-cranelift", + "tempfile", + "wasm-compose", + "wasm-encoder 0.243.0", + "wasmparser 0.243.0", "wasmtime-environ", - "wasmtime-fiber", - "wasmtime-jit-debug", - "wasmtime-jit-icache-coherence", - "wasmtime-math", - "wasmtime-slab", - "wasmtime-versioned-export-macros", - "wasmtime-winch", + "wasmtime-internal-cache", + "wasmtime-internal-component-macro", + "wasmtime-internal-component-util", + "wasmtime-internal-cranelift", + "wasmtime-internal-fiber", + "wasmtime-internal-jit-debug", + "wasmtime-internal-jit-icache-coherence", + "wasmtime-internal-math", + "wasmtime-internal-slab", + "wasmtime-internal-unwinder", + "wasmtime-internal-versioned-export-macros", + "wasmtime-internal-winch", "wat", - "windows-sys 0.59.0", -] - -[[package]] -name = "wasmtime-asm-macros" -version = "30.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "236964b6b35af0f08879c9c56dbfbc5adc12e8d624672341a0121df31adaa3fa" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "wasmtime-cache" -version = "30.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5d75ac36ee28647f6d871a93eefc7edcb729c3096590031ba50857fac44fa8" -dependencies = [ - "anyhow", - "base64 0.21.7", - "directories-next", - "log", - "postcard", - "rustix 0.38.44", - "serde", - "serde_derive", - "sha2", - "toml 0.8.23", - "windows-sys 0.59.0", - "zstd", -] - -[[package]] -name = "wasmtime-component-macro" -version = "30.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2581ef04bf33904db9a902ffb558e7b2de534d6a4881ee985ea833f187a78fdf" -dependencies = [ - "anyhow", - "proc-macro2", - "quote", - "syn 2.0.114", - "wasmtime-component-util", - "wasmtime-wit-bindgen", - "wit-parser 0.224.1", -] - -[[package]] -name = "wasmtime-component-util" -version = "30.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a7108498a8a0afc81c7d2d81b96cdc509cd631d7bbaa271b7db5137026f10e3" - -[[package]] -name = "wasmtime-cranelift" -version = "30.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abcc9179097235c91f299a8ff56b358ee921266b61adff7d14d6e48428954dd2" -dependencies = [ - "anyhow", - "cfg-if", - "cranelift-codegen", - "cranelift-control", - "cranelift-entity", - "cranelift-frontend", - "cranelift-native", - "gimli", - "itertools 0.12.1", - "log", - "object 0.36.7", - "pulley-interpreter", - "smallvec", - "target-lexicon 0.13.4", - "thiserror 1.0.69", - "wasmparser 0.224.1", - "wasmtime-environ", - "wasmtime-versioned-export-macros", + "windows-sys 0.61.2", ] [[package]] name = "wasmtime-environ" -version = "30.0.2" +version = "41.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e90f6cba665939381839bbf2ddf12d732fca03278867910348ef1281b700954" +checksum = "3bf9dff572c950258548cbbaf39033f68f8dcd0b43b22e80def9fe12d532d3e5" dependencies = [ "anyhow", "cpp_demangle", @@ -7899,7 +7870,7 @@ dependencies = [ "gimli", "indexmap", "log", - "object 0.36.7", + "object", "postcard", "rustc-demangle", "semver", @@ -7907,71 +7878,152 @@ dependencies = [ "serde_derive", "smallvec", "target-lexicon 0.13.4", - "wasm-encoder 0.224.1", - "wasmparser 0.224.1", + "wasm-encoder 0.243.0", + "wasmparser 0.243.0", "wasmprinter", - "wasmtime-component-util", + "wasmtime-internal-component-util", ] [[package]] -name = "wasmtime-fiber" -version = "30.0.2" +name = "wasmtime-internal-cache" +version = "41.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5c2ac21f0b39d72d2dac198218a12b3ddeb4ab388a8fa0d2e429855876783c" +checksum = "7f52a985f5b5dae53147fc596f3a313c334e2c24fd1ba708634e1382f6ecd727" +dependencies = [ + "base64", + "directories-next", + "log", + "postcard", + "rustix", + "serde", + "serde_derive", + "sha2", + "toml 0.9.11+spec-1.1.0", + "wasmtime-environ", + "windows-sys 0.61.2", + "zstd", +] + +[[package]] +name = "wasmtime-internal-component-macro" +version = "41.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7920dc7dcb608352f5fe93c52582e65075b7643efc5dac3fc717c1645a8d29a0" dependencies = [ "anyhow", - "cc", - "cfg-if", - "rustix 0.38.44", - "wasmtime-asm-macros", - "wasmtime-versioned-export-macros", - "windows-sys 0.59.0", + "proc-macro2", + "quote", + "syn 2.0.114", + "wasmtime-internal-component-util", + "wasmtime-internal-wit-bindgen", + "wit-parser 0.243.0", ] [[package]] -name = "wasmtime-jit-debug" -version = "30.0.2" +name = "wasmtime-internal-component-util" +version = "41.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74812989369947f4f5a33f4ae8ff551eb6c8a97ff55e0269a9f5f0fac93cd755" +checksum = "066f5aed35aa60580a2ac0df145c0f0d4b04319862fee1d6036693e1cca43a12" + +[[package]] +name = "wasmtime-internal-cranelift" +version = "41.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb8002dc415b7773d7949ee360c05ee8f91627ec25a7a0b01ee03831bdfdda1" +dependencies = [ + "cfg-if", + "cranelift-codegen", + "cranelift-control", + "cranelift-entity", + "cranelift-frontend", + "cranelift-native", + "gimli", + "itertools", + "log", + "object", + "pulley-interpreter", + "smallvec", + "target-lexicon 0.13.4", + "thiserror 2.0.18", + "wasmparser 0.243.0", + "wasmtime-environ", + "wasmtime-internal-math", + "wasmtime-internal-unwinder", + "wasmtime-internal-versioned-export-macros", +] + +[[package]] +name = "wasmtime-internal-fiber" +version = "41.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f9c562c5a272bc9f615d8f0c085a4360bafa28eef9aa5947e63d204b1129b22" dependencies = [ "cc", - "object 0.36.7", - "rustix 0.38.44", - "wasmtime-versioned-export-macros", + "cfg-if", + "libc", + "rustix", + "wasmtime-environ", + "wasmtime-internal-versioned-export-macros", + "windows-sys 0.61.2", ] [[package]] -name = "wasmtime-jit-icache-coherence" -version = "30.0.2" +name = "wasmtime-internal-jit-debug" +version = "41.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f180cc0d2745e3a5df5d02231cd3046f49c75512eaa987b8202363b112e125d" +checksum = "db673148f26e1211db3913c12c75594be9e3858a71fa297561e9162b1a49cfb0" +dependencies = [ + "cc", + "object", + "rustix", + "wasmtime-internal-versioned-export-macros", +] + +[[package]] +name = "wasmtime-internal-jit-icache-coherence" +version = "41.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bada5ca1cc47df7d14100e2254e187c2486b426df813cea2dd2553a7469f7674" dependencies = [ "anyhow", "cfg-if", "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] -name = "wasmtime-math" -version = "30.0.2" +name = "wasmtime-internal-math" +version = "41.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5f04c5dcf5b2f88f81cfb8d390294b2f67109dc4d0197ea7303c60a092df27c" +checksum = "cf6f615d528eda9adc6eefb062135f831b5215c348f4c3ec3e143690c730605b" dependencies = [ "libm", ] [[package]] -name = "wasmtime-slab" -version = "30.0.2" +name = "wasmtime-internal-slab" +version = "41.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9681707f1ae9a4708ca22058722fca5c135775c495ba9b9624fe3732b94c97" +checksum = "da169d4f789b586e1b2612ba8399c653ed5763edf3e678884ba785bb151d018f" [[package]] -name = "wasmtime-versioned-export-macros" -version = "30.0.2" +name = "wasmtime-internal-unwinder" +version = "41.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd2fe69d04986a12fc759d2e79494100d600adcb3bb79e63dedfc8e6bb2ab03e" +checksum = "4888301f3393e4e8c75c938cce427293fade300fee3fc8fd466fdf3e54ae068e" +dependencies = [ + "cfg-if", + "cranelift-codegen", + "log", + "object", + "wasmtime-environ", +] + +[[package]] +name = "wasmtime-internal-versioned-export-macros" +version = "41.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63ba3124cc2cbcd362672f9f077303ccc4cd61daa908f73447b7fdaece75ff9f" dependencies = [ "proc-macro2", "quote", @@ -7979,32 +8031,33 @@ dependencies = [ ] [[package]] -name = "wasmtime-winch" -version = "30.0.2" +name = "wasmtime-internal-winch" +version = "41.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9c8eae8395d530bb00a388030de9f543528674c382326f601de47524376975" +checksum = "90a4182515dabba776656de4ebd62efad03399e261cf937ecccb838ce8823534" dependencies = [ - "anyhow", "cranelift-codegen", "gimli", - "object 0.36.7", + "log", + "object", "target-lexicon 0.13.4", - "wasmparser 0.224.1", - "wasmtime-cranelift", + "wasmparser 0.243.0", "wasmtime-environ", + "wasmtime-internal-cranelift", "winch-codegen", ] [[package]] -name = "wasmtime-wit-bindgen" -version = "30.0.2" +name = "wasmtime-internal-wit-bindgen" +version = "41.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a5531455e2c55994a1540355140369bb7ec0e46d2699731c5ee9f4cf9c3f7d4" +checksum = "87acbd416227cdd279565ba49e57cf7f08d112657c3b3f39b70250acdfd094fe" dependencies = [ "anyhow", + "bitflags 2.10.0", "heck 0.5.0", "indexmap", - "wit-parser 0.224.1", + "wit-parser 0.243.0", ] [[package]] @@ -8037,7 +8090,7 @@ checksum = "fee64194ccd96bf648f42a65a7e589547096dfa702f7cadef84347b66ad164f9" dependencies = [ "cc", "downcast-rs", - "rustix 1.1.3", + "rustix", "scoped-tls", "smallvec", "wayland-sys", @@ -8050,7 +8103,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8e6faa537fbb6c186cb9f1d41f2f811a4120d1b57ec61f50da451a0c5122bec" dependencies = [ "bitflags 2.10.0", - "rustix 1.1.3", + "rustix", "wayland-backend", "wayland-scanner", ] @@ -8336,20 +8389,22 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winch-codegen" -version = "30.0.2" +version = "41.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dbd4e07bd92c7ddace2f3267bdd31d4197b5ec58c315751325d45c19bfb56df" +checksum = "a4f31dcfdfaf9d6df9e1124d7c8ee6fc29af5b99b89d11ae731c138e0f5bd77b" dependencies = [ "anyhow", + "cranelift-assembler-x64", "cranelift-codegen", "gimli", "regalloc2", "smallvec", "target-lexicon 0.13.4", - "thiserror 1.0.69", - "wasmparser 0.224.1", - "wasmtime-cranelift", + "thiserror 2.0.18", + "wasmparser 0.243.0", "wasmtime-environ", + "wasmtime-internal-cranelift", + "wasmtime-internal-math", ] [[package]] @@ -8769,16 +8824,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "wit-bindgen" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4dd9a372b25d6f35456b0a730d2adabeb0c4878066ba8f8089800349be6ecb5" -dependencies = [ - "wit-bindgen-rt", - "wit-bindgen-rust-macro", -] - [[package]] name = "wit-bindgen" version = "0.51.0" @@ -8786,32 +8831,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" [[package]] -name = "wit-bindgen-core" -version = "0.39.0" +name = "wit-bindgen" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f108fa9b77a346372858b30c11ea903680e7e2b9d820b1a5883e9d530bf51c7e" +checksum = "4e048f41ef90f0b5dd61f1059c35f5636252e56813bf616d0803aa3739867230" dependencies = [ - "anyhow", - "heck 0.5.0", - "wit-parser 0.225.0", + "bitflags 2.10.0", + "wit-bindgen-rust-macro", ] [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen-core" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +checksum = "c15e7a56641cc9040480a26526a3229cbc4e8065adf98c9755d21c4c9b446c4c" dependencies = [ - "bitflags 2.10.0", - "futures", - "once_cell", + "anyhow", + "heck 0.5.0", + "wit-parser 0.244.0", ] [[package]] name = "wit-bindgen-rust" -version = "0.39.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ba5b852e976d35dbf6cb745746bf1bd4fc26782bab1e0c615fc71a7d8aac05" +checksum = "bd81b0ae1ec492bfe91683f1da6db6492ebc682e72d4f2715619dba783b066ca" dependencies = [ "anyhow", "heck 0.5.0", @@ -8825,9 +8869,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" -version = "0.39.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "401529c9af9304a20ed99fa01799e467b7d37727126f0c9a958895471268ad7a" +checksum = "54e6ce04c549e7149b66a70d34fc5a2a01b374bf49ca61db65d16e3ae922866e" dependencies = [ "anyhow", "prettyplease", @@ -8840,9 +8884,9 @@ dependencies = [ [[package]] name = "wit-component" -version = "0.225.0" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2505c917564c1d74774563bbcd3e4f8c216a6508050862fd5f449ee56e3c5125" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" dependencies = [ "anyhow", "bitflags 2.10.0", @@ -8851,17 +8895,17 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "wasm-encoder 0.225.0", + "wasm-encoder 0.244.0", "wasm-metadata", - "wasmparser 0.225.0", - "wit-parser 0.225.0", + "wasmparser 0.244.0", + "wit-parser 0.244.0", ] [[package]] name = "wit-parser" -version = "0.224.1" +version = "0.243.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3477d8d0acb530d76beaa8becbdb1e3face08929db275f39934963eb4f716f8" +checksum = "df983a8608e513d8997f435bb74207bf0933d0e49ca97aa9d8a6157164b9b7fc" dependencies = [ "anyhow", "id-arena", @@ -8872,14 +8916,14 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", - "wasmparser 0.224.1", + "wasmparser 0.243.0", ] [[package]] name = "wit-parser" -version = "0.225.0" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebefaa234e47224f10ce60480c5bfdece7497d0f3b87a12b41ff39e5c8377a78" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" dependencies = [ "anyhow", "id-arena", @@ -8890,7 +8934,7 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", - "wasmparser 0.225.0", + "wasmparser 0.244.0", ] [[package]] @@ -8905,7 +8949,7 @@ version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "728b7d4c8ec8d81cab295e0b5b8a4c263c0d41a785fb8f8c4df284e5411140a2" dependencies = [ - "base64 0.22.1", + "base64", "block2", "cookie", "crossbeam-channel", @@ -8970,7 +9014,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" dependencies = [ "gethostname", - "rustix 1.1.3", + "rustix", "x11rb-protocol", ] diff --git a/Cargo.toml b/Cargo.toml index c1923f8..2da1af0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,6 +15,11 @@ license = "MIT" readme = true [workspace.dependencies] +# Internal Dependencies +pinakes-core = {path = "./crates/pinakes-core"} +pinakes-server = {path = "./crates/pinakes-server"} +pinakes-plugin-api = {path = "./crates/plugin/api"} + # Async runtime tokio = { version = "1.49.0", features = ["full"] } tokio-util = { version = "0.7.18", features = ["rt"] } @@ -25,7 +30,7 @@ serde_json = "1.0.149" toml = "0.9.11" # CLI argument parsing -clap = { version = "4.5.56", features = ["derive", "env"] } +clap = { version = "4.5.57", features = ["derive", "env"] } # Date/time chrono = { version = "0.4.43", features = ["serde"] } @@ -80,8 +85,8 @@ winnow = "0.7.14" axum = { version = "0.8.8", features = ["macros", "multipart"] } tower = "0.5.3" tower-http = { version = "0.6.8", features = ["cors", "trace", "set-header"] } -governor = "0.8.1" -tower_governor = "0.6.0" +governor = "0.10.4" +tower_governor = "0.8.0" # HTTP client reqwest = { version = "0.13.1", features = ["json", "query", "blocking"] } @@ -94,10 +99,10 @@ crossterm = "0.29.0" dioxus = { version = "0.7.3", features = ["desktop", "router"] } # Async trait (dyn-compatible async methods) -async-trait = "0.1" +async-trait = "0.1.89" # Async utilities -futures = "0.3" +futures = "0.3.31" # Image processing (thumbnails) image = { version = "0.25.9", default-features = false, features = [ @@ -110,15 +115,15 @@ image = { version = "0.25.9", default-features = false, features = [ ] } # Markdown rendering -pulldown-cmark = "0.12.2" +pulldown-cmark = "0.13.0" # Password hashing argon2 = { version = "0.5.3", features = ["std"] } # Misc mime_guess = "2.0.5" -regex = "1.11" +regex = "1.12.3" # WASM runtime for plugins -wasmtime = { version = "30.0.2", features = ["component-model"] } -wit-bindgen = "0.39.0" +wasmtime = { version = "41.0.3", features = ["component-model"] } +wit-bindgen = "0.52.0" diff --git a/crates/pinakes-server/src/app.rs b/crates/pinakes-server/src/app.rs index 9a95468..0369684 100644 --- a/crates/pinakes-server/src/app.rs +++ b/crates/pinakes-server/src/app.rs @@ -65,9 +65,7 @@ pub fn create_router_with_tls( // Login route with strict rate limiting let login_route = Router::new() .route("/auth/login", post(routes::auth::login)) - .layer(GovernorLayer { - config: login_governor, - }); + .layer(GovernorLayer::new(login_governor)); // Public routes (no auth required) let public_routes = Router::new() @@ -82,16 +80,12 @@ pub fn create_router_with_tls( let search_routes = Router::new() .route("/search", get(routes::search::search)) .route("/search", post(routes::search::search_post)) - .layer(GovernorLayer { - config: search_governor, - }); + .layer(GovernorLayer::new(search_governor)); // Streaming routes with enhanced rate limiting (5 concurrent) let streaming_routes = Router::new() .route("/media/{id}/stream", get(routes::media::stream_media)) - .layer(GovernorLayer { - config: stream_governor, - }); + .layer(GovernorLayer::new(stream_governor)); // Read-only routes: any authenticated user (Viewer+) let viewer_routes = Router::new() @@ -561,9 +555,7 @@ pub fn create_router_with_tls( let router = Router::new() .nest("/api/v1", full_api) .layer(DefaultBodyLimit::max(10 * 1024 * 1024)) - .layer(GovernorLayer { - config: global_governor, - }) + .layer(GovernorLayer::new(global_governor)) .layer(TraceLayer::new_for_http()) .layer(cors) .layer(security_headers); diff --git a/crates/pinakes-ui/src/app.rs b/crates/pinakes-ui/src/app.rs index 033d24a..20753e2 100644 --- a/crates/pinakes-ui/src/app.rs +++ b/crates/pinakes-ui/src/app.rs @@ -6,7 +6,9 @@ use futures::future::join_all; use crate::client::*; use crate::components::{ - audit, collections, database, detail, duplicates, import, library, search, settings, tags, + audit, collections, database, detail, duplicates, import, library, + media_player::PlayQueue, + search, settings, statistics, tags, tasks, }; // Login component available via crate::components::login when auth gating is needed use crate::styles; @@ -23,6 +25,8 @@ enum View { Audit, Import, Duplicates, + Statistics, + Tasks, Settings, Database, } @@ -38,6 +42,8 @@ impl View { Self::Audit => "Audit Log", Self::Import => "Import", Self::Duplicates => "Duplicates", + Self::Statistics => "Statistics", + Self::Tasks => "Tasks", Self::Settings => "Settings", Self::Database => "Database", } @@ -68,6 +74,8 @@ pub fn App() -> Element { let mut audit_list = use_signal(Vec::::new); let mut config_data = use_signal(|| Option::::None); let mut db_stats = use_signal(|| Option::::None); + let mut library_stats = use_signal(|| Option::::None); + let mut scheduled_tasks = use_signal(Vec::::new); let mut duplicate_groups = use_signal(Vec::::new); let mut preview_files = use_signal(Vec::::new); let mut preview_total_size = use_signal(|| 0u64); @@ -111,6 +119,7 @@ pub fn App() -> Element { let mut login_error = use_signal(|| Option::::None); let mut login_loading = use_signal(|| false); let mut auto_play_media = use_signal(|| false); + let mut play_queue = use_signal(PlayQueue::default); // Theme state (Phase 3.3) let mut current_theme = use_signal(|| "dark".to_string()); @@ -538,6 +547,40 @@ pub fn App() -> Element { span { class: "nav-icon", "\u{2261}" } span { class: "nav-item-text", "Duplicates" } } + button { + class: if *current_view.read() == View::Statistics { "nav-item active" } else { "nav-item" }, + onclick: { + let client = client.read().clone(); + move |_| { + current_view.set(View::Statistics); + let client = client.clone(); + spawn(async move { + if let Ok(stats) = client.library_statistics().await { + library_stats.set(Some(stats)); + } + }); + } + }, + span { class: "nav-icon", "\u{1f4ca}" } + span { class: "nav-item-text", "Statistics" } + } + button { + class: if *current_view.read() == View::Tasks { "nav-item active" } else { "nav-item" }, + onclick: { + let client = client.read().clone(); + move |_| { + current_view.set(View::Tasks); + let client = client.clone(); + spawn(async move { + if let Ok(tasks_data) = client.list_scheduled_tasks().await { + scheduled_tasks.set(tasks_data); + } + }); + } + }, + span { class: "nav-icon", "\u{23f0}" } + span { class: "nav-item-text", "Tasks" } + } button { class: if *current_view.read() == View::Settings { "nav-item active" } else { "nav-item" }, onclick: { @@ -1175,6 +1218,98 @@ pub fn App() -> Element { }); } }, + play_queue: if play_queue.read().is_empty() { None } else { Some(play_queue.read().clone()) }, + on_queue_select: { + move |idx: usize| { + let mut q = play_queue.write(); + q.current_index = idx; + // Update selected_media to the item at this index + if let Some(item) = q.items.get(idx) { + let media_id = item.media_id.clone(); + let client = client.read().clone(); + spawn(async move { + if let Ok(media) = client.get_media(&media_id).await { + selected_media.set(Some(media)); + auto_play_media.set(true); + } + }); + } + } + }, + on_queue_remove: { + move |idx: usize| { + play_queue.write().remove(idx); + } + }, + on_queue_clear: { + move |_| { + play_queue.write().clear(); + } + }, + on_queue_toggle_repeat: { + move |_| { + play_queue.write().toggle_repeat(); + } + }, + on_queue_toggle_shuffle: { + move |_| { + play_queue.write().toggle_shuffle(); + } + }, + on_queue_next: { + move |_| { + let mut q = play_queue.write(); + if let Some(item) = q.next() { + let media_id = item.media_id.clone(); + drop(q); + let client = client.read().clone(); + spawn(async move { + if let Ok(media) = client.get_media(&media_id).await { + selected_media.set(Some(media)); + auto_play_media.set(true); + } + }); + } + } + }, + on_queue_previous: { + move |_| { + let mut q = play_queue.write(); + if let Some(item) = q.previous() { + let media_id = item.media_id.clone(); + drop(q); + let client = client.read().clone(); + spawn(async move { + if let Ok(media) = client.get_media(&media_id).await { + selected_media.set(Some(media)); + auto_play_media.set(true); + } + }); + } + } + }, + on_track_ended: { + move |_| { + let mut q = play_queue.write(); + if let Some(item) = q.next() { + let media_id = item.media_id.clone(); + drop(q); + let client = client.read().clone(); + spawn(async move { + if let Ok(media) = client.get_media(&media_id).await { + selected_media.set(Some(media)); + auto_play_media.set(true); + } + }); + } + } + }, + on_add_to_queue: { + move |item: crate::components::media_player::QueueItem| { + play_queue.write().add(item); + show_toast("Added to queue".into(), false); + } + }, } }, None => rsx! { @@ -1979,6 +2114,86 @@ pub fn App() -> Element { } } } + View::Statistics => { + let refresh_stats = { + let client = client.read().clone(); + move || { + let client = client.clone(); + spawn(async move { + match client.library_statistics().await { + Ok(stats) => library_stats.set(Some(stats)), + Err(e) => show_toast(format!("Failed to load statistics: {e}"), true), + } + }); + } + }; + rsx! { + statistics::Statistics { + stats: library_stats.read().clone(), + on_refresh: { + let refresh_stats = refresh_stats.clone(); + move |_| refresh_stats() + }, + } + } + } + View::Tasks => { + let refresh_tasks = { + let client = client.read().clone(); + move || { + let client = client.clone(); + spawn(async move { + match client.list_scheduled_tasks().await { + Ok(tasks_data) => scheduled_tasks.set(tasks_data), + Err(e) => show_toast(format!("Failed to load tasks: {e}"), true), + } + }); + } + }; + rsx! { + tasks::Tasks { + tasks: scheduled_tasks.read().clone(), + on_refresh: { + let refresh_tasks = refresh_tasks.clone(); + move |_| refresh_tasks() + }, + on_toggle: { + let client = client.read().clone(); + let refresh_tasks = refresh_tasks.clone(); + move |task_id: String| { + let client = client.clone(); + let refresh_tasks = refresh_tasks.clone(); + spawn(async move { + match client.toggle_scheduled_task(&task_id).await { + Ok(_) => { + show_toast("Task toggled".into(), false); + refresh_tasks(); + } + Err(e) => show_toast(format!("Toggle failed: {e}"), true), + } + }); + } + }, + on_run_now: { + let client = client.read().clone(); + let refresh_tasks = refresh_tasks.clone(); + move |task_id: String| { + let client = client.clone(); + let refresh_tasks = refresh_tasks.clone(); + spawn(async move { + match client.run_scheduled_task_now(&task_id).await { + Ok(_) => { + show_toast("Task started".into(), false); + refresh_tasks(); + } + Err(e) => show_toast(format!("Run failed: {e}"), true), + } + }); + } + }, + } + } + } View::Settings => { let cfg_ref = config_data.read(); match cfg_ref.as_ref() { diff --git a/crates/pinakes-ui/src/client.rs b/crates/pinakes-ui/src/client.rs index 55a01ab..362b9bf 100644 --- a/crates/pinakes-ui/src/client.rs +++ b/crates/pinakes-ui/src/client.rs @@ -482,34 +482,6 @@ impl ApiClient { .await?) } - pub async fn batch_import( - &self, - paths: &[String], - tag_ids: &[String], - new_tags: &[String], - collection_id: Option<&str>, - ) -> Result { - let mut body = serde_json::json!({"paths": paths}); - if !tag_ids.is_empty() { - body["tag_ids"] = serde_json::json!(tag_ids); - } - if !new_tags.is_empty() { - body["new_tags"] = serde_json::json!(new_tags); - } - if let Some(cid) = collection_id { - body["collection_id"] = serde_json::json!(cid); - } - Ok(self - .client - .post(self.url("/media/import/batch")) - .json(&body) - .send() - .await? - .error_for_status()? - .json() - .await?) - } - pub async fn import_directory( &self, path: &str, @@ -967,17 +939,6 @@ impl ApiClient { // ── UI Config ── - pub async fn get_ui_config(&self) -> Result { - Ok(self - .client - .get(self.url("/config/ui")) - .send() - .await? - .error_for_status()? - .json() - .await?) - } - pub async fn update_ui_config(&self, updates: serde_json::Value) -> Result { Ok(self .client diff --git a/crates/pinakes-ui/src/components/detail.rs b/crates/pinakes-ui/src/components/detail.rs index de86f62..8621583 100644 --- a/crates/pinakes-ui/src/components/detail.rs +++ b/crates/pinakes-ui/src/components/detail.rs @@ -2,7 +2,7 @@ use dioxus::prelude::*; use super::image_viewer::ImageViewer; use super::markdown_viewer::MarkdownViewer; -use super::media_player::MediaPlayer; +use super::media_player::{MediaPlayer, PlayQueue, QueueItem, QueuePanel}; use super::pdf_viewer::PdfViewer; use super::utils::{format_duration, format_size, media_category, type_badge_class}; use crate::client::{ApiClient, MediaResponse, MediaUpdateEvent, TagResponse}; @@ -14,6 +14,7 @@ pub fn Detail( all_tags: Vec, server_url: String, #[props(default = false)] autoplay: bool, + #[props(default)] play_queue: Option, on_back: EventHandler<()>, on_open: EventHandler, on_update: EventHandler, @@ -22,6 +23,15 @@ pub fn Detail( on_set_custom_field: EventHandler<(String, String, String, String)>, on_delete_custom_field: EventHandler<(String, String)>, on_delete: EventHandler, + #[props(default)] on_queue_select: Option>, + #[props(default)] on_queue_remove: Option>, + #[props(default)] on_queue_clear: Option>, + #[props(default)] on_queue_toggle_repeat: Option>, + #[props(default)] on_queue_toggle_shuffle: Option>, + #[props(default)] on_queue_next: Option>, + #[props(default)] on_queue_previous: Option>, + #[props(default)] on_track_ended: Option>, + #[props(default)] on_add_to_queue: Option>, ) -> Element { let mut editing = use_signal(|| false); let mut show_image_viewer = use_signal(|| false); @@ -225,6 +235,9 @@ pub fn Detail( let thumb_for_player = thumbnail_url.clone(); let file_name_for_viewer = media.file_name.clone(); + // Clone queue handlers for use in the component + let has_queue = play_queue.is_some(); + rsx! { // Media preview div { class: "detail-preview", @@ -235,6 +248,7 @@ pub fn Detail( title: media.title.clone(), thumbnail_url: if has_thumbnail { Some(thumb_for_player.clone()) } else { None }, autoplay, + on_track_ended: on_track_ended, } } else if category == "video" { MediaPlayer { @@ -242,6 +256,7 @@ pub fn Detail( media_type: "video".to_string(), title: media.title.clone(), autoplay, + on_track_ended: on_track_ended, } } else if category == "image" { if has_thumbnail { @@ -290,6 +305,71 @@ pub fn Detail( } } + // Play queue panel (only for audio/video with a queue) + if has_queue && (category == "audio" || category == "video") { + if let Some(ref queue) = play_queue { + QueuePanel { + queue: queue.clone(), + on_select: { + let handler = on_queue_select; + move |idx| { + if let Some(ref h) = handler { + h.call(idx); + } + } + }, + on_remove: { + let handler = on_queue_remove; + move |idx| { + if let Some(ref h) = handler { + h.call(idx); + } + } + }, + on_clear: { + let handler = on_queue_clear; + move |_| { + if let Some(ref h) = handler { + h.call(()); + } + } + }, + on_toggle_repeat: { + let handler = on_queue_toggle_repeat; + move |_| { + if let Some(ref h) = handler { + h.call(()); + } + } + }, + on_toggle_shuffle: { + let handler = on_queue_toggle_shuffle; + move |_| { + if let Some(ref h) = handler { + h.call(()); + } + } + }, + on_next: { + let handler = on_queue_next; + move |_| { + if let Some(ref h) = handler { + h.call(()); + } + } + }, + on_previous: { + let handler = on_queue_previous; + move |_| { + if let Some(ref h) = handler { + h.call(()); + } + } + }, + } + } + } + // Action bar div { class: "detail-actions", button { @@ -305,6 +385,46 @@ pub fn Detail( }, "Open" } + // Add to Queue button for audio/video content + if (category == "audio" || category == "video") && on_add_to_queue.is_some() { + { + // Check if this item is currently playing + let is_current = play_queue.as_ref() + .and_then(|q| q.current()) + .map(|item| item.media_id == id) + .unwrap_or(false); + let media_id_for_queue = id.clone(); + let title_for_queue = media.title.clone().unwrap_or_else(|| media.file_name.clone()); + let artist_for_queue = media.artist.clone(); + let duration_for_queue = media.duration_secs; + let media_type_for_queue = category.to_string(); + let stream_url_for_queue = stream_url.clone(); + let thumbnail_for_queue = if has_thumbnail { Some(thumbnail_url.clone()) } else { None }; + let on_add = on_add_to_queue; + rsx! { + button { + class: if is_current { "btn btn-secondary disabled" } else { "btn btn-secondary" }, + disabled: is_current, + title: if is_current { "Currently playing" } else { "Add to play queue" }, + onclick: move |_| { + if let Some(ref handler) = on_add { + let item = QueueItem { + media_id: media_id_for_queue.clone(), + title: title_for_queue.clone(), + artist: artist_for_queue.clone(), + duration_secs: duration_for_queue, + media_type: media_type_for_queue.clone(), + stream_url: stream_url_for_queue.clone(), + thumbnail_url: thumbnail_for_queue.clone(), + }; + handler.call(item); + } + }, + if is_current { "\u{266b} Playing" } else { "\u{2795} Queue" } + } + } + } + } if is_editing { button { class: "btn btn-primary", onclick: on_save_click, "Save" } button { class: "btn btn-ghost", onclick: on_cancel_click, "Cancel" }