Skip to content

0.0.96

Compare
Choose a tag to compare
@KitsuneRal KitsuneRal released this 12 Jan 17:18
· 48 commits to dev since this release

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.

@KitsuneRal