Skip to content

Releases: quotient-im/Quaternion

0.0.96.1

19 Feb 09:34
Compare
Choose a tag to compare

This is a bugfix/small improvements release for Quaternion 0.0.96. Changes (all by @KitsuneRal):

  • d0c07c5 and 700dd4d: fix a crash and general dysfunction when attaching files - thanks to @mizhka for reporting
  • 746970d: bundle Qt 6.6 with binaries published by the project
  • 4c53d18: fix failure to bundle Qt on Windows due to antiquated parameters passed to windeployqt - thanks to @nephele-gh for reporting
  • 915a2af: allow mxc scheme in hyperlinks (MSC2398)

0.0.96

12 Jan 17:18
Compare
Choose a tag to compare

About 300 commits and, oh wait... more than two years ago, what a shame - when coronavirus still terrorized the world, version 0.0.95 has been released. Well, there's been quite a lot in the making on the libQuotient side since then, and now we've got to releasing the next stable version of Quaternion, too.

Thanks

The biggest thanks goes to @TobiasFella who made E2EE happen in Quaternion via his contributions to libQuotient. Also:

  • @rpallai for a few more improvements on the timeline
  • @shunf4 for the original drag-n-drop of files implementation
  • @chmeeedalf for fixing a crash on sending a pasted image

And as always, thanks to everybody who tests and comes up with bug reports, suggestions and comments on Quaternion. You rock!

Changes

End to end encryption (beta)

Actually, 99% of the work so far has been in the backend, meaning libQuotient. The code in Quaternion just allows to switch it on and off when you log in to each account. That's right, you can opt in to using E2EE for each account individually, a feature not frequently seen in Matrix clients. The main purpose of this is to protect more sensitive accounts of yours from being screwed up by a bug in the still beta E2EE code of libQuotient and/or Quaternion. And since E2EE is still beta, the switch is off by default; you will have to opt into using E2EE on every login.

Other changes

