Nheko-Reborn / nheko

Desktop client for Matrix using Qt and C++20.
https://nheko-reborn.github.io/
GNU General Public License v3.0
1.91k stars 200 forks source link

Option or command to clear cache (and reload) #1242

Open Mikaela opened 1 year ago

Mikaela commented 1 year ago

The Problem

Often Matrix client and server start disagreeing on the state of the room, so I would like to drop the state on Nheko and have it sync again with the server.

This happens especially when using Nheko together with Dendrite. Many rooms just lose their avatar and name and instead become "someone and 15 others" ("someone and 15 muuta" when using Nheko in Finnish, have we not localised that "and" or is it untranslateable?).

The Solution

I would like a /clearcache command which is familiar from FluffyChat and doesn't require clicking around menus. Having a button in settings like in Element would be ok too, while I would prefer it to be quickly keyboard accessible.

Alternatives

I don't think there are alternatives.

Additional context

I apologise if I failed at describing the issue technically, I imagine everyone using Matrix for a while has had experience demanding the use of "clear cache and reload" in Element \<platform> settings or /clearcache in FluffyChat`.

This was previously requested by @Cadair in apparently opposite issue https://github.com/Nheko-Reborn/nheko/issues/360#issuecomment-768657005.

Happens in the latest version

Mikaela commented 1 year ago

By latest version I mean 57529497 and a /clear-timeline appears to do nothing in a test room on Dendrite.

deepbluev7 commented 1 year ago

This is very unlikely to happen. Please fix the server instead. There is a command to reload the state for a room, /reset-state, but in general I think such buttons are a code smell and you should fix the bugs instead of working around them. I think any client that has them becomes lazy and instead of fixing the bugs, tells their users to press that button instead, and I don't like it.

olmari commented 1 year ago

So in the negation of it, just let the user burn in hell no matter where the end flaw is, assuming such clear remedies situation?

deepbluev7 commented 1 year ago

You can repair a few rooms manually using /reset-state and /clear-timeline, but in general Matrix will never improve, if you just tell people to click a button every time they have an issue instead of fixing the issue properly. I have to click that button every month in Element, because those issues go unfixed and I think that is unacceptable. The button might look like a solution in the short term, but it makes the problems worse in the long term and is very inaccessible.

olmari commented 1 year ago

So go figure out what is rootcause in Synapse or whichever server and make PR?

deepbluev7 commented 1 year ago

Yes, but I hadn't had any such issues on Synapse in years in Nheko (apart from the one time I accidentally reset my database by a few months). It mostly affects dendrite right now, afaik.

Mikaela commented 1 year ago

I am told that Dendrite side tracking is either https://github.com/matrix-org/dendrite/issues/2910 or at least similar

deepbluev7 commented 1 year ago

Afaik dendrite also sometimes sent rooms in the "left" entries, which made Nheko forget about them. Not sure if there is an issue for that or it is fixed or so.

Midek commented 1 year ago

There are often glitches like rooms that do not exist anymore or broken unsent messages even when using synapse. In the end lack of option to clear cache just makes the user have to completely logout and log in again instead, and thats not the greatest experience.

Mikaela commented 1 year ago

If you only have a few problematic rooms, you can copy-paste /reset-state around, but if you have more of the rooms that does get tedious.

Midek commented 1 year ago

I cant even /reset-state in the broken rooms because they do not actually exist - i left them some time ago on other client. But nheko would still think im there if i did not relog

fgaz commented 1 year ago

This is not only useful for fixing inconsistencies, but also for clearing up space. My data.mdb is a few gigabytes