upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/src/lib/client.rs
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2026-02-11 09:20:48 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2026-02-11 15:54:51 +0000
commit15bf0d0b6befae6c81631c0e5d0dc2947dd3318a (patch)
tree3d12d8b104c7a36ac8d2a7194da26fb432c95f23 /src/lib/client.rs
parent459d33b6d7d3e5fdd55780670cd05d8141e670ac (diff)
feat: use fallback relays for bootstrapping only
- Add --relay flag to 'ngit account create' allowing users to specify relay URLs (repeatable). Defaults to relay-default-set when not provided. - Remove fallback relays from fetch when repo context exists (repo coordinate provided). Only use them for bootstrapping (profile discovery with no repo context). - Remove fallback relays from publish when repo or user relays exist. Only use them when neither is available (e.g. new account signup). - Update --customize help text to reflect new relay-default-set behavior.
Diffstat (limited to 'src/lib/client.rs')
-rw-r--r--src/lib/client.rs20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/lib/client.rs b/src/lib/client.rs
index 9c49653..89fcaf7 100644
--- a/src/lib/client.rs
+++ b/src/lib/client.rs
@@ -1577,7 +1577,14 @@ async fn create_relays_request(
1577 }; 1577 };
1578 1578
1579 let relays = { 1579 let relays = {
1580 let mut relays = fallback_relays; 1580 // Only use fallback relays for bootstrapping (no repo context).
1581 // When we have a repo coordinate, rely on repo relays and coordinate
1582 // hint relays instead of always merging in the default set.
1583 let mut relays = if trusted_maintainer_coordinate.is_none() {
1584 fallback_relays
1585 } else {
1586 HashSet::new()
1587 };
1581 if let Some(repo_ref) = &repo_ref { 1588 if let Some(repo_ref) = &repo_ref {
1582 for r in repo_ref.relays.clone() { 1589 for r in repo_ref.relays.clone() {
1583 relays.insert(r); 1590 relays.insert(r);
@@ -1588,6 +1595,8 @@ async fn create_relays_request(
1588 relays.insert(r.clone()); 1595 relays.insert(r.clone());
1589 } 1596 }
1590 } 1597 }
1598 // When bootstrapping with no repo context and no coordinate hints,
1599 // we need at least the fallback relays to discover the user profile.
1591 relays 1600 relays
1592 }; 1601 };
1593 1602
@@ -2238,8 +2247,15 @@ pub async fn send_events(
2238 animate: bool, 2247 animate: bool,
2239 silent: bool, 2248 silent: bool,
2240) -> Result<()> { 2249) -> Result<()> {
2250 // Only include default relays as fallback when there are no repo relays
2251 // (bootstrapping case, e.g. new account signup). When repo relays exist,
2252 // trust the repo and user relay configuration.
2241 let fallback = [ 2253 let fallback = [
2242 client.get_relay_default_set().clone(), 2254 if repo_read_relays.is_empty() && my_write_relays.is_empty() {
2255 client.get_relay_default_set().clone()
2256 } else {
2257 vec![]
2258 },
2243 if events.iter().any(|e| e.kind.eq(&Kind::GitRepoAnnouncement)) { 2259 if events.iter().any(|e| e.kind.eq(&Kind::GitRepoAnnouncement)) {
2244 client.get_blaster_relays().clone() 2260 client.get_blaster_relays().clone()
2245 } else { 2261 } else {