Files
ngit-grasp/Cargo.toml
T
DanConwayDev e37319d6d3 build: upgrade Nostr dependencies to released 0.45 patches
Our 0.45.0 lockfile predates the released LMDB fix that keeps NIP-77 scans
off async workers. Concurrent scans can otherwise delay unrelated relay
connections. Require the current compatible releases in both workspace
crates and refresh only the six Nostr packages in the shared lockfile.

Use nostr 0.45.5, nostr-sdk/nostr-lmdb 0.45.3, nostr-memory/nostr-database
0.45.2 and nostr-gossip 0.45.1. These also exclude expired reconciliation
items and separate continuation accounting from query starts. Document the
relay validation fixes in the patch-release changelog and update the
architecture dependency examples. All packages use crates.io sources;
there are no Git vendor hashes to update.

Keep the service configuration, release version and production diagnostic
pin unchanged. Retiring the now-redundant local compatibility overrides is
a separate follow-up commit. This upgrade does not claim the production
timeouts have been conclusively attributed to NIP-77 traffic.

Validation: workspace formatting, all-target workspace Clippy with warnings
denied and the full locked workspace test suite pass with the accompanying
compatibility cleanup and separate startup reconstruction race fix. The
initial suite exposed that existing race; its original integration assertion
passes unchanged after the fix. Nix package derivation evaluation succeeds.

Assisted-by: GPT-6
2026-09-17 13:44:47 +00:00

161 lines
3.9 KiB
TOML

[package]
name = "ngit-grasp"
version = "3.0.2"
edition = "2021"
authors = ["ngit-grasp contributors"]
license = "MIT"
description = "A GRASP (Git Relays Authorized via Signed-Nostr Proofs) implementation in Rust"
repository = "https://gitworkshop.dev/danconwaydev.com/ngit-grasp"
[dependencies]
# Async runtime
tokio = { version = "1.35", features = ["full"] }
# HTTP server (hyper for relay integration)
hyper = { version = "1.4", features = ["full"] }
hyper-util = { version = "0.1", features = ["tokio", "server", "http1", "http2"] }
http-body-util = "0.1"
# Nostr
nostr = "0.45.5"
nostr-sdk = { version = "0.45.3", features = ["local-relay"] }
nostr-lmdb = "0.45.3"
nostr-memory = "0.45.2"
# Utilities
# SHA-1 for the `Sec-WebSocket-Accept` handshake. `nostr` uses this same crate
# internally but stopped re-exporting it as `nostr::hashes` in 0.45,
# so depend on it directly rather than pulling in a second hash implementation.
bitcoin_hashes = "0.14"
futures-util = "0.3"
tokio-tungstenite = { version = "0.28", default-features = false }
# Message type in `nostr-sdk`'s `WebSocketTransport` signatures, which the
# in-process self-subscription transport implements. `nostr-sdk` does not
# re-export it. No features requested: the build keeps whatever `nostr-sdk`
# already selects.
async-wsocket = { version = "0.17", default-features = false }
base64 = "0.22"
flate2 = "1.0"
tar = "0.4"
fs2 = "0.4"
ipnet = { version = "2", features = ["serde"] }
libc = "0.2"
# Metrics
prometheus = { version = "0.14", features = ["process"] }
dashmap = "6"
lazy_static = "1.4"
# Data structures
indexmap = "2"
# Random (for startup jitter)
rand = "0.10"
# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
# Configuration
dotenvy = "0.15"
clap = { version = "4.5", features = ["derive", "env"] }
# Error handling
anyhow = "1.0"
# Async traits
async-trait = "0.1"
# Temporary directories (used for GRASP-06 empty-repo synthesis)
tempfile = "3"
reqwest = { version = "0.13", default-features = false, features = ["native-tls"] }
# Git (for future use)
# git-http-backend = "0.3"
[dev-dependencies]
# Testing
grasp-audit = { path = "grasp-audit", version = "0.2.0" }
tempfile = "3"
tokio = { version = "1.35", features = ["full", "test-util"] }
tokio-tungstenite = "0.28.0"
[lib]
name = "ngit_grasp"
path = "src/lib.rs"
[[bin]]
name = "ngit-grasp"
path = "src/main.rs"
[[test]]
name = "nip09_announcement_cascade"
path = "tests/lifecycle/nip09_announcement_cascade.rs"
[[test]]
name = "nip09_blacklist_ops"
path = "tests/lifecycle/nip09_blacklist_ops.rs"
[[test]]
name = "nip09_cascade_event_types"
path = "tests/lifecycle/nip09_cascade_event_types.rs"
[[test]]
name = "nip09_disrespector"
path = "tests/lifecycle/nip09_disrespector.rs"
[[test]]
name = "nip09_git_archive_cleanup"
path = "tests/lifecycle/nip09_git_archive_cleanup.rs"
[[test]]
name = "nip09_holding_cleanup"
path = "tests/lifecycle/nip09_holding_cleanup.rs"
[[test]]
name = "nip09_holding_db"
path = "tests/lifecycle/nip09_holding_db.rs"
[[test]]
name = "nip09_multi_maintainer"
path = "tests/lifecycle/nip09_multi_maintainer.rs"
[[test]]
name = "nip09_recovery"
path = "tests/lifecycle/nip09_recovery.rs"
[[test]]
name = "nip09_state_cascade"
path = "tests/lifecycle/nip09_state_cascade.rs"
[[test]]
name = "nip09_state_multi_maintainer"
path = "tests/lifecycle/nip09_state_multi_maintainer.rs"
[[test]]
name = "nip09_validation"
path = "tests/lifecycle/nip09_validation.rs"
[[test]]
name = "deletion_request_retention"
path = "tests/lifecycle/deletion_request_retention.rs"
[[test]]
name = "nip62_lifecycle"
path = "tests/lifecycle/nip62_lifecycle.rs"
[[test]]
name = "nip62_validation"
path = "tests/lifecycle/nip62_validation.rs"
[[test]]
name = "replaceable_history"
path = "tests/lifecycle/replaceable_history.rs"
[workspace]
members = [".", "grasp-audit"]