element-hq / element-meta

Shared/meta documentation and project artefacts for Element clients
68 stars 11 forks source link

Top-level space "hijacking" #306

Open jerrykan opened 3 years ago

jerrykan commented 3 years ago

If I create a new public space Fruit that I am an admin of then it will show up as a top-level space in the spaces sidebar. However at some point in the future some other person with no connection for the original Fruit space might create a public Food space and decide to add Fruit as a subspace. If I (or another user who is already a member of the Fruit space) decides to join the Food space then suddenly I no longer have the Fruit space show up as a top-level space in the sidebar.


As a user if you aren't paying attention you might not even notice that Fruit is now a sub-space and just notice that it is missing from the top-level spaces. Assuming you even know what has happened you need to click through all the spaces/sub-spaces to find which one it is in.

As an admin of the Fruit space but not the Food space it also seems rather counter-intuitive that I need to click through other spaces to get to the space I'm an admin of to manage it.


At a minimum for the user there should be a way to pin a sub-space (ie. Fruit) as a top-level space. When you first join a space that is not already a sub-space of another space you are in when you first join it, it should be pinned by default. If at a later point the you find yourself as a member of a top-level space (ie. Food) and a pinned sub-space (ie. Fruit) you can then unpin the sub-space.

For admins it might be desirable to somehow mark a space as not being able to be added as a sub-space to a non-private space.

jerrykan commented 2 years ago

Thinking about this a little bit more there are probably implication for how notifications are treated if a sub-space is pinned to the top level.

If Fruit is a sub-space of Food and Fruit is pinned to the top level, personally I would want notifications for the Fruit sub-space to only show up on the Fruit space in the side-bar and not the Food space as well.

MoKe12g commented 1 year ago

Despite the age of this topic, i would like to have this feature added to at least element-web. I've created an implementation here (https://github.com/MoKe12g/matrix-react-sdk/tree/space-pin) calling it space pinning. My implementation (in the element-web / matrix-react-sdk) is that in the function "SpaceStore.ts" while creating the spaces list inside the findRootSpaces checks for every space, if the localStorage key mx_space_pin_${roomId} is true, to then add the space also as an primary space. I haven't yet thought about how to handle notifications, since i haven't looked far enough in the codebase to know how notifications for different spaces are handled.

ShadowJonathan commented 1 year ago

This issue is still relevant, our community space got "subsumed" into another community space, which just wanted to include us because we seemed relevant. As a result, I can't pin the space to the sidebar and quickly access it, I have to put this relatively irrelevant community space on the top, to navigate there.


@MoKe12g did you make a PR?

Also, for this to be considered, i'd guess that Element would want the "pinned" spaces to be stored in account data, you can maybe look towards Cinny for inspiration/compatibility.

MoKe12g commented 10 months ago

i didn't made a PR yet. There are still some things, i need to fix first before creating a PR.

ShadowJonathan commented 7 months ago

@MBybee your issue got marked as duplicate, there's no "not planned" to this issue, it's just a part of triage and keeping down duplicate issues

ara4n commented 7 months ago

it was marked as a duplicate of this bug, which is still open.