Skip to content

@KitsuneRal KitsuneRal released this Apr 29, 2019

Here it comes - a brand new release of Quaternion, after a long half a year wait and more than 400 commits - best ever Quaternion! The new Quaternion requires the new version of libQMatrixClient - 0.5.1 or higher ( is strongly recommended) that enables many of its features, including attachments uploading and room upgrades. Read on for details.


Thanks-of-the-release go to:

  • @krkk for an array of PRs making Quaternion less glitchy and more functional as well as for the continued work on Polish translation;
  • @aaronraimist who packaged Quaternion for Macs;
  • translators for complete translations: @miocho and @krombel (German), @MurzNN (Russian).

The full list of contributors to the code can be found at GitHub, and translators are at Lokalise. Special thanks go to nepugia for the relentless testing.


The full lists of (closed issues and commits) are quite long but here are the key additions and changes:

  • Feature (#187): native scrollbars can be used instead of shuttle dials.
  • Feature (#32, #209): attachments support; an image or other file can be posted to a room, with automatic media type detection.
  • Feature (#507): basics of internal navigation (still limited, the work is ongoing):
    • rooms (only those in your room list for now) can be opened using "Open room" dialog (Ctrl-O) - by their id, alias or URL;
    • direct chats can be opened by entering the user ID or the URL into the same dialog;
    • moreover, middle-clicking on a user id/ link in the timeline also opens a direct chat;
    • navigating to event permalinks is not there yet, pending support in libQMatrixClient (give your votes in quotient-im/libQuotient#252).
  • Feature (#437): user list can be searched and filtered (thanks to @rushsteve1).
  • Feature: support for room versions: room version can be chosen when creating a room (not a direct chat though; will be fixed in and is displayed and can be upgraded in the settings room.
  • Feature (#484): Quaternion can use Qt Keychain now to securely store access tokens (thanks to @ddanilov). Although this works on Windows as well, the Windows binaries available from here don't have it yet.
  • Feature (#123): Timeline can be scrolled using Ctrl-PageUp/PageDown and (if directly focused) Up and Down keys. This is a tentative implementation that may work in some edge cases; may bring something more robust.
  • Feature (#277): horizontal scrolling for messages with wide preformatted parts.
  • Feature (#403 and #476): Quaternion can close to tray and also start minimised to tray (thanks to @ddanilov and @krkk).
  • Feature (#509/#535): Configurable message quoting (plain text only) is implemented. Replies and rich-text quoting are left for a later version.
  • Feature (#455): if the server supports it, room members are lazy-loaded; this should greatly improve initial sync times while otherwise being almost invisible for end users.
  • Enhancement (#445): local echo can be suppressed (UI/suppress_local_echo in config).
  • Enhancement (#451): more actions in right-click menus for the room list and the user list (thanks to @krkk).
  • Enhancement (#381): middle-click on a room name in the room list opens this room; middle-click on a user name in the user list opens a direct chat with the user (thanks to @krkk).
  • Enhancement (#448, #483): timeline scrolling is more responsive.
  • Enhancement (#246): when typing a very long message, the message input only increases its height up to a limit, and scrolls after that.
  • Enhancement (#338): similarly, longer multiline topics no more strut the room header to no limit.
  • Enhancement (#505): Quaternion now warns about attempts to login twice into the same account (thanks to @krkk).
  • Enhancement (#491, #471/#478): room creation events and withdrawn invitations (thanks to @krkk) are correctly displayed in the timeline; also unknown state events got a clearer timeline description (even if a bit techy as it uses the state event type and key verbatim).
  • Enhancement (#558): better validation of room/user ids in /commands.
  • Enhancement (#500): no more scary "unencrypted" word in the message placeholder text - the used protocol (HTTP or HTTPS) is mentioned instead.
  • Enhancement (#555): /shrug gained an optional text argument.
  • Enhancement: instead of an error message with no clear way out expired tokens now lead to a handy re-login dialog.
  • Enhancement: the room settings dialog now shows room id.
  • Enhancement: Ctrl-Q to quit also works on Windows.
  • Bugfix (#546): HTML in author display names is properly escaped.
  • Bugfix (#566): fixed crashing upon logout.
  • Bugfix (#524): fixed crashing after changing the tag order.
  • Bugfix (#532): the login dialog is now prefilled with the first not-logged-in account, rather than an arbitrary account.
  • Bugfix (#559): fixed not remembering the bottommost timeline position after clicking the "Scroll to bottom" button.
  • Bugfix (#564): In the "Add tags" dialog, the Tab key now switches focus instead of entering a Tab character.
  • Bugfix (#486/#488): more accurate logic for user name highlighting (thanks to @redsky17).
  • Bugfix (#511): ban reason is displayed in the timeline now.
  • Bugfix (#542): the to-be-created alias is displayed correctly in the room creation dialog (the actually created alias has always been correct).
  • Bugfix (#499): expanded/collapsed state of room groups is correctly remembered and restored.
  • Bugfix (#492): tab order in the login dialog is reasonable now.
  • Bugfix (#490): window title and room caption get updated when the room is renamed etc. now.
  • Bugfix: no more visual glitches when animation duration is configured to 0.
  • General bug fixing and performance tweaking.
  • Lots of work on i18n and l10n

Building and packaging

Quaternion has gained first-class support of macOS; huge thanks to @aaronraimist for making it happen.

Somewhat similar to .dmg files on macOS, AppImage files are built and provided for those on Linux who want to test the bleeding edge of Quaternion without having to build it locally (#467, thanks to @probonopd). For now, these are not supplied with release versions, and are only provided by the continuous integration pipeline.

This Quaternion release is the last one to use Qt 5.7 (the next minimum required version is likely Qt 5.9). From this version on, Quaternion also depends on the Multimedia component of Qt (Linux packagers, update your build dependencies).

Starting from betas of this release, the naming convention for Git tags slightly changes. Tags no more start with v. Beta versions will end with -betaN and release candidates will use -rcN suffix.

To enable Qt Keychain support (#484), packagers are encouraged to install qtkeychain development files to their build environments.

From beta 1 onwards, -DUSE_INTREE_LIBQMC is ON by default, so Quaternion will use the in-tree library if it's there. However (and that's a change compared to behaviour - see #517), if CMake doesn't find in-tree library sources, it will try to look around for an installed library development files. This means that as long as Quaternion sources are taken from git without submodules, packagers don't need to do anything. Pass -DUSE_INTREE_LIBQMC=OFF to suppress the fallback and make sure only an installed library is considered.

thanks to @ddanilov

Assets 5
You can’t perform that action at this time.