From 4f9ed2a77fdf8e00f20ff85446a18c6b13f896b8 Mon Sep 17 00:00:00 2001 From: miruka Date: Fri, 22 May 2020 02:45:47 -0400 Subject: [PATCH] Add CHANGELOG.md --- CHANGELOG.md | 367 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 367 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..94ab09d6 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,367 @@ +# 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 `{"": ""}` + 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 `` 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 `{"": ""}` 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.