By Linux convention for GUI software, Ctrl+Q is quit.
By general chat app convention, Ctrl+K is filter.
Some keybindings have been changed to make space for these:
Reply is now Ctrl+R
Remove is now Ctrl+Shift+R
"Previous message" is now Ctrl+I
I did not want to alter the defaults more than this.
But ideally, you would want "Previous message" and "Next message"
adjacent, so it makes sense to swap Ctrl+U and Ctrl+J as well.
Moment has different default directories and is controlled by
different environment variables. On first startup, Moment
detects Mirage directories and offers to copy them.
It doesn't make sense to migrate logins without migrating encryption
keys, so this is now included in migration. Themes are migrated as well.
Only offer migration is only if both config and data directory are able to be
migrated.
By default, TapHandler is used for all input types. GlobalTapHandlers
was blocking finger touch events from reaching the underlying elements,
breaking the app for mobile devices with a touch screen.
Sending screenshots of error popups is an easy way to leak information.
But if the popup is transparent, that makes it so much easier.
For the sake of privacy, error popups should be opaque.
I just spent half an hour debugging why some setting didn't work for me.
It was because I was putting it in Chat instead of Keys.Chat. This is
very confusing when you're making your own partial config override file.
I've added comments to the classes with identical names to hopefully
make this less confusing.
* Key to jump to latest/oldest unread #186
Latest/oldest unread/highlight.
Default bindings match the bindings for previous/next unread/highlight.
Allows the user to read messages in the order of receiving them.
Or the opposite order, to stay on top of things.
* Clean up code
Use let instead of var, and proper indentation
* Fix case for some variables in RoomList.qml
Some variables were using snake_case instead of camelCase like usually
done in QML code (note that the model items come from python)
Co-authored-by: miruka <miruka@disroot.org>
People modify animationDuration because they want a snappy client.
But it also affects a few things that do not contribute to that
and should remain constant speed:
- Busy indicator
- Progress bar animation
- Ping indicator in AddAccount ServerBrowser
- Image rotation button cooldown
When we are invisible and restart the client, set ourself to invisible,
not offline, and correctly keep the status message that should be set
whenever we get back to a visible online.
- Up to 5 previously set status are now shown under the field
for quick access; the history is shared between accounts
- When focusing the field, the text gets auto-selected since most of the
time we want to set a totally different status, not edit the current one
- Typing in the field will autosuggest any matching history entry
- Keyboard focus now skips the "apply" button, since we can just hit
enter in the field
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)
If another client becomes invisible/offline or we stop syncing for some
time (due to e.g. connection issue or debugger freeze), the server will
tell us our presence is offline. Following this update would lead to our
our current connection being terminated, so ignore it.
Side-effect: if we become invisible and another client with this behavior
is using the account at the same time, this will result in us becoming
online/unavailable again a few seconds later, since we follow
updates for these status to avoid conflicts
The banners shown in place of the composer for invited and left rooms
suffered from numerous problems due to being written very long ago and
untouched since then: unflexible components, layout glitching at certain
size, and focus issues.
These elements have been reimplemented as part of the Composer using
standard components, handle lack of space/width much better and
correctly take focus when switching rooms or the room's state changes.
Other note, the inviter's avatar is no longer shown in place of where
the current writing user is currently shown, to maintain consistency and
keep an indication of which account the user is acting as.
The inviter's profile should be available in the right pane, but nio
apparently doesn't give us member events for invited rooms.
Redaction events displayed as subtitles of left pane rooms were
accidentally double-escaped, leading to e.g. "X's message was removed by
Y" being rendered without the apostrophe