All notable changes to this project will be documented in this file.
- [#522] Replace m2r2 with sphinx_mdinclude
- [#516] Improve dependency resolution + tidy up dependencies
- [#520] Use authenticated media + Authorization header
- This restores support for use on the popular matrix.org homeserver, which has recently disabled unauthenticated media access.
- Your homeserver MUST be compliant with matrix
v1.11
.
- Fix
pytest-asyncio
warning during unit tests
- [#449] Aggregated Event Relations + Threading + Threaded/Private Read Receipts
- [#489] Compliance with MSC2844. BREAKING CHANGE.
- [#490] Moved callback execution to separate methods.
- [#499] Add stop_sync_forever method, to gracefully exit sync_forever loop.
- [#471] Changing room_messages to conform to MSC3567
- [#482] [#483] [#486] Spec-compliant bugfixes for joined_member, e2ee, RoomContext
- [#495] remove creator property from event
- [#498] Properly pass JSON content to DownloadResponse
- [#508] Add room_read_markers type hints
- Tagged releases will automatically be published to PyPI
- Many dependency bumps
- [#473] Update pre-commit hooks, fix issues with sphinx-lint
- [#472] [#475] Add content to
built-with-nio
- [#468] Bump
aiohttp
from 3.8.6 to 3.9.0 - [#461] Support
python3.12
- [#478] Bump
pycryptodome
from 3.19.0 to 3.19.1
- [#460] Allow custom
ToDeviceEvent
s viaUnknownToDeviceEvent
- [#463] Remove callback execution boilerplate + allow arbitrary callable/awaitable objects
- [#457] Fix schemas for
m.room.avatar
andm.room.canonical_alias
- [#403] Propagate
asyncio.CancelledError
insync_forever
- [#451] Introduce the DM room account data (
m.direct
)
- [#458] Update the
nio-bot
description - [#462] Don't manually build
libolm
during tests +pre-commit autoupdate
- [#464] Bump
aiohttp
from 3.8.5 to 3.8.6
- [#453] Fix
ImportError
from when e2e is not installed
- [#434] Fix space handling to account for Matrix spec ambiguities.
- [#426] Add a simple streamed response to download to files
- [#436] Add get space hierarchy capability
- [#437] Support for Token-Authenticated Registration
- [#330] Add
room_type
toroom_create
API function to allow for custom room types - [#351] Add support for
m.reaction
events (Closes [#174])
- [#427], [#446] Add
.readthedocs.yaml
v2 to support ReadTheDocs migration - [#440] Remove
future
dependency - [#438] Fix
jsonschema
deprecations - [#439] Replace
cgi.parse_header()
- [#441] Run
pre-commit autoupdate
to fix deprecation - [#442] Introduce
ruff
as apre-commit
hook + run on whole codebase - [#445] Update
pre-commit
hooks - [#447] Replace ALL type comments with type hints
- [#448] Add
pyupgrade
,async
, variousflake8
,Perflint
, and moreruff
linting rules
- [#422]
async_client.whoami
will alter the state ofasync_client
correctly, and accept all spec-compliant fields.
- [#420] Add
python3.8
tests to workflow.
- [#416] Drop support for end-of-life
python3.7
- [#413] Drop usage of
logbook
in favor of standard librarylogging
- This fixes an issue where logging was effectively disabled by default.
- [#409] Support m.space.parent and m.space.child events
- [#418] Add ability to knock on a room, and enable knocking for a room
- Add documentation on how to configure
logging
- Note in
README
that room upgrades/tombstone events are supported
- [#401] Removing skip for passing test
- [#417] Add type hints
- [#406] [#407] [#414] Add content to
built-with-nio
- Upgrade dependencies
- Various test, formatting, type hinting fixes
- Update GitHub Workflow Actions versions for CI
- [#384] Add content to
built-with-nio
- [#335] Default to the configured request timeout when syncing
- [#354] Fix
first_sync_filter
parameter ofAsyncClient.sync_forever
- [#357] Element exports keys without required fields
- [#396] Fix
timeline->limited
being required
- Fix Python 3.11 compatibility
- Fix import sequence errors.
- Exclude
tests/data/
from pre-commit workflow. - Only accept forwarded room keys from our own trusted devices
- Mention that room key backups are unsupported.
- Add matrix-webhook to built-with-nio
- Add matrix-asgi to built-with-nio
- Add
mxc
URI parameter toAsyncClient.download
and deprecateserver_name
andmedia_id
.
- Remove the usage of the imp module
- Fix our import order
- Fix a bunch of typos
- Remove key re-sharing
- Remove some unnecessary test code
- Add poetry to the test requirements
- Style fixes
- Sort our imports
- Clean up and make a bunch of tests more consistent
- Add config for
pre-commit
. - Fix formatting using
black
andisort
. - Convert from
str.format
to f-strings.
- Update test for
AsyncClient.download
. - Fix our async tests
- Add
black
andisort
.
- [#296] Allow creating spaces
- [#293] Add special check for "room_id" in PushEventMatch
- [#291] Send empty object with m.read receipt
- [#288] Update aiohttp-socks dependency
- [#286] Fix type annotation for async callbacks in add_event_callback
- [#285] Remove chain_index field when sending room keys
- [#281] Add support for room upgrades
- [#277] Allow setting custom headers with the client.
- [#276] Allow logging in using an email.
- [#273] Use the correct json format for login requests.
- [#272] Allow the mimetype to be in the info for encrypted images
- [1f17a20] Fix errors due to missing keys in syncs
- [#265] Fix parsing syncs missing invite/join/leave rooms
- [#264] Allow for devices in keys query that have no signatures
- [#261] Use the IV as is when decrypting attachments
- [#260] Always load the crypto data, even if a new account was made
- [#258] Fix sticker event parsing
- [#256] Upgrade our dependencies
- [#255] Relax the sync response json schema
- [#253] Support the BytesIO type for uploads
- [#252] Add a sticker events type
- [#228] Add support for global account data
- [#222] Add support for push rules events and API
- [#233] Treat
device_lists
inSyncResponse
as optional - [#239] Add support for authenticated
/profile
requests - [#246] Add support for SOCKS5 proxies
- [#235] Expose the whoami API endpoint in the AsyncClient.
- [#233] Treat device lists as optional in the Sync response class.
- [#228] Add support for account data in the AsyncClient.
- [#223] Percent encode user IDs when they appear in an URL.
- [#220] Copy the unencrypted
m.relates_to
part of an encrypted event into the decrypted event.
- [#216]
AsyncClient.room_get_state_event()
: return aRoomGetStateEventError
if the server returns a 404 error for the request - [ffc4228] When fetching the full list of room members, discard the members we previously had that are absent from the full list
- [c123e24]
MatrixRoom.members_synced
: instead of depending on the potentially outdated room summary member count, becomeTrue
when the full member list has been fetched for the room.
- [#194] Add server discovery info (.well-known API) support to AsyncClient
- [#206] Add support for uploading sync filters to AsyncClient
- New examples and documentation improvements
- [#206] Fix
AsyncClient.room_messages()
to not accept filter IDs, using one results in a server error - [4b6ea92] Fix the
SqliteMemoryStore
constructor - [4654c7a] Wait for current session sharing operation to finish before starting a new one
- [fc9f5e3] Fix
OverflowError
occurring inAsyncClient.get_timeout_retry_wait_time()
after a thousand retries
- [238b6ad] Fix the schema for the devices response.
- [#166] Add a method to restore the login with an access token.
- [#159] Allow whitespace in HTTP headers in the HttpClient.
- [42e70de] Fix the creation of PresenceGetError responses.
- [bf60bd1] Split out the bulk of the key verification events into a common module.
- [9a01396] Don't require the presence dict to be in the sync response.
- [cc789f6] Remove the PartialSyncResponse. This is a breaking change, but hopefully nobody used this.
- [#145] Added the
room_get_event()
method toAsyncClient
. - [#151] Added the
add_presence_callback
method to baseClient
. - [#151] Added the
get_presence()
andset_presence()
methods toAsyncClient
. - [#151] Added the
presence
,last_active_ago
,currently_active
andstatus_msg
attributes toMatrixUser
- [#152] Added a docker container with E2E dependencies pre-installed.
- [#153] Added the
add_room_account_data_callback
method to baseClient
. - [#153] Added the
fully_read_marker
andtags
attributes toMatrixRoom
. - [#156] Added the
update_receipt_marker()
method toAsyncClient
. - [#156] Added the
unread_notifications
andunread_highlights
attributes toMatrixRoom
.
- [#141] Improved the upload method to accept file objects directly.
- [#140] Added the
update_device()
method to theAsyncClient
. - [#143] Added the
login_info()
method to theAsyncClient
. - [c4f460f] Added support for the new SAS key agreement protocol.
- [#146] Fix room summary updates when new summary doesn't have any attributes.
- [#147] Added missing requirements to the test requirements file.
- Fixed support to run nio without python-olm.
- Fixed an incorrect raise in the group sessions sharing logic.
- Handle 429 errors correctly even if they don't contain a json response.
- Fix a wrong assertion resulting in errors when trying to send a message.
- Kick, ban, unban support to the AsyncClient.
- Read receipt sending support in the AsyncClient.
- Read receipt parsing and emitting.
- Support token login in the AsyncClient login method.
- Support for user registration in the BaseClient and AsyncClient.
- Support for ID based filters for the sync and room_messages methods.
- Support filter uploading.
- Convert attrs classes to dataclasses.
- Fire the
synced
asyncio event only in the sync forever loop.
- Don't encrypt reactions.
- Properly put event relationships into the unencrypted content.
- Catch Too Many Requests errors more reliably.
- Better room name calculation, now using the room summary.
- Removed the legacy store.