- 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