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.
- Add support for post-quantum session keys (#179)
- Add
Manager::clear_thread
to erase a conversation thread (#157) - Add
Manager::thread_title
to get the title of a conversation thread (1-1, group, etc.) (#157) - Add
ReceivingMode
toManager::receive_messages
to be able to run an initial sync like Signal-Desktop (#202) - Verify sha256 checksum after downloading attachments (#224)
- Add functions to retrieve avatars (#234)
- Add support for stickers and sticker packs (#178)
- Fix loading state store created with
0.5.1
(#169) - Stop incoming message loop from stopping in some cases (#172)
- Fix a lot of issues related to (re)connecting to websockets (#177, #203, #222, #226)
- Fix
presage-cli
argument parsing (#182) - Trust new identities by default (like the official clients do) (#206)
- Send own profile key in protobuf messages (#208)
- Fix outgoing messages stored in the wrong conversation thread (#216)
- Fix linking as secondary device (#221)
- Drop kyber keys on relinking and fix various related errors (#223, #225)
- Fix expire timer being turned off (#226)
- Avoid dropping database when it cannot be opend (#236)
- Store decrypted groups (avoiding wasting CPU resources) (#161)
- Split code into multiple modules for eased maintenance (#205)
- Upsert contact information when seeing a contact for the first time (#211)
- Set registration for PNI (phone-number identity) which will be fully implemented later. (#164)
- Fix synchronization issue in the
sled
store implementation which could lead to corrupted sessions. (#162) - Don't reuse websocket when sending unidentified messages. (#165)
- Fix fetching groups v2 metadata. (#164)
Manager::load_registered
is now an async method (small breaking change, sorry!). (#164)
Note: this release splits the project into multiple crates, to prepare for adding concurrent store implementations.
While this might seem like a breaking change, the API has not been altered and your Cargo.toml
should now look like:
[dependencies]
presage = { git = "https://github.com/whisperfish/presage" }
presage-store-sled = { git = "https://github.com/whisperfish/presage" }
and then get the store implementation from the store crate instead when importing it like use presage_store_sled::SledStore;
.
- Add
Manager::submit_recaptcha_challenge
. (#143) - Cache profile API responses. (#134)
- Add
is_registered
method to the store trait. (#156)
- Fix sending with example CLI. (#140)
- Fix sending with example CLI. (#140)
- Fix sending duplicate messages to group for other clients (like Signal Desktop). (#142)
- Fix storing of outgoing messages. (#144)
- Handle message deletion sent by contacts. (#147)
- Split
presage
into multiple crates, before introducing additional store implementations. (#148) - Messages are now sent, whenever possible (which should be all the time), as sealed sender. [#159]
- Split project into multiple crates. (#148)
- Group storage: group metadata is now stored in a local cache, to avoid issuing an API call whenever group details need to be looked up. (#88)
- Optional desktop notifications in CLI. (#85)
- Add function to clear messages only. (#115)
- Fix get contact by ID method. (#91)
- Fix the key used when storing messages. (#111)
- Fix unlink when clearing store. (#112)
- Improve sending messages speed by updating
libsignal-service-rs
and using its websocket in duplex mode (#92). Because of this change, polling on the stream returned byManager::receive_messages
is now required to send messages. - Only
DataMessage
that are sent, received, or sent from another device are saved in the local store (#137). - Changed (and fixed) the behaviour of the iterator returned by
SledStore::messages
(#119)- The iterator yields elements in chronological order (used to be reversed).
- The iterator now implements
DoubleEndedIterator
which means you it can be reversed or consumed from the end. - The method now accepts the full range syntax, like
0..=1678295210
or..
for all messages.
- Wait for contacts sync to be received and processed when linking as secondary device. (#106)
- Encrypt registration data (when store encryption is enabled). (#114)