Skip to content

Releases: mautrix/go

v0.21.0

16 Sep 10:56
Compare
Choose a tag to compare
  • Breaking change (client) Dropped support for unauthenticated media. Matrix v1.11 support is now required from the homeserver, although it's not enforced using /versions as some servers don't advertise it.
  • (bridgev2) Added more features and fixed bugs.
  • (appservice,crypto) Added support for using MSC3202 for appservice encryption.
  • (crypto/olm) Made everything into an interface to allow side-by-side testing of libolm and goolm, as well as potentially support vodozemac in the future.
  • (client) Fixed requests being retried even after context is canceled.
  • (client) Added option to move /sync request logs to trace level.
  • (error) Added Write and WithMessage helpers to RespError to make it easier to use on servers.
  • (event) Fixed org.matrix.msc1767.audio field allowing omitting the duration and waveform.
  • (id) Changed MatrixURI methods to not panic if the receiver is nil.
  • (federation) Added limit to response size when fetching .well-known files.

v0.20.0

16 Aug 08:59
Compare
Choose a tag to compare
  • Bumped minimum Go version to 1.22.
  • (bridgev2) Added more features and fixed bugs.
  • (event) Added types for MSC4144: Per-message profiles.
  • (federation) Added implementation of server name resolution and a basic client for making federation requests.
  • (crypto/ssss) Changed recovery key/passphrase verify functions to take the key ID as a parameter to ensure it's correctly set even if the key metadata wasn't fetched via GetKeyData.
  • (format/mdext) Added goldmark extensions for single-character bold, italic and strikethrough parsing (as in *foo* -> foo, _foo_ -> foo and ~foo~ -> foo)
  • (format) Changed RenderMarkdown et al to always include m.mentions in returned content. The mention list is filled with matrix.to URLs from the input by default.

v0.19.0

16 Jul 08:16
Compare
Choose a tag to compare

