diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2026-02-11 09:20:48 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2026-02-11 15:54:51 +0000 |
| commit | 15bf0d0b6befae6c81631c0e5d0dc2947dd3318a (patch) | |
| tree | 3d12d8b104c7a36ac8d2a7194da26fb432c95f23 /src/lib/client.rs | |
| parent | 459d33b6d7d3e5fdd55780670cd05d8141e670ac (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.rs | 20 |
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 { |