Files
ngit-grasp/Cargo.toml
T
DanConwayDev 91ab308c24 chore(release): prepare v3.0.4
Prepare a patch release containing the merged sync backoff, announcement
promotion and live-root discovery fixes plus the compatible dependency refresh.
Move the release notes into a dated 3.0.4 section and document the two merged
correctness fixes that were not yet listed.

Align the Cargo manifest, lockfile and NixOS package version; flake packages
continue deriving their version from Cargo.toml. The audit crate remains at
0.2.0. This commit changes release metadata only; tagging, publication and
deployment are outside its scope.

Validation: locked Cargo metadata, release-version consistency checks and Nix
evaluation of both regular and static packages report 3.0.4. NixOS module
syntax, formatting and diff checks pass. The dependency parent passed the
full workspace suite (3,566 tests, 16 ignored) and all-target Clippy with
warnings denied.

Assisted-by: GPT-6
2026-09-21 11:24:01 +00:00

161 lines
3.9 KiB
TOML

[package]
name = "ngit-grasp"
version = "3.0.4"
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.4", 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"]