368 lines
13 KiB
Markdown
368 lines
13 KiB
Markdown
|
# Changelog
|
||
|
|
||
|
All notable changes to this project will be documented in this file.
|
||
|
|
||
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||
|
|
||
|
|
||
|
## Unreleased
|
||
|
|
||
|
### Added
|
||
|
|
||
|
- **Unread messages and mentions**:
|
||
|
- Rooms in the left pane will now have a counter for unread messages and
|
||
|
times you were mentioned
|
||
|
|
||
|
- `goToPreviousUnreadRoom` (default Alt+Shift+U) and
|
||
|
`goToNextUnreadRoom` (default Alt+U) keybinds to cycle between rooms
|
||
|
with unread messages
|
||
|
|
||
|
- `goToPreviousMentionedRoom` (default Alt+Shift+M) and
|
||
|
`goToNextMentionedRoom` (default Alt+M) keybinds to cycle between rooms
|
||
|
with mentions, or those with unread messages if no rooms with mentions
|
||
|
are left
|
||
|
|
||
|
- Room with mentions will be sorted first, then room no mentions but unread
|
||
|
messages, then the rest
|
||
|
|
||
|
- **Accounts navigation**:
|
||
|
- With two or more accounts, an always visible account thumbnail grid will
|
||
|
be visible in the left pane.
|
||
|
Clicking on an account will make the room list jump to that account.
|
||
|
The accounts will also show a total number of unread messages and
|
||
|
mentions for all the rooms associated with it.
|
||
|
|
||
|
- `goToPreviousAccount` (default Alt+Shift+M) and
|
||
|
`goToNextAccount` (default Alt+M) keybinds to cycle and jump between
|
||
|
accounts in the room list.
|
||
|
|
||
|
- `keys.focusAccountAtIndex` in config file, a `{"<index>": "<keybind>"}`
|
||
|
mapping similar to `focusRoomAtIndex` which by default binds
|
||
|
Ctrl+1-9 and Ctrl+0 to jump to account 1 to 10 in the room list
|
||
|
|
||
|
- **Replies**:
|
||
|
- The context menu for messages now has a "Reply" option
|
||
|
|
||
|
- The new `replyToFocusedOrLastMessage` keybind (default Ctrl+Q) can be used
|
||
|
to reply to the focused message if any
|
||
|
(use the `focusPreviousMessage` and `focusNextMessage` keybinds),
|
||
|
or to the last message in the timeline not sent by you.
|
||
|
|
||
|
- Pressing escape will cancel the reply
|
||
|
|
||
|
- **Kick and bans**: room members can now be kicked or banned with an optional
|
||
|
reason, using the option in the right pane's member context menu
|
||
|
|
||
|
- `openMessagesLinks` keybind (default Ctrl+O).
|
||
|
Will open externally all the URLs present in the selected/focused message(s),
|
||
|
or the last message that contains links if none are selected or focused.
|
||
|
|
||
|
- `clearMemberFilterOnEscape` setting.
|
||
|
If `true` (default),
|
||
|
pressing escape while focusing the "Filter members" field will not only
|
||
|
focus the chat again but also clear the filter.
|
||
|
|
||
|
- `maxMessageCharactersPerLine` setting to control the maximum width of
|
||
|
messages. If set to `-1`, there will be no limit.
|
||
|
|
||
|
- `ownMessagesOnLeftAboveWidth` setting, replaces the themes's
|
||
|
`eventList.ownEventsOnRightUnderWidth` properties.
|
||
|
Can be set to `-1` to always keep your own messages on the right.
|
||
|
|
||
|
- `enableKineticScrolling` setting, try setting it to `false` if you have
|
||
|
scrolling issues on a trackpad
|
||
|
|
||
|
- Support a new `enabled` key for accounts in the accounts.json config file.
|
||
|
If set to `false`, Mirage will not login to or show the account on startup.
|
||
|
|
||
|
- Support a new `order` key for accounts in the accounts.json config file
|
||
|
The value is an integer that will determine how accounts in the left pane
|
||
|
are sorted, lower comes first.
|
||
|
If multiple accounts have the same `order` value, they are sorted by
|
||
|
their user ID.
|
||
|
|
||
|
- Themes:
|
||
|
- `mainPane.minimumSize` property
|
||
|
- `mainPane.accountBar` section
|
||
|
- `mainPane.listView.room.unreadIndicator` section
|
||
|
- `chat.replyBar` section
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
- **Performance**:
|
||
|
- Use room members lazy-loading, accounts that have joined
|
||
|
large numbers of rooms will now finally be able to finish their
|
||
|
initial sync.
|
||
|
When the currently shown UI page is a room, the full members list for it
|
||
|
will be loaded.
|
||
|
|
||
|
- Request less events for the initial sync, and exclude some types like
|
||
|
membership events to increase initial sync speed
|
||
|
|
||
|
- Retrieving profiles for events sent by users no longer present in a room
|
||
|
will no block and delay past events loading.
|
||
|
Missing profiles will be fetched asynchronously when the messages
|
||
|
are currently in view in the UI.
|
||
|
|
||
|
- Reduce the number of events that need to be sent between Python and QML
|
||
|
due to changes in list models data
|
||
|
|
||
|
- Consecutive syncs will now have a one second delay between them to reduce
|
||
|
both client and server strain
|
||
|
|
||
|
- Improved group display name calculations (nio 0.11+ change):
|
||
|
for example, a room that would previously be shown as "Alice and 6 others"
|
||
|
will now be shown as "Alice, Bob, Carol, Dave, Erin and 1 other"
|
||
|
(up to 5 visible names).
|
||
|
|
||
|
- Group rooms with more than two users and without an explicitely set avatar
|
||
|
will no longer show their first member's profile picture as avatar
|
||
|
|
||
|
- The `unfocusOrDeselectAllMessages` keybind now defaults to Ctrl+D
|
||
|
instead of Escape, which no longer works as of Qt 5.14.
|
||
|
`debugFocusedMessage` is changed from Ctrl+D to Ctrl+Shift+D.
|
||
|
|
||
|
- Better QML logging format: messages will now be dated, and have a
|
||
|
symbol + color (on Linux and OSX terminals) representing their category
|
||
|
|
||
|
- Messages containing code blocks will no longer have their max width limited
|
||
|
|
||
|
- Set `hideUnknownEvents` to `true` in the default config file
|
||
|
|
||
|
- Set a more useful default minimum size for the left pane
|
||
|
|
||
|
- The `collapseSidePanesUnderWindowWidth` setting now defaults to `450` instead
|
||
|
of `400`, to account for the larger minimum pane size.
|
||
|
|
||
|
- Show a more useful error message with traceback when retrieving an account's
|
||
|
profile or the server config fails on startup
|
||
|
|
||
|
- Hide `socket.gaierror` error popups
|
||
|
|
||
|
- When pressing the `startPythonDebugger` (default Alt+Shift+D) keybind,
|
||
|
use `pdb` if `remote_pdb` isn't installed
|
||
|
|
||
|
- Themes:
|
||
|
- `mainPane.bottomBar` properties: `background` is now by default
|
||
|
`transparent`, `settingsButtonBackground` and `filterFieldBackground` are
|
||
|
now set to `colors.strongBackground`
|
||
|
|
||
|
### Removed
|
||
|
|
||
|
- **Performance**:
|
||
|
- After the initial sync, Mirage will no longer try to continually fetch
|
||
|
previous events for rooms where the sync haven't brought any event that is
|
||
|
suitable to be shown as room last event subtitle in the left pane.
|
||
|
|
||
|
- Mirage will no longer try to find and autolink display names in incoming
|
||
|
events, which was a very costly operation for rooms with
|
||
|
thousands of members.
|
||
|
|
||
|
- The uvloop python module is no longer supported or recommended as an optional
|
||
|
dependency, due to being responsible for some segfaults
|
||
|
|
||
|
- The SortFilterProxyModel and RadialBarDemo git submodules are no longer
|
||
|
used. hsluv-c is the only submodule still used currently.
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
- **Performance**:
|
||
|
- Stop rendering and keeping in RAM rooms that aren't currently visible in
|
||
|
the left pane.
|
||
|
This fixes the massive memory usage that occured with hundreds of rooms and
|
||
|
their avatar images loaded all at once.
|
||
|
|
||
|
- Room elements in the left pane will no longer be reloaded every time
|
||
|
a list movement happens (e.g. a room is bumped to the top due to a new
|
||
|
message).
|
||
|
This also lets the movement animation correctly play insteas of being
|
||
|
skipped.
|
||
|
|
||
|
- Don't show a popup when pressing the redact message keybind if that
|
||
|
message can't be redacted
|
||
|
|
||
|
- Stricter mention parsing, fix various cases of text being autolinked when it
|
||
|
shouldn't
|
||
|
|
||
|
- Fix exception when parsing `<a>` HTML tags without `href` attribute
|
||
|
|
||
|
- Fix crash on Python 3.6 due to `asyncio.current_task`
|
||
|
|
||
|
- Fix `AttributeError` when using matrix-nio v0.11+
|
||
|
|
||
|
- Fix potential crash on startup due to asyncio event loop and threading
|
||
|
|
||
|
- Fix uploads getting rejected by servers due to not passing a file size
|
||
|
|
||
|
- Fix extra spacing between "Add chat" and "Expand/Collapse" account buttons
|
||
|
|
||
|
- Hide the Binding deprecation warnings in terminal that Qt 5.14+ spams
|
||
|
|
||
|
- Fix client not waiting before retrying a failed sync due to server error
|
||
|
|
||
|
- Correctly handle server 429 "Too many requests" errors when they come purely
|
||
|
in the form of a HTTP status code without a JSON object giving any info
|
||
|
|
||
|
- Fix left rooms remaining at full opacity in the left pane
|
||
|
|
||
|
- Fix escape key not working to clear the "Filter rooms" field and focus
|
||
|
the chat again
|
||
|
|
||
|
- Fix event mention link detection, and stop trying to autolink event ID
|
||
|
strings in messages as matrix.to URLs also need a room ID to make sense
|
||
|
|
||
|
|
||
|
## 0.4.3
|
||
|
|
||
|
### Added
|
||
|
|
||
|
- Support for `MIRAGE_CONFIG_DIR` and `MIRAGE_DATA_DIR` environment variables
|
||
|
to change the config and user data folders
|
||
|
|
||
|
- `inviteToRoom`, `leaveRoom` and `forgetRoom` keybindings
|
||
|
(Alt+I, Alt+Esc and Alt+Shift+Esc by default)
|
||
|
|
||
|
- **Redactions support**: individual or selected messages can now be
|
||
|
redacted/removed using the option from the message context menu,
|
||
|
or the `removeFocusedOrSelectedMessages` keybind
|
||
|
(by default Ctrl+R or Alt+Del).
|
||
|
|
||
|
- Themes: `colors.dimColoredTextSaturation` and
|
||
|
`colors.dimColoredTextIntensity` color properties
|
||
|
|
||
|
- Themes: `controls.displayName.dimSaturation` and
|
||
|
`controls.displayName.dimLightness` color properties
|
||
|
|
||
|
- Themes: `chat.message.redactedBody` color property
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
- `unfocusOrDeselectAllMessages` keybind: now deselect messages first if any
|
||
|
on first press, *then* cancels the keyboard message focus if possible on
|
||
|
second press
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
- Segfault after login on KDE
|
||
|
|
||
|
- Buttons not displaying correctly on Qt 5.14
|
||
|
|
||
|
- Hard tab characters in theme files not being handled by the theme parser
|
||
|
|
||
|
- `focusRoomAtIndex` keybindings: default to Cmd+numbers on OSX instead of
|
||
|
Alt/Option+numbers, which prevented typing special characters on some
|
||
|
keyboard layouts
|
||
|
|
||
|
- Needing to press escape twice to close context menus and popups
|
||
|
|
||
|
- "Go back to chat" button not doing anything when the room settings pane was
|
||
|
focused in narrow mode
|
||
|
|
||
|
|
||
|
## 0.4.2
|
||
|
|
||
|
### Added
|
||
|
|
||
|
- Accounts, rooms, room members and messages can now be long-tapped on touch
|
||
|
screens to open their context menu
|
||
|
|
||
|
- New touch screen and keyboard-friendly message selection system, replaces
|
||
|
the previous slow and buggy text selection implementation:
|
||
|
|
||
|
- Tap a message to select or deselect it
|
||
|
|
||
|
- Press escape, or use the context menu entry "Deselect all" to deselect
|
||
|
all messages
|
||
|
|
||
|
- Tap a first message, then shift+tap another one
|
||
|
(or use "Select until here" from the context menu) to select all messages
|
||
|
from the first to last
|
||
|
|
||
|
- With a mouse, a single message can be partially selected and copied
|
||
|
|
||
|
- The keyboard can be used to navigate with Ctrl+Up/Down (or Ctrl+J/K),
|
||
|
Ctrl+Space to (de)select, Ctrl+Shift+Space for first-to-last selection,
|
||
|
Ctrl+C for copying the selection, and Escape to focus the composer again
|
||
|
(twice to also deselect messages).
|
||
|
These shortcuts can be changed in the config file.
|
||
|
|
||
|
- Themes: `chat.message.focusedHighlight`,
|
||
|
`chat.message.focusedHighlightOpacity`, `chat.message.checkedBackground` and
|
||
|
`chat.message.thumbnailCheckedOverlayOpacity`
|
||
|
|
||
|
- Scripts and instructions to build a Flatpak package
|
||
|
|
||
|
The new selection system is still work in progress, dragging to select multiple
|
||
|
messages at once on desktop is not implemented yet.
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
- Themes: increased default `colors.accentBackground` brightness
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
- Possible error when handling a room member event that is missing previous
|
||
|
display name or avatar info
|
||
|
|
||
|
- Correctly parse `mailto:` links where the mail address ends with a digit
|
||
|
(e.g. `mailto:foo@localhost:8050`, or where the host is a single character
|
||
|
|
||
|
- Respect case when turning display names into mentions, typing a display name
|
||
|
containing uppercase letters all in lowercase would result in a broken link
|
||
|
|
||
|
- Correctly handle `0` as a value for the `alertOnMessageForMsec` setting,
|
||
|
this will now prevent urgency hints (window/desktop highlighting or flashing
|
||
|
on new message for most desktops, "ready" notification on Gnome)
|
||
|
|
||
|
|
||
|
## 0.4.1
|
||
|
|
||
|
### Added
|
||
|
|
||
|
- `hideMembershipEvents` setting, controls whether events such as
|
||
|
"x joined the room" are shown in the timeline.
|
||
|
|
||
|
- `hideProfileChangeEvents` setting, controls whether display name and avatar
|
||
|
change events are shown in the timeline.
|
||
|
|
||
|
- `hideUnknownEvents` setting, controls whether events not yet supported by
|
||
|
Mirage (e.g. `m.reaction`) 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, 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, room aliases and message ID are now
|
||
|
automatically turned into [matrix.to](https://matrix.to) links and will be
|
||
|
rendered as mentions by clients.
|
||
|
In Mirage, user ID/names will be 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.
|
||
|
|
||
|
- Themes: `controls.avatar.compactSize` property
|
||
|
- Themes: mention classes styling to `chat.message.styleSheet`
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
- Python exceptions occurring 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 unneeded and invisible
|
||
|
|
||
|
|
||
|
## 0.4.0
|
||
|
|
||
|
Initial public release.
|