## v0.16.3 (2022-04-21)
* Changed `set_thread_parent` to have an explicit option for disabling the
thread-as-reply fallback.
## v0.16.2 (2022-04-21)
* Added `get_thread_parent` and `set_thread_parent` helper methods for `MessageEventContent`.
* Increased timeout for `MessageSendCheckpoint.send`.
## v0.16.1 (2022-04-17)
* **Breaking change** Removed `r0` path support.
* 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.
## v0.16.0 (2022-04-11)
* **Breaking change *(types)*** Removed custom `REPLY` relation type and
changed `RelatesTo` structure to match the actual event content.
* Applications using `content.get_reply_to()` and `content.set_reply()` will
keep working with no changes.
* *(types)* Added `THREAD` relation type and `is_falling_back` field to
`RelatesTo`.
## v0.15.8 (2022-04-08)
* *(client.api)* Added experimental prometheus metric for file upload speed.
* *(util.async_db)* Improved type hints for `UpgradeTable.register`
* *(util.async_db)* Changed connection string log to redact database password.
## v0.15.7 (2022-04-05)
* *(api)* Added `file_name` parameter to `HTTPAPI.get_download_url`.
## v0.15.6 (2022-03-30)
* *(types)* Fixed removing nested (i.e. malformed) reply fallbacks generated by
some clients.
* *(types)* Added automatic reply fallback trimming to `set_reply()` to prevent
accidentally creating nested reply fallbacks.
## v0.15.5 (2022-03-28)
* *(crypto)* Changed default behavior of OlmMachine to ignore instead of reject
key requests from other users.
* Fixed some type hints
## v0.15.3 & v0.15.4 (2022-03-25)
* *(client.api)* Fixed incorrect HTTP methods in async media uploads.
## v0.15.2 (2022-03-25)
* *(client.api)* Added support for async media uploads ([MSC2246]).
* Moved `async_getter_lock` decorator to `mautrix.util` (from `mautrix.bridge`).
* The old import path will keep working.
[MSC2246]: https://github.com/matrix-org/matrix-spec-proposals/pull/2246
## v0.15.1 (2022-03-23)
* *(types)* Added `ensure_has_html` method for `TextMessageEventContent` to
generate a HTML `formatted_body` from the plaintext `body` correctly (i.e.
escaping HTML and replacing newlines).
## v0.15.0 (2022-03-16)
* **Breaking change** Removed Python 3.7 support.
* **Breaking change *(api)*** Removed `r0` from default path builders in order
to update to `v3` and per-endpoint versioning.
* The client API modules have been updated to specify v3 in the paths, other
direct usage of `Path`, `ClientPath` and `MediaPath` will have to be
updated manually. `UnstableClientPath` no longer exists and should be
replaced with `Path.unstable`.
* There's a temporary hacky backwards-compatibility layer which replaces /v3
with /r0 if the server doesn't advertise support for Matrix v1.1 or higher.
It can be activated by calling the `.versions()` method in `ClientAPI`.
The bridge module calls that method automatically.
* **Breaking change *(util.formatter)*** Removed lxml-based HTML parser.
* The parsed data format is still compatible with lxml, so it is possible to
use lxml with `MatrixParser` by setting `lxml.html.fromstring` as the
`read_html` method.
* **Breaking change *(crypto)*** Moved `TrustState`, `DeviceIdentity`,
`OlmEventKeys` and `DecryptedOlmEvent` dataclasses from `crypto.types`
into `types.crypto`.
* **Breaking change *(bridge)*** Made `User.get_puppet` abstract and added new
abstract `User.get_portal_with` and `Portal.get_dm_puppet` methods.
* Added a redundant `__all__` to various `__init__.py` files to appease pyright.
* *(api)* Reduced aiohttp memory usage when uploading large files by making
an in-memory async iterable instead of passing the bytes directly.
* *(bridge)* Removed legacy community utilities.
* *(bridge)* Added support for creating DM portals with minimal bridge-specific code.
* *(util.async_db)* Fixed counting number of db upgrades.
* *(util.async_db)* Added support for schema migrations that jump versions.
* *(util.async_db)* Added system for preventing using the same database for
multiple programs.
* To enable it, provide an unique program name as the `owner_name` parameter
in `Database.create`.
* Additionally, if `ignore_foreign_tables` is set to `True`, it will check
for tables of some known software like Synapse and Dendrite.
* The `bridge` module enables both options by default.
* *(util.db)* Module deprecated. The async_db module is recommended. However,
the SQLAlchemy helpers will remain until maubot has switched to asyncpg.
* *(util.magic)* Allowed `bytearray` as an input type for the `mimetype` method.
* *(crypto.attachments)* Added method to encrypt a `bytearray` in-place to
avoid unnecessarily duplicating data in memory.
## v0.14.10 (2022-02-01)
* *(bridge)* Fixed accidentally broken Python 3.7 compatibility.
## v0.14.9 (2022-02-01)
* *(client.api)* Added `reason` field to `leave_room` and `invite_user` methods.
## v0.14.8 (2022-01-31)
* *(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.15.
* *(client.api)* Fixed `filter_json` parameter in `get_messages` not being sent
to the server correctly.
* *(bridge)* Added utilities for implementing disappearing messages.
## v0.14.7 (2022-01-29)
* *(client)* Fixed error inviting users with custom member event content if the
server had disabled fetching profiles.
* *(util.utf16_surrogate)* Added utilities for adding/removing unicode
surrogate pairs in strings.
* *(util.magic)* Added check to make sure the parameter to `mimetype()` is
either `bytes` or `str`.
## v0.14.6 (2022-01-26)
* **Breaking change *(util.message_send_checkpoint)*** Changed order of `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.async_db)* Changed the default size of the aiosqlite thread pool to 1,
as it doesn't reliably work with higher values.
* *(util.async_db)* Added logging for database queries that take a long time
(>1 second).
* *(client)* Added logging for sync requests that take a long time
(>40 seconds, with the timeout being 30 seconds).
* *(util.variation_selector)* Fixed variation selectors being incorrectly added
even if the emoji had a skin tone selector.
* *(bridge)* Fixed the process getting stuck if a config error caused the
bridge to stop itself without stopping the SQLite thread.
* Added pre-commit hooks to run black, isort and some other checks.
According to the author, this should now work with Python 3.9, so I'm removing
39 from PYTHON_VERSIONS_INCOMPATIBLE, as well as for all packages that had it
because they depend on mautrix-python.
v0.7.13
Extended session wait time when handling encrypted messages in bridges: it'll
now wait for 5 seconds, then send an error, then wait for 10 more seconds. If
the keys arrive in those 10 seconds, the message is bridged and the error is
redacted, otherwise the error is edited.
v0.7.12
No change log was released
0.7.2:
* Added bridge config option to pass custom arguments to SQLAlchemy's
create_engine
0.7.3:
* Added support for telling the user about decryption errors in bridge module
0.7.4:
* Made sender_device optional in decrypted olm events
* Added opt_prometheus utility for using prometheus as an optional dependency
* Added Matrix event time processing metric for bridges when prometheus is
installed
0.7.5:
* Added utility for measuring async method time in prometheus
0.7.6:
* Fixed bug where parsing invite fails if unsigned is not set or null
* Added trace logs when bridge module ignores messages
0.7.7:
* Added utility method for waiting for incoming group sessions in OlmMachine
* Made end-to-bridge encryption helper wait for incoming group sessions for 3
seconds
0.7.8:
* Made the UUID type de/serializable by default
0.7.9:
* Added parameter to change how long EncryptionManager.decrypt() should wait
for the megolm session to arrive
* Changed get_displayname and get_avatar_url to ignore M_NOT_FOUND errors
* Updated type hint of set_reply to allow EventIDs
0.7.10:
* Fixed deserializing the info object in media msgtypes into dataclasses
0.7.11:
No changes published.