Commit Graph

2245 Commits

Author SHA1 Message Date
Maze
8ff6adf2d8 Bump version 2022-01-24 01:15:16 +01:00
Maze
dcf0fa768a Point links to new repo
These links should now point to the Moment repo instead of
mirukana/mirage
2022-01-23 22:13:49 +01:00
Maze
8d69649814 Change autosave for push rules to 3 seconds
A 30 second delay is unacceptable when there are two UIs for the same
thing, because the UIs will be out of sync for up to 30 seconds.
2022-01-16 16:48:55 +01:00
Maze
7889719574 Prevent instant refreshing of failed listing 2022-01-15 01:42:37 +01:00
Maze
bf76510e8b Handle when server listing is unavailable
This is a bad place to display a huge error because it is a repeating
query. And also this is the first thing people see when opening the app
for the first time and it is a bad impression.
2022-01-15 01:35:56 +01:00
Maze
db9b578bce Add copyright notices for Moment 2022-01-14 22:52:31 +01:00
Maze
e3103144a2 Change default keybindings for Moment
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.
2022-01-14 21:59:31 +01:00
Maze
106e963573 Add Foliage theme and make it new default
Moment should have a different default theme than Mirage to make it more
visible that it's not the same software.
2022-01-14 21:50:23 +01:00
Maze
2839f83dde Change config dir, offer to migrate
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.
2022-01-14 19:27:59 +00:00
Maze
3aa100981e Merge remote-tracking branch 'dejvinofork/issue_236' Fixes #94 2022-01-05 16:06:24 +01:00
Maze
ad272a136a Merge remote-tracking branch 'mraaghfork/emoji' 2022-01-05 16:02:31 +01:00
Maze
1ebce512b2 Merge branch 'comments' 2022-01-05 16:01:10 +01:00
Maze
ff621e3a01 Merge branch 'opaqueerror' 2022-01-05 15:52:13 +01:00
Maze
212a085648 Merge branch 'seen-indicator' Fixes #100 2022-01-05 15:50:20 +01:00
Maze
2113327d42 Add bindings page 2022-01-05 14:38:29 +00:00
vslg
4cffbaa68d Fix Python 3.10 collections import 2021-11-19 13:12:42 -03:00
Dejvino
7f95738037 GlobalTapHandlers: limit acceptedPointerTypes to mouse
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.
2021-11-17 20:12:27 +01:00
Maze
180c02daed Disable seen indicator link
The seen indicator is a link to #state-text.
This link should not be clickable.
Fixes #247
2021-08-30 03:01:53 +02:00
Maze
275f1f2109 Make error popup opaque
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.
2021-08-29 19:07:46 +02:00
Maze
2433dba27e Add helpful config comments
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.
2021-08-26 11:56:27 +02:00
Maze
5c819176a5 Suggest how to get colorful emoji
This is something that took me long to figure out, I think it'd help to
have it mentioned in the default configuration.
2021-08-12 15:01:44 +02:00
miruka
c86c4da7d1 Bump version to 0.7.2 2021-07-26 04:39:58 -04:00
miruka
94bf41dc3e Fix presence loop with unavailable/offline
Yes, again.
Also removes echo presence states to simplify things.
2021-07-26 04:39:58 -04:00
miruka
47cfd7c7b0 Show nio logging warnings 2021-07-26 04:39:58 -04:00
miruka
ba236e2be3 Remove some unused imports 2021-07-26 04:39:58 -04:00
miruka
42b2a040ec MatrixError: include server response content 2021-07-26 04:39:58 -04:00
miruka
6151444c71 MatrixError: include the server's message 2021-07-26 04:39:58 -04:00
miruka
692faa7142 Rename Daybreak component to DayBreak
QML name conventions
2021-07-26 04:39:58 -04:00
Maze
1d3ec44919 Allow apostrophe in URL regex
Apostrophe is a valid URL character.
Example: https://en.wikipedia.org/wiki/Benford's_law
2021-07-26 04:39:58 -04:00
Maze
884d22938b Add keys to jump to latest/oldest unread (#214)
* 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>
2021-07-26 04:39:58 -04:00
miruka
888b8b32c1 Fix account saved with incorrect presence on login
Saving account with an echo_ presence resulted in error 400 on /sync due
to the server not understanding the presence we're trying to set
2021-07-26 04:39:58 -04:00
Maze
d32370fc3a Made some animations unaffected by theme
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
2021-07-26 04:39:58 -04:00
miruka
c4a0e73e19 Hide prev status msg for accounts w/out presence 2021-07-26 04:39:58 -04:00
miruka
d4b9fc60a4 Fix invisible presence restoration
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.
2021-07-26 04:39:58 -04:00
miruka
22bce261d3 Yet another try at fixing presence endless loop 2021-07-26 04:39:58 -04:00
miruka
86c0cb1bf2 Add Presence.saved_status option
Controls how many previous status to keep saved in account menues,
see previous commit.
2021-07-26 04:39:58 -04:00
miruka
3402a1d5f8 Improve account status msg field & add history
- 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
2021-07-26 04:39:58 -04:00
miruka
67edd63c5a HComboBox: allow popup and indicator to be null 2021-07-26 04:39:58 -04:00
miruka
c9ee604cf3 Show inviter as subtitle for room list invites
Also fixes the centering of the enveloppe icon for invited rooms with a
subtitle.
2021-07-26 04:39:58 -04:00
miruka
02b4bddce5 Be invisible on startup, not echo_invisible
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)
2021-07-26 04:39:58 -04:00
miruka
c1f5605c1c Ignore offline presence updates for our account
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
2021-07-26 04:39:58 -04:00
miruka
93505dc44f Rework chat invite/left banners
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.
2021-07-26 04:39:58 -04:00
miruka
7d546b6565 Room items subtitles: fix redacts HTML escaping
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
2021-07-26 04:39:58 -04:00
Maze
b6773c724e Add keys for direct room switching (#209)
* Add Keys.Rooms.Direct configuration

Keybinding to jump to specific room id in specific account id, or the
first occurence of specific room id in any account.

* Default binding was a bad idea

This example binding was preventing the user from binding Ctrl+G,Ctrl+M
to something else.

* Use const instead of var

* Use showItemAtIndex for direct room switching

This is a simpler implementation that better fits in the existing
codebase and doesn't really have drawbacks.

* Use existing findIndex

From roomList.model. Instead of reinventing it

* Made example not a real room

Earlier I made it point to the Mirage room

* Add instructions for copying room ID

After noticing that these IDs do not match Matrix room addresses, I felt
it was necessary to explain this here, even if it's already explained in
other parts of the configuration file.

* Use .split(" ") for splitting descriptions

This is a more readable implementation.

* Fix shortcuts breaking on config reload

Wrapping HShortcut in Loader makes it destructible.
See d53978f62bab35cdc7e115c50f0571f736814582

* Cleanup showRoomByDescription method, now showById

- "Room description" is a vague, it sounds like this is about
  the room topic too. Instead of having a function that takes a
  string with a certain format, take explicit arguments for the user and
  room ID, this way we don't need comments to explain what's going on
  either

- Reduce indentations and {} noise to make it simpler to read

* More details for direct room binds config comment

Co-authored-by: miruka <miruka@disroot.org>
2021-07-26 04:39:58 -04:00
miruka
61996400d0 Fix shortcuts in instanciators breaking on reload
When reloading the config file, the HShortcut within Instanciators (e.g.
Rooms.AtIndex) were deleted then recreated.
Except Shortcut happens to be an indestructible object type.
Thus the old HShortcuts left alive were conflicting with the ones
recreated, causing them to be called ambiguously.
Loaders are destructible, so we wrap the shortcuts inside one to fix the
issue.
2021-07-26 04:39:58 -04:00
miruka
3279a1befd Fix missing tail for inline <mx-reply> 2021-07-26 04:39:58 -04:00
miruka
7a33ecdb86 AccountSettings: fix setting display name 2021-07-26 04:39:58 -04:00
miruka
3d350910e7 Fix rendering status msgs with HTML-unsafe chars
Status messages containing characters like ' or <> were stripped out
in the Account and Member delegates
2021-07-26 04:39:58 -04:00
miruka
18f742966e Presence fixes and improvements
- 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
2021-07-26 04:39:58 -04:00
miruka
909756cff7 Raise default tooltips_delay setting to 0.7s 2021-07-26 04:39:57 -04:00