Remove a room from a space #13

Open
opened 2026-10-05 15:03:13 +00:00 by robocub · 0 comments
Owner

Why

You can add existing rooms to a space (and now search for them, #10), but there's no easy way to take a room back out. Discord users expect to drag channels in and out of categories freely.

What exists

  • Space.removeChild(SpaceChild) already works for any child: MatrixSpace.removeChild calls removeSpaceChild(child.id), which clears the space's m.space.child state event for it.
  • The UI only offers it for sub-spaces: SpaceList.buildChild (commet/lib/ui/atoms/space_list.dart) wraps sub-spaces in a context menu with "Remove from ", gated on permissions.canEditChildren. Ordinary rooms get no menu at all.
  • The confirmation dialog is generic and doesn't say what will happen.

Plan

  1. Add the same "Remove from " entry to the context menu (right-click / long-press) on rooms in the space's room list, using the same canEditChildren gate.
  2. Confirmation that says what it does and doesn't do: "Remove #room from Space? The room isn't deleted and members aren't removed; it just stops being listed in this space."
  3. Also remove the room's m.space.parent pointing at this space when the user is allowed to, so clients that read parent links stop showing it under the space. If not allowed, remove the child link only and say so.
  4. Optional: a remove button next to each room in the space settings' room list, for doing several in a row.

Acceptance

Right-click a room in a space you can edit, choose "Remove from Space", confirm, and it disappears from the space for everyone; the room itself is untouched and can be re-added with the existing picker.


Filed with LLM assistance. This is a fork-only issue; never refile it on Commet's tracker.

## Why You can add existing rooms to a space (and now search for them, #10), but there's no easy way to take a room back out. Discord users expect to drag channels in and out of categories freely. ## What exists - `Space.removeChild(SpaceChild)` already works for any child: `MatrixSpace.removeChild` calls `removeSpaceChild(child.id)`, which clears the space's `m.space.child` state event for it. - The UI only offers it for **sub-spaces**: `SpaceList.buildChild` (`commet/lib/ui/atoms/space_list.dart`) wraps sub-spaces in a context menu with "Remove from <space>", gated on `permissions.canEditChildren`. Ordinary rooms get no menu at all. - The confirmation dialog is generic and doesn't say what will happen. ## Plan 1. Add the same "Remove from <space>" entry to the context menu (right-click / long-press) on **rooms** in the space's room list, using the same `canEditChildren` gate. 2. Confirmation that says what it does and doesn't do: "Remove #room from Space? The room isn't deleted and members aren't removed; it just stops being listed in this space." 3. Also remove the room's `m.space.parent` pointing at this space when the user is allowed to, so clients that read parent links stop showing it under the space. If not allowed, remove the child link only and say so. 4. Optional: a remove button next to each room in the space settings' room list, for doing several in a row. ## Acceptance Right-click a room in a space you can edit, choose "Remove from Space", confirm, and it disappears from the space for everyone; the room itself is untouched and can be re-added with the existing picker. --- _Filed with LLM assistance. This is a fork-only issue; never refile it on Commet's tracker._
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
robocub/vommet#13
No description provided.