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--CHANGELOG.md9
-rw-r--r--Cargo.lock2
-rw-r--r--Cargo.toml2
-rw-r--r--flake.nix2
-rw-r--r--nix/module.nix2
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
7 7
8## [Unreleased] 8## [Unreleased]
9 9
10## [1.0.2] - 2026-04-10
11
10### Fixed 12### Fixed
11 13
12- 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. 14- 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.
13 15
14- 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. 16- 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.
15 17
18- `--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.
19
16### Changed 20### Changed
17 21
18- 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 22- 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
19 23
24- Added `cleanup-empty-repos` subcommand to remove stale events for empty git repositories
25
20## [1.0.1] - 2026-02-27 26## [1.0.1] - 2026-02-27
21 27
22### Fixed 28### Fixed
@@ -31,6 +37,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
31 37
32Initial release of ngit-grasp, a GRASP relay implementation in Rust. 38Initial release of ngit-grasp, a GRASP relay implementation in Rust.
33 39
34[unreleased]: https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp/compare/v1.0.1...HEAD 40[unreleased]: https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp/compare/v1.0.2...HEAD
41[1.0.2]: https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp/compare/v1.0.1...v1.0.2
35[1.0.1]: https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp/compare/v1.0.0...v1.0.1 42[1.0.1]: https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp/compare/v1.0.0...v1.0.1
36[1.0.0]: https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp/releases/tag/v1.0.0 43[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"
1370 1370
1371[[package]] 1371[[package]]
1372name = "ngit-grasp" 1372name = "ngit-grasp"
1373version = "1.0.1" 1373version = "1.0.2"
1374dependencies = [ 1374dependencies = [
1375 "anyhow", 1375 "anyhow",
1376 "async-trait", 1376 "async-trait",
diff --git a/Cargo.toml b/Cargo.toml
index cd18811..d7b6884 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
1[package] 1[package]
2name = "ngit-grasp" 2name = "ngit-grasp"
3version = "1.0.1" 3version = "1.0.2"
4edition = "2021" 4edition = "2021"
5authors = ["ngit-grasp contributors"] 5authors = ["ngit-grasp contributors"]
6license = "MIT" 6license = "MIT"
diff --git a/flake.nix b/flake.nix
index 446455e..9360054 100644
--- a/flake.nix
+++ b/flake.nix
@@ -36,7 +36,7 @@
36 36
37 packages.default = pkgs.rustPlatform.buildRustPackage { 37 packages.default = pkgs.rustPlatform.buildRustPackage {
38 pname = "ngit-grasp"; 38 pname = "ngit-grasp";
39 version = "0.1.0"; 39 version = "1.0.2";
40 src = ./.; 40 src = ./.;
41 cargoLock = { 41 cargoLock = {
42 lockFile = ./Cargo.lock; 42 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
6 # Build ngit-grasp package (shared across all instances) 6 # Build ngit-grasp package (shared across all instances)
7 ngit-grasp = pkgs.rustPlatform.buildRustPackage { 7 ngit-grasp = pkgs.rustPlatform.buildRustPackage {
8 pname = "ngit-grasp"; 8 pname = "ngit-grasp";
9 version = "0.1.0"; 9 version = "1.0.2";
10 src = ../.; 10 src = ../.;
11 cargoLock = { 11 cargoLock = {
12 lockFile = ../Cargo.lock; 12 lockFile = ../Cargo.lock;