Calling _matrix/client/v1/rooms/<roomID>/hierarchy for a space returns only a partial list of rooms for that space. #1789

Open
opened 2026-05-19 22:15:03 +00:00 by burgundia · 7 comments
Contributor

It has been noted that some spaces have issues with showing all of the rooms everywhere that they should. This persists on multiple clients, with the same set of rooms in all clients.

Notably, on an example of my own personal space:

  • In Cinny, in both the Space Lobby and Room List, all rooms are present. In the Space Lobby all joined and joinable, in the room list, all joined.
  • In Element Web/Desktop, both the Room List and the Rooms and spaces screen show the full list of rooms.
  • In Element X, the Space Overview screen shows only the partial list of rooms.
  • In SchildiChat Next, the Space Overview screen shows only the partial list of rooms, but if Space Navigation is enabled (Settings > Turtle Tweaks > Spaces > Space Navigation), the category set for the space contains all joined rooms.
  • In Fluffychat, the Space Room List contains only the partial list of rooms.

Additional information:

  • This doesn't appear to be the case for the main Continuwuity space or the Continuwuity Plaza space. This may be related to...
  • Visibility settings. The Space is set as Invite Only. Its rooms are mostly Open for Members of Space, with the sole exception of three being set as Invite-only and two being Public.
  • All rooms are update to version 12, same goes for the Space itself
  • The partial list of rooms appears to be a consistent set across different clients, but no notable pattern can be discerned among them. They are a mix of Open for Members of Space and Invite-only rooms and one of the Public rooms (yes, that means one of the public channels isn't in the consistent partial list), a mix of rooms with and without Room Avatars, generally a random mix.
It has been noted that some spaces have issues with showing all of the rooms everywhere that they should. This persists on multiple clients, with the same set of rooms in all clients. Notably, on an example of my own personal space: - In Cinny, in both the _Space Lobby_ and _Room List_, all rooms are present. In the _Space Lobby_ **all joined and joinable**, in the _room list_, **all joined**. - In Element Web/Desktop, both the _Room List_ and the _Rooms and spaces screen_ show the **full list of rooms**. - In Element X, the _Space Overview screen_ shows only the **partial list of rooms**. - In SchildiChat Next, the _Space Overview_ screen shows **only the partial list of rooms**, but if _Space Navigation_ is enabled (_Settings > Turtle Tweaks > Spaces > Space Navigation_), the _category set for the space_ contains **all joined rooms**. - In Fluffychat, the Space Room List contains only the partial list of rooms. Additional information: - This doesn't appear to be the case for the main Continuwuity space or the Continuwuity Plaza space. This may be related to... - Visibility settings. The Space is set as _Invite Only_. Its rooms are mostly _Open for Members of Space_, with the sole exception of three being set as _Invite-only_ and two being _Public_. - All rooms are update to version 12, same goes for the Space itself - The partial list of rooms appears to be a consistent set across different clients, but no notable pattern can be discerned among them. They are a mix of _Open for Members of Space_ and _Invite-only rooms_ and one of the _Public_ rooms (yes, that means one of the public channels _isn't_ in the consistent partial list), a mix of rooms with and without Room Avatars, generally a random mix.
Author
Contributor

Additional relevant information - checking m.space.child on the affected space has proven fruit-less. The room's membership or lackthereof in the partial room list appears to be wholly unrelated to whether it has the via attribute set to just the homeserver or the homeservers of all participants. It also seems unrelated to whether or not the rooms ID has the homeserver at the end of its room ID.

Additional relevant information - checking m.space.child on the affected space has proven fruit-less. The room's membership or lackthereof in the partial room list appears to be wholly unrelated to whether it has the via attribute set to just the homeserver or the homeservers of all participants. It also seems unrelated to whether or not the rooms ID has the homeserver at the end of its room ID.
Contributor

Relevant: https://matrix.to/#/!c10y-t1HZB9jgYr9mmaKtMDsS19HXbWRFc6d0bWGVYU/%24qn-YbgjmsF-7OkTnnCCMkHak5j3BtoyikGhgXA7QkiU?via=muoi.me&via=explodie.org&via=matrix.org. The #NLSpace:matrix.org space cannot be displayed on Continuwuity.


