The full address (relay URL + direct sockets) now flows
through to iroh's Endpoint::connect on every peer-dialing
code path, so sandboxed / proxy environments that can't
reach iroh's discovery infrastructure can sync via an
EndpointTicket pasted directly into --peers or
`pile net pull <REMOTE>`.
Public API change (source-compatible for existing callers):
- Peer::{track, pull_branch, list_remote_branches, fetch,
head_of_remote} and resolve_branch_name now take
`impl Into<EndpointAddr>` instead of bare EndpointId.
EndpointId still works via the standard Into impl.
Internal:
- NetCommand::{Track, ListBranches, HeadOfRemote, Fetch}
carry EndpointAddr.
- connect_authed + fetch_blob + fetch_reachable +
track_known_head take EndpointAddr, threading addresses
through to iroh's connect path.
User-facing additions:
- `pile net identity` prints an EndpointTicket alongside
the bare pubkey (id-only at identity time).
- `pile net sync` prints a rich EndpointTicket at startup
(after ep.online() — full id + relay + direct addrs).
- `pile net sync --peers <STR>` and `pile net pull <REMOTE>`
accept EndpointTickets in addition to bare hex pubkeys.
Diagnosed by another Claude instance running in the
Anthropic web sandbox after the v0.41.0 sync attempt: the
sandbox-side iroh-canary probes get 503'd from shared-egress
IPs, so discovery dies, so EndpointId-only --peers couldn't
materialize a working connection. EndpointTicket sidesteps
the whole discovery question by carrying the addresses with
the id.
Tests: 17 lib + 2 + 3 + 1 doctest in triblespace-net + 14
trible integration tests + all proptest suites pass.
Verified the rich-ticket print fires correctly at sync
startup (`endpointadc4...iaf5uhi5dqom5c...mnqw4ylspex...`
form, ~250 chars including encoded relay + direct addrs).
Out of scope (follow-up): seeding iroh's address cache from
ticket addresses for the gossip bootstrap path. Right now
sync's bootstrap still goes through discovery; pull is
fully address-threaded. The gossip seeding would need an
AddressLookup provider plugged into the endpoint builder.
All 8 workspace crates bumped 0.41.0 → 0.41.1.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>