Add CHANGELOG.md
This commit is contained in:
		
							
								
								
									
										367
									
								
								CHANGELOG.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										367
									
								
								CHANGELOG.md
									
									
									
									
									
										Normal file
									
								
							@@ -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 `{"<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.
 | 
				
			||||||
		Reference in New Issue
	
	Block a user