Commit Graph

172 Commits

Author SHA1 Message Date
miruka
2a648d7f59 Add invite to room keybind 2020-04-03 07:53:36 -04:00
miruka
22be0bf5f0 MIRAGE_CONFIG_DIR and MIRAGE_DATA_DIR env vars
Allow overriding the default path where config files and user data are
found
2020-04-03 07:53:36 -04:00
miruka
eafd65d490 Fix compact mode being enabled by default 2020-03-28 11:04:43 -04:00
miruka
4185a30a6e theme_parser: translate hard tabs to spaces 2020-03-28 07:48:27 -04:00
miruka
311a53f8f4 "Unselect" → "Deselect" 2020-03-27 07:06:38 -04:00
miruka
4c76ffd88b Bump version to v0.4.2 2020-03-27 05:40:23 -04:00
miruka
936c49127d Add keyboard controls for message focus/selection 2020-03-27 04:49:01 -04:00
miruka
6ca10e1f2b Customizable unselectAllMessage keybind 2020-03-27 03:53:25 -04:00
miruka
684ddd364c Don't ignore case when linkifying display names 2020-03-24 04:12:09 -04:00
miruka
3dc81700c1 Correct mailto: linkifying in some special cases
adresses where the host ends with a digit or where the host is only one
character
2020-03-24 04:08:00 -04:00
miruka
0e191f11d0 Member ev. processing: don't assume any key exists 2020-03-24 03:56:31 -04:00
miruka
be43f68059 Support $id:server message ID mentions 2020-03-23 17:17:15 -04:00
miruka
bed0dbf998 Add setting to ignore unknown events 2020-03-23 16:58:31 -04:00
miruka
bd53993b90 Ignore mention links with no text 2020-03-23 16:34:51 -04:00
miruka
2e6488e6f9 Bump version to v0.4.1
Changelogs:

Added:

- `hideMembershipEvents` setting in config file, controls whether
  events such as "x joined the room" are shown in the timeline

- `hideProfileChangeEvents` setting in config file, controls whether
  display name and avatar change events are shown in the timeline

- Compact mode to make accounts, rooms, messages and room members
  take only one line as well as reducing vertical spacing between them.
  Set by the new `compactMode` setting in config file, and can also
  be toggled with the `keys.toggleCompactMode` keybind which defaults
  to Alt+Ctrl+C

- `keys.focusRoomAtIndex` in config file, a
  `{"<index>": "<keybind>"}` mapping which by default binds
  Alt+1-9 and Alt-0 to focus room 1 to 10 in the current account

- User ID, display names, room ID and room aliases are now
  automatically transformed to matrix.to links and will be rendered
  as mentions by clients.
  In Mirage, this results in user ID/names being colored with the
  same color seen when they send messages

- Track the number of times your user was mentioned in rooms.
  The visual counter is not yet displayed, since there currently is
  no way to mark messages as read and make the counter go down

Fixed:

- Python exceptions occuring in the asyncio loop not being printed
  in the terminal

- Extra newline shown after code blocks in messages

- Constant CPU usage due to button loading animations still being
  rendered while uneeded and invisible

Theme changes:

- Added `controls.avatar.compactSize` property
- Added `.mention` class styling to `chat.message.styleSheet`
2020-03-23 15:06:57 -04:00
miruka
38e57d2ff9 Color user mentions in local echoes too 2020-03-23 14:23:32 -04:00
miruka
4fdf531631 Fix mention-related KeyError in message callback 2020-03-23 13:43:30 -04:00
miruka
688f36b7f1 Event: add [(text, link)] mentions attributes 2020-03-23 15:39:14 -04:00
miruka
8e7cd7bde9 Add data-mention attributes to mention links 2020-03-23 15:23:01 -04:00
miruka
3084745522 Remove extra newline from <pre> elements 2020-03-23 15:11:29 -04:00
miruka
a20cfcffe5 Add special CSS classes to mention links 2020-03-23 15:02:31 -04:00
miruka
ef2504ecae Visual unread mentions counter 2020-03-22 23:55:48 -04:00
miruka
367fff8f4a Fix mentions incorrectly linked for outgoing html 2020-03-22 23:00:30 -04:00
miruka
8d5bc45ceb Safer linkifying for user display names 2020-03-22 20:58:05 -04:00
miruka
8fd7ce4e14 Safer linkifying for user ID, room ID, room alias
Don't replace anything in already existing links or <code>.
2020-03-22 19:40:43 -04:00
miruka
2fbfac5e0d Proper user ID, name, room ID, alias linkifying 2020-03-22 17:38:28 -04:00
miruka
f858e505a6 Linkify typed usernames/id in markdown 2020-03-22 16:21:29 -04:00
miruka
9f52fa86fa Add Alt+1-0 keybinds to switch to a room at index 2020-03-22 14:08:27 -04:00
miruka
53dfd08131 Add toggleCompactMode keybind, re-rename setting 2020-03-22 13:30:03 -04:00
miruka
18c16ca486 Rename compact mode setting → compactModeByDefault 2020-03-22 13:24:38 -04:00
miruka
5d513f84fa Add compact mode for sidepanes + setting 2020-03-22 12:50:51 -04:00
miruka
c6390238a9 Add settings to hide membership and profile events 2020-03-22 12:04:43 -04:00
miruka
f13327b073 Config files loaded data accessible from Python 2020-03-22 12:01:22 -04:00
miruka
f54075b7e0 Improve default device name
The number returned by platform.version() is only meaningful in a
long-time scenario on Windows. Also make the function clearer.
2020-03-21 23:39:57 -04:00
miruka
2dd275c618 Update minimum Pillow requirement to 7.0.0
- Includes fix for security issue CVE-2019-16865 before 6.2.0
- Default rescale algorithm is now bilinear, or nearest for palette
  images. No need to pass lanczos on our own.
