Skip to content

0.8 beta

Pre-release
Pre-release
Compare
Choose a tag to compare
@KitsuneRal KitsuneRal released this 07 Jun 12:05
· 598 commits to dev since this release
896f250

After enormous waits for 0.6 and 0.7, the project is finally getting to make more frequent releases, and 0.8 beta is here less than half a year after 0.7.0. The amount of changes is somewhat smaller too, so you don't need to spend extended time just to figure out what's changed (and I don't need to spend even longer to write the release notes!).

This is a good moment for packagers to double-check that their builds are still good with the new library but please hold off from packaging 0.8, just yet. More goodness is coming soon, with the final release planned to happen before the end of June.

As always, thanks to all the contributors, new and seasoned - you rock!

Main news

The highlight of this release is that you can switch E2EE at each Connection object individiually (#609 by @KitsuneRal). By default, E2EE is now switched off; you have to call Connection::setE2eeDefault() to enable it for all Connections created further. On top of this class-scope setting, you can call Connection::enableEncryption() on any Connection object before it is logged in, to alter the mode for that one object.

As of this beta, there's no graceful handling of situations when encryption is enabled but is unusable (e.g. if there is a database but the pickling key doesn't match it or is unavailable). To preserve user data, Debug builds will fail on assertion; Release builds will just disable encryption on the object and keep running is if it was not enabled at all. By the final release, Debug builds will do the same as Release builds.

Other news

  • The backend Client-Server API code is generated from Matrix v1.7 files (#669), enabling access, among else, to asynchronous uploads (MSC2246), content redirects (MSC3860), and using an existing session to log in another (MSC3882); these are not wired further into Connection/Room yet but the first step is made
  • Thanks to @TobiasFella (#634), Doxygen documentation for the library is now generated and published automatically at https://quotient-im.github.io/libQuotient/ - reports on any inaccuracies/typos/bitrot etc. are welcome!
  • @vkrause made another round of build tightening and improvement PRs:
    • Qt5 and Qt6 versions of libQuotient can now be installed side-by-side (#646, #650) - this required to change soname of the Qt6 variant but no known distro shipped that variant anyway
    • Global constants for key names etc. now have one prefered variant (the one without L at the end), with L variants getting deprecated (#648); L-less variant is now QLatin1String, too
    • Fixed dependency finding in CMake (#656, #658)
  • @KitsuneRal also gave the redactions code a hard look and fixed things around redacting state events that surfaced (#666)
  • Connection::assumeIdentity() emits networkError() (which it never did before) instead of loginError() when the actual problem is with the network (e9c3d37 by @KitsuneRal)
  • Connection no more automatically adds and removes itself from the Accounts singleton, and this singleton itself is deprecated now (c2c9bf4 by @KitsuneRal); client authors have to create an AccountRegistry instance for themselves (if they wish, still as a singleton, but be aware that it's considered an anti-pattern)
  • BaseJob::aboutToSendRequest() carries a pointer to the modifiable network request object along with it, allowing to adjust the request before sending (389f365 by @KitsuneRal). Use with care.
  • Previously deprecated Room::reset*Count() functions are entirely removed (#661) after they were found out to crash NeoChat in obscure ways
  • Omittable::ensure() has been removed as it was sitting unused for quite some time (14f31f4 by @KitsuneRal)
  • Event::type() is deprecated now and is planned for removal in 0.9 (#667), to prevent the long-standing confusion between type() and matrixType(), with even the library's own code misusing type() even though it doesn't necessarily return the actual type stored in the event JSON
  • @TobiasFella fixed aliases not to remap back from the replacement room to its predecessor accidentally (#649)
  • @KitsuneRal fixed image requests from QML to be thread-safe (#659)
  • @chmeeedalf fixed Matrix URI parsing for colon characters that are percent-encoded, i.e. %3A instead of : (#651) - first contribution to the project!
  • @CyberTailor fixed E2EE builds with LibreSSL (#654) - another first-time contributor here!

Full Changelog: 0.7.2...0.8-beta1