From dd9a69e6fe79e866004ed7366093bf82030b02eb Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Fri, 10 Apr 2026 20:15:58 +0000 Subject: release: v1.0.2 --- CHANGELOG.md | 9 ++++++++- Cargo.lock | 2 +- Cargo.toml | 2 +- flake.nix | 2 +- nix/module.nix | 2 +- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a6498b..bf6f97e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,16 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.0.2] - 2026-04-10 + ### Fixed - Replacement announcements (kind 30617) for a purgatory entry were being saved to the database immediately, bypassing the purgatory gate. When a second copy of the same announcement arrived (e.g. via sync from another relay) while the original was still in purgatory awaiting git data, the policy returned `Accept` instead of `AcceptPurgatory`, causing the event to be stored without the corresponding git data or state events ever arriving. The fix returns `AcceptPurgatory` for replacements of purgatory entries so the updated event is held in purgatory until git data arrives. - Repository identifiers containing characters that require percent-encoding in URLs (e.g. spaces, emoji) are now accepted and served correctly. NIP-01 places no restriction on `d` tag values and NIP-34 only recommends kebab-case without mandating it, so rejecting non-kebab identifiers was overly strict. Identifiers are stored verbatim on disk and percent-encoded when used in URLs, per the `nostr://` clone URL spec formalised in [NIP-34 PR #2312](https://github.com/nostr-protocol/nips/pull/2312) and the GRASP-01 HTTP path spec. The landing page clone URL now also correctly percent-encodes the identifier. +- `--git-dir` is now passed as a global git option (before the subcommand) in `check_repo_empty`, fixing compatibility with git versions that require global options to precede the subcommand. + ### Changed - Remove arbitrary default max connections limit; when `NGIT_MAX_CONNECTIONS` is unset the relay imposes no connection cap, deferring to OS fd limits and infrastructure controls +- Added `cleanup-empty-repos` subcommand to remove stale events for empty git repositories + ## [1.0.1] - 2026-02-27 ### Fixed @@ -31,6 +37,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Initial release of ngit-grasp, a GRASP relay implementation in Rust. -[unreleased]: https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp/compare/v1.0.1...HEAD +[unreleased]: https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp/compare/v1.0.2...HEAD +[1.0.2]: https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp/compare/v1.0.1...v1.0.2 [1.0.1]: https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp/compare/v1.0.0...v1.0.1 [1.0.0]: https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp/releases/tag/v1.0.0 diff --git a/Cargo.lock b/Cargo.lock index 216a7c3..b42c790 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1370,7 +1370,7 @@ checksum = "f0efe882e02d206d8d279c20eb40e03baf7cb5136a1476dc084a324fbc3ec42d" [[package]] name = "ngit-grasp" -version = "1.0.1" +version = "1.0.2" dependencies = [ "anyhow", "async-trait", diff --git a/Cargo.toml b/Cargo.toml index cd18811..d7b6884 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ngit-grasp" -version = "1.0.1" +version = "1.0.2" edition = "2021" authors = ["ngit-grasp contributors"] license = "MIT" diff --git a/flake.nix b/flake.nix index 446455e..9360054 100644 --- a/flake.nix +++ b/flake.nix @@ -36,7 +36,7 @@ packages.default = pkgs.rustPlatform.buildRustPackage { pname = "ngit-grasp"; - version = "0.1.0"; + version = "1.0.2"; src = ./.; cargoLock = { lockFile = ./Cargo.lock; diff --git a/nix/module.nix b/nix/module.nix index 9693358..d8d9e86 100644 --- a/nix/module.nix +++ b/nix/module.nix @@ -6,7 +6,7 @@ let # Build ngit-grasp package (shared across all instances) ngit-grasp = pkgs.rustPlatform.buildRustPackage { pname = "ngit-grasp"; - version = "0.1.0"; + version = "1.0.2"; src = ../.; cargoLock = { lockFile = ../Cargo.lock; -- cgit v1.2.3