From 17b57fb9b58abe878579f8f027d8d9b08597fa86 Mon Sep 17 00:00:00 2001 From: Gabriel Kaszewski Date: Thu, 16 Jul 2026 09:54:02 +0200 Subject: [PATCH] v.0.4.6 --- CHANGELOG.md | 9 +++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- src/service/mod.rs | 24 +++++++++++++++++++++++- 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b6f4a5..5371f11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [0.4.6] — 2026-07-16 + +### New features + +- `ActivityPubServiceBuilder::nodeinfo_services(inbound, outbound)` — forward NodeInfo services config through the builder +- `ActivityPubServiceBuilder::nodeinfo_metadata(value)` — forward arbitrary NodeInfo metadata through the builder + +--- + ## [0.4.5] — 2026-07-16 ### Bug fixes diff --git a/Cargo.lock b/Cargo.lock index 880f518..7c9b094 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1368,7 +1368,7 @@ dependencies = [ [[package]] name = "k-ap" -version = "0.4.5" +version = "0.4.6" dependencies = [ "activitypub_federation", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index bf5c440..a365c13 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "k-ap" -version = "0.4.5" +version = "0.4.6" edition = "2024" description = "Generic ActivityPub protocol layer" license = "MIT" diff --git a/src/service/mod.rs b/src/service/mod.rs index 7d6f991..df7b1a8 100644 --- a/src/service/mod.rs +++ b/src/service/mod.rs @@ -62,6 +62,9 @@ pub struct ActivityPubServiceBuilder { delivery_initial_delay_secs: u64, signed_fetch_actor_id: Option, actor_cache_ttl_secs: u64, + nodeinfo_services_inbound: Vec, + nodeinfo_services_outbound: Vec, + nodeinfo_metadata: serde_json::Value, } impl ActivityPubServiceBuilder { @@ -125,6 +128,17 @@ impl ActivityPubServiceBuilder { self } + pub fn nodeinfo_services(mut self, inbound: Vec, outbound: Vec) -> Self { + self.nodeinfo_services_inbound = inbound; + self.nodeinfo_services_outbound = outbound; + self + } + + pub fn nodeinfo_metadata(mut self, metadata: serde_json::Value) -> Self { + self.nodeinfo_metadata = metadata; + self + } + /// Set a local actor whose keypair signs all outgoing fetch requests /// (HTTP Signature on GETs). Required for federating with instances /// that enforce authorized-fetch / Secure Mode. @@ -168,7 +182,12 @@ impl ActivityPubServiceBuilder { self.software_name, self.event_publisher, std::time::Duration::from_secs(self.actor_cache_ttl_secs), - ); + ) + .with_nodeinfo_services( + self.nodeinfo_services_inbound, + self.nodeinfo_services_outbound, + ) + .with_nodeinfo_metadata(self.nodeinfo_metadata); let signing_actor = if let Some(uid) = self.signed_fetch_actor_id { let actor = crate::actors::build_local_actor( uid, @@ -211,6 +230,9 @@ impl ActivityPubService { delivery_initial_delay_secs: DELIVERY_INITIAL_DELAY_SECS, signed_fetch_actor_id: None, actor_cache_ttl_secs: ACTOR_CACHE_TTL_SECS, + nodeinfo_services_inbound: vec![], + nodeinfo_services_outbound: vec![], + nodeinfo_metadata: serde_json::json!({}), } }