From a81022bb0b8905db9b3cff7ca8b3a80858eabc2e Mon Sep 17 00:00:00 2001 From: Ren Amamiya Date: Sat, 28 Mar 2026 15:25:32 +0700 Subject: [PATCH] add failed message --- Cargo.lock | 342 +++++++++++++++++++------------------ crates/chat/src/lib.rs | 55 ++++-- crates/chat/src/message.rs | 20 +++ 3 files changed, 235 insertions(+), 182 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f22c54e..677dffb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -612,9 +612,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.39.0" +version = "0.39.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa7e52a4c5c547c741610a2c6f123f3881e409b714cd27e6798ef020c514f0a" +checksum = "83a25cf98105baa966497416dbd42565ce3a8cf8dbfd59803ec9ad46f3126399" dependencies = [ "cc", "cmake", @@ -860,6 +860,15 @@ version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +[[package]] +name = "bzip2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3a53fac24f34a81bc9954b5d6cfce0c21e18ec6959f44f56e8e90e4bb7c346c" +dependencies = [ + "libbz2-rs-sys", +] + [[package]] name = "calloop" version = "0.14.4" @@ -914,9 +923,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.57" +version = "1.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423" +checksum = "e1e928d4b69e3077709075a938a05ffbedfa53a84c8f766efbf8220bb1ff60e1" dependencies = [ "find-msvc-tools", "jobserver", @@ -1060,12 +1069,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "circular-buffer" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c638459986b83c2b885179bd4ea6a2cbb05697b001501a56adb3a3d230803b" - [[package]] name = "clang-sys" version = "1.8.1" @@ -1119,9 +1122,9 @@ checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "cmake" -version = "0.1.57" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" +checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" dependencies = [ "cc", ] @@ -1200,7 +1203,7 @@ dependencies = [ [[package]] name = "collections" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "indexmap", "rustc-hash 2.1.1", @@ -1263,6 +1266,7 @@ version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb7b51a7d9c967fc26773061ba86150f19c50c0d65c887cb1fbe295fd16619b7" dependencies = [ + "bzip2", "compression-core", "deflate64", "flate2", @@ -1522,7 +1526,7 @@ dependencies = [ "rangemap", "rustc-hash 2.1.1", "self_cell", - "skrifa 0.40.0", + "skrifa", "smol_str", "swash", "sys-locale", @@ -1659,7 +1663,7 @@ dependencies = [ [[package]] name = "derive_refineable" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "proc-macro2", "quote", @@ -2192,15 +2196,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" -[[package]] -name = "font-types" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39a654f404bbcbd48ea58c617c2993ee91d1cb63727a37bf2323a4edeed1b8c5" -dependencies = [ - "bytemuck", -] - [[package]] name = "font-types" version = "0.11.1" @@ -2522,6 +2517,16 @@ dependencies = [ "wasip3", ] +[[package]] +name = "gif" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b" +dependencies = [ + "color_quant", + "weezl", +] + [[package]] name = "gif" version = "0.14.1" @@ -2638,7 +2643,7 @@ dependencies = [ [[package]] name = "gpui" version = "0.2.2" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "anyhow", "async-channel 2.5.0", @@ -2648,7 +2653,6 @@ dependencies = [ "block", "cbindgen", "chrono", - "circular-buffer", "cocoa 0.26.0", "cocoa-foundation 0.2.0", "collections", @@ -2676,7 +2680,7 @@ dependencies = [ "mach2", "media", "metal", - "naga 29.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "naga 29.0.1", "num_cpus", "objc", "parking", @@ -2689,6 +2693,7 @@ dependencies = [ "rand 0.9.2", "raw-window-handle", "refineable", + "regex", "resvg", "scheduler", "schemars", @@ -2703,6 +2708,7 @@ dependencies = [ "sum_tree", "taffy", "thiserror 2.0.18", + "ttf-parser", "url", "usvg", "util_macros", @@ -2717,7 +2723,7 @@ dependencies = [ [[package]] name = "gpui_linux" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "anyhow", "as-raw-xcb-connection", @@ -2765,7 +2771,7 @@ dependencies = [ [[package]] name = "gpui_macos" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "anyhow", "async-task", @@ -2807,7 +2813,7 @@ dependencies = [ [[package]] name = "gpui_macros" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -2818,7 +2824,7 @@ dependencies = [ [[package]] name = "gpui_platform" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "console_error_panic_hook", "gpui", @@ -2831,7 +2837,7 @@ dependencies = [ [[package]] name = "gpui_tokio" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "anyhow", "gpui", @@ -2842,7 +2848,7 @@ dependencies = [ [[package]] name = "gpui_util" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "anyhow", "log", @@ -2851,7 +2857,7 @@ dependencies = [ [[package]] name = "gpui_web" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "anyhow", "console_error_panic_hook", @@ -2875,7 +2881,7 @@ dependencies = [ [[package]] name = "gpui_wgpu" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "anyhow", "bytemuck", @@ -2903,7 +2909,7 @@ dependencies = [ [[package]] name = "gpui_windows" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "anyhow", "collections", @@ -2971,7 +2977,7 @@ dependencies = [ "bitflags 2.11.0", "bytemuck", "core_maths", - "read-fonts 0.37.0", + "read-fonts", "smallvec", ] @@ -3165,7 +3171,7 @@ dependencies = [ [[package]] name = "http_client" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "anyhow", "async-compression", @@ -3190,7 +3196,7 @@ dependencies = [ [[package]] name = "http_client_tls" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "rustls", "rustls-platform-verifier", @@ -3407,7 +3413,7 @@ dependencies = [ "byteorder-lite", "color_quant", "exr", - "gif", + "gif 0.14.1", "image-webp", "moxcms", "num-traits", @@ -3417,8 +3423,8 @@ dependencies = [ "rayon", "rgb", "tiff", - "zune-core", - "zune-jpeg", + "zune-core 0.5.1", + "zune-jpeg 0.5.15", ] [[package]] @@ -3666,10 +3672,12 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.91" +version = "0.3.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" +checksum = "cc4c90f45aa2e6eacbe8645f77fdea542ac97a494bcd117a67df9ff4d611f995" dependencies = [ + "cfg-if", + "futures-util", "once_cell", "wasm-bindgen", ] @@ -3744,6 +3752,12 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8" +[[package]] +name = "libbz2-rs-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4a545a15244c7d945065b5d392b2d2d7f21526fba56ce51467b06ed445e8f7" + [[package]] name = "libc" version = "0.2.183" @@ -4022,7 +4036,7 @@ dependencies = [ [[package]] name = "media" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "anyhow", "bindgen", @@ -4116,9 +4130,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" dependencies = [ "libc", "wasi", @@ -4135,31 +4149,6 @@ dependencies = [ "pxfm", ] -[[package]] -name = "naga" -version = "29.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b4372fed0bd362d646d01b6926df0e837859ccc522fed720c395e0460f29c8" -dependencies = [ - "arrayvec", - "bit-set", - "bitflags 2.11.0", - "cfg-if", - "cfg_aliases", - "codespan-reporting", - "half", - "hashbrown 0.16.1", - "hexf-parse", - "indexmap", - "libm", - "log", - "num-traits", - "once_cell", - "rustc-hash 1.1.0", - "thiserror 2.0.18", - "unicode-ident", -] - [[package]] name = "naga" version = "29.0.0" @@ -4185,6 +4174,31 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "naga" +version = "29.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2630921705b9b01dcdd0b6864b9562ca3c1951eecd0f0c4f5f04f61e412647" +dependencies = [ + "arrayvec", + "bit-set", + "bitflags 2.11.0", + "cfg-if", + "cfg_aliases", + "codespan-reporting", + "half", + "hashbrown 0.16.1", + "hexf-parse", + "indexmap", + "libm", + "log", + "num-traits", + "once_cell", + "rustc-hash 1.1.0", + "thiserror 2.0.18", + "unicode-ident", +] + [[package]] name = "nanorand" version = "0.7.0" @@ -4273,7 +4287,7 @@ checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" [[package]] name = "nostr" version = "0.44.1" -source = "git+https://github.com/rust-nostr/nostr#79e28478c7d57f785a91002f01e66f242aff8f5c" +source = "git+https://github.com/rust-nostr/nostr#19e6769b36f2c9c046a5da76a1ee380a2efb8026" dependencies = [ "aes", "base64", @@ -4297,7 +4311,7 @@ dependencies = [ [[package]] name = "nostr-blossom" version = "0.44.0" -source = "git+https://github.com/rust-nostr/nostr#79e28478c7d57f785a91002f01e66f242aff8f5c" +source = "git+https://github.com/rust-nostr/nostr#19e6769b36f2c9c046a5da76a1ee380a2efb8026" dependencies = [ "base64", "nostr", @@ -4308,7 +4322,7 @@ dependencies = [ [[package]] name = "nostr-connect" version = "0.44.0" -source = "git+https://github.com/rust-nostr/nostr#79e28478c7d57f785a91002f01e66f242aff8f5c" +source = "git+https://github.com/rust-nostr/nostr#19e6769b36f2c9c046a5da76a1ee380a2efb8026" dependencies = [ "async-utility", "futures-core", @@ -4321,7 +4335,7 @@ dependencies = [ [[package]] name = "nostr-database" version = "0.44.0" -source = "git+https://github.com/rust-nostr/nostr#79e28478c7d57f785a91002f01e66f242aff8f5c" +source = "git+https://github.com/rust-nostr/nostr#19e6769b36f2c9c046a5da76a1ee380a2efb8026" dependencies = [ "btreecap", "flatbuffers", @@ -4331,7 +4345,7 @@ dependencies = [ [[package]] name = "nostr-gossip" version = "0.44.0" -source = "git+https://github.com/rust-nostr/nostr#79e28478c7d57f785a91002f01e66f242aff8f5c" +source = "git+https://github.com/rust-nostr/nostr#19e6769b36f2c9c046a5da76a1ee380a2efb8026" dependencies = [ "nostr", ] @@ -4339,7 +4353,7 @@ dependencies = [ [[package]] name = "nostr-gossip-memory" version = "0.44.0" -source = "git+https://github.com/rust-nostr/nostr#79e28478c7d57f785a91002f01e66f242aff8f5c" +source = "git+https://github.com/rust-nostr/nostr#19e6769b36f2c9c046a5da76a1ee380a2efb8026" dependencies = [ "indexmap", "lru", @@ -4351,7 +4365,7 @@ dependencies = [ [[package]] name = "nostr-lmdb" version = "0.44.0" -source = "git+https://github.com/rust-nostr/nostr#79e28478c7d57f785a91002f01e66f242aff8f5c" +source = "git+https://github.com/rust-nostr/nostr#19e6769b36f2c9c046a5da76a1ee380a2efb8026" dependencies = [ "async-utility", "flume 0.12.0", @@ -4365,7 +4379,7 @@ dependencies = [ [[package]] name = "nostr-memory" version = "0.44.0" -source = "git+https://github.com/rust-nostr/nostr#79e28478c7d57f785a91002f01e66f242aff8f5c" +source = "git+https://github.com/rust-nostr/nostr#19e6769b36f2c9c046a5da76a1ee380a2efb8026" dependencies = [ "btreecap", "nostr", @@ -4376,7 +4390,7 @@ dependencies = [ [[package]] name = "nostr-sdk" version = "0.44.1" -source = "git+https://github.com/rust-nostr/nostr#79e28478c7d57f785a91002f01e66f242aff8f5c" +source = "git+https://github.com/rust-nostr/nostr#19e6769b36f2c9c046a5da76a1ee380a2efb8026" dependencies = [ "async-utility", "async-wsocket", @@ -4717,9 +4731,9 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "ordered-float" -version = "5.1.0" +version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4779c6901a562440c3786d08192c6fbda7c1c2060edd10006b05ee35d10f2d" +checksum = "0218004a4aae742209bee9c3cef05672f6b2708be36a50add8eb613b1f2a4008" dependencies = [ "num-traits", ] @@ -4850,7 +4864,7 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "perf" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "collections", "serde", @@ -5490,16 +5504,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "read-fonts" -version = "0.35.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717cf23b488adf64b9d711329542ba34de147df262370221940dfabc2c91358" -dependencies = [ - "bytemuck", - "font-types 0.10.1", -] - [[package]] name = "read-fonts" version = "0.37.0" @@ -5508,7 +5512,7 @@ checksum = "7b634fabf032fab15307ffd272149b622260f55974d9fad689292a5d33df02e5" dependencies = [ "bytemuck", "core_maths", - "font-types 0.11.1", + "font-types", ] [[package]] @@ -5572,7 +5576,7 @@ dependencies = [ [[package]] name = "refineable" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "derive_refineable", ] @@ -5671,7 +5675,7 @@ dependencies = [ [[package]] name = "reqwest_client" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "anyhow", "bytes", @@ -5692,12 +5696,15 @@ version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8928798c0a55e03c9ca6c4c6846f76377427d2c1e1f7e6de3c06ae57942df43" dependencies = [ + "gif 0.13.3", + "image-webp", "log", "pico-args", "rgb", "svgtypes", "tiny-skia", "usvg", + "zune-jpeg 0.4.21", ] [[package]] @@ -5726,7 +5733,7 @@ dependencies = [ [[package]] name = "rope" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "heapless", "log", @@ -5988,7 +5995,7 @@ dependencies = [ [[package]] name = "scheduler" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "async-task", "backtrace", @@ -6337,9 +6344,9 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" [[package]] name = "simd_cesu8" @@ -6381,16 +6388,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" -[[package]] -name = "skrifa" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c31071dedf532758ecf3fed987cdb4bd9509f900e026ab684b4ecb81ea49841" -dependencies = [ - "bytemuck", - "read-fonts 0.35.0", -] - [[package]] name = "skrifa" version = "0.40.0" @@ -6398,7 +6395,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fbdfe3d2475fbd7ddd1f3e5cf8288a30eb3e5f95832829570cd88115a7434ac" dependencies = [ "bytemuck", - "read-fonts 0.37.0", + "read-fonts", ] [[package]] @@ -6600,7 +6597,7 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "sum_tree" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "heapless", "log", @@ -6611,15 +6608,15 @@ dependencies = [ [[package]] name = "sval" -version = "2.17.0" +version = "2.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1aaf178a50bbdd86043fce9bf0a5867007d9b382db89d1c96ccae4601ff1ff9" +checksum = "2eb9318255ebd817902d7e279d8f8e39b35b1b9954decd5eb9ea0e30e5fd2b6a" [[package]] name = "sval_buffer" -version = "2.17.0" +version = "2.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f89273e48f03807ebf51c4d81c52f28d35ffa18a593edf97e041b52de143df89" +checksum = "12571299185e653fdb0fbfe36cd7f6529d39d4e747a60b15a3f34574b7b97c61" dependencies = [ "sval", "sval_ref", @@ -6627,18 +6624,18 @@ dependencies = [ [[package]] name = "sval_dynamic" -version = "2.17.0" +version = "2.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0430f4e18e7eba21a49d10d25a8dec3ce0e044af40b162347e99a8e3c3ced864" +checksum = "39526f24e997706c0de7f03fb7371f7f5638b66a504ded508e20ad173d0a3677" dependencies = [ "sval", ] [[package]] name = "sval_fmt" -version = "2.17.0" +version = "2.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835f51b9d7331b9d7fc48fc716c02306fa88c4a076b1573531910c91a525882d" +checksum = "933dd3bb26965d682280fcc49400ac2a05036f4ee1e6dbd61bf8402d5a5c3a54" dependencies = [ "itoa", "ryu", @@ -6647,9 +6644,9 @@ dependencies = [ [[package]] name = "sval_json" -version = "2.17.0" +version = "2.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13cbfe3ef406ee2366e7e8ab3678426362085fa9eaedf28cb878a967159dced3" +checksum = "a0cda08f6d5c9948024a6551077557b1fdcc3880ff2f20ae839667d2ec2d87ed" dependencies = [ "itoa", "ryu", @@ -6658,9 +6655,9 @@ dependencies = [ [[package]] name = "sval_nested" -version = "2.17.0" +version = "2.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b20358af4af787c34321a86618c3cae12eabdd0e9df22cd9dd2c6834214c518" +checksum = "88d49d5e6c1f9fd0e53515819b03a97ca4eb1bff5c8ee097c43391c09ecfb19f" dependencies = [ "sval", "sval_buffer", @@ -6669,18 +6666,18 @@ dependencies = [ [[package]] name = "sval_ref" -version = "2.17.0" +version = "2.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5e500f8eb2efa84f75e7090f7fc43f621b9f8b6cde571c635b3855f97b332a" +checksum = "14f876c5a78405375b4e19cbb9554407513b59c93dea12dc6a4af4e1d30899ca" dependencies = [ "sval", ] [[package]] name = "sval_serde" -version = "2.17.0" +version = "2.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2032ae39b11dcc6c18d5fbc50a661ea191cac96484c59ccf49b002261ca2c1" +checksum = "5f9ccd3b7f7200239a655e517dd3fd48d960b9111ad24bd6a5e055bef17607c7" dependencies = [ "serde_core", "sval", @@ -6705,11 +6702,11 @@ dependencies = [ [[package]] name = "swash" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47846491253e976bdd07d0f9cc24b7daf24720d11309302ccbbc6e6b6e53550a" +checksum = "842f3cd369c2ba38966204f983eaa5e54a8e84a7d7159ed36ade2b6c335aae64" dependencies = [ - "skrifa 0.37.0", + "skrifa", "yazi", "zeno", ] @@ -6935,7 +6932,7 @@ dependencies = [ "half", "quick-error", "weezl", - "zune-jpeg", + "zune-jpeg 0.5.15", ] [[package]] @@ -7451,9 +7448,9 @@ checksum = "383ad40bb927465ec0ce7720e033cb4ca06912855fc35db31b5755d0de75b1ee" [[package]] name = "unicode-segmentation" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da36089a805484bcccfffe0739803392c8298778a2d2f09febf76fac5ad9025b" +checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" [[package]] name = "unicode-vo" @@ -7485,9 +7482,9 @@ dependencies = [ [[package]] name = "universal-time" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b35da41b69caac5d25e3eba1ca0b7e9ac859a23af369d2e36a37dbb7defbc93" +checksum = "f942cacf37a673350e8f252dff4691fb8e525a5fff6e1f2c4b6c2f3b8349248d" [[package]] name = "untrusted" @@ -7562,7 +7559,7 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "util" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "anyhow", "async-fs", @@ -7601,7 +7598,7 @@ dependencies = [ [[package]] name = "util_macros" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "perf", "quote", @@ -7610,9 +7607,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.22.0" +version = "1.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37" +checksum = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9" dependencies = [ "getrandom 0.4.2", "js-sys", @@ -7757,9 +7754,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.114" +version = "0.2.115" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" +checksum = "6523d69017b7633e396a89c5efab138161ed5aafcbc8d3e5c5a42ae38f50495a" dependencies = [ "cfg-if", "once_cell", @@ -7770,23 +7767,19 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.64" +version = "0.4.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8" +checksum = "2d1faf851e778dfa54db7cd438b70758eba9755cb47403f3496edd7c8fc212f0" dependencies = [ - "cfg-if", - "futures-util", "js-sys", - "once_cell", "wasm-bindgen", - "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.114" +version = "0.2.115" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" +checksum = "4e3a6c758eb2f701ed3d052ff5737f5bfe6614326ea7f3bbac7156192dc32e67" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7794,9 +7787,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.114" +version = "0.2.115" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" +checksum = "921de2737904886b52bcbb237301552d05969a6f9c40d261eb0533c8b055fedf" dependencies = [ "bumpalo", "proc-macro2", @@ -7807,9 +7800,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.114" +version = "0.2.115" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" +checksum = "a93e946af942b58934c604527337bad9ae33ba1d5c6900bbb41c2c07c2364a93" dependencies = [ "unicode-ident", ] @@ -7973,9 +7966,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.91" +version = "0.3.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" +checksum = "84cde8507f4d7cfcb1185b8cb5890c494ffea65edbe1ba82cfd63661c805ed94" dependencies = [ "js-sys", "wasm-bindgen", @@ -8063,7 +8056,7 @@ dependencies = [ "hashbrown 0.16.1", "js-sys", "log", - "naga 29.0.0 (git+https://github.com/zed-industries/wgpu.git?branch=v29)", + "naga 29.0.0", "parking_lot", "portable-atomic", "profiling", @@ -8093,7 +8086,7 @@ dependencies = [ "hashbrown 0.16.1", "indexmap", "log", - "naga 29.0.0 (git+https://github.com/zed-industries/wgpu.git?branch=v29)", + "naga 29.0.0", "once_cell", "parking_lot", "portable-atomic", @@ -8158,7 +8151,7 @@ dependencies = [ "libc", "libloading", "log", - "naga 29.0.0 (git+https://github.com/zed-industries/wgpu.git?branch=v29)", + "naga 29.0.0", "ndk-sys", "objc2", "objc2-core-foundation", @@ -8191,7 +8184,7 @@ name = "wgpu-naga-bridge" version = "29.0.0" source = "git+https://github.com/zed-industries/wgpu.git?branch=v29#a466bc382ea747f8e1ac810efdb6dcd49a514575" dependencies = [ - "naga 29.0.0 (git+https://github.com/zed-industries/wgpu.git?branch=v29)", + "naga 29.0.0", "wgpu-types", ] @@ -9422,7 +9415,7 @@ dependencies = [ [[package]] name = "zlog" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "anyhow", "chrono", @@ -9439,7 +9432,7 @@ checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" [[package]] name = "ztracing" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" dependencies = [ "tracing", "tracing-subscriber", @@ -9450,7 +9443,13 @@ dependencies = [ [[package]] name = "ztracing_macro" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#103fa371562e86af63204df8cf7bf35559ada0d4" +source = "git+https://github.com/zed-industries/zed#fa2790d52a527834591a031e7f19f6e0ca103228" + +[[package]] +name = "zune-core" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" [[package]] name = "zune-core" @@ -9469,11 +9468,20 @@ dependencies = [ [[package]] name = "zune-jpeg" -version = "0.5.14" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7a1c0af6e5d8d1363f4994b7a091ccf963d8b694f7da5b0b9cceb82da2c0a6" +checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" dependencies = [ - "zune-core", + "zune-core 0.4.12", +] + +[[package]] +name = "zune-jpeg" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" +dependencies = [ + "zune-core 0.5.1", ] [[package]] diff --git a/crates/chat/src/lib.rs b/crates/chat/src/lib.rs index ed0f347..7b21f05 100644 --- a/crates/chat/src/lib.rs +++ b/crates/chat/src/lib.rs @@ -1,5 +1,5 @@ use std::cmp::Reverse; -use std::collections::{HashMap, HashSet}; +use std::collections::{BTreeSet, HashMap, HashSet}; use std::hash::{DefaultHasher, Hash, Hasher}; use std::sync::Arc; use std::sync::atomic::{AtomicBool, Ordering}; @@ -55,7 +55,24 @@ enum Signal { /// Eose received from relay pool Eose, /// An error occurred - Error(SharedString), + Error(FailedMessage), +} + +impl Signal { + pub fn message(gift_wrap: EventId, rumor: UnsignedEvent) -> Self { + Self::Message(NewMessage::new(gift_wrap, rumor)) + } + + pub fn eose() -> Self { + Self::Eose + } + + pub fn error(event: &Event, reason: T) -> Self + where + T: Into, + { + Self::Error(FailedMessage::new(event, reason)) + } } /// Chat Registry @@ -64,6 +81,9 @@ pub struct ChatRegistry { /// Chat rooms rooms: Vec>, + /// Events that failed to unwrap for any reason + trashes: Entity>, + /// Tracking events seen on which relays in the current session seens: Arc>>>, @@ -128,6 +148,7 @@ impl ChatRegistry { Self { rooms: vec![], + trashes: cx.new(|_| BTreeSet::default()), seens: Arc::new(RwLock::new(HashMap::default())), tracking_flag: Arc::new(AtomicBool::new(false)), signal_rx: rx, @@ -144,6 +165,7 @@ impl ChatRegistry { let signer = nostr.read(cx).signer(); let status = self.tracking_flag.clone(); let seens = self.seens.clone(); + let trashes = self.trashes.downgrade(); let initialized_at = Timestamp::now(); let sub_id1 = SubscriptionId::new(DEVICE_GIFTWRAP); @@ -185,28 +207,30 @@ impl ChatRegistry { match extract_rumor(&client, &signer, event.as_ref()).await { Ok(rumor) => { if rumor.tags.is_empty() { - let error: SharedString = "No room for message".into(); - tx.send_async(Signal::Error(error)).await?; + let signal = + Signal::error(event.as_ref(), "Recipient is missing"); + tx.send_async(signal).await?; + + continue; } if rumor.created_at >= initialized_at { - let new_message = NewMessage::new(event.id, rumor); - let signal = Signal::Message(new_message); - + let signal = Signal::message(event.id, rumor); tx.send_async(signal).await?; } else { status.store(true, Ordering::Release); } } Err(e) => { - let error: SharedString = format!("Failed to unwrap: {e}").into(); - tx.send_async(Signal::Error(error)).await?; + let reason = format!("Failed to extract rumor: {e}"); + let signal = Signal::error(event.as_ref(), reason); + tx.send_async(signal).await?; } } } RelayMessage::EndOfStoredEvents(id) => { if id.as_ref() == &sub_id1 || id.as_ref() == &sub_id2 { - tx.send_async(Signal::Eose).await?; + tx.send_async(Signal::eose()).await?; } } _ => {} @@ -229,9 +253,10 @@ impl ChatRegistry { this.get_rooms(cx); })?; } - Signal::Error(error) => { - this.update(cx, |_this, cx| { - cx.emit(ChatEvent::Error(error)); + Signal::Error(trash) => { + trashes.update(cx, |this, cx| { + this.insert(trash); + cx.notify(); })?; } }; @@ -685,8 +710,8 @@ async fn extract_rumor( gift_wrap: &Event, ) -> Result { // Try to get cached rumor first - if let Ok(event) = get_rumor(client, gift_wrap.id).await { - return Ok(event); + if let Ok(rumor) = get_rumor(client, gift_wrap.id).await { + return Ok(rumor); } // Try to unwrap with the available signer diff --git a/crates/chat/src/message.rs b/crates/chat/src/message.rs index 1cbcadd..77f08b7 100644 --- a/crates/chat/src/message.rs +++ b/crates/chat/src/message.rs @@ -2,6 +2,7 @@ use std::hash::Hash; use std::ops::Range; use common::{EventUtils, NostrParser}; +use gpui::SharedString; use nostr_sdk::prelude::*; /// New message. @@ -24,6 +25,25 @@ impl NewMessage { } } +/// Trash message. +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] +pub struct FailedMessage { + pub raw_event: String, + pub reason: SharedString, +} + +impl FailedMessage { + pub fn new(event: &Event, reason: T) -> Self + where + T: Into, + { + Self { + raw_event: event.as_json(), + reason: reason.into(), + } + } +} + /// Message. #[derive(Debug, Clone, Hash, PartialEq, Eq)] pub enum Message {