Releases: quotient-im/Quaternion
0.0.97 beta
Quotient 0.9 is out, now it's time to upgrade Quaternion to it. Given the rather massive amount of API changes in the library, this pre-release of Quaternion doesn't have many changes aside from the code being ported to the new library version. This is an opportunity for packagers to update their scripts to leave libQuotient 0.8.x behind. In case you haven't noticed, that means obligatory Qt 6 (Qt 6.4 or newer, to be specific); you cannot build neither libQuotient, nor Quaternion with Qt 5 any more.
New Flatpak application id
One very visible change is (will be) the Flatpak application id switching from com.github.quaternion
to io.github.quotient_im.Quaternion
. This is necessary to verify Quaternion at Flathub. The upgrade should be seamless and straightforward but people installing flatpaks from the command line will have to use the new application id once it is officially published at Flathub; you also may have to transfer Flatpak permissions manually if you changed them. This beta is not meant to be officially published at Flathub, and in fact, the flatpak still has a few rough edges; but if you really want to test it you can use the following command:
flatpak install --user https://dl.flathub.org/build-repo/142705/io.github.quotient_im.Quaternion.flatpakref
Full Changelog: 0.0.96.1...0.0.97-beta1
0.0.96.1
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
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 at 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.
0.0.96 RC
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
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.
0.0.96 beta3
(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
Beta2 had old versions left in the source code; to avoid confusion, it is superseded by beta3.
0.0.96 beta
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
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
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.