miruka
3435dbc2f8
Add copyFilesLocalPath keybind
2020-07-20 23:28:07 -04:00
miruka
99017adc1d
Model item events: add a media_http_url field
2020-07-20 23:09:28 -04:00
miruka
55e22ea948
Add openMessagesLinksOrFilesExternally keybind
...
This required us to set the media downloaded local path on events
entirely from python instead of simply lazy-fetching them when needed
from QML, due to pyotherside's async nature and files that must be open
in a certain order.
2020-07-20 23:07:52 -04:00
miruka
acd02a67a0
Add image viewer keybinds
2020-07-20 21:34:00 -04:00
miruka
a8e1ece1ea
Add buttons to image viewer
2020-07-20 19:39:31 -04:00
miruka
e62d99c3cc
Stricter requirements to consider a client healthy
...
A healthy client must not only have a sync task running, but also have
finished its initial sync and have been succesful in its last sync
attempt.
The previous weak requirement caused this issue:
Have two clients, one on a failing server, and try to fetch a media,
thumbnail or profile: since these functions don't need auth, any
healthy client is picked to do the request, but the previous
requirement made it possible to pick the failing client.
2020-07-20 16:03:46 -04:00
miruka
30ce271ebc
Real "copy URL" & "copy path" context menu entries
...
Replace the poorly implemented 2-in-1 "copy address" media event
menu option with:
- Copy <mediaType> address: visible for non-encrypted media, always
copies the http URL
- Copy local path: always visible for already downloaded media, even if
they were downloaded before mirage was started
2020-07-20 00:22:12 -04:00
miruka
8a73e65254
Rename openMessagesLinks keybind (...OrFiles)
2020-07-19 20:17:52 -04:00
miruka
e2c6f0e64c
Don't cancel upload if server max size is unknown
2020-07-19 16:24:16 -04:00
miruka
6b1a5a46e6
Fix upload for servers not returning max size
2020-07-19 15:37:05 -04:00
miruka
7595c522c4
Fix image upload without thumbnail
2020-07-19 15:34:06 -04:00
miruka
26fe8c4a09
Include decryption dicts in m.image local echoes
...
Fixes local echoes for images resulting in 404s, related to the
retry fix in the previous commit.
2020-07-19 15:00:23 -04:00
miruka
f1055ce5b9
Fix loading m.image events in encrypted rooms
...
Fix bug introduced in 11fb32:
When loading an encrypted thumbnail, QML lacks the decryption dict for
half a second at first.
When calling python like this, python calls the wrong matrix API
for fetching the encrypted thumbnail, and the added retry code
would be forever stuck.
The retry code has been moved to QML, and now works for all HImage.
2020-07-19 14:49:41 -04:00
miruka
11fb32bff6
Retry downloading media if they fail with 404/500+
...
Trying to fetch a media right after it was uploaded can sometimes lead
to a 404
2020-07-18 22:26:23 -04:00
miruka
1b5a09c052
Move Presence class to its own python file
...
It's not a ModelItem
2020-07-18 18:33:57 -04:00
miruka
692c78f398
Optimize presence-related model item field changes
2020-07-18 18:19:56 -04:00
miruka
4b215f7ddb
Bump version to v0.6.0
2020-07-17 08:10:57 -04:00
vslg
9b9cbcb23c
Fix unable to unset status_msg from other clients
2020-07-17 08:09:52 -04:00
miruka
46fa68e9ca
Reduce "termined" logging when closing app
2020-07-17 07:31:24 -04:00
miruka
d6e904ca4c
Fix indentation for some backend.py lines
2020-07-17 01:30:51 -04:00
miruka
6c4ee17e40
Retrieve last seen time for offline room members
2020-07-17 00:46:46 -04:00
miruka
a17daf61c8
Add timeout for exit-settting-offline
2020-07-16 23:50:44 -04:00
miruka
4784c80ed9
Refactor exit-offline code
2020-07-16 23:34:35 -04:00
miruka
f316a24550
Handle SIGINT, SIGTERM, SIGUP and SIGQUIT
2020-07-16 23:16:21 -04:00
vslg
b69cbf9d14
Set users to offline before exiting Mirage
2020-07-16 22:26:55 -04:00
miruka
15de44f47a
Merge pull request #104 from vSLG/presence
...
Save status_msg to accounts.json
2020-07-16 18:28:46 -04:00
vslg
27745bacca
Fix not being able to unset status_msg
2020-07-16 19:25:02 -03:00
miruka
5cc1c55d95
Immediatly show UI transfer for clipboard paste
...
Create an Upload model item before compressing the image and writing it
to disk
2020-07-16 16:14:07 -04:00
vslg
d57414c06c
Save status_msg to accounts.json
...
Restore it if there is not any status_msg set on
the server
2020-07-16 17:09:14 -03:00
miruka
292d88a9bf
Fix power level event display in room subtitle
...
For single-change events only
2020-07-16 12:47:28 -04:00
miruka
49a93ebf2b
Format single-change power level event in one line
2020-07-16 12:42:50 -04:00
miruka
9674bf6a84
Handle dicts in power level event, improve sorting
2020-07-16 12:42:50 -04:00
miruka
7d7376a5cf
Correctly handle <img> with no src attribute
2020-07-16 12:42:50 -04:00
miruka
2d623118b5
Support pasting image to upload in the composer
2020-07-15 18:08:17 -04:00
miruka
2449fd5f18
Have spaces in device key for member verification
2020-07-15 11:27:33 -04:00
miruka
d51c0e3e5d
Add keybind to hide room pane (default Ctrl+Alt+R)
2020-07-14 16:51:01 -04:00
miruka
efda3a419e
Add kineticScrollingDeceleration setting
2020-07-14 05:46:48 -04:00
miruka
a44d683956
Show all power level changes for initial event
2020-07-13 23:54:10 -04:00
miruka
d4bc87ea88
Fix onRedactionEvent "etype" mistake
2020-07-13 23:43:46 -04:00
miruka
ec9004101a
Show details in timeline for power level events
2020-07-13 23:36:18 -04:00
miruka
bd50cd46fa
Fix old power events sent when setting user level
2020-07-13 21:14:14 -04:00
miruka
757679a6e0
Make power level control permission-aware
2020-07-13 18:57:42 -04:00
miruka
f408d511a6
Fix Room.can_xyz attributes
...
The attributes by mistake used nio.AsyncClient.user instead of the
proper user_id. If the user logged in with a partial username instead of
typing their full ID, the can_ attributes (e.g. can_kick) would always
be False.
2020-07-13 18:54:30 -04:00
miruka
0459657575
Room default power level awareness
2020-07-13 18:54:30 -04:00
miruka
9d397b62c5
Update room member models on power levels event
2020-07-13 18:54:30 -04:00
miruka
6ff3cc5f39
Add buttons to Save/cancel power level changes
2020-07-13 18:54:28 -04:00
miruka
7227ac04a3
Client remove_member(): room item may not exist
2020-07-11 18:49:23 -04:00
miruka
b4f706d2e8
Refresh Room.unverified_devices when members leave
2020-07-11 17:23:36 -04:00
miruka
2644e6d8b0
Fix account update method for unasaved accounts
...
If the account passed to `saved_accounts.update()` doesn't exist in the
config file, return instead of failing with a KeyError.
An account can be absent from the file if "Remember my account" was
unchecked on login, or if the file hasn't been updated yet on disk after
login (race condition).
2020-07-11 17:11:04 -04:00
miruka
f05f2357c7
Fix accounts.json update with missing enabled key
2020-07-11 14:38:10 -04:00
miruka
3c620f6fd1
Add auto-away feature for Linux X11
2020-07-11 14:38:08 -04:00
miruka
63b80168a6
Fix matrix_client mypy error
2020-07-10 16:54:29 -04:00
miruka
fec1026346
Add direct keybinds for presence states
2020-07-10 15:15:53 -04:00
miruka
3848ce60ca
Add keybind to open presence (account) menu
2020-07-10 14:59:55 -04:00
miruka
7580686598
Add MatriwClient.pause_while_offline()
2020-07-10 13:15:01 -04:00
miruka
5b9e84a9f7
Delay redacting events until we're online
2020-07-10 13:15:01 -04:00
miruka
f018b9567b
Fix offline → online not sending pending message
2020-07-10 13:15:01 -04:00
miruka
79fdc710c3
Fix & improve send_file handling of offline account
...
- Show a transfer stuck at 0kb uploaded in the GUI instead of waiting to
be online to show anything
- Fix getting online not making the upload start
2020-07-10 13:15:01 -04:00
miruka
8d93433a8e
Fix case for ZeroDate and PresenceOrder
...
Only top-level types should have CaseLikeThis, general top-level
variables should be LIKE_THAT.
2020-07-10 13:14:18 -04:00
miruka
f03ac77595
Improve Presence docstring
2020-07-10 13:14:18 -04:00
vslg
5abdc1f779
Fix changes requested ( #101 )
...
- Fix code formatting issues.
- Document `Presence`.
- Improve `Presence.__lt__()` performance by
defining a dict outside the method.
- Make presence ball radius relative to uiScale
and configurable from theme.
2020-07-10 13:14:18 -04:00
vslg
43df8fd60b
Bug fix and minor improvements
...
Improvements:
- Add instant feedback upon setting a different
presence for account (local echo)
- Sort room members by power level and then
presence
- Periodically update members' `last_acitve_at`
field on the room pane
- Move status message field up on account context
menu, and put invisible before offline again
Bug fix:
- Do not try to override presence set from
another client, accept it
2020-07-10 13:14:18 -04:00
vslg
a3c9ac20c6
Make offline presence to stop sync
...
Setting the presence of an account to offline
will make the client to end sync task and will
prevent messages from being sent.
Setting it to online again or any other presence
will start sync task again.
Left:
- Local echo to presence change
- UI Control to affect all members presence
- Block more requests to be sent (e.g. member
actions)
2020-07-10 13:14:18 -04:00
vslg
edc8e04ce7
Bug fix and minor improvements
...
Bug fixes:
- Do not send typing notice and set room read
markers when the account is invisible
- Fix typing on set_presence
- Allow users to unset status message by setting
it to blank
- Escape html tags of status message on
SubtitleLabel of MemberDelegate
Improvements:
- Display user ID and status message on a tooltip
by hovering account or room member name
2020-07-10 13:14:18 -04:00
vslg
a1f38fe8d8
Add support for status message, use new icons
2020-07-10 13:14:18 -04:00
vslg
91ed600997
Check server presence support and comment code
2020-07-10 13:14:18 -04:00
vslg
d5e0a3340d
Use presence events to update Account presence
2020-07-10 13:14:18 -04:00
vslg
a1e5a1981d
Fix presence not being updated after loaded once
2020-07-10 13:14:18 -04:00
vslg
0eda6eb278
Add account presences to account context menu
2020-07-10 13:14:18 -04:00
vslg
6e202c3e27
Fix outdated presence for lazy loaded members
2020-07-10 13:14:18 -04:00
miruka
50e17e950d
Store member presence information
2020-07-10 13:14:18 -04:00
miruka
099c20c138
Add keyboard navigation for account device list
...
Enter/Return/Menu: open device menu
Space: toggle check device
Escape: uncheck all
Alt+R/F5: refresh device list
Alt+S/Delete: sign out checked or all sessions
2020-07-10 13:14:18 -04:00
miruka
7c213a5317
Verify/blacklist devices for all our accounts
2020-07-10 13:14:17 -04:00
miruka
b0e2533bb9
Auto-verify/blacklist accounts within same client
2020-07-10 13:14:17 -04:00
miruka
963b022f3d
Reload member device list when they change
2020-07-10 13:14:17 -04:00
miruka
9b43bef935
Add profile/verification UI for room members
2020-07-10 13:14:17 -04:00
miruka
4ccb774411
nio_callbacks: HTML-escape unsafe event values
2020-07-10 13:14:17 -04:00
miruka
4752abf6e5
Add a batch set_fields method to Model
2020-07-10 13:14:17 -04:00
miruka
5476e00b9b
Fix missing parentheses in marker update condition
2020-07-10 13:14:17 -04:00
miruka
b47d4d981f
Implement session sign out (password auth only)
2020-07-10 13:14:17 -04:00
miruka
8a3d9affaa
Fix signing out not cleaning up model data
2020-07-10 13:14:17 -04:00
miruka
d0c4022fa4
Fix plaintext reply source body formatting
2020-07-10 13:14:17 -04:00
vslg
3d4bfa7413
Do not use .keys()
2020-07-10 13:14:17 -04:00
vslg
d2229554a9
Do not replace existing session ( #63 )
2020-07-10 13:14:17 -04:00
miruka
0a2d274824
Add verified devices indicator to room header
2020-07-10 13:14:17 -04:00
miruka
90a7a3a6cf
Add kineticScrollingMaxSpeed setting
2020-07-10 13:14:17 -04:00
miruka
9dc0688557
Render inline images/custom emotes
...
<img> tags that either have a width and height (needed for QML to render
correctly) or the data-mx-emote attribute (if they have no width/height,
we assume 32x32) will be rendered inline.
QML's support for img tags with remote src URLs seems buggy on Qt 5.15
especially, not working sometimes. We need to download and cache these
images (like done for matrix media events), and use the local path in
the img's src.
2020-07-10 13:14:17 -04:00
miruka
8a31f8a9d9
Fix responding to our own event sending wrong ID
2020-06-27 10:08:27 -04:00
miruka
b9f5ec4b72
Fix parsing user/room ID and alias with dashes
...
Properly highlight IDs and aliases where the server part contains a
dash, e.g. "@test:example-abc.org".
2020-06-27 06:20:09 -04:00
miruka
fedcc17c44
Correctly clear room local highlights
2020-06-26 16:26:15 -04:00
miruka
0c9474598c
Bump version to v0.5.2
2020-06-26 07:06:56 -04:00
miruka
7f66ebb786
Re-add local highlights similar to 0.5.0
2020-06-26 05:59:16 -04:00
miruka
aa8dbce3a7
Re-add local unread "counter" similar to 0.5.0
2020-06-26 05:59:11 -04:00
miruka
edc73c6952
Implement blacklisting from verification key popup
2020-06-26 02:16:00 -04:00
miruka
bcbc356a98
Implement manual key verification popup
2020-06-26 02:09:59 -04:00
miruka
d35173adc3
Correctly handle & warn about key-less devices
2020-06-25 16:10:44 -04:00
miruka
51327d810b
Implement device renaming
2020-06-25 12:11:11 -04:00
miruka
476888ca84
Fix guest access event text, always said "allowed"
2020-06-25 10:11:42 -04:00
miruka
da4a5ab5cd
Rework HBox-based pages and account settings
...
- Refactor everything about HBox, and adapt all the pages and popups
that used it
- Replace HTabContainer by HTabbedBox
- Make boxes swippable
- Make esc presses in boxes click the cancel button
- Make all boxes and popups scrollable when needed
- Replace generic apply button icons in popups
- Fix tab focus for error and invite popups
- Rework (still WIP) the account settings page:
- Use the standard tabbed design of other pages
- Ditch the horizontal profile layout, hacky and impossible to extend
- Add real-time coloring for the display name field
- Implement a device list in account settings (Sessions, still WIP)
2020-06-25 08:49:27 -04:00
miruka
926f77fa91
Add MatrixClient.devices_info() method
2020-06-12 23:09:17 -04:00
miruka
451abfdf25
Support MIRAGE_CACHE_DIR env variable
2020-06-11 21:50:26 -04:00
miruka
e685b0a8b7
Prefer using own account to fetch own profile
2020-06-05 08:11:40 -04:00
miruka
f632b4e332
Bump version to v0.5.1
2020-06-05 06:26:44 -04:00
miruka
b81dea9bc2
Fix KeyError when forgetting a room
2020-06-05 01:39:17 -04:00
miruka
43468c25e3
Update account unread count when forgetting room
2020-06-05 01:16:27 -04:00
miruka
7f72373afe
Implement editing & saving room settings
2020-06-03 04:52:33 -04:00
miruka
a6529b040c
Fix handling topics containing \n, \t or <text>
2020-06-02 22:03:22 -04:00
miruka
76f0c5626f
Separate window urgency hint setting for mentions
2020-06-02 21:42:16 -04:00
miruka
ccd2308427
Fix new added account's order
2020-06-02 21:11:04 -04:00
miruka
241c16932f
Immediatly update cached profile after changing it
2020-06-02 21:09:21 -04:00
miruka
5bf1a90242
Separate MatrixClient function to get our profile
...
Side-effect: don't endlessly retry anymore when getting the profile
fails for some reason
2020-06-02 20:40:44 -04:00
miruka
283d2235dc
Don't wait for server to zero unread counters
2020-06-01 18:59:49 -04:00
miruka
835d1c486f
Add markRoomReadMsecDelay setting
2020-06-01 18:57:17 -04:00
miruka
f686b96511
Cross-client unread counters & send read receipts
2020-06-01 09:25:09 -04:00
miruka
d2300bf663
Update account total notif/highlight calculation
2020-05-31 19:41:05 -04:00
miruka
3791a08eea
Terminology: room mention count → highlight count
2020-05-31 19:13:19 -04:00
miruka
dce3328037
Use new nio server-backed room unread counts
2020-05-31 19:06:25 -04:00
miruka
7b5aa8ffe1
Store room member read markers in model
2020-05-31 00:38:48 -04:00
miruka
160ce2643e
Add type hints for all NioCallbacks methods
2020-05-31 00:11:56 -04:00
miruka
ca7a47bc19
Register nio callbacks for any class in nio.events
2020-05-30 23:39:07 -04:00
miruka
b399de6776
Remove account collapse bug workaround
...
Unable to reproduce the bug where collapsing an account with lots of
rooms corrupts the ListView, did updating to Qt 5.14.2 do something?
With the workaround removed, the 0.2s delay when removing batch of
ListView items (e.g. when filtering) is gone.
2020-05-30 23:08:21 -04:00
miruka
de894ab4bb
Protect proxy/filter models with write_lock
2020-05-30 23:08:21 -04:00
miruka
877290fc00
Handle 502 errors when inviting bad user to room
2020-05-30 23:08:21 -04:00
miruka
60fa027c2e
Lock models when trying to decrypt events
...
Trying to deep-copy can result in pickling errors (#50 ),
write-lock the models instead to avoid "dictionary changed size during
iteration" issues.
2020-05-28 14:16:43 -04:00
miruka
c0118c4e28
Rename Model._write_lock → Model.write_lock
2020-05-28 14:13:14 -04:00
miruka
855672481f
Improve some python documentation and add an intro
2020-05-22 17:27:57 -04:00
miruka
c8f3a4937c
Fix potential exceptions on AllRooms model __init__
...
Calling super().__init__ may result in source model items being added,
which needs the self.account and self._collapsed attributes to
already exist.
2020-05-22 16:47:15 -04:00
miruka
562e1431b9
Fix adding account when none were previously saved
2020-05-22 08:48:58 -04:00
miruka
b3b12014ee
Workaround collapsing large account ListView bug
2020-05-22 07:31:00 -04:00
miruka
3d40f762ce
Don't strip <mx-reply> tags
2020-05-22 02:11:21 -04:00
miruka
6c7335e5db
Add keybind to open links in messages
...
Ctrl+O by default.
Opens externally all links in selecteds, focused or the last
message that has links.
Can't open files (media events) yet.
2020-05-22 00:10:45 -04:00
miruka
bbd845c040
Use kwargs when calling nio.AsyncClient.upload()
2020-05-21 20:52:42 -04:00
miruka
921f75827d
Use pdb if remote_pdb isn't installed
2020-05-21 20:50:43 -04:00
miruka
fb975fad71
Remove unused Backend.await_model_item()
2020-05-21 20:46:08 -04:00
miruka
8c9b5267e9
Update and add missing new docstrings
2020-05-21 20:45:15 -04:00
miruka
35e6c1c7eb
Make sure to register room on ignored events
2020-05-21 14:37:48 -04:00
miruka
58dd63a850
Traceback if getting profile/server config fails
2020-05-21 14:14:27 -04:00
miruka
b30ce33494
Fix default media_mime for media events
2020-05-21 01:05:31 -04:00
miruka
96e61f15ce
Set a more useful minimum size for main pane
...
144px min for a pane that's still useful.
Also set `collapseSidePanesUnderWindowWidth` config option to `450`
instead of `400` by default now.
2020-05-21 01:04:24 -04:00
miruka
07701ae880
Remove uvloop support, causes issues
2020-05-20 23:56:19 -04:00
miruka
e128471628
Merge branch 'dev' of https://github.com/mirukana/mirage into dev
2020-05-20 23:40:41 -04:00
vslg
6f68f35810
Fix goal is disabling kinetic scrolling
2020-05-20 23:03:36 -03:00
vslg
f72544e3d0
Improve trackpad fix
...
- Add it to remaining components
- Do not use Timer, as flickDeceleration from
Flickable is more performant
- Add a setting option for it: useTrackpadFix
2020-05-20 21:09:34 -03:00
miruka
4a91b3d09d
Hide unknown events by default (reaction spam)
2020-05-20 11:49:25 -04:00
miruka
42b62377ab
Fix past member events affecting actual room state
2020-05-20 09:05:36 -04:00
miruka
7719df0135
Fix message mention link regex
...
Also stop trying to autolink strings like "$messageId:example.org" in message
text, matrix.tpo message links need a room ID to make sense.
2020-05-20 07:54:40 -04:00
miruka
87fa18fbcd
Fix missing event text in plaintext reply fallback
2020-05-20 07:09:24 -04:00
miruka
d1d7bffc8f
Add replyToFocusedOrLastMessage keybind (ctrl+Q)
2020-05-20 06:51:26 -04:00
miruka
66f9a17111
No need for origin_*body Event keys
...
Also fixes lack of original message text when
replying to non-message events.
2020-05-20 06:38:25 -04:00
miruka
fb35a6ec14
Implement replying to event in backend
2020-05-20 06:19:13 -04:00