What version are you on? I am on main branch, so post-Ruma-refactor.

I have a similar problem that I could describe as Continuwuity not being able to fetch room summaries and show them to clients. As a result, many room names are missing within the space view. They either show up after a very long time, or fail to show up at all. In larger spaces, this effect is more apparent.

Take the Forgejo space (#forgejo:matrix.org) for example, which has something like 40 rooms. When using gomuks and browsing the space via "View Timeline", I observe spurious logs of the following kind:

INFO conduwuit_service::rooms::summary: Asking for room summary over federation room_id=!BZRrMMNnUnFLAStcoj:matrix.tu-berlin.de via=["freeyourgadget.org", "matrix.org", "tchncs.de"]
INFO conduwuit_service::rooms::summary: Got room summary room_id=!BZRrMMNnUnFLAStcoj:matrix.tu-berlin.de server=freeyourgadget.org
INFO conduwuit_service::rooms::summary: Asking for room summary over federation room_id=!BASVLToVaSnaIuaexZ:matrix.tu-berlin.de via=["freeyourgadget.org", "matrix.org", "ccc.ac"]
INFO conduwuit_service::rooms::summary: Server could not provide a summary for this room room_id=!BASVLToVaSnaIuaexZ:matrix.tu-berlin.de server=freeyourgadget.org err=Remote server freeyourgadget.org responded with: [404 / M_UNKNOWN] Unknown room: !BASVLToVaSnaIuaexZ:matrix.tu-berlin.de
INFO conduwuit_service::rooms::summary: Server could not provide a summary for this room room_id=!BASVLToVaSnaIuaexZ:matrix.tu-berlin.de server=matrix.org err=Remote server matrix.org responded with: [404 / M_UNKNOWN] Unknown room: !BASVLToVaSnaIuaexZ:matrix.tu-berlin.de

After waiting for like 3 minutes, the space still shows most rooms with their bare names. Except for rooms that I have joined, others are empty or only load after a while.

image

When I went to another chat and returned to the "View Timeline" window, these spurious logs happened again in the same intensity. This suggests C10y does not ever cache room summaries for rooms that it doesn't join in.

In another space with around 150 rooms (#NLspace:matrix.org), no rooms except for the ones I joined are ever shown at all. This has been reported in the support room via the linked message above.


Now, in response to you:

Notably, on an example of my own personal space:

Are the rooms inside these space mostly created on your own server? In my report above, the rooms are all created on remote servers and hence room summaries are needed to be fetched for all them if they're unjoined. So I'm not sure. Let me know if you have any logs relevant to fetching room summaries when you browse the space lobby from your clients.

In SchildiChat Next, the Space Overview screen shows only the partial list of rooms, but if Space Navigation is enabled (Settings > Turtle Tweaks > Spaces > Space Navigation), the category set for the space contains all joined rooms.

On different clients I observe different behaviors w.r.t. to a working space - Continuwuity's:

  • Gomuks loads all rooms as blank IDs first, and render the true name gradually when it knows of them. This includes 2 rooms where I'm forbidden to join, but is in the space
  • Element X doesn't load any room until all is rendered. Then, it only load rooms that I am not forbidden to join
  • Not sure about SchildiNext, but their extra implementation of space is different from Element X's

So it seems to be a UI rendering issue per-client that is worsened by slow C-S sync issues. Ideally all rooms and their summaries are fetched soon, but it might be missing.

It also seems unrelated to whether or not the rooms ID has the homeserver at the end of its room ID.


I believe Continuwuity can improve the situation somewhat by caching room summaries for all rooms it is aware of (even if nobody joins them). Having to refetch them every time one browses a space can be very time-consuming. Furthermore I'm not sure if they are properly sent down sync as per !779 and other syncing issues.

Relevant: https://matrix.to/#/!c10y-t1HZB9jgYr9mmaKtMDsS19HXbWRFc6d0bWGVYU/%24qn-YbgjmsF-7OkTnnCCMkHak5j3BtoyikGhgXA7QkiU?via=muoi.me&via=explodie.org&via=matrix.org. The `#NLSpace:matrix.org` space cannot be displayed on Continuwuity. --- What version are you on? I am on main branch, so post-Ruma-refactor. I have a similar problem that I could describe as Continuwuity not being able to fetch room summaries and show them to clients. As a result, many room names are missing within the space view. They either show up after a very long time, or fail to show up at all. In larger spaces, this effect is more apparent. Take the Forgejo space (`#forgejo:matrix.org`) for example, which has something like 40 rooms. When using **gomuks** and browsing the space via "View Timeline", I observe spurious logs of the following kind: ``` INFO conduwuit_service::rooms::summary: Asking for room summary over federation room_id=!BZRrMMNnUnFLAStcoj:matrix.tu-berlin.de via=["freeyourgadget.org", "matrix.org", "tchncs.de"] INFO conduwuit_service::rooms::summary: Got room summary room_id=!BZRrMMNnUnFLAStcoj:matrix.tu-berlin.de server=freeyourgadget.org INFO conduwuit_service::rooms::summary: Asking for room summary over federation room_id=!BASVLToVaSnaIuaexZ:matrix.tu-berlin.de via=["freeyourgadget.org", "matrix.org", "ccc.ac"] INFO conduwuit_service::rooms::summary: Server could not provide a summary for this room room_id=!BASVLToVaSnaIuaexZ:matrix.tu-berlin.de server=freeyourgadget.org err=Remote server freeyourgadget.org responded with: [404 / M_UNKNOWN] Unknown room: !BASVLToVaSnaIuaexZ:matrix.tu-berlin.de INFO conduwuit_service::rooms::summary: Server could not provide a summary for this room room_id=!BASVLToVaSnaIuaexZ:matrix.tu-berlin.de server=matrix.org err=Remote server matrix.org responded with: [404 / M_UNKNOWN] Unknown room: !BASVLToVaSnaIuaexZ:matrix.tu-berlin.de ``` After waiting for like 3 minutes, the space still shows most rooms with their bare names. Except for rooms that I have joined, others are empty or only load after a while. <details> ![image](/attachments/b12f7e46-6621-4fbe-a444-2545480f781f) </details> When I went to another chat and returned to the "View Timeline" window, these spurious logs happened again in the same intensity. This suggests C10y does not ever cache room summaries for rooms that it doesn't join in. In another space with around 150 rooms (`#NLspace:matrix.org`), no rooms except for the ones I joined are ever shown at all. This has been reported in the support room via the linked message above. --- Now, in response to you: > Notably, on an example of my own personal space: Are the rooms inside these space mostly created on your own server? In my report above, the rooms are all created on remote servers and hence room summaries are needed to be fetched for all them if they're unjoined. So I'm not sure. Let me know if you have any logs relevant to fetching room summaries when you browse the space lobby from your clients. > In SchildiChat Next, the Space Overview screen shows only the partial list of rooms, but if Space Navigation is enabled (Settings > Turtle Tweaks > Spaces > Space Navigation), the category set for the space contains all joined rooms. On different clients I observe different behaviors w.r.t. to a working space - Continuwuity's: - Gomuks loads all rooms as blank IDs first, and render the true name gradually when it knows of them. This includes 2 rooms where I'm forbidden to join, but is in the space - Element X doesn't load any room until all is rendered. Then, it only load rooms that I am not forbidden to join - Not sure about SchildiNext, but their extra implementation of space is different from Element X's So it seems to be a UI rendering issue per-client that is worsened by slow C-S sync issues. Ideally all rooms and their summaries are fetched soon, but it might be missing. > It also seems unrelated to whether or not the rooms ID has the homeserver at the end of its room ID. --- I believe Continuwuity can improve the situation somewhat by caching room summaries for all rooms it is aware of (even if nobody joins them). Having to refetch them every time one browses a space can be very time-consuming. Furthermore I'm not sure if they are properly sent down sync as per !779 and other syncing issues.
179 KiB
Owner

I believe Continuwuity can improve the situation somewhat by caching room summaries for all rooms it is aware of (even if nobody joins them).

We intentionally don't do this, because there's no way to reasonably clear that cache, and we don't want to show users out-of-date information, or worse show a summary for a room that's no longer accessible. The speed of summary fetching for rooms that the server isn't in depends entirely on how quickly the vias can provide a summary.

Furthermore I'm not sure if they are properly sent down sync

Room summary requests are unrelated to sync.

> I believe Continuwuity can improve the situation somewhat by caching room summaries for all rooms it is aware of (even if nobody joins them). We intentionally don't do this, because there's no way to reasonably clear that cache, and we don't want to show users out-of-date information, or worse show a summary for a room that's no longer accessible. The speed of summary fetching for rooms that the server isn't in depends entirely on how quickly the vias can provide a summary. > Furthermore I'm not sure if they are properly sent down sync Room summary requests are unrelated to sync.
Author
Contributor

Notably, on an example of my own personal space:

Are the rooms inside these space mostly created on your own server? In my report above, the rooms are all created on remote servers and hence room summaries are needed to be fetched for all them if they're unjoined. So I'm not sure. Let me know if you have any logs relevant to fetching room summaries when you browse the space lobby from your clients.

The space, as well as all of its rooms, are on my own server.

So it seems to be a UI rendering issue per-client that is worsened by slow C-S sync issues. Ideally all rooms and their summaries are fetched soon, but it might be missing.

While that would be my first guess, the fact that the partial list of rooms consistently shows the same rooms across all clients suggests to me that it's either not strictly a client issue or it's a mistake that all of these clients make.

> > Notably, on an example of my own personal space: > Are the rooms inside these space mostly created on your own server? In my report above, the rooms are all created on remote servers and hence room summaries are needed to be fetched for all them if they're unjoined. So I'm not sure. Let me know if you have any logs relevant to fetching room summaries when you browse the space lobby from your clients. The space, as well as all of its rooms, are on my own server. > So it seems to be a UI rendering issue per-client that is worsened by slow C-S sync issues. Ideally all rooms and their summaries are fetched soon, but it might be missing. While that would be my first guess, the fact that the partial list of rooms consistently shows the same rooms across all clients suggests to me that it's either not strictly a client issue or it's a mistake that all of these clients make.
Author
Contributor

I've made some progress on this.

When building the room lists that suffer from this error, clients use _matrix/client/v1/rooms/<roomID>/hierarchy. This call returns a rooms list consisting of:

  • the space itself (that has a "children_state" component that seems to include all of the channels)
  • only the rooms that were visible in the partial room list

These clients then build the room list based on that initial room list, rather than the rooms inside of children_state. This is a reasonable solution for them, as it saves on the API calls.

I've made some progress on this. When building the room lists that suffer from this error, clients use `_matrix/client/v1/rooms/<roomID>/hierarchy`. This call returns a rooms list consisting of: - the space itself (that has a "children_state" component that seems to include all of the channels) - only the rooms that were visible in the partial room list These clients then build the room list based on _that_ initial room list, rather than the rooms inside of children_state. This is a reasonable solution for them, as it saves on the API calls.
burgundia changed title from Spaces don't show all rooms in specific places in some clients. to Calling _matrix/client/v1/room_summary/<roomID> for a space returns only a partial list of rooms for that space. 2026-05-21 21:58:58 +00:00
burgundia changed title from Calling _matrix/client/v1/room_summary/<roomID> for a space returns only a partial list of rooms for that space. to Calling _matrix/client/v1/rooms/<roomID>/hierarchy for a space returns only a partial list of rooms for that space. 2026-05-21 23:46:18 +00:00
Author
Contributor

Made a small combo file that includes the output of the hierarchy call and the additional outputs of the summaries of missing rooms.

Made a small combo file that includes the output of the hierarchy call and the additional outputs of the summaries of missing rooms.
Author
Contributor

One more interesting observation - updating a room (i.e., creating a new one) does place the new, updated room in the room list from the hierarchy call. Removing and re-adding the room does nothing.

One more interesting observation - updating a room (i.e., creating a new one) does place the new, updated room in the room list from the hierarchy call. Removing and re-adding the room does nothing.
Sign in to join this conversation.
No milestone
No project
No assignees
3 participants
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
continuwuation/continuwuity#1789
No description provided.