Skip to content

Releases: mautrix/go

v0.12.0

16 Aug 08:01
Compare
Choose a tag to compare
  • Breaking change: Switched Client.UserTyping to take a time.Duration instead of raw int64 milliseconds.
  • Breaking change: Removed custom reply relation type and switched to using the wire format (nesting in m.in_reply_to).
  • Added device ID to appservice OTK count map to match updated MSC3202. This is also a breaking change, but the previous incorrect behavior wasn't implemented by anything other than mautrix-syncproxy/imessage.
  • (There are probably other breaking changes too).
  • Added database utility and schema upgrade framework
    • Originally from mautrix-whatsapp, but usable for non-bridges too
    • Includes connection wrapper to log query durations and mutate queries for SQLite compatibility (replacing $x with ?x).
  • Added bridge utilities similar to mautrix-python. Currently includes:
    • Crypto helper
    • Startup flow
    • Command handling and some standard commands
    • Double puppeting things
    • Generic parts of config, basic config validation
    • Appservice SQL state store
  • Added alternative markdown spoiler parsing extension that doesn't support reasons, but works better otherwise.
  • Added Discord underline markdown parsing extension (_foo_ -> foo).
  • Added support for parsing spoilers and color tags in the HTML parser.
  • Added support for mutating plain text nodes in the HTML parser.
  • Added room version field to the create room request struct.
  • Added empty JSON object as default request body for all non-GET requests.
  • Added wrapper for /capabilities endpoint.
  • Added omitempty markers for lots of structs to make the structs easier to use on the server side too.
  • Added support for registering to-device event handlers via the default Syncer's OnEvent and OnEventType methods.
  • Fixed CreateEventContent using the wrong field name for the room version field.
  • Fixed StopSync not immediately cancelling the sync loop if it was sleeping after a failed sync.
  • Fixed GetAvatarURL always returning the current user's avatar instead of the specified user's avatar (thanks to @nightmared in #83).
  • Improved request logging and added new log when a request finishes.
  • Crypto store improvements:
    • Deleted devices are now kept in the database.
    • Made ValidateMessageIndex atomic.
  • Moved appservice.RandomString to the util package and made it use crypto/rand instead of math/rand.
  • Significantly improved cross-signing validation code.
    • There are now more options for required trust levels, e.g. you can set SendKeysMinTrust to id.TrustStateCrossSignedTOFU to trust the first cross-signing master key seen and require all devices to be signed by that key.
    • Trust state of incoming messages is automatically resolved and stored in evt.Mautrix.TrustState. This can be used to reject incoming messages from untrusted devices.

v0.11.0

16 May 17:30
Compare
Choose a tag to compare
  • Bumped minimum Go version to 1.17.
  • Switched from /r0 to /v3 paths everywhere.
    • The new v3 paths are implemented since Synapse 1.48, Dendrite 0.6.5, and Conduit 0.4.0. Servers older than these are no longer supported.
  • Switched from blackfriday to goldmark for markdown parsing in the format module and added spoiler syntax.
  • Added EncryptInPlace and DecryptInPlace methods for attachment encryption. In most cases the plain/ciphertext is not necessary after en/decryption, so the old Encrypt and Decrypt are deprecated.
  • Added wrapper for /rooms/.../aliases.
  • Added utility for adding/removing emoji variation selectors to match recommendations on reactions in Matrix.
  • Added support for async media uploads (MSC2246).
  • Added automatic sleep when receiving 429 error (thanks to @ownaginatious in #44).
  • Added support for parsing spec version numbers from the /versions endpoint.
  • Removed unstable prefixed constant used for appservice login.
  • Fixed URL encoding not working correctly in some cases.

v0.10.12

15 Mar 23:37
Compare
Choose a tag to compare
  • Added option to use a different Client to send invites in IntentAPI.EnsureJoined.
  • Changed MessageEventContent struct to omit empty msgtypes in the output JSON, as sticker events shouldn't have that field.
  • Fixed deserializing the thumbnail_file field in FileInfo.
  • Fixed bug that broke SQLCryptoStore.FindDeviceByKey.

v0.10.11

15 Mar 23:35
Compare
Choose a tag to compare
  • Added automatic updating of state store from IntentAPI calls.
  • Added option to ignore cache in IntentAPI.EnsureJoined.
  • Added GetURLPreview as a wrapper for the /preview_url media repo endpoint.
  • Moved base58 module inline to avoid pulling in btcd as a dependency.

v0.10.10

16 Jan 18:10
Compare
Choose a tag to compare
  • Added event types and content structs for server ACLs and moderation policy lists (thanks to @qua3k in #59 and #60).
  • Added optional parameter to Client.LeaveRoom to pass a reason field.

v0.10.9

04 Jan 18:15
Compare
Choose a tag to compare
  • Breaking change: Changed Messages() to take a filter as a parameter instead of using the syncer's filter (thanks to @qua3k in #55 and #56).
    • The previous filter behavior was completely broken, as it sent a whole filter instead of just a RoomEventFilter.
    • Passing nil as the filter is fine and will disable filtering (which is equivalent to what it did before with the invalid filter).
  • Added Context() wrapper for the /context API (thanks to @qua3k in #54).
  • Added utility for converting media files with ffmpeg.

v0.10.8

30 Dec 11:04
Compare
Choose a tag to compare
  • Added OlmSession.Describe() to wrap olm_session_describe.
  • Added trace logs to log olm session descriptions when encrypting/decrypting to-device messages.
  • Added space event types and content structs.
  • Added support for power level content override field in CreateRoom.
  • Fixed ordering of olm sessions which would cause an old session to be used in some cases even after a client created a new session.

v0.10.7

30 Dec 11:01
Compare
Choose a tag to compare
  • Changed Client.RedactEvent to allow arbitrary fields in redaction request.

v0.10.5

06 Dec 12:15
Compare
Choose a tag to compare
  • Fixed websocket disconnection not clearing all pending requests.
  • Added OlmMachine.SendRoomKeyRequest as a more direct way of sending room key requests.
  • Added automatic Olm session recreation if an incoming message fails to decrypt.
  • Changed Login to only omit request content from logs if there's a password or token (appservice logins don't have sensitive content).

v0.10.4

30 Nov 10:33
Compare
Choose a tag to compare
  • Added reason field to invite and unban requests (thanks to @ptman in #48).
  • Fixed AppService.HasWebsocket() returning true even after websocket has disconnected.