2020-03-21 18:56:47 -04:00
miruka
d0a19852b7 generate_thumbnail: Catch+log any kind of error 2020-03-20 13:51:32 -04:00
miruka
4ab25ada43 AppImage improvements and fixes
- No need to build manually the olm python 3 bindings, pip does it
- make clean in mirage dir if possible, since having build/ files from a
  compiling that happened from another distro can make the process fail
- Save linuxdeployqt and appimagetools outside of the mirage repo
- Lint the AppDir with the script from pkg2appimage
- From python, restore LD_LIBRARY_PATH, PYTHONHOME and PYTHONUSERBASE to
  their original values. The AppRun laucher overwrites them to properly
  launch the program, but it affects external programs too launched e.g.
  when user clicks a link.
2020-03-18 19:12:38 -04:00
miruka
8692aa4a26 Change some default keybinds to make more sense
toggleFocusMainPane: Alt+S → Alt+F
clearRoomFilter: Alt+Shift+S → Alt+Shift+F

addNewAccount: Alt+Shift+N → Alt+Shift+A
addNewChat: Alt+N → Alt+C

sendFile: Alt+F → Alt+S
sendFileFromPathInClipboard: Alt+Shift+F → Alt+Shift+S
2020-03-17 17:11:10 -04:00
miruka
3568abb9af Rename keybind focusMainPane → toggleFocusMainPane 2020-03-17 16:55:16 -04:00
miruka
53bace3915 Add keybind to toggle room pane focus 2020-03-17 16:52:14 -04:00
miruka
b092cc11eb Add room header buttons to access sidepanes 2020-03-17 16:52:11 -04:00
miruka
5392016dab Add setting controlling when panes should collapse 2020-03-17 15:38:54 -04:00
miruka
e4d47b9b9c Ensure we don't atomically write an empty file 2020-03-17 12:09:08 -04:00
miruka
c969a98f30 Clear the last event date when clearing room msgs 2020-03-16 12:36:39 -04:00
miruka
992719554f Log the involved user id in sync failures 2020-03-16 00:31:31 -04:00
miruka
cada86a05f Log server sync errors as warnings instead 2020-03-15 19:08:12 -04:00
miruka
faaa5933d4 Fix local echo 2020-03-15 19:08:12 -04:00
miruka
8a99ccd976 Make retry_decrypt_events() work for good 2020-03-15 19:08:12 -04:00
miruka
adbe2d88ee Fix dict changing size problem in retry_decrypt_..
Also add a copy() method to models, and make them able
to not have a sync_id (in which case they won't send pyotherside
events).
2020-03-15 19:08:12 -04:00
miruka
73d54b5788 Don't show CancelledError when logging out early 2020-03-15 19:08:12 -04:00
miruka
25101578cc Fix retry_decrypting_events() 2020-03-15 19:08:12 -04:00
miruka
4d2345f4b9 Fix JsonDataFile default file loading 2020-03-15 10:26:53 -04:00
miruka
f507523af6 Fix default theme retrieval mess 2020-03-14 22:20:41 -04:00
miruka
cc3bb3c4fd Fix utils.py import for Python 3.6 2020-03-14 17:32:05 -04:00
miruka
190eb58187 Write user files and media atomically 2020-03-13 04:36:22 -04:00
miruka
9d3e2dbfc4 Fix quotes in room subtitles 2020-03-13 03:55:04 -04:00
miruka
7e5896f52b Fix MediaCache asyncio Semaphore early import bug 2020-03-13 02:46:21 -04:00
miruka
ca53e18e24 Add main pane top bar, improve readability 2020-03-12 22:16:33 -04:00
miruka
a6315f7829 Fix default theme path with QRC 2020-03-12 16:46:44 -04:00
miruka
77d877047b Update docstrings 2020-03-12 14:41:00 -04:00
miruka
9bad0132d6 Make upload cancelling instant without visual hack 2020-03-12 13:28:30 -04:00
miruka
e8d4823227 Unset parent_model when deleting item in model 2020-03-12 13:28:30 -04:00
miruka
59296dd22c Change name and bump version 2020-03-10 10:41:27 -04:00
miruka
298ab30672 Read theme in app dir if doesn't exist in user dir 2020-03-10 09:51:51 -04:00
miruka
264c2ab16b Rename themes 2020-03-10 09:48:51 -04:00
miruka
49966e06ad Fix Transfer.time_left that could be None 2020-03-09 17:36:47 -04:00
miruka
f9f558cd34 Fix Thumbnail.from_bytes() 2020-03-09 17:33:07 -04:00
miruka
24180fc346 GUI-report important errors that occur during sync
Important = "isn't a server 5xx error"
2020-03-09 13:08:09 -04:00
miruka
46f3f15694 Fix cached thumbnails extensions 2020-03-09 12:10:04 -04:00
miruka
7ee83c5fe4 Downloaded files: include title + ext in filename 2020-03-09 11:46:08 -04:00
miruka
048c1ddabf Reject files too large before attempting to upload 2020-03-09 10:23:08 -04:00
miruka
382235875c Upload thumbnails with the correct extension 2020-03-09 10:10:21 -04:00
miruka
2307d5f1b2 Fix thumbnail uploading for SVG files 2020-03-09 10:03:22 -04:00
miruka
61cc87cf18 Show max file size on upload button tooltip 2020-03-09 09:57:53 -04:00
miruka
0fa16400df Error msg for bad invites in non-federated room 2020-03-09 07:59:23 -04:00
miruka
c618fb8ba3 Don't upload thumbnail if heavier than original 2020-03-08 08:10:27 -04:00
miruka
e1b26d1ec7 Show thumbnail uploading progress when uploading 2020-03-08 08:05:41 -04:00
miruka
d1e42a72a0 Fix upload pause/cancel 2020-03-08 07:34:38 -04:00
miruka
5709b5b756 Fix local echoed message replaced only for one acc 2020-03-07 12:35:12 -04:00
miruka
ff72983bb4 Don't copy the default theme to userdata dir 2020-02-14 12:21:24 -04:00
miruka
ce0a868579 Refix Event.source, JSONify dicts for ListModel 2020-02-12 14:14:09 -04:00
miruka
9a0969adf5 Fix Event.source for messages we send 2020-02-12 08:10:59 -04:00
miruka
f922204644 Optimize Model insertions (blist + bisect) 2020-02-12 07:43:03 -04:00
miruka
7020706ff1 items.py: rebase fix 2020-02-12 06:27:21 -04:00
miruka
e982de1c61 Make Event.inline_content & links pure attrs 2020-02-12 06:21:43 -04:00
miruka
8a29143b60 Working Event.event_type & source fields 2020-02-12 06:19:49 -04:00
miruka
b992db9bfe Use typing.TYPE_CHECKING to avoid inner imports 2020-02-12 05:56:18 -04:00
miruka
a653a6160a Get SortProxyFilterModel stuff working?
Came back from a break and forgot what I was fixing
2020-02-12 05:56:18 -04:00
miruka
9990fecc74 Begin yet another model refactor
Use native ListModel which require a lot of changes, but should be
much faster than the old way which exponentially slowed down to a crawl.
Also fix some popup bugs (leave/forget).

