Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Notif panel needs to know how to deal with encrypted room #6874

Open
AmandineLP opened this issue Jun 14, 2018 · 14 comments
Open

Notif panel needs to know how to deal with encrypted room #6874

AmandineLP opened this issue Jun 14, 2018 · 14 comments
Labels
A-E2EE A-Notif-Panel O-Frequent Affects or can be seen by most users regularly or impacts most users' first experience S-Major Severely degrades major functionality or product features, with no satisfactory workaround T-Defect T-Epic Issue is at Epic level Z-Labs

Comments

@AmandineLP
Copy link
Contributor

Today the notification panel is unable to retrieve notifications from encrypted room. This really cripples the experience for people heavily using encryption and needs to be fixed before enabling e2e by default

@SimonBrandner SimonBrandner added O-Frequent Affects or can be seen by most users regularly or impacts most users' first experience and removed P1 labels Aug 24, 2021
@novocaine novocaine added S-Major Severely degrades major functionality or product features, with no satisfactory workaround T-Defect and removed T-Enhancement labels Oct 4, 2021
BBaoVanC added a commit to boba-best/element.boba.best that referenced this issue Oct 11, 2021
* Decrease profile button touch target ([\element-hq#6900](matrix-org/matrix-react-sdk#6900)). Contributed by [ColonisationCaptain](https://github.com/ColonisationCaptain).
* Don't let click events propagate out of context menus ([\element-hq#6892](matrix-org/matrix-react-sdk#6892)).
* Allow closing Dropdown via its chevron ([\element-hq#6885](matrix-org/matrix-react-sdk#6885)). Fixes element-hq#19030 and element-hq#19030.
* Improve AUX panel behaviour ([\element-hq#6699](matrix-org/matrix-react-sdk#6699)). Fixes element-hq#18787 and element-hq#18787. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
* A nicer opening animation for the Image View ([\#6454](matrix-org/matrix-react-sdk#6454)). Fixes element-hq#18186 and element-hq#18186. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
* [Release] Fix space hierarchy pagination ([\element-hq#6910](matrix-org/matrix-react-sdk#6910)).
* Fix leaving space via other client leaving you in undefined-land ([\element-hq#6891](matrix-org/matrix-react-sdk#6891)). Fixes element-hq#18455 and element-hq#18455.
* Handle newer voice message encrypted event format for chat export ([\element-hq#6893](matrix-org/matrix-react-sdk#6893)). Contributed by [jaiwanth-v](https://github.com/jaiwanth-v).
* Fix pagination when filtering space hierarchy ([\element-hq#6876](matrix-org/matrix-react-sdk#6876)). Fixes element-hq#19235 and element-hq#19235.
* Fix spaces null-guard breaking the dispatcher settings watching ([\element-hq#6886](matrix-org/matrix-react-sdk#6886)). Fixes element-hq#19223 and element-hq#19223.
* Fix space children without specific `order` being sorted after those with one ([\element-hq#6878](matrix-org/matrix-react-sdk#6878)). Fixes element-hq#19192 and element-hq#19192.
* Ensure that sub-spaces aren't considered for notification badges ([\element-hq#6881](matrix-org/matrix-react-sdk#6881)). Fixes element-hq#18975 and element-hq#18975.
* Fix timeline autoscroll with non-standard DPI settings. ([\element-hq#6880](matrix-org/matrix-react-sdk#6880)). Fixes element-hq#18984 and element-hq#18984.
* Pluck out JoinRuleSettings styles so they apply in space settings too ([\element-hq#6879](matrix-org/matrix-react-sdk#6879)). Fixes element-hq#19164 and element-hq#19164.
* Null guard around the matrixClient in SpaceStore ([\element-hq#6874](matrix-org/matrix-react-sdk#6874)).
* Fix issue (https ([\element-hq#6871](matrix-org/matrix-react-sdk#6871)). Fixes element-hq#19138 and element-hq#19138. Contributed by [psrpinto](https://github.com/psrpinto).
* Fix pills being cut off in message bubble layout ([\element-hq#6865](matrix-org/matrix-react-sdk#6865)). Fixes element-hq#18627 and element-hq#18627. Contributed by [robintown](https://github.com/robintown).
* Fix space admin check false positive on multiple admins ([\element-hq#6824](matrix-org/matrix-react-sdk#6824)).
* Fix the User View ([\element-hq#6860](matrix-org/matrix-react-sdk#6860)). Fixes element-hq#19158 and element-hq#19158.
* Fix spacing for message composer buttons ([\element-hq#6852](matrix-org/matrix-react-sdk#6852)). Fixes element-hq#18999 and element-hq#18999.
* Always show root event of a thread in room's timeline ([\element-hq#6842](matrix-org/matrix-react-sdk#6842)). Fixes element-hq#19016 and element-hq#19016.
williamkray added a commit to williamkray/element-web that referenced this issue Nov 9, 2021
* Decrease profile button touch target ([\element-hq#6900](matrix-org/matrix-react-sdk#6900)). Contributed by [ColonisationCaptain](https://github.com/ColonisationCaptain).
* Don't let click events propagate out of context menus ([\element-hq#6892](matrix-org/matrix-react-sdk#6892)).
* Allow closing Dropdown via its chevron ([\element-hq#6885](matrix-org/matrix-react-sdk#6885)). Fixes element-hq#19030 and element-hq#19030.
* Improve AUX panel behaviour ([\element-hq#6699](matrix-org/matrix-react-sdk#6699)). Fixes element-hq#18787 and element-hq#18787. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
* A nicer opening animation for the Image View ([\#6454](matrix-org/matrix-react-sdk#6454)). Fixes element-hq#18186 and element-hq#18186. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
* [Release] Fix space hierarchy pagination ([\element-hq#6910](matrix-org/matrix-react-sdk#6910)).
* Fix leaving space via other client leaving you in undefined-land ([\element-hq#6891](matrix-org/matrix-react-sdk#6891)). Fixes element-hq#18455 and element-hq#18455.
* Handle newer voice message encrypted event format for chat export ([\element-hq#6893](matrix-org/matrix-react-sdk#6893)). Contributed by [jaiwanth-v](https://github.com/jaiwanth-v).
* Fix pagination when filtering space hierarchy ([\element-hq#6876](matrix-org/matrix-react-sdk#6876)). Fixes element-hq#19235 and element-hq#19235.
* Fix spaces null-guard breaking the dispatcher settings watching ([\element-hq#6886](matrix-org/matrix-react-sdk#6886)). Fixes element-hq#19223 and element-hq#19223.
* Fix space children without specific `order` being sorted after those with one ([\element-hq#6878](matrix-org/matrix-react-sdk#6878)). Fixes element-hq#19192 and element-hq#19192.
* Ensure that sub-spaces aren't considered for notification badges ([\element-hq#6881](matrix-org/matrix-react-sdk#6881)). Fixes element-hq#18975 and element-hq#18975.
* Fix timeline autoscroll with non-standard DPI settings. ([\element-hq#6880](matrix-org/matrix-react-sdk#6880)). Fixes element-hq#18984 and element-hq#18984.
* Pluck out JoinRuleSettings styles so they apply in space settings too ([\element-hq#6879](matrix-org/matrix-react-sdk#6879)). Fixes element-hq#19164 and element-hq#19164.
* Null guard around the matrixClient in SpaceStore ([\element-hq#6874](matrix-org/matrix-react-sdk#6874)).
* Fix issue (https ([\element-hq#6871](matrix-org/matrix-react-sdk#6871)). Fixes element-hq#19138 and element-hq#19138. Contributed by [psrpinto](https://github.com/psrpinto).
* Fix pills being cut off in message bubble layout ([\element-hq#6865](matrix-org/matrix-react-sdk#6865)). Fixes element-hq#18627 and element-hq#18627. Contributed by [robintown](https://github.com/robintown).
* Fix space admin check false positive on multiple admins ([\element-hq#6824](matrix-org/matrix-react-sdk#6824)).
* Fix the User View ([\element-hq#6860](matrix-org/matrix-react-sdk#6860)). Fixes element-hq#19158 and element-hq#19158.
* Fix spacing for message composer buttons ([\element-hq#6852](matrix-org/matrix-react-sdk#6852)). Fixes element-hq#18999 and element-hq#18999.
* Always show root event of a thread in room's timeline ([\element-hq#6842](matrix-org/matrix-react-sdk#6842)). Fixes element-hq#19016 and element-hq#19016.
@aleld
Copy link

aleld commented Mar 4, 2022

Are there any Updates on this? For a company environment it is quite important to sustain high grade of communication flow.

@MadLittleMods
Copy link
Contributor

MadLittleMods commented Feb 8, 2023

From a discussion out of band, it feels like the notification panel could include client-side mentions since that's how notifications are calculated in E2EE rooms. I assume the client already has enough info to interleave whatever it thinks is a notification to display as a mention in that panel but in order to be 100% correct and have access to all historical notifications we need the following:

@t3chguy noted that the server would need to include the e2ee notify rule results in /notifications so the client could filter them. Which Synapse not doing might be a Synapse bug, the spec is quite open ended but doesn't say anything about excluding them - https://spec.matrix.org/v1.5/client-server-api/#get_matrixclientv3notifications

And with sliding sync, the matrix-js-sdk will only have a fraction of your rooms in memory


I just feel like any compromise that's good enough for notifications in e2ee rooms is good enough for that panel.

If I have a notification, I feel like should be able to see it in the panel (applies to any message that is available to the client at that moment). This would be a major step-up.

I understand how it could fall off the list since it's not back-paginated but we can iterate that separately (as noted above)

@davidegirardi
Copy link

I think having notifications load up little by little because of sliding sync is not a problem and is kind of expected by an end user. Even if they don't realise how sliding sync works, they are already used to infinite scroll and things loading asynchronously in many other applications.

One sure thing is that the server should be oblivious of any E2EE content, including mentions and other explicit notifications.

@t3chguy
Copy link
Member

t3chguy commented Feb 10, 2023

I think having notifications load up little by little because of sliding sync is not a problem and is kind of expected by an end user. Even if they don't realise how sliding sync works, they are already used to infinite scroll and things loading asynchronously in many other applications.

One sure thing is that the server should be oblivious of any E2EE content, including mentions and other explicit notifications.

They wouldn't load little by little unless you had something backpaginating things like Seshat. Seshat doesn't work in a browser. Seshat also doesn't yet store notifications. The other way would be to mass backpaginate all encrypted rooms when a user scrolls up and stitch timelines but that would likely not be acceptable due to the amount of requests made to the server and how much extra data will get filled into memory

@davidegirardi
Copy link

I believed using sliding sync also meant having back pagination but yes, without some kind of storage, it would be taxing on the memory usage.

I don't see the difference with the server though: does it matter if a client backpaginates because of Seshat or something else?

@t3chguy
Copy link
Member

t3chguy commented Feb 10, 2023

Seshat runs intentionally slowly whereas this would ideally backpaginate every of your encrypted rooms at once otherwise the back pagination of the notif panel would be jumpy as things get stitched into the middle

@davidegirardi
Copy link

What if Element does the same as Seshat but discards any event without a notification? It will basically backfill until the previous read state and only keep in memory notification information.

@t3chguy
Copy link
Member

t3chguy commented Feb 13, 2023

We'd need to reinvent something like Seshat (which doesn't support web) to store it in, otherwise it has to be re-loaded every time you reload the app or update it. Its definitely possible but the experience for backpaginating the panel would be very slow and jumpy.

@davidegirardi
Copy link

Can't we use the localStorage to keep the encrypted events and then get them from there?

@t3chguy
Copy link
Member

t3chguy commented Feb 13, 2023

We already store too much in localStorage, often hitting quotas. IDB would be a better option. But you'd also need to handle redactions, periodically checking back on all those stored events to see if they got redacted.

@dkasak
Copy link
Member

dkasak commented Feb 15, 2023

I think the proper solution would be to make Seshat work in Element Web (I think the only issue is that the tantivy dependency doesn't support it) and then have it expose an API specifically for notifications, similar to the C2S /notifications one. IMO, the right approach is to stop considering Seshat as simply a search module but more of a general-purpose client-side message store which can implement many of the traditionally server-side APIs which cannot be done server-side in encrypted contexts.

@davidegirardi
Copy link

Doing that would solve a lot of problems like having a list of your threads and similar.
Where can we store the data if we are already hitting the limits on localStorage?

@richvdh
Copy link
Member

richvdh commented Mar 16, 2023

Where can we store the data if we are already hitting the limits on localStorage?

IndexedDB.

@opeik
Copy link

opeik commented Oct 21, 2023

As an occasional user of Element, not having notifications makes the app borderline unusable for async communication.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-E2EE A-Notif-Panel O-Frequent Affects or can be seen by most users regularly or impacts most users' first experience S-Major Severely degrades major functionality or product features, with no satisfactory workaround T-Defect T-Epic Issue is at Epic level Z-Labs
Projects
None yet
Development

No branches or pull requests