Changes are made by @KitsuneRal except where the author is mentioned.

  • #851 (fixing @857) and #852, both by @rpallai, fix a few issues with selecting text in the timeline.
  • #854 by @rpallai, allows to choose whether you want to use plain-text pasting or rich-text pasting when you press Ctrl-V; the alternative mode is available via Shift-Ctrl-V.
  • #858 (fixing #830) - login sessions not marked for persistence through restarts are explicitly logged out at exit (assuming the exit is clean, not due to a crash), invalidating the respective access tokens instead of leaving them valid, even if orphaned.
  • #859 (fixing #820) - the external URL is now correctly shown when using the German translation.
  • #868 by @chmeeedalf (fixing #867) - images coming from, e.g., a web browser are correctly pasted as images rather than (ultimately empty, because of Matrix protocol restrictions) HTML.
  • 447d8ec adjusted the colours used in the timeline for state events to be more discernible.
  • #643 ported the timeline code to Qt Quick Controls 2, which is the only version of Qt Quick Controls available in Qt 6. As a side-effect of it, AppImages are now disfunctional due to a packaging issue (#876) - unless someone comes up and fixes that, the code in CI that makes AppImages for development builds will be removed sometime later in the year.
  • b655369 (fixing #688) makes sure to cancel a network request if it was waiting too long for a user confirmation on an SSL certificate warning; previously Quaternion tried to move on with the request although Qt has deleted the related objects, resulting in a crash.
  • 2c5c077 (fixing #881) and 1cb19b6 (fixed #849) addressed issues with rich text handling in the message input.
  • c7cffcc - instead of showing URLs for links and other supporting information for stuff in the timeline in the status bar, tooltips are used in most such cases now.
  • 96debe0 and 28eef67 (together fixing #787) introduced logging categories to Quaternion - in the same vein as in libQuotient that uses them since version 0.6 - README has the list of categories to filter. This helps, in particular, with avatar request logs that can be quite verbose.
  • 441d275 (fixing #711) removed heavy animation code that made scrolling with a mouse wheel a pain on some systems.
  • fe77c7 (fixing #529) adds ability to re-dock room and user lists from the menu, as it wasn't possible to re-dock it using the window system, e.g. on Wayland.
  • 7eac2e5 (fixing #777) - Quaternion now relies on libQuotient code to fetch member avatars for the timeline; as a result, room-specific member avatars are used in the timeline now, instead of global avatars taken from the user profile as it was before.
  • #889 (fixing #731) - Qt translations are now included in the macOS bundle generated by CI.
  • #891 (fixing #835) - Fixes and improvements around drag-n-drop of files and content onto the message input.
  • 4ce59f7 fixed a possible crash when switching rooms from different accounts

And as usual, tightening performance and plugging whatever memory leaks discovered.

Building and packaging

Quaternion 0.0.96 requires libQuotient 0.8.x; libQuotient 0.7.x and earlier won't cut it. The oldest Qt version for this release of Quaternion is 5.15, but it is strongly recommended to use Qt 6, ideally - Qt 6.4 or newer. The dependency on Qt Keychain is unconditional now; libQuotient requires it anyway.

The build-time configuration for E2EE depends on whether you are using external or in-tree libQuotient: Quaternion cannot change the configuration of external libQuotient but in case of in-tree library the default is to have E2EE compiled. You should only disable E2EE at build time if you don't and cannot have encryption libraries - OpenSSL 3.x and libolm 1.x. Quaternion 0.0.97 and later will likely have no opt-out of E2EE and build time at all.

Make sure to check out BUILDING.md for details on build-time and runtime dependencies, particularly if you are on Linux.

As mentioned above, there's no plan to provide AppImages for Quaternion 0.0.96 (see #876). The recommended self-contained package format remains Flatpak, as before.

What's next

This is the last release of Quaternion that can be built with Qt 5. Further 0.0.96.x releases (if any) will keep the code compatible with Qt 5 but workability of that code will not be guaranteed; Quaternion 0.0.97 will only build with Qt 6, using its features as much as possible. Qt 6 has been around for several years by now and is in a very good shape; it's time to move on.

@KitsuneRal

0.0.96 RC

14 Dec 07:01
Compare
Choose a tag to compare
0.0.96 RC Pre-release
Pre-release

It took much longer than originally expected to get to RC but here we are. Not much has been added since:

  • (39e50a7, 9f27e44, 03bb813, 7f1b16c, 32863d2, 38df28e, 60aa0fe) Minor tweaks and fixes for the timeline view.
  • (fe77cc7, 3d7083a, and e780600; fixing #529) Dock panels can be switched around from the menu - for each, you can choose not to show it at all, show floating or docked. Those who couldn't re-dock the panels on Wayland, rejoice!
  • (7eac2e5, 658ef13, and c7099e8; fixing #777) Avatar requests in the timeline now use the same library code as those from the dock panels, which in turn is significantly better at image caching. So, faster avatars in the timeline, fewer network requests. One more nice side-effect of this work was that room-specific avatars are now used in the room timeline, not the avatars from the user profile.
  • (62be36f) Fixed a bug where a to-be-read position has been carried over to the next room after switching between rooms, leading to accidental marking as read without user intention.

Full Changelog: 0.0.96-beta4...0.0.96-rc1

Yours, @KitsuneRal

0.0.96 beta4

30 Jul 17:58
Compare
Choose a tag to compare
0.0.96 beta4 Pre-release
Pre-release

This is likely the last beta leading to 0.0.96. Not too many changes from beta3, but these few are rather noticeable:

  • Quaternion is usable again when built with Qt 5; this, however, came as a side-effect of fixing things for Qt 6 and not because somebody shouted to please keep it around. That being said, 0.0.96 final release will be the last one with Qt 5 support; once it's out, we go all in Qt 6.
  • The long-standing issue with sluggish timeline scrolling (#711) has been finally fixed - if Quaternion is too jumpy or still sloppy with your mouse/touchpad/trackball, let me (@KitsuneRal) know (in the issue or in the chat room and we'll try to figure it out.
  • Another long-standing issue with pasting pretty much anything from webpages (#849) is also fixed - separate thanks to @berrange for experiments that helped to pinpoint the problem.
  • Text colors used in the timeline are made a bit more discernible (reported in #847).
  • Self-signed TLS certificates, although still being a nuisance, at least don't crash the application when left for too long (reported in #688).
  • Markdown backticks (those ` things) work again - i.e., format the enclosed text as monospace/code (reported in #881).
  • You can use Qt's logging categories to manage the amount of logging output in Quaternion, the same way you could do it with libQuotient (#787).
  • A few fixes and tweaks around QML (366017b, a33c1ab, c7cffcc); notably, normal tooltips are used to show URLs, instead of the status bar
  • Ensure that the E2EE setting on the connection matches that in the login dialog (6b1692b)
  • Fixed an assertion failure when opening the User profiles dialog (2a9aee2).

Translators and packagers are welcome to update their stuff! No further changes in the codebase for 0.0.96 should affect you.

@KitsuneRal

0.0.96 beta3

13 Jul 15:02
Compare
Choose a tag to compare
0.0.96 beta3 Pre-release
Pre-release

(Beta 3 is the same code as beta 2, with the correct version reported by the application)

This beta is very different from the previous one, in two (ok, three) particular respects.

libQuotient 0.8

First, after finding a few shortcomings in libQuotient 0.7 fixing which required to break the API, it was decided that Quaternion 0.0.96 will move along and switch to libQuotient 0.8 that has been released last week. So, unlike the previous beta version that used libQuotient 0.7, this one only builds with libQuotient 0.8.

One reason to switch to libQuotient 0.8 was to make E2EE switchable per account at the login, rather than be at the mercy of whoever builds libQuotient (18ba959). From now on, it will be recommended to always build libQuotient with E2EE switched on and eventually the build-time switch might be completely gone. The accounts already logged in and saved into your Quaternion configuration will have E2EE automatically switched on, grandfathering the libQuotient 0.7 status. If you don't want that for any reason, make sure to remove the access token for the given account before running this beta! In the final release, the grandfathering will most likely be replaced with some other migration mechanism to make sure users don't end up with E2EE suddenly switched on even if they didn't want that.

Qt 6

Second, Quaternion now de-facto requires Qt 6, after completing the migration from the old Qt Quick Controls 1 that kept us at Qt 5. Unfortunately, as a side effect of this migration, the build with Qt 5 is broken at the moment (to be more precise, it builds but the timeline is a useless pile of controls). In other words: you should use it with Qt 6 (unless you really want to stick to the legacy and fix the build with Qt 5 - in which case, PRs will be accepted but please read this paragraph to the end first). Given that Qt 6 matured nicely over the last year, there's not much reason to use Qt 5, anyway; moreover, the next version of libQuotient (0.9) will almost surely drop Qt 5 support. BUILD_WITH_QT6 is now ON by default (09e1299); the instructions in README.md and BUILDING.md are updated to Qt 6 (if they are inaccurate - file issues!); and there's no plan to put much effort into making Quaternion work again with Qt 5.

It is recommended to use Qt 6.4 and not Qt 6.5 - the latter has a few regressions that impact Quaternion.

Flatpaks instead of AppImages

Finally, yet another broken-for-now-and-maybe-for-good thing is AppImages built by our continuous integration at GitHub. AppImages have been causing frustration pretty much at every significant change of dependencies, be it OpenSSL or the Ubuntu image used to build it. OpenSSL version change came around again this time (1.1->3.0), but even after fixing it the generated AppImage runs but doesn't show the timeline. With flatpaks being less problematic (not perfect either, in fairness) to build and Flathub providing a good process around it, Flatpak will be the format of choice for all releases from now on. The direction for intermediate pushes will be decided separately.

Other notable changes

  • @chmeeedalf fixed incorrect detection of images inserted from clipboard for sending (#868) - first contribution!
  • @nephele-gh helped with lots of testing, as always

Many thanks to everyone!

Full Changelog: 0.0.96-beta1...0.0.96-beta3

0.0.96-beta2

13 Jul 11:09
Compare
Choose a tag to compare
0.0.96-beta2 Pre-release
Pre-release

Beta2 had old versions left in the source code; to avoid confusion, it is superseded by beta3.

0.0.96 beta

02 Apr 11:30
Compare
Choose a tag to compare
0.0.96 beta Pre-release
Pre-release

With the obligatory apologies for taking too long, here's a pre-release of what will be Quaternion 0.0.96! The cornerstone of this release is libQuotient 0.7 released late last year, that includes (still somewhat experimental) support for E2EE. This beta of Quaternion doesn't have E2EE-specific code yet (e.g. you can't verify devices or inspect encrypted event sources just yet) but you can read and send encrypted messages that the library can handle (read carefully the E2EE section of the library release notes, there are some nasty things to be aware of).

Aside from libQuotient 0.7, there are not too many new things yet. Unlike the library, Quaternion doesn't work with Qt 6 for the moment, meaning that you are constrained to Qt 5.15.x. This is something to be addressed before the final 0.0.96 release.

This release is mainly for early testers, translators and packagers to try out. Flatpak beta channel will get this release shortly, as before.

Other major changes

  • The new libQuotient API for fully read markers is used, making the (fully) read marker transitions more in line with other clients; read receipts are not officially displayed just yet (2e6e681 by @KitsuneRal)
  • Attach a file by inserting (pasting/dropping) it into the message input control (#812 by @shunf4)
  • libQuotient's AccountRegistry is used instead of its now inferior predecessor in the Quaternion source tree; the dependency on Qt Keychain is now unconditional, with no fallback to storing access tokens - and database pickles for E2EE - in a file (#838 by @TobiasFella)
  • The default paste mode (rich text vs. plain text) used at Ctrl+V is now configurable; the alternative mode can always be used with Shift-Ctrl-V (#854 by @rpallai)
  • Fixes in timeline text selection (#851 and #852 by @rpallai)
  • The automatic login sequence at Quaternion startup is more robust now, particularly against network failures (#858 by @KitsuneRal)

Thanks to new contributors

Full Changelog: 0.0.95.1...0.0.96-beta1

0.0.95.1-flatpak

08 Oct 13:15
Compare
Choose a tag to compare
0.0.95.1-flatpak Pre-release
Pre-release
Actually, use that screenshot Linux-wide

...because Flatpak ultimately takes the screenshot data from
the AppStream file, which is also mainly a Linux thing (so far).

Version 0.0.95.1

07 Oct 13:46
Compare
Choose a tag to compare

This is a maintenance release on top of 0.0.95 codebase. Changes:

  • (7e09091, 3219b08) Fixed a few other (less severe though) HTML injection discovered since #789 - thanks to nephele for spotting those.
  • (410a832) Adjust the #789 fix so that it doesn't over-escape HTML when showing and processing clicks on reactions.
  • (#782, #793) Fix bugs in saving the timeline position when rooms are switched, and also accurately restoring the timeline position afterwards, as well as upon clicking on the "Scroll to read marker" button.
  • (775245d) When the event with the read marker is not loaded yet, clicking on the "Scroll to read marker" button will load more history. Subsequent clicks will either load even more history or, once the read marker is found, scroll to it.
  • (#800) Fix user display names actually getting their colours in the timeline, instead of being all shown in deep red.
  • (#803) Rich text pasting from programs such as LibreOffice actually works now.
  • (#805) Fix a crash upon login with a correct password after entering it incorrectly in the previous attempt.
  • Prebuilt binaries at GitHub Releases use libQuotient 0.6.11 with its own set of fixes.

Version 0.0.95

24 Sep 03:09
Compare
Choose a tag to compare

Ok, it's been a long time... More than 2 years since the original 0.0.9.4 release, and more than half a year since the last rebuild of that release (gaining quite a few patches from the next release though). Anyway, after switching continents for a new country and a new job (still not about Matrix but at least about Open Source!), here I am again, delighted to announce the ever-best and newest - release 0.0.95!

As many of you who followed betas and release candidates know already, there's no typo in the version number - reflecting the next level of Quaternion maturity, I decided to switch from "just-beginning-to-make-something-useful" 0.0.9.x pattern to "got-almost-all-essential-features" 0.0.9x, with 0.1 release becoming in sight. What would make it 0.1? Two things: user registration and end-to-end encryption; and hopefully we'll get there by the end of next year (unless I get to jump countries again, which is unlikely).

But enough with introduction, let's get to the subject.

Thanks

  • to @krkk and @rpallai for massive contributions to make Quaternion better and better (see details below)
  • to translators for adding and updating on their languages: in addition to German, Polish and Russian translation, we now have (reasonably complete) Spanish one. The French translation, unfortunately, could not make it to the release, despite good progress - it may be added in a follow-up release.
  • and, of course, to all who tries out and uses Quaternion on daily basis!

As before, the full list of contributors to the code can be found at the respective GitHub page, and you can all kinds of cool statistics about translations at Lokalise.

Changes

The complete list is even longer than for 0.0.9.4 (134 closed issues and 690 commits); highlights follow:

  • Many chat timeline improvements:
    • Feature (#422, #497): thanks to @krkk, the "ellipsis" button on the right of the message has been replaced with a proper context menu behind a proper secondary (aka right-) click, with more things that can be done from it.
    • Feature (#727, #687): revamped read marker, with more natural transitions (that line actually shifts across events now) and a slight tint over messages you've already read so that you could easily discern whether you're in "unread" or "read" area without the read marker on the screen;
    • Feature (#257, #729): thanks to @ddanilov, there's now a "scroll to reader marker" button when the read marker is off-screen (unfortunately, it will only work when the last read event is already loaded; lifting this limitation is a matter of #796);
    • Feature (#780): thanks to @ddanilov, the topic can be collapsed now - right-click on it;
    • Feature (#655): thanks to @krkk, Quaternion gained initial support for reactions (current limitations: no new reactions can be posted; standard timeline font is used for reactions);
    • Feature (#607): thanks to @rpallai, outgoing messages are tinted a bit differently now (and you can configure the tint - see README).
    • Change (#725, #748): the scroll-to-bottom button, as well as the timestamp in the default layout, shifted to the right; the shuttle-dial scroller blends better into the desktop theme and acts smoother;
    • Fixes (#375, #630, #704, #712, #761): a few, some long-standing, bugs fixed with (partially) moving over to Qt Quick Controls 2 (Qt Quick Controls 1 has been deprecated and is no more there in Qt 6; complete migration to QQC2 is planned early in 0.0.96);
    • Fixes (#632, #640, #648, #749): too high room name or message input will no more obscure the real timeline beyond acceptable; and longer typing/completion strings won't strut the view either;
    • Fixes (#782, #788): the last scrolled-to timeline position should be restored more reliably now.
  • Feature (#677): thanks to @krkk, there's now a user profile dialog, with changeable name and avatar. Device manipulations come next, as they need user-interactive authentication.
  • Feature (#678): thanks to @krkk (this guy is all over the place...), images can be attached simply by pasting them from the clipboard.
  • Feature (#421, #730, #734): initial Markdown support - still somewhat experimental and can break in some more complex cases like lists or fences, therefore hidden behind the /md command. Only available if Quaternion is built with Qt 5.14 or newer (Flatpaks and all binaries at GitHub Releases have it; builds for older Linux distros might not).
  • Feature (#580, #701, #705): with the help of @krkk, rich text can be pasted or dropped into the text entry, and proper Matrix HTML will be generated for it; work on this allowed to make /html command validate its input to be proper Matrix(!) HTML. Same as Markdown, rich text support is still somewhat experimental and rough along some edges.
  • Feature (#614, #627): with the help of @rpallai, you can now override the font for the chat timeline (and the application font is configurable too) - see README.
  • Feature (#528): thanks to @a-andreyev, Quaternion now uses different colours for different user ids, which helps in both discerning between accounts and also may assist in spotting impersonators.
  • Feature (#642): thanks to @ddanilov, you can now fine-tune how fast your read marker moves to the newly read message.
  • Feature (#533): Room tags can be hidden from the room list now (see README for instructions).
  • Feature (#654, #662): thanks to @krkk and @rpallai, you can hide more kinds of events from the timeline.
  • Change (#676): thanks to @krkk, actions for which you don't have power (e.g. banning) are hidden now.
  • Change (#609, #644): upgraded rooms that have successors with you as a member are no more shown in the room list - you can still navigate to them using "Go to previous room" button in the successor room. A more convenient interface is postponed for 0.0.96.

And, as always, the new release comes with an assortment of performance and memory tweaks and fixes, to keep Quaternion fast and compact.

Building and packaging

Over these two years, quite a few things occured on the building and packaging front - packagers especially, mind the below.

First off, if you're still on an intermediate 0.0.95 (or even 0.0.9.5) beta or RC build you're strongly advised to update to this final release or at least backport the fixes linked from the security issue #789.

Quaternion 0.0.95 requires libQuotient 0.6.x to run (version 0.6.9, the latest as of this writing, is strongly recommended - if you don't have it in your Linux repository, ask your packager to update the package ASAP!). Neither libQMatrixClient 0.5.x, nor (yet to be released) libQuotient 0.7 are not compatible.

The oldest Qt version for this Quaternion release is 5.11, not 5.9 any more; this changed before RC3. Unless you're still on bionic (in which case you have bigger issues to tackle) this shouldn't be a trouble; but for packaging it's worth updating your spec and control manifests.

AppImage files are now provided with releases too; however, the recommended self-contained package is Flatpak as it integrates better into the desktop environment and is built in a more reliable and secure way than AppImage.

As those using Quaternion intermediate CI builds know, JFrog has sunset its Bintray service earlier in the year. Fortunately, great folks at Cloudsmith have ironed up their service just in time for that and provide it to open-source projects for free. While you're really advised to use GitHub Releases to get stable Quaternion binaries, intermediate CI builds are still available as well; they just changed their home.

Finally, in a much less predictable and reasonable way, Travis CI has left its open-source users out in the cold last year after changing their pricing model, so all Quotient builds have been (rather hastily) migrated to GitHub Actions. This should not affect the consumption of the built binaries in any way - they were published at GitHub Releases even before, and they are still there. Travis CI is not good for your health anyway - migrate from it as soon as you can if you're still there.

Screenshot

Looks unusual? This is made on Haiku, courtesy of [email protected]. Quaternion will match your system look and feel, unlike some other Matrix clients.
thanks to nep-quaternion@packageloss.eu