Also note the v0.19.0-beta.1 changelog, there were some slightly breaking changes.

  • Renamed master branch to main.
  • (bridgev2) Added more features.
  • (crypto) Fixed bug with copying m.relates_to from wire content to decrypted content.
  • (mediaproxy) Added module for implementing simple media repos that proxy requests elsewhere.
  • (client) Changed Members() to automatically parse event content for all returned events.
  • (bridge) Added /register call if /versions fails with M_FORBIDDEN.
  • (crypto) Fixed DecryptMegolmEvent sometimes calling database without transaction by using the non-context version of ResolveTrust.
  • (crypto/attachment) Implemented io.Seeker in EncryptStream to allow using it in retriable HTTP requests.
  • (event) Added helper method to add user ID to a Mentions object.
  • (event) Fixed default power level for invites (thanks to @rudis in #250).
  • (client) Fixed incorrect warning log in State() when state store returns no error (thanks to @rudis in #249).
  • (crypto/verificationhelper) Fixed deadlock when ignoring unknown cancellation events (thanks to @rudis in #247).

v0.19.0-beta.1

16 Jun 20:40
Compare
Choose a tag to compare
v0.19.0-beta.1 Pre-release
Pre-release
  • (bridgev2) Added experimental high-level bridge framework.
  • (hicli) Added experimental high-level client framework.
  • Slightly breaking changes
    • (crypto) Added room ID and first known index parameters to SessionReceived callback.
    • (crypto) Changed ImportRoomKeyFromBackup to return the imported session.
    • (client) Added error parameter to ResponseHook.
    • (client) Changed Download to return entire response instead of just an io.Reader.
  • (crypto) Changed initial olm device sharing to save keys before sharing to ensure keys aren't accidentally regenerated in case the request fails.
  • (crypto) Changed EncryptMegolmEvent and ShareGroupSession to return more errors instead of only logging and ignoring them.
  • (crypto) Added option to completely disable megolm ratchet tracking.
    • The tracking is meant for bots and bridges which may want to delete old keys, but for normal clients it's just unnecessary overhead.
  • (crypto) Changed Megolm session storage methods in Store to not take sender key as parameter.
    • This causes a breaking change to the layout of the MemoryStore struct. Using MemoryStore in production is not recommended.
  • (crypto) Changed DecryptMegolmEvent to copy m.relates_to in the raw content too instead of only in the parsed struct.
  • (crypto) Exported function to parse megolm message index from raw ciphertext bytes.
  • (crypto/sqlstore) Fixed schema of crypto_secrets table to include account ID.
  • (crypto/verificationhelper) Fixed more bugs.
  • (client) Added UpdateRequestOnRetry hook which is called immediately before retrying a normal HTTP request.
  • (client) Added support for MSC3916 media download endpoint.
    • Support is automatically detected from spec versions. The SpecVersions property can either be filled manually, or Versions can be called to automatically populate the field with the response.
  • (event) Added constants for known room versions.

v0.18.1

16 Apr 11:00
Compare
Choose a tag to compare
  • (format) Added a context.Context field to HTMLParser's Context struct.
  • (bridge) Added support for handling join rules, knocks, invites and bans (thanks to @maltee1 in #193 and #204).
  • (crypto) Changed forwarded room key handling to only accept keys with a lower first known index than the existing session if there is one.
  • (crypto) Changed key backup restore to assume own device list is up to date to avoid re-requesting device list for every deleted device that has signed key backup.
  • (crypto) Fixed memory cache not being invalidated when storing own cross-signing keys

v0.18.0

16 Mar 10:59
Compare
Choose a tag to compare
  • Breaking change (client, bridge, appservice) Dropped support for maulogger. Only zerolog loggers are now provided by default.
  • (bridge) Fixed upload size limit not having a default if the server returned no value.
  • (synapseadmin) Added wrappers for some room and user admin APIs. (thanks to @grvn-ht in #181).
  • (crypto/verificationhelper) Fixed bugs.
  • (crypto) Fixed key backup uploading doing too much base64.
  • (crypto) Changed EncryptMegolmEvent to return an error if persisting the megolm session fails. This ensures that database errors won't cause messages to be sent with duplicate indexes.
  • (crypto) Changed GetOrRequestSecret to use a callback instead of returning the value directly. This allows validating the value in order to ignore invalid secrets.
  • (id) Added ParseCommonIdentifier function to parse any Matrix identifier in the Common Identifier Format.
  • (federation) Added simple key server that passes the federation tester.

v0.18.0-beta.1

16 Feb 15:13
Compare
Choose a tag to compare
v0.18.0-beta.1 Pre-release
Pre-release
  • Bumped minimum Go version to 1.21.
  • (bridge) Bumped minimum Matrix spec version to v1.4.
  • Breaking change (crypto) Deleted old half-broken interactive verification code and replaced it with a new verificationhelper.
    • The new verification helper is still experimental.
    • Both QR and emoji verification are supported (in theory).
  • (crypto) Added support for server-side key backup.
  • (crypto) Added support for receiving and sending secrets like cross-signing private keys via secret sharing.
  • (crypto) Added support for tracking which devices megolm sessions were initially shared to, and allowing re-sharing the keys to those sessions.
  • (client) Changed cross-signing key upload method to accept a callback for user-interactive auth instead of only hardcoding password support.
  • (appservice) Dropped support for legacy non-prefixed appservice paths (e.g. /transactions instead of /_matrix/app/v1/transactions).
  • (appservice) Dropped support for legacy access_token authorization in appservice endpoints.
  • (bridge) Fixed RawArgs field in command events of command state callbacks.
  • (appservice) Added CreateFull helper function for creating an AppService instance with all the mandatory fields set.

v0.17.0

16 Jan 14:13
Compare
Choose a tag to compare
  • Breaking change (bridge) Added raw event to portal membership handling functions.
  • Breaking change (everything) Added context parameters to all functions (started by @recht in #144).
  • Breaking change (client) Moved event source from sync event handler function parameters to the Mautrix.EventSource field inside the event struct.
  • Breaking change (client) Moved EventSource to event.Source.
  • (client) Removed deprecated OldEventIgnorer. The non-deprecated version (Client.DontProcessOldEvents) is still available.
  • (crypto) Added experimental pure Go Olm implementation to replace libolm (thanks to @DerLukas15 in #106).
    • You can use the goolm build tag to the new implementation.
  • (bridge) Added context parameter for bridge command events.
  • (bridge) Added method to allow custom validation for the entire config.
  • (client) Changed default syncer to not drop unknown events.
    • The syncer will still drop known events if parsing the content fails.
    • The behavior can be changed by changing the ParseErrorHandler function.
  • (crypto) Fixed some places using math/rand instead of crypto/rand.

v0.16.2

16 Nov 13:17
Compare
Choose a tag to compare
  • (event) Added Redacts field to RedactionEventContent for room v11+.
  • (event) Added ReverseTextToHTML which reverses the changes made by TextToHTML (i.e. unescapes HTML characters and replaces <br/> with \n).
  • (bridge) Added global zerologger to ensure all logs go through the bridge logger.
  • (bridge) Changed encryption error messages to be sent in a thread if the message that failed to decrypt was in a thread.

v0.16.1

16 Sep 14:01
Compare
Choose a tag to compare
  • Breaking change (id) Updated user ID localpart encoding to not encode + as per MSC4009.
  • (bridge) Added bridge utility to handle double puppeting logins.
    • The utility supports automatic logins with all three current methods (shared secret, legacy appservice, new appservice).
  • (appservice) Added warning logs and timeout on appservice event handling.
    • Defaults to warning after 30 seconds and timeout 15 minutes after that.
    • Timeouts can be adjusted or disabled by setting ExecSync variables in the EventProcessor.
  • (crypto/olm) Added PkDecryption wrapper.