NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
A Python 3 asyncio Matrix framework.
Last release 3 months ago
05 Jul 2026
Release timing varies
gaps range from 8 days to 8 months
Nearly every release is documented
notes for 59 of the last 60 stable releases
3 versions withdrawn
withdrawn after publishing
8 years old
331 releases · first in 2018
*(bridge)* Updated e2be helper to stop bridge if syncing fails.
InternalClientError is thrown. These errors usually cause everything to
get stuck.
meow_exit_on_ice = false in
the db_args.*(util.formatter)* Added support for parsing img tags
img tags
alt or title attribute will be used as plaintext.notifications object to power level content class.MatrixHandler (thanks to [@maltee1] in #103).IntentAPI to add the fi.mau.double_puppet_source
to all state events sent with double puppeted intents (previously it was only
added to non-state events).One column per quarter.
*(bridge)* Fixed double puppeting start method not handling some errors from /whoami correctly.
start method not handling some errors
from /whoami correctly.com.beeper.message_send_status event type for bridging
status.*(bridge.commands)* Added reason field for CommandEvent.redact.
reason field for CommandEvent.redact.reason field for the unban_user method
(thanks to @maltee1 in #101)."is_direct": true (thanks to @maltee1 in #102).Program to use create and set an event loop
explicitly instead of using get_event_loop.exit_code parameter to manual_stop.IntentAPI.batch_send method to use custom Event
classes instead of the default ones (since some normal event fields aren't
applicable when batch sending).*(types, bridge)* Dropped support for appservice login with unstable prefix.
*(types)* Changed set_thread_parent to have an explicit option for disabling the thread-as-reply fallback.
set_thread_parent to have an explicit option for
disabling the thread-as-reply fallback.*(types)* Added get_thread_parent and set_thread_parent helper methods for MessageEventContent.
get_thread_parent and set_thread_parent helper methods
for MessageEventContent.MessageSendCheckpoint.send.Breaking change Removed r0 path support.
r0 path support.
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.Breaking change *(types)* Removed custom REPLY relation type and changed RelatesTo structure to match the actual event content.
REPLY relation type and
changed RelatesTo structure to match the actual event content.
content.get_reply_to() and content.set_reply() will
keep working with no changes.THREAD relation type and is_falling_back field to
RelatesTo.*(client.api)* Added experimental prometheus metric for file upload speed.
UpgradeTable.register*(api)* Added file_name parameter to HTTPAPI.get_download_url.
file_name parameter to HTTPAPI.get_download_url.*(types)* Fixed removing nested (i.e. malformed) reply fallbacks generated by some clients.
set_reply() to prevent
accidentally creating nested reply fallbacks.*(crypto)* Changed default behavior of OlmMachine to ignore instead of reject key requests from other users.
Nothing published for this version
*(client.api)* Fixed incorrect HTTP methods in async media uploads.
*(client.api)* Added support for async media uploads ([MSC2246]).
async_getter_lock decorator to mautrix.util (from mautrix.bridge).
*(types)* Added ensure_has_html method for TextMessageEventContent to generate a HTML formatted_body from the plaintext body correctly (i.e. escaping
ensure_has_html method for TextMessageEventContent to
generate a HTML formatted_body from the plaintext body correctly (i.e.
escaping HTML and replacing newlines).Breaking change Removed Python 3.7 support.
r0 from default path builders in order
to update to v3 and per-endpoint versioning.
Path, ClientPath and MediaPath will have to be
updated manually. UnstableClientPath no longer exists and should be
replaced with Path.unstable..versions() method in ClientAPI.
The bridge module calls that method automatically.MatrixParser by setting lxml.html.fromstring as the
read_html method.TrustState, DeviceIdentity,
OlmEventKeys and DecryptedOlmEvent dataclasses from crypto.types
into types.crypto.User.get_puppet abstract and added new
abstract User.get_portal_with and Portal.get_dm_puppet methods.__all__ to various __init__.py files to appease pyright.owner_name parameter
in Database.create.ignore_foreign_tables is set to True, it will check
for tables of some known software like Synapse and Dendrite.bridge module enables both options by default.bytearray as an input type for the mimetype method.bytearray in-place to
avoid unnecessarily duplicating data in memory.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
*(bridge)* Fixed accidentally broken Python 3.7 compatibility.
*(client.api)* Added reason field to leave_room and invite_user methods.
reason field to leave_room and invite_user methods.*(util.formatter)* Deprecated the lxml-based HTML parser and made the htmlparser-based parser the default. The lxml-based parser will be removed in v0…
filter_json parameter in get_messages not being sent
to the server correctly.*(client)* Fixed error inviting users with custom member event content if the server had disabled fetching profiles.
mimetype() is
either bytes or str.Breaking change *(util.message_send_checkpoint)* Changed order of send parameters to match BridgeState.send (this is not used by most software, which…
send
parameters to match BridgeState.send (this is not used by most software,
which is why the breaking change is in a patch release).*(util.formatter)* Removed the default handler for room pill conversion.
room_pill_to_fstring.event_id property of MatrixURIs throwing an error
(instead of returning None) when the parsed link didn't contain a second
part with an event ID.Bumped minimum yarl version to 1.5. v1.4 and below didn't allow URL.build() with a scheme but no host, which is used in the matrix: URI generator that
URL.build()
with a scheme but no host, which is used in the matrix: URI generator that
was added in v0.14.3.group_id to user namespaces in
registration files.Serializable.parse_json type hint to allow bytes in
addition to str (because json.loads allows both).retry_num parameter to User.send_remote_checkpoint.*(types)* Added MatrixURI type to parse and build matrix: URIs and https://matrix.to URLs.
MatrixURI type to parse and build matrix: URIs and
https://matrix.to URLs.matrix: URIs are now supported in incoming messages
(using the new parser mentioned above).pre elements is now compressed into
a single space. Newlines are also replaced with a space instead of removed
completely. Whitespace after a block element is removed completely.-).ConfigUpdateHelper.copy to ignore comments if the
entity being copied is a commentable yaml object (e.g. map or list).*(appservice)* Fixed IntentAPI throwing an error when redact was called with a reason, but without extra_content.
IntentAPI throwing an error when redact was called
with a reason, but without extra_content.*(util.ffmpeg)* Added simple utility module that wraps ffmpeg and tempfiles to convert audio/video files to different formats, primarily intended for
$PATH.Breaking change *(mautrix.util.formatter)* Made MatrixParser async and non-static.
MatrixParser async
and non-static.
describe method for OlmSessions.$<number> with ?<number>).executemany in Database and
aiosqlite TxnConnection.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Fixed type hints in the mautrix.crypto.store module.
mautrix.crypto.store module.Switched message double puppet indicator convention from "net.maunium. .puppet": true to "fi.mau.double_puppet_source": " ".
"net.maunium.<bridge_type>.puppet": true to "fi.mau.double_puppet_source": "<bridge_type>".IntentAPI.redact.Changed lack of media encryption dependencies (pycryptodome) to be a fatal error like lack of normal encryption dependencies (olm) are in v0.13.0.
Removed deprecated ClientAPI.parse_mxid method (use ClientAPI.parse_user_id instead).
power_level_override parameter to ClientAPI.create_room.delete-portal and unbridge commands for bridgesClientAPI.send_text to parse the HTML to generate a plaintext body
instead of using the HTML directly when a separate plaintext body is not
provided (also affects send_notice and send_emote).StoreUpdatingAPI not updating the local state store when using
friendly membership methods like kick_user.ClientAPI.parse_mxid method
(use ClientAPI.parse_user_id instead).ClientAPI.get_room_alias to ClientAPI.resolve_room_alias.Nothing published for this version
Added wrapper for [MSC2716]'s /batch_send endpoint in IntentAPI.
*(util.formatter)* Added support for parsing Matrix HTML colors.
Added autogenerated docs with Sphinx.
get_members being broken on asyncpg (broken in 0.12.2).get_members_filtered not taking the memberships parameter into
account in the memory store.Added more control over which membership states to return in client state store.
OlmMachine.account property not being defined before calling load.Added default (empty) value for unsigned in the event classes.
unsigned in the event classes.PgStateStore in the client module to fully implement the crypto
StateStore abstract class.
PgCryptoStateStore that combines the client
PgStateStore with the abstract crypto state store.Breaking change (client): The whoami method now returns a dataclass with user_id and device_id fields, instead of just returning the user_id as a stri…
whoami method now returns a dataclass
with user_id and device_id fields, instead of just returning the
user_id as a string.delete method for crypto stores (useful when changing the device ID).DECRYPTED step for message send checkpoints.Improved default event filter in bridges
allow_matrix_event instead of
filter_matrix_event and the return value is reversed.Updated registering appservice ghosts to use inhibit_login flag to prevent lots of unnecessary access tokens from being created.
inhibit_login flag to prevent
lots of unnecessary access tokens from being created.
Updated message send checkpoint system to handle all cases where messages are dropped or consumed by mautrix-python.
Fixed regression in Python 3.8 support in v0.11.0 due to asyncio.Queue type hinting.
asyncio.Queue type hinting.This includes some minor breaking changes to the asyncpg interface.
startup_actions
(thanks to @Half-Shot in #63).STARTING bridge state on startup by [@sumnerevans].Added support for custom bridge bot welcome messages (thanks to [@justinbot] in [#58]).
Added support for disabling bridge management commands based on custom rules (thanks to [@tadzik] in [#56]).
Changed remove_room_alias to ignore M_NOT_FOUND errors by default, to preserve Synapse behavior on spec-compliant server implementations. The raise_40
remove_room_alias to ignore M_NOT_FOUND errors by default, to
preserve Synapse behavior on spec-compliant server implementations.
The raise_404 argument can be set to True to not suppress the errors.UNCONFIGURED as a global state event.Breaking change (serialization): Removed Generic[T] backwards compatibility from SerializableAttrs (announced in v0.9.6).
Generic[T] backwards
compatibility from SerializableAttrs (announced in v0.9.6).self.log in Program config load errors as the logger won't
be initialized yet.remove_event_handler throwing a KeyError if no event handlers had
been registered for the specified event type.Your coding agent can read these notes before it upgrades. Set up the MCP server →