Skip to content

Remove legacy room list#34040

Merged
florianduros merged 19 commits into
developfrom
florianduros/remove-old-room-list
Jul 2, 2026
Merged

Remove legacy room list#34040
florianduros merged 19 commits into
developfrom
florianduros/remove-old-room-list

Conversation

@florianduros

@florianduros florianduros commented Jun 29, 2026

Copy link
Copy Markdown
Member

closes #32736
closes #32691

The new room list (RoomListPanel + room-list-v3 store) has been the default for a while and we moved the section out of labs recently. This removes the legacy implementation entirely and deletes the feature_new_room_list labs flag.

Changes

  • Delete the legacy room list UILegacyRoomList, LegacyRoomListHeader, RoomSublist, ExtraTile, the RoomTile subtree, RoomBreadcrumbs, and RoomSearch (+ their styles/tests). LeftPanel now renders only RoomListPanel.
  • Delete the legacy stores/room-list storeAlgorithm, sorters, filters, layout store, space watcher — and migrate its last consumer, SpaceStore.setActiveRoomInSpace, to RoomListStoreV3.
  • Remove the feature_new_room_list labs flag and inline the enabled behaviour everywhere it was gated (LoggedInView, MessagePreviewStore, SpaceStore, LandmarkNavigation, settings tabs, QuickSettingsButton, SpacePanel). People/Favourites are dropped from metaSpaceOrder.
  • Remove now-dead code uncovered by the above: the legacy left-panel Resizer, the collapseLhs state, and assorted unused files/exports (BackdropPanel, useHover, objectWithOnly, splitRoomsByMembership, DefaultTagID.Suggested, …).
  • The resizable layout is now driven solely by LeftResizablePanelView + ResizerViewModel.

@florianduros florianduros force-pushed the florianduros/remove-old-room-list branch from 0df4846 to 1d15ee0 Compare June 29, 2026 16:50
@t3chguy t3chguy mentioned this pull request Jun 29, 2026
@florianduros florianduros changed the title Remove old room list Remove legacy room list Jun 30, 2026
@florianduros florianduros force-pushed the florianduros/remove-old-room-list branch from 1d15ee0 to 9ead9ea Compare June 30, 2026 08:35
@florianduros florianduros force-pushed the florianduros/remove-old-room-list branch from 9ead9ea to 1fc0277 Compare June 30, 2026 09:03
@florianduros florianduros self-assigned this Jun 30, 2026
@florianduros florianduros force-pushed the florianduros/remove-old-room-list branch from 1fc0277 to 7eb3d2a Compare June 30, 2026 12:57
SpaceStore.setActiveRoomInSpace iterated the legacy RoomListStore's
`orderedLists` in `TAG_ORDER`; switch it to the space-aware
RoomListStoreV3.getSortedRoomsInActiveSpace() accessor. This drops the
last non-UI dependency on the legacy store and on `TAG_ORDER` (exported
from LegacyRoomList, deleted next).
Delete the old sublist-based room list and its components now that the
new RoomListPanel is the default. Removed: LegacyRoomList,
LegacyRoomListHeader, RoomSublist, ExtraTile, RoomTile (+ Subtitle/
CallSummary), RoomBreadcrumbs and RoomSearch, plus their styles and
tests.

LeftPanel collapses to the RoomListPanel-only path. The shared
`contextMenuBelow` helper is relocated into RoomResultContextMenus (its
only remaining consumer).
The legacy sublist-based room list UI is gone, so the old
`stores/room-list` store (Algorithm, sorters, filters, layout store,
space
watcher) has no remaining consumers. Delete the directory and its tests.

MatrixChat.forgetRoom no longer calls the legacy `manualRoomUpdate`; the
new room list store removes the room on the `AfterForgetRoom` dispatch
that still fires. Drop the `mxRoomListStore`/`mxRoomListLayoutStore`
globals and the now-dead test imports.
The new room list is now the only room list, so remove the
feature_new_room_list labs flag and make its enabled behaviour
unconditional everywhere it was gated:

- LoggedInView: always use the resizable layout and
NEW_ROOM_LIST_MIN_WIDTH;
  drop the collapsible/minimized legacy path.
- SpaceStore: People and Favourites are dropped from metaSpaceOrder (per
the
  long-standing TODO on the removed accessor).
- MessagePreviewStore: stop appending thread replies to previews.
- Settings, SidebarUserSettingsTab, PreferencesUserSettingsTab,
  QuickSettingsButton, SpacePanel, LandmarkNavigation: drop the flag
reads and
  legacy branches.

Update the tests that toggled the flag; the People/Favourites meta space
tests covered behaviour that the flag (default on) already disabled.
LoggedInView still built the old `Resizer`/`CollapseDistributor` over an
`lp-resizer` ResizeHandle and persisted `mx_lhs_size`. That handle is no
longer rendered (the resizable layout is now driven by
LeftResizablePanelView + ResizerViewModel, which persists its own state
via RoomList.panelSize/RoomList.isPanelCollapsed), so the old resizer
was
inert dead code left over from the legacy room list.

Remove createResizer/loadResizer/loadResizerPreferences, the
_resizeContainer/resizeHandler refs, the ResizeHandle render, the
mx_lhs_size handling and NEW_ROOM_LIST_MIN_WIDTH, plus the unit tests
that
exercised the mocked resizer.
`collapseLhs` is write-only since the left panel no longer collapses: it
was last read by LoggedInView's `shouldUseMinimizedUI`, removed with the
feature_new_room_list flag. Drop it from MatrixChat's IState (and its
assignments), collapsing the hide/show_left_panel handlers to just the
`notifyLeftHandleResized()` call they still need, and from
LoggedInView's
IProps and the test props.
Removing the unused SettingsStore import from MessagePreviewStore (when
the
feature_new_room_list flag was dropped) changed module load order and
exposed a latent circular dependency: ReactionEventPreview imports
MessagePreviewStore, which eagerly did `new ReactionEventPreview()` at
module-eval — so importing ReactionEventPreview first (as its unit test
does) hit "ReactionEventPreview is not a constructor".

Construct the previewers lazily on first use (cached) instead of at
module
load, so nothing dereferences a mid-evaluation module. Fixes
ReactionEventPreview-test.
Comment thread apps/web/src/@types/polyfill.ts
Comment thread apps/web/src/stores/BreadcrumbsStore.ts Outdated

@t3chguy t3chguy left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks sane to me

@daniellekirkwood

Copy link
Copy Markdown
Contributor

We have not used the old room list for a long time in product, great to be removing old code. Thanks @florianduros

@florianduros florianduros added this pull request to the merge queue Jul 2, 2026
Merged via the queue into develop with commit b68ecdb Jul 2, 2026
50 checks passed
@florianduros florianduros deleted the florianduros/remove-old-room-list branch July 2, 2026 09:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Use room list store v3 to get/sort/filter rooms outside of the room list Room list: make EW works without the old room list store

4 participants