If our presence is invisible from the first sync, we'll never receive a
presence event telling us so.
The server just knows from the beginning, so show our local presence as
echo instead of echo_invisible (which causes the half-opacity presence orb)
- Allow using invisible mode on servers not supporting presence, to
make use of the prevention of sending typing notifications and read
marker updates
- For servers not supporting presence, display the account's presence
orb in the left pane with half opacity
- Indicate in the presence orb tooltip when the presence we set hasn't
yet been noticed by the server/the server doesn't support presence
- When reconnecting after being offline, if the server doesn't indicate
we have a status message [set from another client], restore any
previous message we had set in the current client
- Show our status message striked out when we're invisible or offline to
indicate that it isn't being broadcasted
- Some code style cleanups
- Try to handle cases where we set a presence, but receive a new
presence event for our account before the server takes notice of that
new presence we want, which probably resulted in the "account keeps
switching between online and unavailable every few sec" glitch
When declining an invite, the popup now offers a checkbox to also add
the sender to the account data m.ignored_user_list event.
This will hide any further invite or message from that user in syncs,
and also immediatly remove the ones we currently have.
As a side-effect, the long-time bug that caused forgotten rooms to
immediatly reappear due to received a "<user> left" event has been
fixed.
When the currently shown page is the chat of a certain room,
prevent that room from moving around in the left pane due to new
messages/activity or unread/highlight counters change.
When the user switches to another page/room, the previously held lock is
released and that room completes all the moves it would have done if it
wasn't locked.
This makes navigating a room list with lots of activity easier, and
prevent annoyances like clicking on a room with unread messages and
having it immediatly fly down the list (possibly out of scroll view).
This happened when we got a message from an account-room pair
where the full member list hadn't been loaded yet, i.e. the user had
never focused the room since starting the client
Pin/unpin is more representative of what the function actually does
for rooms in the left pane. Also change the corresponding icons and
renames the config file section: RoomList.Bookmarks → RoomList.Pinned
Add RoomList.local_unread_markers option to settings.py,
which is False by default.
Before, this way always enabled and conflicts with push rules by marking
anything as unread without any logic.
Downloading file messages will now show a transfer control above the
composer, similar to uploads. Measuring the progress or pausing the
operation is not possible yet.
- Cleaner design for the backend user_files classes and simplified
interaction with QML
- Config and theme files will now automatically reload when changed on
disk
- Removed manual reload keybind and button
Introduce a bookmark system for rooms:
a room bookmarked will always appear on top of every other
(for a given account).
Bookmarking can be done through context menu on targeted room
(as well as un-bookmarking) or through settings.json
(key roomBookmarkIDs) for permanent bookmark.
roomBookmarkIds is a {account_user_id: [room_id]} dict.