-
-
Notifications
You must be signed in to change notification settings - Fork 2k
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
Stuck notifications #24392
Comments
Descoping #24373 as this doesn't have the same level of severity as the other issues. |
As mentioned in the issue description, the remaining bugs will require a spec change. We're currently in the process of drafting the MSC but it'll, unfortunately, be more involved than just a simple client-side bug fix. |
I don't think that is true. If you look at the comments in #24595, you will find some from rooms where threads were never used and IME clearing cache often fixes these issues. |
We're focusing on the most prominent problems first which are in the interplay of threads and other relations. There may be further issues beyond that. |
I had the same issue in some rooms. |
@8227846265 the threads-related stuck notification issues are blocking on matrix-org/matrix-spec-proposals#3981. |
We've completed initial implementations for it last week and are now starting to prepare for testing it. Unfortunately, it'll still take some more time to get this landed due to the nature of the spec process. |
@Johennes Thanks for this explanation. If there is an environment where a regular user could help test it, I'd love to hear about it. |
Thanks @leonardehrenfried. We will most likely be enabling it on beta.matrix.org as to not impact regular users but you can sign-up for a separate account there if you want to help testing. |
@Johennes , thanks for the explanation indeed! How soon it could be expected to land to the self hosted solutions? |
I'd expect the initial PRs (matrix-org/synapse#15315 & matrix-org/matrix-js-sdk#3248) to land this week. |
For everybody subscribed to this ticket: the backend and frontend PRs have been merged now so I expect a rollout quite soon. (I'm not an Element/Matrix employee, just an interested user.) |
@8227846265 we have one more fix in the making that doesn't depend on the MSC (#25196) and should land soon. If that one doesn't help your case, we'd be interested to hear more details about your particular error scenario. |
My original report #8941 was about rooms flagged as having new messages after login or cache reset, but they don't have. This issue was closed in favour of this one, but yesterday, I've logging in on a new session and still got stale room notifications. Does anything happen to this issue? |
After each time I restart Element, I have to go over 10-15 chats, to mark everything as read. A lot of times, the chats are half a year old. I feel like it's connected to the fact that messages are being loaded when I click on the conversation, not when I open Element, but that's just a guess. |
Also, opening chats for the first time after restarting element, when the messages are loaded, marks some of the loaded ancient messages from threads as unread. |
One more thing that I've noticed, is a lot of times the ancient messages are stuff like |
Has progress stalled? I've had the same stuck unread notifications for several months now, both on every production release of Element as well as running bleeding edge from develop.element.io. It does seem to be the same rooms/old messages that consistently show as unread. Is there anything I can do as an end-user to troubleshoot the circumstances, particularly where the issue is reproducible at least for some fraction of the time? |
Any update? |
Is there still work on threads becoming unread again and again all the time? Happens quite frequently to me nowadays |
I also have this. In foundation room I get a loud ping for a mention in a thread each time a new message is added to the room. Its annoying me. |
I have this, too. |
I have more than 30 rooms stuck notifications. Mark everything a read does not work. Let me know if I should provide any logs. |
are there more logs required or anything? This issue has been around for more than a full year now and recently progress seems to have stalled |
Thanks all for the continued patience and feedback on this issue and apologies for it becoming stale. A lot of progress was made in 2023 and Q12024 on spec, bug fixes, tests and also improvements to the UX on notifications including:
You can check out this blog post for some more details on the improvements. We hope these efforts have brought a somewhat calmer and improved experience for notifications, especially on the main room list. We are aware there are still problems, particularly in the threads experience. We suspect some of the bugs in threads related to activity indicators(white dots) are caused by a bug in synapse and are pursuing this as a next port of call. (@JMoVS We suspect this is the source of the bug you and others have highlighted above). Aside from ongoing efforts to fix particular known bugs, we know where we are currently with notifications is not the destination. For example, while we believe the new threads activity centre creates a calmer experience there is a risk of missing out on threaded messages. One thing we would like to do in future is introduce Thread Participation to opt in to notifications for specific threads. This would allow us to improve the UX and value delivered by the Threads Activity Center. However before we tackle another major iteration on Notifications we need to first make some foundational improvements to how both room list/spaces and the timeline work. We’ll update again when we have more to share. |
Love the progress, but this still doesn't say how are we doing on actually fixing bugs related to notifications. Why are there still notifications reappearing after restart, and what's the timeline on fixing those? |
Concrete question on this: Will there be a change in behavior of notifications with sliding sync? Given that clients see much less data overall, I suspect they should be less prone to false notifications from local misinterpretations of room state and loaded backlog. Is that the case, or will this be largely the same? Overall, the current state of affairs is not ideal, but bearable. If the sliding sync overhaul affects this in a fundamental way, it might be wiser to focus efforts on that. |
Another source of frustration is UX related: I have about 100 rooms in various spaces. The list does not fit on a single screen. The room list is not sorted by last activity which makes me miss notifications below the first fold. If I miss notifications the tool loses the trust. If Element had a room list ordered by activity then this would constitute a real inbox and resolve a lot of anxiety of missing messages. BTW I also believe that Threads should ideally have titles so that it becomes easier to jump back. Also threads could then be treated similar to rooms within such inbox. However, one should be able to mark a thread as closed/resolved. Zulip does that part very well. |
This is not related to "Stuck notifications" issue so better report and discuss it elsewhere. But anyway right-click on "Rooms" header and you can choose to show rooms with activity first. |
We are experiencing multiple issues in the area of "stuck" notifications and unread markers. Many are related to the way receipts interact with threaded messages.
Symptoms
We are seeing different symptoms of the problem:
Spec-level causes
Message ordering
Fundamentally, in order to interpret the meaning of a receipt that says "I have read everything up to here", we need to know what order messages are in. This is not clear in the spec, and we propose to make it clear and explicit in MSC4033.
In the meantime, Element Web uses a combination of "sync" order (the implicit order of events arriving via a /sync request) and "timestamp" order (using the
ts
property within events).Some of the existing bugs are probably caused by this inconsistency, but it is not clear yet how many: we believe there are also bugs in the implementation that cause additional problems, and this theoretical inconsistency is only the cause of a few problems.
Which thread the root belongs to
The spec has what we consider a bug when it talks about which thread the root message belongs to, which has been reflected in client code, making it inconsistent with the server implementation (at least on the Synapse server). We have a proposal to fix this bug in MSC4037.
Identifying which thread any message is in
It is sometimes difficult for clients to identify which thread an event belongs to, meaning that a receipt pointing to it is sometimes ignored. We have begun drafting MSC4023 to address this.
Other
Previously, we believed that MSC3981 (recursive relations) would solve some of the problems, but since that MSC does not solve the event-ordering problem (because the events from the /relations API are returned in "topological" order) we no longer believe it is important, except as a performance optimisation.
Code-level causes
Code-level causes
We have found and fixed several bugs in the Element Web code that were caused by an incomplete understanding of the meaning of threaded and unthreaded read receipts. We anticipate that some more exist.
(We believe that the primary reason why we're not seeing the same problems on mobile is that the apps persist events they've received whereas Element Web has to re-fetch from scratch after every launch. As a result, any issue in the unread state logic, strikes again and again. The apps also use a single timeline whereas Element Web maintains one timeline per thread in addition to the main timeline in every room.)
High-level plan of actions
Tasks
We believe a lot of progress can still be made without spec changes. So we're slightly deprioritising work on the MSCs.
We claim it is implemented in EW
Synapse will need small fixes when this is merged
Needs implementation on server and client but we believe it should mostly only cover edge cases
There is disagreement about the way to specify this and possible interference with MSC3051: A scalable relation format matrix-org/matrix-spec-proposals#3051
There is likely no good workaround other than implementing this MSC
New issue inbox
The following is a holding area for newly reported issues that require review. Once reviewed, issues should either be moved to one of the other task lists below or, if not applicable, removed from this epic.
Tasks
Tasks not blocked by spec work
Tasks
Tasks that are related to or dependent on spec work
We've written the following MSCs to try and address the root causes in a reliable and performant way:
A client-side workaround for this based on timestamp ordering has been implemented. This is imperfect and easily abused though.
A client-side workaround for this based on calling
/event
to fetch the parent has been implemented. This is functionally correct but has a noticeable performance impact.The client-side code has already been modeled to reflect the behavior proposed in the MSC (which is also what Synapse already does today).
/relations
recursion matrix-org/matrix-spec-proposals#3981We expect this to not help with the ordering problems but it will be a performance improvement.
Tasks
GET /relations
andGET /event
, with MSC3981 enabled and working vector-im/element-web#25395Issues that are related but out of scope
Time sheeting
WEB: Stuck notifications
The text was updated successfully, but these errors were encountered: