Releases: mautrix/go
Releases · mautrix/go
v0.12.0
- Breaking change: Switched
Client.UserTyping
to take atime.Duration
instead of rawint64
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
andOnEventType
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 theutil
package and made it usecrypto/rand
instead ofmath/rand
. - Significantly improved cross-signing validation code.
- There are now more options for required trust levels, e.g. you can set
SendKeysMinTrust
toid.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.
- There are now more options for required trust levels, e.g. you can set
v0.11.0
- 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.
- The new
- Switched from blackfriday to goldmark for markdown parsing in the
format
module and added spoiler syntax. - Added
EncryptInPlace
andDecryptInPlace
methods for attachment encryption. In most cases the plain/ciphertext is not necessary after en/decryption, so the oldEncrypt
andDecrypt
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
- Added option to use a different
Client
to send invites inIntentAPI.EnsureJoined
. - Changed
MessageEventContent
struct to omit emptymsgtype
s in the output JSON, as sticker events shouldn't have that field. - Fixed deserializing the
thumbnail_file
field inFileInfo
. - Fixed bug that broke
SQLCryptoStore.FindDeviceByKey
.
v0.10.11
- 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
v0.10.9
- 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
- Added
OlmSession.Describe()
to wrapolm_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
v0.10.5
- 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).