upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock489
-rw-r--r--Cargo.toml13
-rw-r--r--src/bin/git_remote_nostr/push.rs4
-rw-r--r--src/bin/ngit/sub_commands/send.rs23
-rw-r--r--src/lib/client.rs43
-rw-r--r--src/lib/git/nostr_url.rs5
-rw-r--r--src/lib/git_events.rs38
-rw-r--r--src/lib/login/fresh.rs6
-rw-r--r--test_utils/Cargo.toml8
-rw-r--r--test_utils/src/lib.rs2
-rw-r--r--test_utils/src/relay.rs8
-rw-r--r--tests/git_remote_nostr/push.rs16
-rw-r--r--tests/ngit_send.rs3
13 files changed, 436 insertions, 222 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 5c8c693..a6266a2 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -174,6 +174,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
174checksum = "ef49f5882e4b6afaac09ad239a4f8c70a24b8f2b0897edb1f706008efd109cf4" 174checksum = "ef49f5882e4b6afaac09ad239a4f8c70a24b8f2b0897edb1f706008efd109cf4"
175 175
176[[package]] 176[[package]]
177name = "atomic-waker"
178version = "1.1.2"
179source = "registry+https://github.com/rust-lang/crates.io-index"
180checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
181
182[[package]]
177name = "auth-git2" 183name = "auth-git2"
178version = "0.5.8" 184version = "0.5.8"
179source = "registry+https://github.com/rust-lang/crates.io-index" 185source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -269,12 +275,6 @@ dependencies = [
269 275
270[[package]] 276[[package]]
271name = "bitflags" 277name = "bitflags"
272version = "1.3.2"
273source = "registry+https://github.com/rust-lang/crates.io-index"
274checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
275
276[[package]]
277name = "bitflags"
278version = "2.9.1" 278version = "2.9.1"
279source = "registry+https://github.com/rust-lang/crates.io-index" 279source = "registry+https://github.com/rust-lang/crates.io-index"
280checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" 280checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
@@ -340,9 +340,9 @@ dependencies = [
340 340
341[[package]] 341[[package]]
342name = "cc" 342name = "cc"
343version = "1.2.29" 343version = "1.2.30"
344source = "registry+https://github.com/rust-lang/crates.io-index" 344source = "registry+https://github.com/rust-lang/crates.io-index"
345checksum = "5c1599538de2394445747c8cf7935946e3cc27e9625f889d979bfb2aaf569362" 345checksum = "deec109607ca693028562ed836a5f1c4b8bd77755c4e132fc5ce11b0b6211ae7"
346dependencies = [ 346dependencies = [
347 "jobserver", 347 "jobserver",
348 "libc", 348 "libc",
@@ -356,12 +356,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
356checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" 356checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268"
357 357
358[[package]] 358[[package]]
359name = "cfg_aliases"
360version = "0.2.1"
361source = "registry+https://github.com/rust-lang/crates.io-index"
362checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
363
364[[package]]
365name = "chacha20" 359name = "chacha20"
366version = "0.9.1" 360version = "0.9.1"
367source = "registry+https://github.com/rust-lang/crates.io-index" 361source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -398,9 +392,9 @@ dependencies = [
398 392
399[[package]] 393[[package]]
400name = "clap" 394name = "clap"
401version = "4.5.41" 395version = "4.5.42"
402source = "registry+https://github.com/rust-lang/crates.io-index" 396source = "registry+https://github.com/rust-lang/crates.io-index"
403checksum = "be92d32e80243a54711e5d7ce823c35c41c9d929dc4ab58e1276f625841aadf9" 397checksum = "ed87a9d530bb41a67537289bafcac159cb3ee28460e0a4571123d2a778a6a882"
404dependencies = [ 398dependencies = [
405 "clap_builder", 399 "clap_builder",
406 "clap_derive", 400 "clap_derive",
@@ -408,9 +402,9 @@ dependencies = [
408 402
409[[package]] 403[[package]]
410name = "clap_builder" 404name = "clap_builder"
411version = "4.5.41" 405version = "4.5.42"
412source = "registry+https://github.com/rust-lang/crates.io-index" 406source = "registry+https://github.com/rust-lang/crates.io-index"
413checksum = "707eab41e9622f9139419d573eca0900137718000c517d47da73045f54331c3d" 407checksum = "64f4f3f3c77c94aff3c7e9aac9a2ca1974a5adf392a8bb751e827d6d127ab966"
414dependencies = [ 408dependencies = [
415 "anstream", 409 "anstream",
416 "anstyle", 410 "anstyle",
@@ -475,6 +469,22 @@ dependencies = [
475] 469]
476 470
477[[package]] 471[[package]]
472name = "core-foundation"
473version = "0.9.4"
474source = "registry+https://github.com/rust-lang/crates.io-index"
475checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
476dependencies = [
477 "core-foundation-sys",
478 "libc",
479]
480
481[[package]]
482name = "core-foundation-sys"
483version = "0.8.7"
484source = "registry+https://github.com/rust-lang/crates.io-index"
485checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
486
487[[package]]
478name = "cpufeatures" 488name = "cpufeatures"
479version = "0.2.17" 489version = "0.2.17"
480source = "registry+https://github.com/rust-lang/crates.io-index" 490source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -620,6 +630,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
620checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" 630checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
621 631
622[[package]] 632[[package]]
633name = "encoding_rs"
634version = "0.8.35"
635source = "registry+https://github.com/rust-lang/crates.io-index"
636checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
637dependencies = [
638 "cfg-if",
639]
640
641[[package]]
623name = "equivalent" 642name = "equivalent"
624version = "1.0.2" 643version = "1.0.2"
625source = "registry+https://github.com/rust-lang/crates.io-index" 644source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -643,11 +662,11 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
643 662
644[[package]] 663[[package]]
645name = "flatbuffers" 664name = "flatbuffers"
646version = "23.5.26" 665version = "25.2.10"
647source = "registry+https://github.com/rust-lang/crates.io-index" 666source = "registry+https://github.com/rust-lang/crates.io-index"
648checksum = "4dac53e22462d78c16d64a1cd22371b54cc3fe94aa15e7886a2fa6e5d1ab8640" 667checksum = "1045398c1bfd89168b5fd3f1fc11f6e70b34f6f66300c87d44d3de849463abf1"
649dependencies = [ 668dependencies = [
650 "bitflags 1.3.2", 669 "bitflags",
651 "rustc_version", 670 "rustc_version",
652] 671]
653 672
@@ -671,6 +690,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
671checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 690checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
672 691
673[[package]] 692[[package]]
693name = "foreign-types"
694version = "0.3.2"
695source = "registry+https://github.com/rust-lang/crates.io-index"
696checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
697dependencies = [
698 "foreign-types-shared",
699]
700
701[[package]]
702name = "foreign-types-shared"
703version = "0.1.1"
704source = "registry+https://github.com/rust-lang/crates.io-index"
705checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
706
707[[package]]
674name = "form_urlencoded" 708name = "form_urlencoded"
675version = "1.2.1" 709version = "1.2.1"
676source = "registry+https://github.com/rust-lang/crates.io-index" 710source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -804,11 +838,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
804checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" 838checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
805dependencies = [ 839dependencies = [
806 "cfg-if", 840 "cfg-if",
807 "js-sys",
808 "libc", 841 "libc",
809 "r-efi", 842 "r-efi",
810 "wasi 0.14.2+wasi-0.2.4", 843 "wasi 0.14.2+wasi-0.2.4",
811 "wasm-bindgen",
812] 844]
813 845
814[[package]] 846[[package]]
@@ -823,7 +855,7 @@ version = "0.20.2"
823source = "registry+https://github.com/rust-lang/crates.io-index" 855source = "registry+https://github.com/rust-lang/crates.io-index"
824checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110" 856checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110"
825dependencies = [ 857dependencies = [
826 "bitflags 2.9.1", 858 "bitflags",
827 "libc", 859 "libc",
828 "libgit2-sys", 860 "libgit2-sys",
829 "log", 861 "log",
@@ -845,6 +877,25 @@ dependencies = [
845] 877]
846 878
847[[package]] 879[[package]]
880name = "h2"
881version = "0.4.11"
882source = "registry+https://github.com/rust-lang/crates.io-index"
883checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785"
884dependencies = [
885 "atomic-waker",
886 "bytes",
887 "fnv",
888 "futures-core",
889 "futures-sink",
890 "http 1.3.1",
891 "indexmap",
892 "slab",
893 "tokio",
894 "tokio-util",
895 "tracing",
896]
897
898[[package]]
848name = "hashbrown" 899name = "hashbrown"
849version = "0.15.4" 900version = "0.15.4"
850source = "registry+https://github.com/rust-lang/crates.io-index" 901source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -862,7 +913,7 @@ version = "0.20.5"
862source = "registry+https://github.com/rust-lang/crates.io-index" 913source = "registry+https://github.com/rust-lang/crates.io-index"
863checksum = "7d4f449bab7320c56003d37732a917e18798e2f1709d80263face2b4f9436ddb" 914checksum = "7d4f449bab7320c56003d37732a917e18798e2f1709d80263face2b4f9436ddb"
864dependencies = [ 915dependencies = [
865 "bitflags 2.9.1", 916 "bitflags",
866 "byteorder", 917 "byteorder",
867 "heed-traits", 918 "heed-traits",
868 "heed-types", 919 "heed-types",
@@ -974,6 +1025,7 @@ dependencies = [
974 "bytes", 1025 "bytes",
975 "futures-channel", 1026 "futures-channel",
976 "futures-util", 1027 "futures-util",
1028 "h2",
977 "http 1.3.1", 1029 "http 1.3.1",
978 "http-body", 1030 "http-body",
979 "httparse", 1031 "httparse",
@@ -998,14 +1050,29 @@ dependencies = [
998 "tokio", 1050 "tokio",
999 "tokio-rustls", 1051 "tokio-rustls",
1000 "tower-service", 1052 "tower-service",
1001 "webpki-roots 1.0.1", 1053]
1054
1055[[package]]
1056name = "hyper-tls"
1057version = "0.6.0"
1058source = "registry+https://github.com/rust-lang/crates.io-index"
1059checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
1060dependencies = [
1061 "bytes",
1062 "http-body-util",
1063 "hyper",
1064 "hyper-util",
1065 "native-tls",
1066 "tokio",
1067 "tokio-native-tls",
1068 "tower-service",
1002] 1069]
1003 1070
1004[[package]] 1071[[package]]
1005name = "hyper-util" 1072name = "hyper-util"
1006version = "0.1.15" 1073version = "0.1.16"
1007source = "registry+https://github.com/rust-lang/crates.io-index" 1074source = "registry+https://github.com/rust-lang/crates.io-index"
1008checksum = "7f66d5bd4c6f02bf0542fad85d626775bab9258cf795a4256dcaf3161114d1df" 1075checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e"
1009dependencies = [ 1076dependencies = [
1010 "base64", 1077 "base64",
1011 "bytes", 1078 "bytes",
@@ -1020,9 +1087,11 @@ dependencies = [
1020 "percent-encoding", 1087 "percent-encoding",
1021 "pin-project-lite", 1088 "pin-project-lite",
1022 "socket2", 1089 "socket2",
1090 "system-configuration",
1023 "tokio", 1091 "tokio",
1024 "tower-service", 1092 "tower-service",
1025 "tracing", 1093 "tracing",
1094 "windows-registry",
1026] 1095]
1027 1096
1028[[package]] 1097[[package]]
@@ -1179,11 +1248,11 @@ dependencies = [
1179 1248
1180[[package]] 1249[[package]]
1181name = "io-uring" 1250name = "io-uring"
1182version = "0.7.8" 1251version = "0.7.9"
1183source = "registry+https://github.com/rust-lang/crates.io-index" 1252source = "registry+https://github.com/rust-lang/crates.io-index"
1184checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013" 1253checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4"
1185dependencies = [ 1254dependencies = [
1186 "bitflags 2.9.1", 1255 "bitflags",
1187 "cfg-if", 1256 "cfg-if",
1188 "libc", 1257 "libc",
1189] 1258]
@@ -1258,12 +1327,13 @@ dependencies = [
1258 1327
1259[[package]] 1328[[package]]
1260name = "libredox" 1329name = "libredox"
1261version = "0.1.4" 1330version = "0.1.9"
1262source = "registry+https://github.com/rust-lang/crates.io-index" 1331source = "registry+https://github.com/rust-lang/crates.io-index"
1263checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638" 1332checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3"
1264dependencies = [ 1333dependencies = [
1265 "bitflags 2.9.1", 1334 "bitflags",
1266 "libc", 1335 "libc",
1336 "redox_syscall",
1267] 1337]
1268 1338
1269[[package]] 1339[[package]]
@@ -1333,15 +1403,9 @@ checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
1333 1403
1334[[package]] 1404[[package]]
1335name = "lru" 1405name = "lru"
1336version = "0.14.0" 1406version = "0.16.0"
1337source = "registry+https://github.com/rust-lang/crates.io-index"
1338checksum = "9f8cc7106155f10bdf99a6f379688f543ad6596a415375b36a59a054ceda1198"
1339
1340[[package]]
1341name = "lru-slab"
1342version = "0.1.2"
1343source = "registry+https://github.com/rust-lang/crates.io-index" 1407source = "registry+https://github.com/rust-lang/crates.io-index"
1344checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" 1408checksum = "86ea4e65087ff52f3862caff188d489f1fab49a0cb09e01b2e3f1a617b10aaed"
1345 1409
1346[[package]] 1410[[package]]
1347name = "memchr" 1411name = "memchr"
@@ -1350,6 +1414,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1350checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" 1414checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
1351 1415
1352[[package]] 1416[[package]]
1417name = "mime"
1418version = "0.3.17"
1419source = "registry+https://github.com/rust-lang/crates.io-index"
1420checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
1421
1422[[package]]
1353name = "miniz_oxide" 1423name = "miniz_oxide"
1354version = "0.8.9" 1424version = "0.8.9"
1355source = "registry+https://github.com/rust-lang/crates.io-index" 1425source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1405,6 +1475,23 @@ dependencies = [
1405] 1475]
1406 1476
1407[[package]] 1477[[package]]
1478name = "native-tls"
1479version = "0.2.14"
1480source = "registry+https://github.com/rust-lang/crates.io-index"
1481checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e"
1482dependencies = [
1483 "libc",
1484 "log",
1485 "openssl",
1486 "openssl-probe",
1487 "openssl-sys",
1488 "schannel",
1489 "security-framework",
1490 "security-framework-sys",
1491 "tempfile",
1492]
1493
1494[[package]]
1408name = "negentropy" 1495name = "negentropy"
1409version = "0.5.0" 1496version = "0.5.0"
1410source = "registry+https://github.com/rust-lang/crates.io-index" 1497source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1436,6 +1523,7 @@ dependencies = [
1436 "once_cell", 1523 "once_cell",
1437 "passwords", 1524 "passwords",
1438 "qrcode", 1525 "qrcode",
1526 "reqwest",
1439 "scrypt", 1527 "scrypt",
1440 "serde", 1528 "serde",
1441 "serde_json", 1529 "serde_json",
@@ -1453,16 +1541,16 @@ version = "0.27.1"
1453source = "registry+https://github.com/rust-lang/crates.io-index" 1541source = "registry+https://github.com/rust-lang/crates.io-index"
1454checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" 1542checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
1455dependencies = [ 1543dependencies = [
1456 "bitflags 2.9.1", 1544 "bitflags",
1457 "cfg-if", 1545 "cfg-if",
1458 "libc", 1546 "libc",
1459] 1547]
1460 1548
1461[[package]] 1549[[package]]
1462name = "nostr" 1550name = "nostr"
1463version = "0.42.2" 1551version = "0.43.0"
1464source = "registry+https://github.com/rust-lang/crates.io-index" 1552source = "registry+https://github.com/rust-lang/crates.io-index"
1465checksum = "d193102a62a22b61f9a61b9df54fb19ebab8c1763d088fbb9a6f0f57000fba2d" 1553checksum = "f30e6dcb36d88017587b0b5578d1ed3398afe8e4f45fdb910e48b8675aaf6f68"
1466dependencies = [ 1554dependencies = [
1467 "aes", 1555 "aes",
1468 "base64", 1556 "base64",
@@ -1474,8 +1562,6 @@ dependencies = [
1474 "chacha20poly1305", 1562 "chacha20poly1305",
1475 "getrandom 0.2.16", 1563 "getrandom 0.2.16",
1476 "instant", 1564 "instant",
1477 "regex",
1478 "reqwest",
1479 "scrypt", 1565 "scrypt",
1480 "secp256k1", 1566 "secp256k1",
1481 "serde", 1567 "serde",
@@ -1486,9 +1572,9 @@ dependencies = [
1486 1572
1487[[package]] 1573[[package]]
1488name = "nostr-connect" 1574name = "nostr-connect"
1489version = "0.42.0" 1575version = "0.43.0"
1490source = "registry+https://github.com/rust-lang/crates.io-index" 1576source = "registry+https://github.com/rust-lang/crates.io-index"
1491checksum = "29bcce69dcfe07f399cba2f304b2b0662764eaf35b8e227049c063b1d2ec37d0" 1577checksum = "a3bcd44ea344d1cab3447615681cd3bb90134cafe4d157d3e714c23c31268cd8"
1492dependencies = [ 1578dependencies = [
1493 "async-utility", 1579 "async-utility",
1494 "nostr", 1580 "nostr",
@@ -1499,9 +1585,9 @@ dependencies = [
1499 1585
1500[[package]] 1586[[package]]
1501name = "nostr-database" 1587name = "nostr-database"
1502version = "0.42.0" 1588version = "0.43.0"
1503source = "registry+https://github.com/rust-lang/crates.io-index" 1589source = "registry+https://github.com/rust-lang/crates.io-index"
1504checksum = "b6aafe85dc7c039c399796043b76009fa744c3a45ac073a023932f7b7d91b1e7" 1590checksum = "b1c75a8c2175d2785ba73cfddef21d1e30da5fbbdf158569b6808ba44973a15b"
1505dependencies = [ 1591dependencies = [
1506 "flatbuffers", 1592 "flatbuffers",
1507 "lru", 1593 "lru",
@@ -1511,9 +1597,9 @@ dependencies = [
1511 1597
1512[[package]] 1598[[package]]
1513name = "nostr-lmdb" 1599name = "nostr-lmdb"
1514version = "0.42.0" 1600version = "0.43.0"
1515source = "registry+https://github.com/rust-lang/crates.io-index" 1601source = "registry+https://github.com/rust-lang/crates.io-index"
1516checksum = "ed36ce93b11d1dea86b50f26a5bcd7317f237915eeed3948cf52c036ba52872a" 1602checksum = "03e20688047b2114906ba84cce26c955e6cd079c10fc7328bc2618dc8031fb17"
1517dependencies = [ 1603dependencies = [
1518 "async-utility", 1604 "async-utility",
1519 "heed", 1605 "heed",
@@ -1525,9 +1611,9 @@ dependencies = [
1525 1611
1526[[package]] 1612[[package]]
1527name = "nostr-relay-pool" 1613name = "nostr-relay-pool"
1528version = "0.42.0" 1614version = "0.43.0"
1529source = "registry+https://github.com/rust-lang/crates.io-index" 1615source = "registry+https://github.com/rust-lang/crates.io-index"
1530checksum = "df4d5628d2444349570fb185b0c2d92cfdb7e68d62b13bf3e8a4348b5de7430b" 1616checksum = "265d9b44771ed15db93b183a0c93dbb703b2b0d0b74dffb5c2a081be52373a5a"
1531dependencies = [ 1617dependencies = [
1532 "async-utility", 1618 "async-utility",
1533 "async-wsocket", 1619 "async-wsocket",
@@ -1542,16 +1628,15 @@ dependencies = [
1542 1628
1543[[package]] 1629[[package]]
1544name = "nostr-sdk" 1630name = "nostr-sdk"
1545version = "0.42.0" 1631version = "0.43.0"
1546source = "registry+https://github.com/rust-lang/crates.io-index" 1632source = "registry+https://github.com/rust-lang/crates.io-index"
1547checksum = "a1e928ba9ac2695fbe10b8aefda59f2abfeb23c10a0e86a0b3e0f6a27bb274a2" 1633checksum = "599f8963d6a1522a13b1a2b0ea6e168acfc367706606f1d33fa595e91fa22db0"
1548dependencies = [ 1634dependencies = [
1549 "async-utility", 1635 "async-utility",
1550 "nostr", 1636 "nostr",
1551 "nostr-database", 1637 "nostr-database",
1552 "nostr-relay-pool", 1638 "nostr-relay-pool",
1553 "tokio", 1639 "tokio",
1554 "tracing",
1555] 1640]
1556 1641
1557[[package]] 1642[[package]]
@@ -1582,6 +1667,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1582checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" 1667checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"
1583 1668
1584[[package]] 1669[[package]]
1670name = "openssl"
1671version = "0.10.73"
1672source = "registry+https://github.com/rust-lang/crates.io-index"
1673checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8"
1674dependencies = [
1675 "bitflags",
1676 "cfg-if",
1677 "foreign-types",
1678 "libc",
1679 "once_cell",
1680 "openssl-macros",
1681 "openssl-sys",
1682]
1683
1684[[package]]
1685name = "openssl-macros"
1686version = "0.1.1"
1687source = "registry+https://github.com/rust-lang/crates.io-index"
1688checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
1689dependencies = [
1690 "proc-macro2",
1691 "quote",
1692 "syn",
1693]
1694
1695[[package]]
1585name = "openssl-probe" 1696name = "openssl-probe"
1586version = "0.1.6" 1697version = "0.1.6"
1587source = "registry+https://github.com/rust-lang/crates.io-index" 1698source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1848,61 +1959,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1848checksum = "d68782463e408eb1e668cf6152704bd856c78c5b6417adaee3203d8f4c1fc9ec" 1959checksum = "d68782463e408eb1e668cf6152704bd856c78c5b6417adaee3203d8f4c1fc9ec"
1849 1960
1850[[package]] 1961[[package]]
1851name = "quinn"
1852version = "0.11.8"
1853source = "registry+https://github.com/rust-lang/crates.io-index"
1854checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8"
1855dependencies = [
1856 "bytes",
1857 "cfg_aliases",
1858 "pin-project-lite",
1859 "quinn-proto",
1860 "quinn-udp",
1861 "rustc-hash",
1862 "rustls",
1863 "socket2",
1864 "thiserror 2.0.12",
1865 "tokio",
1866 "tracing",
1867 "web-time",
1868]
1869
1870[[package]]
1871name = "quinn-proto"
1872version = "0.11.12"
1873source = "registry+https://github.com/rust-lang/crates.io-index"
1874checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e"
1875dependencies = [
1876 "bytes",
1877 "getrandom 0.3.3",
1878 "lru-slab",
1879 "rand 0.9.1",
1880 "ring",
1881 "rustc-hash",
1882 "rustls",
1883 "rustls-pki-types",
1884 "slab",
1885 "thiserror 2.0.12",
1886 "tinyvec",
1887 "tracing",
1888 "web-time",
1889]
1890
1891[[package]]
1892name = "quinn-udp"
1893version = "0.5.13"
1894source = "registry+https://github.com/rust-lang/crates.io-index"
1895checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970"
1896dependencies = [
1897 "cfg_aliases",
1898 "libc",
1899 "once_cell",
1900 "socket2",
1901 "tracing",
1902 "windows-sys 0.59.0",
1903]
1904
1905[[package]]
1906name = "quote" 1962name = "quote"
1907version = "1.0.40" 1963version = "1.0.40"
1908source = "registry+https://github.com/rust-lang/crates.io-index" 1964source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1930,9 +1986,9 @@ dependencies = [
1930 1986
1931[[package]] 1987[[package]]
1932name = "rand" 1988name = "rand"
1933version = "0.9.1" 1989version = "0.9.2"
1934source = "registry+https://github.com/rust-lang/crates.io-index" 1990source = "registry+https://github.com/rust-lang/crates.io-index"
1935checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" 1991checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
1936dependencies = [ 1992dependencies = [
1937 "rand_chacha 0.9.0", 1993 "rand_chacha 0.9.0",
1938 "rand_core 0.9.3", 1994 "rand_core 0.9.3",
@@ -2009,18 +2065,18 @@ dependencies = [
2009 2065
2010[[package]] 2066[[package]]
2011name = "redox_syscall" 2067name = "redox_syscall"
2012version = "0.5.13" 2068version = "0.5.17"
2013source = "registry+https://github.com/rust-lang/crates.io-index" 2069source = "registry+https://github.com/rust-lang/crates.io-index"
2014checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" 2070checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77"
2015dependencies = [ 2071dependencies = [
2016 "bitflags 2.9.1", 2072 "bitflags",
2017] 2073]
2018 2074
2019[[package]] 2075[[package]]
2020name = "redox_users" 2076name = "redox_users"
2021version = "0.5.0" 2077version = "0.5.1"
2022source = "registry+https://github.com/rust-lang/crates.io-index" 2078source = "registry+https://github.com/rust-lang/crates.io-index"
2023checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" 2079checksum = "78eaea1f52c56d57821be178b2d47e09ff26481a6042e8e042fcb0ced068b470"
2024dependencies = [ 2080dependencies = [
2025 "getrandom 0.2.16", 2081 "getrandom 0.2.16",
2026 "libredox", 2082 "libredox",
@@ -2064,26 +2120,29 @@ checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531"
2064dependencies = [ 2120dependencies = [
2065 "base64", 2121 "base64",
2066 "bytes", 2122 "bytes",
2123 "encoding_rs",
2067 "futures-core", 2124 "futures-core",
2125 "h2",
2068 "http 1.3.1", 2126 "http 1.3.1",
2069 "http-body", 2127 "http-body",
2070 "http-body-util", 2128 "http-body-util",
2071 "hyper", 2129 "hyper",
2072 "hyper-rustls", 2130 "hyper-rustls",
2131 "hyper-tls",
2073 "hyper-util", 2132 "hyper-util",
2074 "js-sys", 2133 "js-sys",
2075 "log", 2134 "log",
2135 "mime",
2136 "native-tls",
2076 "percent-encoding", 2137 "percent-encoding",
2077 "pin-project-lite", 2138 "pin-project-lite",
2078 "quinn",
2079 "rustls",
2080 "rustls-pki-types", 2139 "rustls-pki-types",
2081 "serde", 2140 "serde",
2082 "serde_json", 2141 "serde_json",
2083 "serde_urlencoded", 2142 "serde_urlencoded",
2084 "sync_wrapper", 2143 "sync_wrapper",
2085 "tokio", 2144 "tokio",
2086 "tokio-rustls", 2145 "tokio-native-tls",
2087 "tower", 2146 "tower",
2088 "tower-http", 2147 "tower-http",
2089 "tower-service", 2148 "tower-service",
@@ -2091,7 +2150,6 @@ dependencies = [
2091 "wasm-bindgen", 2150 "wasm-bindgen",
2092 "wasm-bindgen-futures", 2151 "wasm-bindgen-futures",
2093 "web-sys", 2152 "web-sys",
2094 "webpki-roots 1.0.1",
2095] 2153]
2096 2154
2097[[package]] 2155[[package]]
@@ -2122,15 +2180,9 @@ dependencies = [
2122 2180
2123[[package]] 2181[[package]]
2124name = "rustc-demangle" 2182name = "rustc-demangle"
2125version = "0.1.25" 2183version = "0.1.26"
2126source = "registry+https://github.com/rust-lang/crates.io-index"
2127checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f"
2128
2129[[package]]
2130name = "rustc-hash"
2131version = "2.1.1"
2132source = "registry+https://github.com/rust-lang/crates.io-index" 2184source = "registry+https://github.com/rust-lang/crates.io-index"
2133checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" 2185checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace"
2134 2186
2135[[package]] 2187[[package]]
2136name = "rustc_version" 2188name = "rustc_version"
@@ -2147,7 +2199,7 @@ version = "1.0.8"
2147source = "registry+https://github.com/rust-lang/crates.io-index" 2199source = "registry+https://github.com/rust-lang/crates.io-index"
2148checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" 2200checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"
2149dependencies = [ 2201dependencies = [
2150 "bitflags 2.9.1", 2202 "bitflags",
2151 "errno", 2203 "errno",
2152 "libc", 2204 "libc",
2153 "linux-raw-sys", 2205 "linux-raw-sys",
@@ -2156,9 +2208,9 @@ dependencies = [
2156 2208
2157[[package]] 2209[[package]]
2158name = "rustls" 2210name = "rustls"
2159version = "0.23.29" 2211version = "0.23.31"
2160source = "registry+https://github.com/rust-lang/crates.io-index" 2212source = "registry+https://github.com/rust-lang/crates.io-index"
2161checksum = "2491382039b29b9b11ff08b76ff6c97cf287671dbb74f0be44bda389fffe9bd1" 2213checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc"
2162dependencies = [ 2214dependencies = [
2163 "once_cell", 2215 "once_cell",
2164 "ring", 2216 "ring",
@@ -2174,7 +2226,6 @@ version = "1.12.0"
2174source = "registry+https://github.com/rust-lang/crates.io-index" 2226source = "registry+https://github.com/rust-lang/crates.io-index"
2175checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" 2227checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79"
2176dependencies = [ 2228dependencies = [
2177 "web-time",
2178 "zeroize", 2229 "zeroize",
2179] 2230]
2180 2231
@@ -2220,6 +2271,15 @@ dependencies = [
2220] 2271]
2221 2272
2222[[package]] 2273[[package]]
2274name = "schannel"
2275version = "0.1.27"
2276source = "registry+https://github.com/rust-lang/crates.io-index"
2277checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d"
2278dependencies = [
2279 "windows-sys 0.59.0",
2280]
2281
2282[[package]]
2223name = "scopeguard" 2283name = "scopeguard"
2224version = "1.2.0" 2284version = "1.2.0"
2225source = "registry+https://github.com/rust-lang/crates.io-index" 2285source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2239,9 +2299,9 @@ dependencies = [
2239 2299
2240[[package]] 2300[[package]]
2241name = "sdd" 2301name = "sdd"
2242version = "3.0.9" 2302version = "3.0.10"
2243source = "registry+https://github.com/rust-lang/crates.io-index" 2303source = "registry+https://github.com/rust-lang/crates.io-index"
2244checksum = "62f5557d2bbddd5afd236ba7856b0e494f5acc7ce805bb0774cc5674b20a06b4" 2304checksum = "490dcfcbfef26be6800d11870ff2df8774fa6e86d047e3e8c8a76b25655e41ca"
2245 2305
2246[[package]] 2306[[package]]
2247name = "secp256k1" 2307name = "secp256k1"
@@ -2264,6 +2324,29 @@ dependencies = [
2264] 2324]
2265 2325
2266[[package]] 2326[[package]]
2327name = "security-framework"
2328version = "2.11.1"
2329source = "registry+https://github.com/rust-lang/crates.io-index"
2330checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
2331dependencies = [
2332 "bitflags",
2333 "core-foundation",
2334 "core-foundation-sys",
2335 "libc",
2336 "security-framework-sys",
2337]
2338
2339[[package]]
2340name = "security-framework-sys"
2341version = "2.14.0"
2342source = "registry+https://github.com/rust-lang/crates.io-index"
2343checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32"
2344dependencies = [
2345 "core-foundation-sys",
2346 "libc",
2347]
2348
2349[[package]]
2267name = "semver" 2350name = "semver"
2268version = "1.0.26" 2351version = "1.0.26"
2269source = "registry+https://github.com/rust-lang/crates.io-index" 2352source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2291,9 +2374,9 @@ dependencies = [
2291 2374
2292[[package]] 2375[[package]]
2293name = "serde_json" 2376name = "serde_json"
2294version = "1.0.140" 2377version = "1.0.141"
2295source = "registry+https://github.com/rust-lang/crates.io-index" 2378source = "registry+https://github.com/rust-lang/crates.io-index"
2296checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" 2379checksum = "30b9eff21ebe718216c6ec64e1d9ac57087aad11efc64e32002bce4a0d4c03d3"
2297dependencies = [ 2380dependencies = [
2298 "itoa", 2381 "itoa",
2299 "memchr", 2382 "memchr",
@@ -2425,12 +2508,12 @@ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
2425 2508
2426[[package]] 2509[[package]]
2427name = "socket2" 2510name = "socket2"
2428version = "0.5.10" 2511version = "0.6.0"
2429source = "registry+https://github.com/rust-lang/crates.io-index" 2512source = "registry+https://github.com/rust-lang/crates.io-index"
2430checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" 2513checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807"
2431dependencies = [ 2514dependencies = [
2432 "libc", 2515 "libc",
2433 "windows-sys 0.52.0", 2516 "windows-sys 0.59.0",
2434] 2517]
2435 2518
2436[[package]] 2519[[package]]
@@ -2510,6 +2593,27 @@ dependencies = [
2510] 2593]
2511 2594
2512[[package]] 2595[[package]]
2596name = "system-configuration"
2597version = "0.6.1"
2598source = "registry+https://github.com/rust-lang/crates.io-index"
2599checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
2600dependencies = [
2601 "bitflags",
2602 "core-foundation",
2603 "system-configuration-sys",
2604]
2605
2606[[package]]
2607name = "system-configuration-sys"
2608version = "0.6.0"
2609source = "registry+https://github.com/rust-lang/crates.io-index"
2610checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
2611dependencies = [
2612 "core-foundation-sys",
2613 "libc",
2614]
2615
2616[[package]]
2513name = "tempfile" 2617name = "tempfile"
2514version = "3.20.0" 2618version = "3.20.0"
2515source = "registry+https://github.com/rust-lang/crates.io-index" 2619source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2553,7 +2657,7 @@ dependencies = [
2553 "nostr-lmdb", 2657 "nostr-lmdb",
2554 "nostr-sdk", 2658 "nostr-sdk",
2555 "once_cell", 2659 "once_cell",
2556 "rand 0.9.1", 2660 "rand 0.9.2",
2557 "rexpect", 2661 "rexpect",
2558 "sha2", 2662 "sha2",
2559 "simple-websockets", 2663 "simple-websockets",
@@ -2629,9 +2733,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
2629 2733
2630[[package]] 2734[[package]]
2631name = "tokio" 2735name = "tokio"
2632version = "1.46.1" 2736version = "1.47.0"
2633source = "registry+https://github.com/rust-lang/crates.io-index" 2737source = "registry+https://github.com/rust-lang/crates.io-index"
2634checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17" 2738checksum = "43864ed400b6043a4757a25c7a64a8efde741aed79a056a2fb348a406701bb35"
2635dependencies = [ 2739dependencies = [
2636 "backtrace", 2740 "backtrace",
2637 "bytes", 2741 "bytes",
@@ -2644,7 +2748,7 @@ dependencies = [
2644 "slab", 2748 "slab",
2645 "socket2", 2749 "socket2",
2646 "tokio-macros", 2750 "tokio-macros",
2647 "windows-sys 0.52.0", 2751 "windows-sys 0.59.0",
2648] 2752]
2649 2753
2650[[package]] 2754[[package]]
@@ -2659,6 +2763,16 @@ dependencies = [
2659] 2763]
2660 2764
2661[[package]] 2765[[package]]
2766name = "tokio-native-tls"
2767version = "0.3.1"
2768source = "registry+https://github.com/rust-lang/crates.io-index"
2769checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
2770dependencies = [
2771 "native-tls",
2772 "tokio",
2773]
2774
2775[[package]]
2662name = "tokio-rustls" 2776name = "tokio-rustls"
2663version = "0.26.2" 2777version = "0.26.2"
2664source = "registry+https://github.com/rust-lang/crates.io-index" 2778source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2709,6 +2823,19 @@ dependencies = [
2709] 2823]
2710 2824
2711[[package]] 2825[[package]]
2826name = "tokio-util"
2827version = "0.7.15"
2828source = "registry+https://github.com/rust-lang/crates.io-index"
2829checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df"
2830dependencies = [
2831 "bytes",
2832 "futures-core",
2833 "futures-sink",
2834 "pin-project-lite",
2835 "tokio",
2836]
2837
2838[[package]]
2712name = "tower" 2839name = "tower"
2713version = "0.5.2" 2840version = "0.5.2"
2714source = "registry+https://github.com/rust-lang/crates.io-index" 2841source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2729,7 +2856,7 @@ version = "0.6.6"
2729source = "registry+https://github.com/rust-lang/crates.io-index" 2856source = "registry+https://github.com/rust-lang/crates.io-index"
2730checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" 2857checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
2731dependencies = [ 2858dependencies = [
2732 "bitflags 2.9.1", 2859 "bitflags",
2733 "bytes", 2860 "bytes",
2734 "futures-util", 2861 "futures-util",
2735 "http 1.3.1", 2862 "http 1.3.1",
@@ -2760,22 +2887,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2760checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 2887checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
2761dependencies = [ 2888dependencies = [
2762 "pin-project-lite", 2889 "pin-project-lite",
2763 "tracing-attributes",
2764 "tracing-core", 2890 "tracing-core",
2765] 2891]
2766 2892
2767[[package]] 2893[[package]]
2768name = "tracing-attributes"
2769version = "0.1.30"
2770source = "registry+https://github.com/rust-lang/crates.io-index"
2771checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903"
2772dependencies = [
2773 "proc-macro2",
2774 "quote",
2775 "syn",
2776]
2777
2778[[package]]
2779name = "tracing-core" 2894name = "tracing-core"
2780version = "0.1.34" 2895version = "0.1.34"
2781source = "registry+https://github.com/rust-lang/crates.io-index" 2896source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2820,7 +2935,7 @@ dependencies = [
2820 "http 1.3.1", 2935 "http 1.3.1",
2821 "httparse", 2936 "httparse",
2822 "log", 2937 "log",
2823 "rand 0.9.1", 2938 "rand 0.9.2",
2824 "rustls", 2939 "rustls",
2825 "rustls-pki-types", 2940 "rustls-pki-types",
2826 "sha1", 2941 "sha1",
@@ -2839,7 +2954,7 @@ dependencies = [
2839 "http 1.3.1", 2954 "http 1.3.1",
2840 "httparse", 2955 "httparse",
2841 "log", 2956 "log",
2842 "rand 0.9.1", 2957 "rand 0.9.2",
2843 "sha1", 2958 "sha1",
2844 "thiserror 2.0.12", 2959 "thiserror 2.0.12",
2845 "utf-8", 2960 "utf-8",
@@ -3087,14 +3202,14 @@ version = "0.26.11"
3087source = "registry+https://github.com/rust-lang/crates.io-index" 3202source = "registry+https://github.com/rust-lang/crates.io-index"
3088checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" 3203checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9"
3089dependencies = [ 3204dependencies = [
3090 "webpki-roots 1.0.1", 3205 "webpki-roots 1.0.2",
3091] 3206]
3092 3207
3093[[package]] 3208[[package]]
3094name = "webpki-roots" 3209name = "webpki-roots"
3095version = "1.0.1" 3210version = "1.0.2"
3096source = "registry+https://github.com/rust-lang/crates.io-index" 3211source = "registry+https://github.com/rust-lang/crates.io-index"
3097checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502" 3212checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2"
3098dependencies = [ 3213dependencies = [
3099 "rustls-pki-types", 3214 "rustls-pki-types",
3100] 3215]
@@ -3122,6 +3237,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
3122checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 3237checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
3123 3238
3124[[package]] 3239[[package]]
3240name = "windows-link"
3241version = "0.1.3"
3242source = "registry+https://github.com/rust-lang/crates.io-index"
3243checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
3244
3245[[package]]
3246name = "windows-registry"
3247version = "0.5.3"
3248source = "registry+https://github.com/rust-lang/crates.io-index"
3249checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e"
3250dependencies = [
3251 "windows-link",
3252 "windows-result",
3253 "windows-strings",
3254]
3255
3256[[package]]
3257name = "windows-result"
3258version = "0.3.4"
3259source = "registry+https://github.com/rust-lang/crates.io-index"
3260checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
3261dependencies = [
3262 "windows-link",
3263]
3264
3265[[package]]
3266name = "windows-strings"
3267version = "0.4.2"
3268source = "registry+https://github.com/rust-lang/crates.io-index"
3269checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
3270dependencies = [
3271 "windows-link",
3272]
3273
3274[[package]]
3125name = "windows-sys" 3275name = "windows-sys"
3126version = "0.52.0" 3276version = "0.52.0"
3127source = "registry+https://github.com/rust-lang/crates.io-index" 3277source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3145,7 +3295,7 @@ version = "0.60.2"
3145source = "registry+https://github.com/rust-lang/crates.io-index" 3295source = "registry+https://github.com/rust-lang/crates.io-index"
3146checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" 3296checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
3147dependencies = [ 3297dependencies = [
3148 "windows-targets 0.53.2", 3298 "windows-targets 0.53.3",
3149] 3299]
3150 3300
3151[[package]] 3301[[package]]
@@ -3166,10 +3316,11 @@ dependencies = [
3166 3316
3167[[package]] 3317[[package]]
3168name = "windows-targets" 3318name = "windows-targets"
3169version = "0.53.2" 3319version = "0.53.3"
3170source = "registry+https://github.com/rust-lang/crates.io-index" 3320source = "registry+https://github.com/rust-lang/crates.io-index"
3171checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" 3321checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91"
3172dependencies = [ 3322dependencies = [
3323 "windows-link",
3173 "windows_aarch64_gnullvm 0.53.0", 3324 "windows_aarch64_gnullvm 0.53.0",
3174 "windows_aarch64_msvc 0.53.0", 3325 "windows_aarch64_msvc 0.53.0",
3175 "windows_i686_gnu 0.53.0", 3326 "windows_i686_gnu 0.53.0",
@@ -3282,7 +3433,7 @@ version = "0.39.0"
3282source = "registry+https://github.com/rust-lang/crates.io-index" 3433source = "registry+https://github.com/rust-lang/crates.io-index"
3283checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" 3434checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
3284dependencies = [ 3435dependencies = [
3285 "bitflags 2.9.1", 3436 "bitflags",
3286] 3437]
3287 3438
3288[[package]] 3439[[package]]
diff --git a/Cargo.toml b/Cargo.toml
index 22cf115..e3f9aa4 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -23,14 +23,15 @@ directories = "6.0.0"
23futures = "0.3.31" 23futures = "0.3.31"
24git2 = "0.20.2" 24git2 = "0.20.2"
25indicatif = "0.18.0" 25indicatif = "0.18.0"
26nostr = { version = "0.42.2", features = ["nip05", "nip49"] } 26nostr = { version = "0.43.0", features = ["nip49"] }
27nostr-connect = "0.42.0" 27nostr-connect = "0.43.0"
28nostr-database = "0.42.0" 28nostr-database = "0.43.0"
29nostr-lmdb = "0.42.0" 29nostr-lmdb = "0.43.0"
30nostr-relay-pool = "0.42.0" 30nostr-relay-pool = "0.43.0"
31nostr-sdk = "0.42.0" 31nostr-sdk = "0.43.0"
32passwords = "3.1.16" 32passwords = "3.1.16"
33qrcode = { version = "0.14.1", default-features = false } 33qrcode = { version = "0.14.1", default-features = false }
34reqwest = { version = "0.12.22", features = ["json"] }
34scrypt = "0.11.0" 35scrypt = "0.11.0"
35serde = { version = "1.0.219", features = ["derive"] } 36serde = { version = "1.0.219", features = ["derive"] }
36serde_json = "1.0.140" 37serde_json = "1.0.140"
diff --git a/src/bin/git_remote_nostr/push.rs b/src/bin/git_remote_nostr/push.rs
index 73d76b4..9ba7c30 100644
--- a/src/bin/git_remote_nostr/push.rs
+++ b/src/bin/git_remote_nostr/push.rs
@@ -1209,12 +1209,10 @@ async fn create_merge_status(
1209 merged_patches 1209 merged_patches
1210 .iter() 1210 .iter()
1211 .map(|merged_patch| { 1211 .map(|merged_patch| {
1212 Tag::from_standardized(nostr::TagStandard::Event { 1212 Tag::from_standardized(nostr::TagStandard::Quote {
1213 event_id: *merged_patch, 1213 event_id: *merged_patch,
1214 relay_url: repo_ref.relays.first().cloned(), 1214 relay_url: repo_ref.relays.first().cloned(),
1215 marker: Some(Marker::Mention),
1216 public_key: None, 1215 public_key: None,
1217 uppercase: false,
1218 }) 1216 })
1219 }) 1217 })
1220 .collect::<Vec<Tag>>(), 1218 .collect::<Vec<Tag>>(),
diff --git a/src/bin/ngit/sub_commands/send.rs b/src/bin/ngit/sub_commands/send.rs
index c84e339..8b49e37 100644
--- a/src/bin/ngit/sub_commands/send.rs
+++ b/src/bin/ngit/sub_commands/send.rs
@@ -4,12 +4,9 @@ use anyhow::{Context, Result, bail};
4use console::Style; 4use console::Style;
5use ngit::{ 5use ngit::{
6 client::{Params, send_events}, 6 client::{Params, send_events},
7 git_events::generate_cover_letter_and_patch_events, 7 git_events::{EventRefType, generate_cover_letter_and_patch_events},
8};
9use nostr::{
10 ToBech32,
11 nips::{nip10::Marker, nip19::Nip19Event},
12}; 8};
9use nostr::{ToBech32, nips::nip19::Nip19Event};
13use nostr_sdk::hashes::sha1::Hash as Sha1Hash; 10use nostr_sdk::hashes::sha1::Hash as Sha1Hash;
14 11
15use crate::{ 12use crate::{
@@ -368,7 +365,7 @@ async fn get_root_proposal_id_and_mentions_from_in_reply_to(
368 in_reply_to: &[String], 365 in_reply_to: &[String],
369) -> Result<(Option<String>, Vec<nostr::Tag>)> { 366) -> Result<(Option<String>, Vec<nostr::Tag>)> {
370 let root_proposal_id = if let Some(first) = in_reply_to.first() { 367 let root_proposal_id = if let Some(first) = in_reply_to.first() {
371 match event_tag_from_nip19_or_hex(first, "in-reply-to", Marker::Root, true, false)? 368 match event_tag_from_nip19_or_hex(first, "in-reply-to", EventRefType::Root, true, false)?
372 .as_standardized() 369 .as_standardized()
373 { 370 {
374 Some(nostr_sdk::TagStandard::Event { 371 Some(nostr_sdk::TagStandard::Event {
@@ -404,10 +401,16 @@ async fn get_root_proposal_id_and_mentions_from_in_reply_to(
404 for (i, reply_to) in in_reply_to.iter().enumerate() { 401 for (i, reply_to) in in_reply_to.iter().enumerate() {
405 if i.ne(&0) || root_proposal_id.is_none() { 402 if i.ne(&0) || root_proposal_id.is_none() {
406 mention_tags.push( 403 mention_tags.push(
407 event_tag_from_nip19_or_hex(reply_to, "in-reply-to", Marker::Mention, true, false) 404 event_tag_from_nip19_or_hex(
408 .context(format!( 405 reply_to,
409 "{reply_to} in 'in-reply-to' not a valid nostr reference" 406 "in-reply-to",
410 ))?, 407 EventRefType::Quote,
408 true,
409 false,
410 )
411 .context(format!(
412 "{reply_to} in 'in-reply-to' not a valid nostr reference"
413 ))?,
411 ); 414 );
412 } 415 }
413 } 416 }
diff --git a/src/lib/client.rs b/src/lib/client.rs
index 6f28cff..b27f9b1 100644
--- a/src/lib/client.rs
+++ b/src/lib/client.rs
@@ -32,17 +32,22 @@ use mockall::*;
32use nostr::{ 32use nostr::{
33 Event, 33 Event,
34 event::{TagKind, TagStandard, UnsignedEvent}, 34 event::{TagKind, TagStandard, UnsignedEvent},
35 filter::Alphabet, 35 filter::{Alphabet, MatchEventOptions},
36 nips::{nip01::Coordinate, nip19::Nip19Coordinate}, 36 nips::{
37 nip01::Coordinate,
38 nip05::{Nip05Address, Nip05Profile},
39 nip19::Nip19Coordinate,
40 },
37 signer::SignerBackend, 41 signer::SignerBackend,
38}; 42};
39use nostr_database::{NostrEventsDatabase, SaveEventStatus}; 43use nostr_database::{NostrDatabase, SaveEventStatus};
40use nostr_lmdb::NostrLMDB; 44use nostr_lmdb::NostrLMDB;
41use nostr_relay_pool::relay::ReqExitPolicy; 45use nostr_relay_pool::relay::ReqExitPolicy;
42use nostr_sdk::{ 46use nostr_sdk::{
43 EventBuilder, EventId, Kind, NostrSigner, Options, PublicKey, RelayUrl, SingleLetterTag, 47 ClientOptions, EventBuilder, EventId, Kind, NostrSigner, PublicKey, RelayUrl, SingleLetterTag,
44 Timestamp, Url, prelude::RelayLimits, 48 Timestamp, Url, prelude::RelayLimits,
45}; 49};
50use serde_json::Value;
46 51
47use crate::{ 52use crate::{
48 get_dirs, 53 get_dirs,
@@ -144,12 +149,12 @@ impl Connect for Client {
144 Client { 149 Client {
145 client: if let Some(keys) = opts.keys { 150 client: if let Some(keys) = opts.keys {
146 nostr_sdk::ClientBuilder::new() 151 nostr_sdk::ClientBuilder::new()
147 .opts(Options::new().relay_limits(RelayLimits::disable())) 152 .opts(ClientOptions::new().relay_limits(RelayLimits::disable()))
148 .signer(keys) 153 .signer(keys)
149 .build() 154 .build()
150 } else { 155 } else {
151 nostr_sdk::ClientBuilder::new() 156 nostr_sdk::ClientBuilder::new()
152 .opts(Options::new().relay_limits(RelayLimits::disable())) 157 .opts(ClientOptions::new().relay_limits(RelayLimits::disable()))
153 .build() 158 .build()
154 }, 159 },
155 relay_default_set: opts.relay_default_set, 160 relay_default_set: opts.relay_default_set,
@@ -605,7 +610,11 @@ impl Connect for Client {
605 .await? 610 .await?
606 .iter() 611 .iter()
607 // don't process events that don't match filters 612 // don't process events that don't match filters
608 .filter(|e| filters.iter().any(|f| f.match_event(e))) 613 .filter(|e| {
614 filters
615 .iter()
616 .any(|f| f.match_event(e, MatchEventOptions::default()))
617 })
609 .cloned() 618 .cloned()
610 .collect(); 619 .collect();
611 // TODO: try reconcile 620 // TODO: try reconcile
@@ -880,6 +889,26 @@ pub async fn fetch_public_key(signer: &Arc<dyn NostrSigner>) -> Result<nostr::Pu
880 } 889 }
881} 890}
882 891
892pub async fn nip05_query(nip05_addr: &str) -> Result<Nip05Profile> {
893 let addr_deconstructed = Nip05Address::parse(nip05_addr)
894 .context(format!("cannot parse nip05 address: {nip05_addr}"))?;
895 let json_res: Value = reqwest::Client::new()
896 .get(addr_deconstructed.url().to_string())
897 .send()
898 .await
899 .context(format!(
900 "nip05 server is not responding for address: {nip05_addr}"
901 ))?
902 .json()
903 .await
904 .context(format!(
905 "nip05 server response did not respond with json when querying address: {nip05_addr}"
906 ))?;
907 Nip05Profile::from_json(&addr_deconstructed, &json_res).context(format!(
908 "cannot get public key for nip05 address: {nip05_addr}"
909 ))
910}
911
883fn pb_style() -> Result<ProgressStyle> { 912fn pb_style() -> Result<ProgressStyle> {
884 Ok( 913 Ok(
885 ProgressStyle::with_template(" {spinner} {prefix} {msg} {timeout_in}")?.with_key( 914 ProgressStyle::with_template(" {spinner} {prefix} {msg} {timeout_in}")?.with_key(
diff --git a/src/lib/git/nostr_url.rs b/src/lib/git/nostr_url.rs
index e9b482f..5e92a84 100644
--- a/src/lib/git/nostr_url.rs
+++ b/src/lib/git/nostr_url.rs
@@ -2,10 +2,11 @@ use core::fmt;
2use std::{collections::HashMap, str::FromStr}; 2use std::{collections::HashMap, str::FromStr};
3 3
4use anyhow::{Context, Error, Result, anyhow, bail}; 4use anyhow::{Context, Error, Result, anyhow, bail};
5use nostr::nips::{nip01::Coordinate, nip05, nip19::Nip19Coordinate}; 5use nostr::nips::{nip01::Coordinate, nip19::Nip19Coordinate};
6use nostr_sdk::{FromBech32, PublicKey, RelayUrl, ToBech32, Url}; 6use nostr_sdk::{FromBech32, PublicKey, RelayUrl, ToBech32, Url};
7 7
8use super::{Repo, get_git_config_item, save_git_config_item}; 8use super::{Repo, get_git_config_item, save_git_config_item};
9use crate::client::nip05_query;
9 10
10#[derive(Debug, PartialEq, Default, Clone)] 11#[derive(Debug, PartialEq, Default, Clone)]
11pub enum ServerProtocol { 12pub enum ServerProtocol {
@@ -206,7 +207,7 @@ impl NostrUrlDecoded {
206 if s.len() == 2 { s[1] } else { s[0] } 207 if s.len() == 2 { s[1] } else { s[0] }
207 }; 208 };
208 term.write_line(&format!("fetching pubic key info from {domain}..."))?; 209 term.write_line(&format!("fetching pubic key info from {domain}..."))?;
209 let res = nip05::profile(npub_or_nip05, None).await.context(format!( 210 let res = nip05_query(npub_or_nip05).await.context(format!(
210 "failed to get nostr public key for {npub_or_nip05} from {domain}" 211 "failed to get nostr public key for {npub_or_nip05} from {domain}"
211 ))?; 212 ))?;
212 term.clear_last_lines(1)?; 213 term.clear_last_lines(1)?;
diff --git a/src/lib/git_events.rs b/src/lib/git_events.rs
index 2e1f215..79f5772 100644
--- a/src/lib/git_events.rs
+++ b/src/lib/git_events.rs
@@ -184,7 +184,7 @@ pub async fn generate_patch_event(
184 event_tag_from_nip19_or_hex( 184 event_tag_from_nip19_or_hex(
185 &event_ref, 185 &event_ref,
186 "proposal", 186 "proposal",
187 Marker::Reply, 187 EventRefType::Reply,
188 false, 188 false,
189 false, 189 false,
190 )?, 190 )?,
@@ -277,10 +277,17 @@ pub async fn generate_patch_event(
277 .context("failed to sign event") 277 .context("failed to sign event")
278} 278}
279 279
280#[derive(Debug, PartialEq)]
281pub enum EventRefType {
282 Root,
283 Reply,
284 Quote,
285}
286
280pub fn event_tag_from_nip19_or_hex( 287pub fn event_tag_from_nip19_or_hex(
281 reference: &str, 288 reference: &str,
282 reference_name: &str, 289 reference_name: &str,
283 marker: Marker, 290 ref_type: EventRefType,
284 allow_npub_reference: bool, 291 allow_npub_reference: bool,
285 prompt_for_correction: bool, 292 prompt_for_correction: bool,
286) -> Result<nostr::Tag> { 293) -> Result<nostr::Tag> {
@@ -291,22 +298,41 @@ pub fn event_tag_from_nip19_or_hex(
291 PromptInputParms::default().with_prompt(format!("{reference_name} reference")), 298 PromptInputParms::default().with_prompt(format!("{reference_name} reference")),
292 )?; 299 )?;
293 } 300 }
301 let marker = match ref_type {
302 EventRefType::Root => Some(Marker::Root),
303 EventRefType::Reply => Some(Marker::Reply),
304 EventRefType::Quote => None,
305 };
294 if let Ok(nip19) = Nip19::from_bech32(&bech32) { 306 if let Ok(nip19) = Nip19::from_bech32(&bech32) {
295 match nip19 { 307 match nip19 {
296 Nip19::Event(n) => { 308 Nip19::Event(n) => {
309 if ref_type == EventRefType::Quote {
310 break Ok(Tag::from_standardized(nostr_sdk::TagStandard::Quote {
311 event_id: n.event_id,
312 relay_url: n.relays.first().cloned(),
313 public_key: None,
314 }));
315 }
297 break Ok(Tag::from_standardized(nostr_sdk::TagStandard::Event { 316 break Ok(Tag::from_standardized(nostr_sdk::TagStandard::Event {
298 event_id: n.event_id, 317 event_id: n.event_id,
299 relay_url: n.relays.first().cloned(), 318 relay_url: n.relays.first().cloned(),
300 marker: Some(marker), 319 marker,
301 public_key: None, 320 public_key: None,
302 uppercase: false, 321 uppercase: false,
303 })); 322 }));
304 } 323 }
305 Nip19::EventId(id) => { 324 Nip19::EventId(id) => {
325 if ref_type == EventRefType::Quote {
326 break Ok(Tag::from_standardized(nostr_sdk::TagStandard::Quote {
327 event_id: id,
328 relay_url: None,
329 public_key: None,
330 }));
331 }
306 break Ok(Tag::from_standardized(nostr_sdk::TagStandard::Event { 332 break Ok(Tag::from_standardized(nostr_sdk::TagStandard::Event {
307 event_id: id, 333 event_id: id,
308 relay_url: None, 334 relay_url: None,
309 marker: Some(marker), 335 marker,
310 public_key: None, 336 public_key: None,
311 uppercase: false, 337 uppercase: false,
312 })); 338 }));
@@ -335,7 +361,7 @@ pub fn event_tag_from_nip19_or_hex(
335 break Ok(Tag::from_standardized(nostr_sdk::TagStandard::Event { 361 break Ok(Tag::from_standardized(nostr_sdk::TagStandard::Event {
336 event_id: id, 362 event_id: id,
337 relay_url: None, 363 relay_url: None,
338 marker: Some(marker), 364 marker,
339 public_key: None, 365 public_key: None,
340 uppercase: false, 366 uppercase: false,
341 })); 367 }));
@@ -574,7 +600,7 @@ pub async fn generate_cover_letter_and_patch_events(
574 Tag::hashtag("root"), 600 Tag::hashtag("root"),
575 Tag::hashtag("revision-root"), 601 Tag::hashtag("revision-root"),
576 // TODO check if id is for a root proposal (perhaps its for an issue?) 602 // TODO check if id is for a root proposal (perhaps its for an issue?)
577 event_tag_from_nip19_or_hex(&event_ref,"proposal",Marker::Reply, false, false)?, 603 event_tag_from_nip19_or_hex(&event_ref,"proposal",EventRefType::Reply, false, false)?,
578 ] 604 ]
579 } else { 605 } else {
580 vec![ 606 vec![
diff --git a/src/lib/login/fresh.rs b/src/lib/login/fresh.rs
index 358045a..a9cf845 100644
--- a/src/lib/login/fresh.rs
+++ b/src/lib/login/fresh.rs
@@ -3,7 +3,7 @@ use std::{str::FromStr, sync::Arc, time::Duration};
3use anyhow::{Context, Result, bail}; 3use anyhow::{Context, Result, bail};
4use console::Style; 4use console::Style;
5use dialoguer::theme::{ColorfulTheme, Theme}; 5use dialoguer::theme::{ColorfulTheme, Theme};
6use nostr::nips::{nip05, nip46::NostrConnectURI}; 6use nostr::nips::nip46::NostrConnectURI;
7use nostr_connect::client::NostrConnect; 7use nostr_connect::client::NostrConnect;
8use nostr_sdk::{EventBuilder, Keys, Metadata, NostrSigner, PublicKey, RelayUrl, ToBech32}; 8use nostr_sdk::{EventBuilder, Keys, Metadata, NostrSigner, PublicKey, RelayUrl, ToBech32};
9use qrcode::QrCode; 9use qrcode::QrCode;
@@ -25,7 +25,7 @@ use crate::{
25 Interactor, InteractorPrompt, Printer, PromptChoiceParms, PromptConfirmParms, 25 Interactor, InteractorPrompt, Printer, PromptChoiceParms, PromptConfirmParms,
26 PromptInputParms, PromptPasswordParms, 26 PromptInputParms, PromptPasswordParms,
27 }, 27 },
28 client::{Connect, send_events}, 28 client::{Connect, nip05_query, send_events},
29 git::{Repo, RepoActions, remove_git_config_item, save_git_config_item}, 29 git::{Repo, RepoActions, remove_git_config_item, save_git_config_item},
30}; 30};
31 31
@@ -384,7 +384,7 @@ pub fn generate_nostr_connect_app(
384pub async fn fetch_nip46_uri_from_nip05(nip05: &str) -> Result<NostrConnectURI> { 384pub async fn fetch_nip46_uri_from_nip05(nip05: &str) -> Result<NostrConnectURI> {
385 let term = console::Term::stderr(); 385 let term = console::Term::stderr();
386 term.write_line("contacting login service provider...")?; 386 term.write_line("contacting login service provider...")?;
387 let res = nip05::profile(&nip05, None).await; 387 let res = nip05_query(nip05).await;
388 term.clear_last_lines(1)?; 388 term.clear_last_lines(1)?;
389 match res { 389 match res {
390 Ok(profile) => { 390 Ok(profile) => {
diff --git a/test_utils/Cargo.toml b/test_utils/Cargo.toml
index 8602416..236ba80 100644
--- a/test_utils/Cargo.toml
+++ b/test_utils/Cargo.toml
@@ -10,10 +10,10 @@ dialoguer = "0.11.0"
10directories = "6.0.0" 10directories = "6.0.0"
11futures = "0.3.31" 11futures = "0.3.31"
12git2 = "0.20.2" 12git2 = "0.20.2"
13nostr = "0.42.2" 13nostr = "0.43.0"
14nostr-database = "0.42.0" 14nostr-database = "0.43.0"
15nostr-lmdb = "0.42.0" 15nostr-lmdb = "0.43.0"
16nostr-sdk = "0.42.0" 16nostr-sdk = "0.43.0"
17once_cell = "1.21.3" 17once_cell = "1.21.3"
18rand = "0.9" 18rand = "0.9"
19rexpect = { git = "https://github.com/rust-cli/rexpect.git", rev = "9eb61dd" } 19rexpect = { git = "https://github.com/rust-cli/rexpect.git", rev = "9eb61dd" }
diff --git a/test_utils/src/lib.rs b/test_utils/src/lib.rs
index 7d79cff..3ae004f 100644
--- a/test_utils/src/lib.rs
+++ b/test_utils/src/lib.rs
@@ -13,7 +13,7 @@ use futures::{executor::block_on, future::join_all};
13use git::GitTestRepo; 13use git::GitTestRepo;
14use git2::{Signature, Time}; 14use git2::{Signature, Time};
15use nostr::{self, Kind, Tag, nips::nip65::RelayMetadata}; 15use nostr::{self, Kind, Tag, nips::nip65::RelayMetadata};
16use nostr_database::NostrEventsDatabase; 16use nostr_database::NostrDatabase;
17use nostr_lmdb::NostrLMDB; 17use nostr_lmdb::NostrLMDB;
18use nostr_sdk::{Client, Event, NostrSigner, TagStandard, serde_json}; 18use nostr_sdk::{Client, Event, NostrSigner, TagStandard, serde_json};
19use once_cell::sync::Lazy; 19use once_cell::sync::Lazy;
diff --git a/test_utils/src/relay.rs b/test_utils/src/relay.rs
index b14f532..8a982a4 100644
--- a/test_utils/src/relay.rs
+++ b/test_utils/src/relay.rs
@@ -1,7 +1,7 @@
1use std::collections::HashMap; 1use std::collections::HashMap;
2 2
3use anyhow::{Result, bail}; 3use anyhow::{Result, bail};
4use nostr::{ClientMessage, JsonUtil, RelayMessage}; 4use nostr::{ClientMessage, JsonUtil, RelayMessage, filter::MatchEventOptions};
5 5
6use crate::CliTester; 6use crate::CliTester;
7 7
@@ -105,7 +105,11 @@ impl<'a> Relay<'a> {
105 &self 105 &self
106 .events 106 .events
107 .iter() 107 .iter()
108 .filter(|e| filters.iter().any(|filter| filter.match_event(e))) 108 .filter(|e| {
109 filters
110 .iter()
111 .any(|filter| filter.match_event(e, MatchEventOptions::default()))
112 })
109 .filter(|_| true) 113 .filter(|_| true)
110 .cloned() 114 .cloned()
111 .collect(), 115 .collect(),
diff --git a/tests/git_remote_nostr/push.rs b/tests/git_remote_nostr/push.rs
index 5912543..a137da5 100644
--- a/tests/git_remote_nostr/push.rs
+++ b/tests/git_remote_nostr/push.rs
@@ -1070,7 +1070,7 @@ async fn proposal_three_way_merge_commit_pushed_to_main_leads_to_status_event_is
1070 merge_status 1070 merge_status
1071 .tags 1071 .tags
1072 .iter() 1072 .iter()
1073 .find(|t| t.as_slice().len().eq(&4) && t.as_slice()[3].eq("mention")) 1073 .find(|t| t.as_slice()[0].eq("q"))
1074 .unwrap() 1074 .unwrap()
1075 .as_slice()[1], 1075 .as_slice()[1],
1076 "status mentions proposal tip event \r\nmerge status:\r\n{}\r\nproposal tip:\r\n{}", 1076 "status mentions proposal tip event \r\nmerge status:\r\n{}\r\nproposal tip:\r\n{}",
@@ -1252,9 +1252,10 @@ async fn proposal_fast_forward_merge_commits_pushed_to_main_leads_to_status_even
1252 .collect::<Vec<String>>() 1252 .collect::<Vec<String>>()
1253 { 1253 {
1254 assert!( 1254 assert!(
1255 merge_status.tags.iter().any(|t| t.as_slice().len().eq(&4) 1255 merge_status
1256 && t.as_slice()[1] == patch_id 1256 .tags
1257 && t.as_slice()[3].eq("mention")), 1257 .iter()
1258 .any(|t| t.as_slice()[0].eq("q") && t.as_slice()[1] == patch_id),
1258 "merge status doesnt mention proposal patch {patch_id} \r\nmerge status:\r\n{}", 1259 "merge status doesnt mention proposal patch {patch_id} \r\nmerge status:\r\n{}",
1259 merge_status.as_json(), 1260 merge_status.as_json(),
1260 ); 1261 );
@@ -1422,9 +1423,10 @@ async fn proposal_commits_applied_and_pushed_to_main_leads_to_status_event_issue
1422 .collect::<Vec<String>>() 1423 .collect::<Vec<String>>()
1423 { 1424 {
1424 assert!( 1425 assert!(
1425 merge_status.tags.iter().any(|t| t.as_slice().len().eq(&4) 1426 merge_status
1426 && t.as_slice()[1] == patch_id 1427 .tags
1427 && t.as_slice()[3].eq("mention")), 1428 .iter()
1429 .any(|t| t.as_slice()[0].eq("q") && t.as_slice()[1] == patch_id),
1428 "merge status doesnt mention proposal patch {patch_id} \r\nmerge status:\r\n{}", 1430 "merge status doesnt mention proposal patch {patch_id} \r\nmerge status:\r\n{}",
1429 merge_status.as_json(), 1431 merge_status.as_json(),
1430 ); 1432 );
diff --git a/tests/ngit_send.rs b/tests/ngit_send.rs
index 2cd5956..9a46469 100644
--- a/tests/ngit_send.rs
+++ b/tests/ngit_send.rs
@@ -1759,9 +1759,8 @@ mod in_reply_to_mentions_issue {
1759 let cover_letter_event: &nostr::Event = 1759 let cover_letter_event: &nostr::Event =
1760 relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); 1760 relay.events.iter().find(|e| is_cover_letter(e)).unwrap();
1761 assert!(cover_letter_event.tags.iter().any(|t| { 1761 assert!(cover_letter_event.tags.iter().any(|t| {
1762 t.as_slice()[0].eq("e") 1762 t.as_slice()[0].eq("q")
1763 && t.as_slice()[1].eq(&get_pretend_issue_event().id.to_hex()) 1763 && t.as_slice()[1].eq(&get_pretend_issue_event().id.to_hex())
1764 && t.as_slice()[3].eq(&"mention")
1765 })); 1764 }));
1766 } 1765 }
1767 Ok(()) 1766 Ok(())