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
This commit is contained in:
DanConwayDev
2026-09-21 11:24:01 +00:00
parent 9a1853eed3
commit 91ab308c24
4 changed files with 11 additions and 4 deletions
+8 -1
View File
@@ -7,12 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] ## [Unreleased]
## [3.0.4] - 2026-09-21
### Fixed ### Fixed
- Fix queued sync requests bypassing relay rate-limit backoff and continuing - Fix queued sync requests bypassing relay rate-limit backoff and continuing
to send requests during the cooldown. Rate-limit signals now take effect even to send requests during the cooldown. Rate-limit signals now take effect even
when sync event processing is blocked, and repeated signals no longer flood when sync event processing is blocked, and repeated signals no longer flood
warning logs. warning logs.
- Preserve repository membership while a pending announcement is saved, so
concurrent reconciliation cannot restore obsolete Git state.
- Retain live roots received while their accepted repository announcement is
waiting for batch processing, so their discovery work is not lost.
### Dependencies ### Dependencies
@@ -689,7 +695,8 @@ defensive limits explicit and operator-configurable.
Initial release of ngit-grasp, a GRASP relay implementation in Rust. Initial release of ngit-grasp, a GRASP relay implementation in Rust.
[unreleased]: https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp/compare/v3.0.3...HEAD [unreleased]: https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp/compare/v3.0.4...HEAD
[3.0.4]: https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp/compare/v3.0.3...v3.0.4
[3.0.3]: https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp/compare/v3.0.2...v3.0.3 [3.0.3]: https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp/compare/v3.0.2...v3.0.3
[3.0.2]: https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp/compare/v3.0.1...v3.0.2 [3.0.2]: https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp/compare/v3.0.1...v3.0.2
[3.0.1]: https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp/compare/v3.0.0...v3.0.1 [3.0.1]: https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp/compare/v3.0.0...v3.0.1
Generated
+1 -1
View File
@@ -1301,7 +1301,7 @@ checksum = "81c353b400a5503efdcf398f11a83fb7aa84f59f5d76fc4bf5bbc1e4f5366caa"
[[package]] [[package]]
name = "ngit-grasp" name = "ngit-grasp"
version = "3.0.3" version = "3.0.4"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"async-trait", "async-trait",
+1 -1
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "ngit-grasp" name = "ngit-grasp"
version = "3.0.3" version = "3.0.4"
edition = "2021" edition = "2021"
authors = ["ngit-grasp contributors"] authors = ["ngit-grasp contributors"]
license = "MIT" license = "MIT"
+1 -1
View File
@@ -6,7 +6,7 @@ let
# Build ngit-grasp package (shared across all instances) # Build ngit-grasp package (shared across all instances)
ngit-grasp = pkgs.rustPlatform.buildRustPackage { ngit-grasp = pkgs.rustPlatform.buildRustPackage {
pname = "ngit-grasp"; pname = "ngit-grasp";
version = "3.0.3"; version = "3.0.4";
src = ../.; src = ../.;
NGIT_BUILD_REVISION = ngitGraspSourceRevision; NGIT_BUILD_REVISION = ngitGraspSourceRevision;
cargoLock = { cargoLock = {