atagen

malice

public
Star0
Watch0

Commit fddb0bcaabeb

tarball

atagen <boss@atagen.co>2026-10-24 07:03 UTC

1 file changed+12-6
web: resume a space's last channel without unfolding the pane

selectSpace cleared the selected room before getSpaceChildren returned, and nav-folded only applies while a room is selected, so a folded channels pane flashed open until the remembered channel was reopened. The remembered channel now opens straight away and is only dropped if the space turns out not to contain it.
Modified file: web/src/App.svelte+12 additions−6 deletions
@@ -413,16 +413,22 @@
413413 spaceChildIds = null;
414414 spaceChildrenError = null;
415415 spaceChildrenLoading = true;
416- sidebarOpen = true;
417- // A space is navigation, not a message timeline.
418- selectedRoomId.set(null);
416+ const last = $lastSpaceRooms[spaceId];
417+ const resume = last && $rooms.some((r) => r.room_id === last && !r.space) ? last : null;
418+ if (resume) {
419+ void selectRoom(resume);
420+ } else {
421+ sidebarOpen = true;
422+ // A space is navigation, not a message timeline.
423+ selectedRoomId.set(null);
424+ }
419425 try {
420426 const res = await getSpaceChildren(spaceId);
421427 if (selectedSpaceId === spaceId) {
422428 spaceChildIds = res.room_ids ?? [];
423- const last = $lastSpaceRooms[spaceId];
424- if (last && spaceChildIds.includes(last) && $rooms.some((r) => r.room_id === last && !r.space)) {
425- void selectRoom(last);
429+ if (resume && !spaceChildIds.includes(resume) && $selectedRoomId === resume) {
430+ sidebarOpen = true;
431+ selectedRoomId.set(null);
426432 }
427433 }
428434 } catch (e) {