Desktop: leaving a channel you solely own fails silently — the relay's rejection is never surfaced
- Dominant language
- Rust
- Stars
- 32.7k
- Forks
- 4.3k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 253
Description
**Motivation**
Leaving a channel you own looks like a broken button. You confirm the dialog, it closes, and the channel is still sitting in the sidebar — no toast, no error, no explanation. Nothing tells you the request was rejected.
The relay is refusing on purpose: it won't remove a channel's last owner and orphan the channel. That's a sensible rule, but the reason never reaches the UI, so what the user experiences is a control that silently does nothing.
New users hit this on the onboarding Welcome channel, since they created it and are its only owner.
**Repro**
1. Complete onboarding — the Welcome channel is created with you as its sole owner.
2. Right-click it in the sidebar → Leave → confirm.
3. The dialog closes, the channel stays, and nothing is reported.
Leaving the same channel from the channel management sheet *does* show the relay's error, so the two entry points disagree about whether failures are worth mentioning.
**Expected**
The rejection surfaces wherever leave is offered, ideally naming the real constraint ("you're the only owner of this channel") rather than failing generically.
**Notes**
- For a sole owner this isn't a temporary block. There's no way to make another member an owner from Desktop, so leave can never succeed on a channel you created alone — the error, once surfaced, still leaves the user with no action to take.
- #2928 and #2948 cover restoring ownership when the owner is *unavailable*. This is the inverse: the owner is present and wants out.
- Archiving the same channel also didn't work for me. I haven't characterized that one and it may be unrelated.
Contributor guide
Research direction
Start with the Desktop sidebar's channel Leave action and compare it with the channel management sheet, where the relay error is already shown. Trace the sidebar failure path and make the rejection visible with the sole-owner constraint; done means both entry points report why leaving failed instead of silently closing the dialog.
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
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 68/100