@KitsuneRal KitsuneRal released this Oct 21, 2018 · 246 commits to master since this release

Quaternion is out, reaching out to bigger audience with localisation and offering new features such as the room list ordered by tag, new slash-commands and, of course, bug fixes. This version is based on libQMatrixClient 0.4.0.


Special thanks go to Karol Kosek (@krkk) for making Quaternion localisable and for the Polish translation; the full list of contributors can be found here.


The commit log has it all; the highlights are:

  • Feature (#323): rooms are grouped by tag now. This is not configurable for now but will be before version 0.1.
  • Feature (#76): Local echo, with buttons to discard and resend the message (#390).
  • Feature (#248): Optionally hiding join/leave events and redactions.
  • Feature (#324): Quaternion now has the About dialog box (thanks to @rushsteve1), with information about Git commits (selectable!) and links to contributors etc.
  • Feature (#372): /ignore and /unignore
  • Feature (#379): /html to send HTML instead of plain text
  • Enhancement (#371): non-members can be /banned too.
  • Enhancement (#370): change the way events are highlighted in the timeline (background is tinted instead of text color changed).
  • Change (#239): by default, Quaternion now compiles against externally installed libQMatrixClient, rather than a submodule. Read to enable the previous way of building (with lib as a submodule).

thanks to @krombel

Assets 4
Oct 7, 2018 Refresh documentation

@KitsuneRal KitsuneRal released this Jun 17, 2018 · 400 commits to master since this release

Another step towards 0.1, this version is based on libQMatrixClient and includes the following changes:

  • Enhancement: the "Settings" menu now has most settings that are worth exposing to the user.
  • Fix (#312): Date label (and author, if you use the new-Default timeline layout) is now correctly hidden when older messages get loaded to the timeline.
  • Experimental: Introduced a new compilation flag, USE_QQUICKWIDGET, switching the way QML is embedded into Quaternion; try to use it if you have problems like #355/#356.
  • Unified reporting about failed network requests; show "Consent not given" errors in a user-friendly way.
  • Minor fixes in CI.

thanks to @rushsteve1

Assets 3
Jun 2, 2018
MainWindow: fix error handling for "consent not given"
Needs the latest lib, so update to it.
May 29, 2018
TimelineItem.qml: remove extra logging used for #355/#356

@KitsuneRal KitsuneRal released this May 10, 2018 · 421 commits to master since this release

Mostly building/packaging fixes on top of 0.0.9; those who already use 0.0.9 need not upgrade.
Update: this version has room joining broken. Please use 0.0.9 or

Assets 2

@KitsuneRal KitsuneRal released this Apr 27, 2018 · 428 commits to master since this release

This is a pre-release before Quaternion 0.1, based on the just released libqmatrixclient v0.2.1. Since this is not supposed to be a full-fledged release, there are no detailed release notes (please look at the list of closed issues for details). Among most prominent news in the release (and this will be reiterated in 0.1 release notes):

  • Redactions
  • Files downloading (no uploading yet)
  • Room creation and editing room settings (the settings are limited for now)
  • Support of editing room tags (see in Room settings) and direct chats (right-click on the user in the userlist); grouping rooms by tag will come in Quaternion 0.1
  • Support of authenticating proxy servers
  • Proper messages to the user about SSL errors including self-signed certificates (and ability to confirm or reject them on individual basis)
  • The scrollbar now visualises the current position among already cached events
  • Massive treatment of issues with timeline: fonts aligned, lost images no more lost, stick-to-bottom logic works better, smoother and less CPU-hungry scrolling etc.
  • Scroll state is remembered on a per-room basis (not across restarts yet)
  • No more splash screen, since Quaternion starts up faster now
  • As usual, plenty of work on stability, performance and memory footprint
    Thanks to all who helped! Quaternion 0.1 comes soon!
Assets 3

@KitsuneRal KitsuneRal released this Dec 22, 2017 · 617 commits to master since this release

6 weeks after the previous release, here's Quaternion 0.0.5! This is mostly a bugfix release. Note that this is the last release to compile and run with Qt 5.2.1; next releases will require Qt 5.7 and newer compilers on Linux (GCC 5+, Clang 5+).

Quaternion 0.0.5 is built on top of libqmatrixclient pre-0.2, using its fixes and features. The library is still built statically into Quaternion; if you'd like to take part in uncoupling the two, you're welcome in #239.


This release is a collective effort of: Kitsune Ral (@KitsuneRal), Marc Deop (@marcdeop), and Elvis Angelaccio (@elvisangelaccio). Many thanks to everybody, as well as our users/testers - you're awesome!


The commit log lists all the changes, here are the highlights:

  • Feature: Redactions! Quaternion now displays redacted messages as such, understands redactions that come from the server, and allows the user to redact messages (but no feedback yet if power level is insufficient; the message just stays on the screen)
  • Feature: The room list is sorted by display name now; room tags are coming soon
  • Feature: Login dialog now automatically resolves the server if you enter your full Matrix user ID (thanks to @r0kk3rz for pushing the effort on the library side)
  • Enhancement (library): Qt 5.10 compatibility (Qt has made a change that caused lib v0.1 and therefore Quaternion 0.0.4 to be unable to send a well-formed HTTP request)
  • Enhancement (security, #181): access tokens are stored separately from other settings; on systems supporting UNIX permission system Quaternion will restrict access to those files
  • Enhancement: joining rooms is no more a gamble when multiple accounts are logged in; Quaternion will ask you if it's not sure which account you meant to use
  • Enhancement: plain-text messages now retain their spaces, so indented text will show indented
  • Enhancement: images in the timeline try to scale to the available width instead of being shown as smaller thumbnails - but only within their actual scale (no big pixelated images bulging in the timeline);
  • Enhancement: m.notice messages (those coming from bots) now look different from "normal" messages, to help you figure what's important
  • Enhancement (library): "(Telegram)" is removed from names of Telegram bridged users; the same feature for IRC was broken but is fixed now (thanks to @Quiark)
  • Enhancement: the access token is invalidated on exit if Quaternion was told not to keep the user logged in
  • Enhancement: AppStream metadata introduced, for your desktop environment convenience
  • Fix: URL linkifier issues have been largely addressed
  • Fix: docked panes layout is properly saved and restored now
  • Further work on stability: less memory leaks, less crashes
  • A bit more work on documentation: now describes configuration options not exposed in UI; building instructions are now in
Assets 3
Dec 22, 2017

@KitsuneRal KitsuneRal released this Nov 8, 2017 · 683 commits to master since this release

Here is the first beta release of Quaternion, long-overdue, with 250+ commits and more than a year since 0.0.1. Under the hood, libqmatrixclient has also evolved to beta; Quaternion tries to expose all features mentioned in the library's release notes.

Update: Qt Project has made a breaking change in Qt 5.10 that leads to Quaternion successfully compiling but failing to complete any network request. This version is only compatible with Qt 5.2.1 thru 5.9.x, not with 5.10. Thank you for understanding.


This release is a collective effort of: Kitsune Ral (@KitsuneRal), Malte Brandy (@maralorn), Elvis Angelaccio (@elvisangelaccio), Felix Rohrbach (@Fxrh), and others. Many thanks to everybody, as well as our lovely users/testers!


The commit log lists all the changes, here are the highlights:

  • Feature: Multiple Matrix accounts support (double login under the same user works too; you'll have two access tokens and can go wild with your alter-ego)
  • Feature: Tab autocompletion for member names (special thanks to @maralorn)
  • Feature: Room invites can be seen and accepted in Quaternion
  • Feature: Room forgetting
  • Feature: An array of new slash-commands in addition to /me, /join and /leave: /invite, /kick, /ban, /unban, /notice, /topic, /shrug, /forget, /nick
  • Feature: Read marker with user activity detection; read receipts for the local user are sent and received/processed, providing seamless experience when moving across clients
  • Feature: Room avatars - in the room list and in the header above the timeline
  • Feature: Rooms can be marked as read from the room context menu
  • Feature: A quick-scrolldown button to get you back to the latest messages after scrolling infinitely to olden times
  • Feature: Entered but not sent messages are saved on a per-room basis; previously sent messages are accessible with up-down cursor keys
  • Feature: Smooth infinite scrolling; as few "bumps into the ceiling" as possible
  • Feature: Tooltips in user list; better tooltips in rooms list
  • Feature: Splash screen (to entertain a user with a nice logo while Quaternion loads things)
  • Enhancement: System palette is respected across the whole application; dark themes are fully supported
  • Enhancement: Rooms in all states (include Invite and recent Leave) are shown; the state is visualised both in icons and in room names text
  • Enhancement: Faster Quaternion startup thanks to room state caching
  • Enhancement: URLs even in plain text messages are clickable (URLs that are not links in HTML messages are left untouched)
  • Enhancement: Device name can be specified upon login (making Quaternion instances more recognisable in Riot's user device list)
  • Enhancement: Room list and user list can be shown/hidden from the menu; the number of rooms/users is shown in the captions
  • Enhancement: a Windows binary is packaged along with Qt and runtime libraries, to save poor Windows folks from having to setup a build environment (which is especially cumbersome on that platform)
  • Enhancement: to balance on Linux users, Flatpak support is directly in the source tree
  • Enhancement: for MacOS users, just checking in CI that things still compile on your platform, nothing else so far
  • Enhancement: A nicer-looking and less wild slider for infinite scrolling (though people still mistake it for a usual scrollbar and complain...)
  • Enhancement: Room state changes (topic, aliases changes etc.) are listed in the timeline
  • Enhancement: Attempt to join an invalid room will bring you a message instead of silently failing
  • Enhancement: hover on a link in the timeline to see the actual target in the status bar
  • Fix: Quaternion did not respect server-side ordering of messages
  • Fix: Member state changes (e.g. renames) looked like joins; now they are displayed like respective changes
  • Lots of stabilization work and bugfixes: less memory leaks, smaller memory footprint in general, less crashes
  • Some work on documentation (, that is); user manual is very much away from radars still

QMatrixClient GitHub organisation

As we grew, separate personal GitHub repos became unscalable, so a GitHub organization has been made to host Quaternion and libqmatrixclient, a single meeting place for everybody involved: QMatrixClient (coincidentally, it's also the original name of Quaternion).


thanks to @elvisangelaccio

Assets 4