Desktop join flow fails with bare "Load Failed" — zero requests reach the relay (self-hosted, invite + member paths both broken)
Environment
- Client: Buzz desktop v0.4.26, macOS aarch64 (
.dmg from releases), Mac Studio, macOS 26.5
- Relay: self-hosted
ghcr.io/block/buzz:main (arm64), deploy/compose bundle, Docker on Ubuntu ARM64 (DGX Spark), Tailscale-only binding, healthy (liveness/readiness green, NIP-42 observed, CLI round-trips clean)
- Relay config:
BUZZ_REQUIRE_AUTH_TOKEN=true, BUZZ_REQUIRE_RELAY_MEMBERSHIP=true, BUZZ_ALLOW_NIP_OA_AUTH=true, auto-migrate clean
Repro
- Fresh install → onboarding → "Join a community" (or "Reconnect as member")
- Enter
ws://<relay>:3000 → Next → "Load Failed", stuck, no progression
- Owner mints a valid invite via
POST /api/invites (200, 7-day TTL) → paste full invite URL into invite field → redeem → same "Load Failed"
- Full local-state wipe (
~/Library/Application Support/xyz.block.buzz.app etc.) + complete uninstall/reinstall → same result on a virgin identity
Evidence the relay is not the problem
- Relay logs show zero HTTP/WS requests arriving from the desktop during join/claim attempts (across all attempts after the first)
- First-ever attempt did reach the relay:
POST /events from the user's pubkey accepted with status 200 (kind:30003 published) — then every subsequent attempt dies client-side
- Same relay verified end-to-end via source-built
buzz-cli + buzz-acp from another machine: NIP-42 auth, channel create, send/read/thread/search, member add, ACP bot mention/reply — all green
GET /api/join-policy returns 200 {} from the same client machine via curl (no policy configured)
- WS handshake from client machine returns
101 Switching Protocols + AUTH challenge as expected
Secondary issues found along the way
- Error surfacing: "Load Failed" is the entire diagnostic. No error detail in UI, no user-accessible log file,
--enable-logging shows only unrelated buzz-mesh heartbeat noise, and the production build ignores --remote-debugging-port. Users cannot self-diagnose; maintainers cannot get useful reports. Please surface the underlying error (and write a real log file).
POST /api/invites response redacts the code: the JSON response returns "code":"eyJjIj...GDCw" with the middle elided (source at api/invites.rs:282 appears to return the full code, so the redaction may be middleware/tenant layer) — a CLI/API minter can't read back the invite they just created.
- Managed-agent noise: default seeded agent ("Bumble") ships with empty
relay_url, causing infinite buzz-mesh: status report failed: relay unreachable heartbeat spam on every boot.
Suspicions (unverified)
- After the first failed attempt, onboarding caches a broken community/identity record and the join flow fails before any network call — even after "reconnect as member" flows, until state is wiped. But a fully wiped reinstall ALSO fails, so there is likely a second, deterministic failure in the v0.4.26 join/claim path against a closed self-hosted relay (NIP-42-required, membership-required, no join-policy configured).
Happy to run a debug build or capture any specific diagnostics — just tell me what flag/log you need; the app currently gives users no way to provide them.
Desktop join flow fails with bare "Load Failed" — zero requests reach the relay (self-hosted, invite + member paths both broken)
Environment
.dmgfrom releases), Mac Studio, macOS 26.5ghcr.io/block/buzz:main(arm64), deploy/compose bundle, Docker on Ubuntu ARM64 (DGX Spark), Tailscale-only binding, healthy (liveness/readiness green, NIP-42 observed, CLI round-trips clean)BUZZ_REQUIRE_AUTH_TOKEN=true,BUZZ_REQUIRE_RELAY_MEMBERSHIP=true,BUZZ_ALLOW_NIP_OA_AUTH=true, auto-migrate cleanRepro
ws://<relay>:3000→ Next → "Load Failed", stuck, no progressionPOST /api/invites(200, 7-day TTL) → paste full invite URL into invite field → redeem → same "Load Failed"~/Library/Application Support/xyz.block.buzz.appetc.) + complete uninstall/reinstall → same result on a virgin identityEvidence the relay is not the problem
POST /eventsfrom the user's pubkey accepted with status 200 (kind:30003 published) — then every subsequent attempt dies client-sidebuzz-cli+buzz-acpfrom another machine: NIP-42 auth, channel create, send/read/thread/search, member add, ACP bot mention/reply — all greenGET /api/join-policyreturns 200{}from the same client machine via curl (no policy configured)101 Switching Protocols+ AUTH challenge as expectedSecondary issues found along the way
--enable-loggingshows only unrelatedbuzz-meshheartbeat noise, and the production build ignores--remote-debugging-port. Users cannot self-diagnose; maintainers cannot get useful reports. Please surface the underlying error (and write a real log file).POST /api/invitesresponse redacts the code: the JSON response returns"code":"eyJjIj...GDCw"with the middle elided (source atapi/invites.rs:282appears to return the full code, so the redaction may be middleware/tenant layer) — a CLI/API minter can't read back the invite they just created.relay_url, causing infinitebuzz-mesh: status report failed: relay unreachableheartbeat spam on every boot.Suspicions (unverified)
Happy to run a debug build or capture any specific diagnostics — just tell me what flag/log you need; the app currently gives users no way to provide them.