Not working yet: side pane keyboard controls, proper highlight,
room & member filtering, local echo replacement
2020-01-06 03:41:14 -04:00
miruka
2ce5e20efa Fix chat creation client methods 2019-12-29 14:30:15 -04:00
miruka
5f3ecef408 Merge branch 'style' into 0.3 2019-12-27 16:35:56 -04:00
miruka
ce733c6641 Catch signal exception when imported from thread 2019-12-27 09:28:46 -04:00
miruka
e7caa0b8ef Use a C++ implementation of hsluv 2019-12-27 08:23:32 -04:00
miruka
f977d9acf2 GUI popup for uncaught asyncio loop exceptions 2019-12-26 10:17:54 -04:00
miruka
eff64fabd6 Catch any nio.ErrorResponse to raise MatrixErrors 2019-12-26 08:16:04 -04:00
miruka
44e5de02f8 font color → span mx color for outgoing HTML
Also remove HTML_PROCESSOR `filter_inline` and `from_markdown_inline`
methods. `filter` and `from_markdown` now take an `inline` argument.
2019-12-22 09:35:21 -04:00
miruka
335d931b0a Turn markdown color names into hex codes
Not all clients may know the same color names or even support them, hex
codes are unambiguous.
2019-12-22 09:35:15 -04:00
miruka
b0d77d74a9 Add custom markdown syntax for coloring text
<color>(text to color) where color can be a SVG color name,
3 characters hex or 6 characters hex code.

Can be used to send colored message from the composer. Other clients
that follow the matrix spec should be able to display them (e.g. riot,
even if it can't send them)
2019-12-20 14:44:31 -04:00
miruka
d9b7118f45 load_past_events: raise instead of logging errors 2019-12-20 09:30:57 -04:00
miruka
aaa8411cb9 Room.last_event: be an Event instead of dict 2019-12-19 16:52:21 -04:00