block / block/buzz

Cannot leave a community whose relay already ended my membership (403 → 'Relay session is terminal')

Open
#7,049 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
32.7k
Forks
4.3k
Avg merge
1d 13h
Merged PRs (30d)
253

Description

**Buzz Desktop version:** 0.5.19 (macOS, Darwin 25.6.0)

## Summary

When a relay has already ended my membership server-side, the desktop app cannot remove that community locally. The "Leave community" flow requires the relay to accept the leave event first (per #3621), but the relay refuses the connection entirely — so the leave can never succeed and the dead community is stuck in the community switcher permanently.

## Steps to reproduce

1. Be a member of a community, then have your membership ended on the relay side (removed by the owner / membership expired).
2. The sidebar for that community shows: `relay returned 403 Forbidden: You must be a relay member to access this relay`.
3. Open the community switcher → hover the community → **Leave community**.
4. The action is blocked with: `Relay session is terminal; cannot reconnect.`

## Expected

If the relay reports the session is terminal / membership already ended (403 `relay_membership_required`), local removal should proceed anyway — there is no membership left to end, so requiring relay acceptance is a chicken-and-egg dead end.

## Actual

"Leave community" never completes; the community cannot be removed from the local list. Updating to 0.5.20 does not change this (no related fix in the release notes).

## Notes

#3621 deliberately keeps the community in place on relay rejection, which is correct for transient errors — but a terminal/403-membership response is not transient and should be treated as "already left".

Contributor guide

Open the contributing guide

Research direction

Start with the desktop app's Leave community flow and the handling of relay 403 responses, especially the terminal-session path described in the issue. Verify the behavior against the #3621 rejection handling; done means a terminal or 403 membership response removes the community locally while transient relay failures remain blocked.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
desktop
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.