All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.2.0 - 15th of October, 2024
- Slightly improved logging for less spam and more clarity
- Drop support for Python3.8, add support for Python3.13, bump PyPy test version to 3.10
- Internal housekeeping, mostly related to pylint
1.1.0 - 28th of September, 2024
- No changes; the last release should have been a new minor version.
1.0.5 - 25th of September, 2024
- A new method
refresh_device_lists
that callsrefresh_device_list
for all loaded backends.
1.0.4 - 14th of July, 2024
- Attempt to fix a storage data inconsistency where namespace support is stored for a device but activity information is not
1.0.3 - 9th of July, 2024
- Removed unnecessary complexity/flexibility by returning
None
instead ofAny
from abstract methods whose return values are not used - The bundle publishing logic in the signed pre key rotation did not correctly double the retry delay
- Log message improvements
- 2024 maintenance (bumped Python versions, adjusted for updates to pydantic, mypy, pylint, pytest and GitHub actions)
- Fixed a bug where a modified bundle might not be uploaded correctly
1.0.2 - 4th of November, 2022
- A new exception
BundleNotFound
, raised by_download_bundle
, to allow differentiation between technical bundle download failures and the simple absence of a bundle
- A small change in the package detection in setup.py led to a broken PyPI package
- Improved download failure exception semantics and removed incorrect raises annotations
1.0.1 - 3rd of November, 2022
- Python 3.11 to the list of supported versions
1.0.0 - 1st of November, 2022
- Complete rewrite of the library (and dependencies) to use asynchronous and (strictly) typed Python 3.
- Support for different versions of XEP-0384 via separate backend packages.
- Mostly following Keep a Changelog now (except for the date format).
0.14.0 - 12th of March, 2022
- Adjusted signature of the
SessionManager.encryptRatchetForwardingMessage
method to accept exactly one bare JID + device id pair - Updated the license in the setup.py, which was desync with the LICENSE file
- Adjusted the copyright year
- Removed Python 3.4 from the list of supported Python versions
- Removed some mentions of Python 2 from the README
0.13.0 - 15th of December 2021
- Added a method to retrieve the receiving chain length of a single session form the
SessionManager
- The storage interface has been modified to use asyncio coroutines instead of callbacks.
- All methods of the session manager that returned promises previously have been replaced with equivalent asyncio coroutines.
- Dropped Python 2 support and removed a bit of Python 2 compatibility clutter
- Removed synchronous APIs
- Removed thread-based promise implementation in favor of asyncio futures and coroutines
0.12.0 - 28th of March, 2020
- The
JSONFileStorage
now encodes JIDs using hashes, to avoid various issues regarding the file system. WARNING, THERE ARE KNOWN ISSUES WITH THIS VERSION OF THE STORAGE IMPLEMENTATION. - Sending 12 byte IVs instead of 16 now.
SessionManager.encryptKeyTransportMessage
now receives the optional plaintext as a parameter directly, instead of using a callback to encrypt external data. If the plaintext is omitted, a shared secret is returned that can be used for purposes external to this library.- Switched to MIT license with the agreement of all contributors!
- Fixed the way key transport messages are sent and received to be compatible with other implementations.
0.11.0 - 13th of December, 2019
- Added a new method
resetTrust
, which allows going back to the trust levelundecided
.
- Merged the
trust
anddistrust
methods intosetTrust
. Storage.storeTrust
must now be able to handle the valueNone
for thetrust
parameter.
- Removed the
SessionManagerAsyncIO
, in preparation for the big Python 3 update coming soon™.
- Fixed a bug in the
SessionManager
, where the contents of a parameter (passed by reference) were modified.
0.10.5 - 21st of July, 2019
- Fixed two bugs in the
JSONFileStorage
implementation. - Fixed a type issue in the
__str__
of theTrustException
. - Fixed a rare bug where sessions uncapable of encrypting messages would be stored.
0.10.4 - 1st of February, 2019
- Added an implementation of the storage using a simple directory structure and JSON files.
RatchetForwardingMessages
do not require the recipient to be trusted any more, as they contain no user-generated content. See #22 for information.- Renamed
UntrustedException
toTrustException
and added a fourth fieldproblem
to get the type of problem (untrusted vs. undecided).
0.10.3 - 29th of December, 2018
- Added a method for requesting trust information from the storage at bulk. This can be overridden for better performance.
- Added a method for requesting sessions from the storage at bulk. This can be overridden for better performance.
- Added a public method to delete an existing session. This is useful to recover from broken sessions.
- Added a public method to retrieve a list of all managed JIDs.
- Added a stresstest, mostly to test recursion depth.
- Turned the changelog upside-down, so that the first entry is the newest.
- Modified
no_coroutine
in the promise lib to use a loop instead of recursion. - Modified the promise constructor to run promises in threads.
0.10.2 - 29th of December, 2018
- Added methods to retrieve trust information from the
SessionManager
:getTrustForDevice
andgetTrustForJID
.
- Introduced an exception hierarchy to allow for more fine-grained exception catching and type checking.
- Most exceptions now implement
__str__
to generate human-readable messages.
- Fixed a bug that tried to instantiate an object of the wrong class from serialized data.
0.10.1 - 27th of December, 2018
- Added CHANGELOG.
- Upon serialization the current library version is added to the serialized structures, to allow for seamless updates in the future.