diff --git a/CHANGELOG.md b/CHANGELOG.md index 996b8ec1e..9eeb18a6f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,88 @@ # Changelog +## [2.61.0] - 2026-09-21 + +### API-Changes + +- add `init_transports()` for multi-relay onboarding. +- add JSON-RPC API `is_sending_finished()`. +- [**breaking**] remove verification methods from the FFI and JSON-RPC APIs. + - `dc_contact_is_verified()` and `dc_contact_get_verifier_id()` are removed. + - the JSON-RPC Contact object loses the `isVerified` and `verifierId` fields. A bot reading `snapshot.is_verified` now gets an `AttributeError` at runtime. + - the Python bindings lose `Contact.is_verified()` and `Contact.get_verifier()`. + - `DC_STR_CONTACT_VERIFIED` (35) is removed, so UIs should stop registering a translation for it. A stock id core does not know is logged and otherwise ignored, so an un-updated client keeps working. +- [**breaking**] remove default value for "addr" config. +- [**breaking**] remove `addr` field from Account objects in JSON-RPC APIs. + - `list_transports()` should be used instead. +- [**breaking**] remove `is_chatmail` and the XCHATMAIL capability. + - `is_chatmail` is no longer a known config key. +- [**breaking**] remove `Contact.get_name_n_addr()` and related APIs. + - `dc_contact_get_name_n_addr()` CFFI is removed + - JSON-RPC contact objects don't have nameAndAddr field anymore +- [**breaking**] replace `was_seen_recently` by `freshness` in contact object. + - use contact's `freshness` instead of `seen_recently` + +### Fixes + +- always emit `AccountsBackgroundFetchDone`. +- make `background_fetch` not wait on or trigger SMTP connections. +- do not send a sync message when changing `configured_addr`. +- emit `SmtpMessageSent` event after deleting the message from SMTP queue. +- don't use extra STUN nine server for fallback. +- use `max_smtp_rcpt_to` chunking for the actual transport we are sending from. +- use correct `From` address when sending MDNs. +- use correct address for Bcc-self in unencrypted mails. +- don't emit configure progress events during background relay additions. + +### Features / Changes + +- better quality of image recoding ([#8682](https://github.com/chatmail/core/pull/8682)). +- perform background fetch from all transports. +- queue messages for SMTP before encryption. +- [**breaking**] stop tracking contact verification. + - the statistics JSON sent to the self-reporting-bot on Android changes: Contacts have `encrypted` instead of `verified` and lose `transitive_chain` properties and message stats have `encrypted` instead of `verified` and `unverified_encrypted`, and securejoin invites lose `already_verified`. The collecting bot stores incoming reports verbatim but analysis will have to make sense of older and newer reports. +- remove last usage of XDELTAPUSH capability. +- base server-side message deletion on `force_encryption`. +- do not restart I/O when setting `configured_addr`. +- do not use ConfiguredAddr when connecting to SMTP. +- mark autorelays for relay operators ([#8701](https://github.com/chatmail/core/pull/8701)). +- try fasted relays to attempt first configure on. +- do not mark message as failed for which we got a read receipt before. +- a single NDN does not mark a group message as failed. + +### Documentation + +- update `sys.msgsize_max_recommended` documentation. +- add hint about how to reset an invitation ([#8160](https://github.com/chatmail/core/pull/8160)). +- mention `get_app_version()` API in the changelog for 2.59.0. +- remove `protect_autocrypt` setting. + +### Miscellaneous Tasks + +- cleanup "primary" wording in comments. +- update rustls to 0.23.45. +- fix nightly "cargo" warnings. +- fix some types in `deltachat_rpc_client`. + +### Refactor + +- add `Encryption.is_encrypted()`. +- separate QueuedEncryption. +- sql: disable double-quoted string literals. +- add smtp::queue module. +- substitute configure progress macro with simple function call. + +### Tests + +- cleanup `get_smtp_rows_for_msg()`. +- cross-core securejoin invites for every chat type. +- explicitly empty url in appversion updates ([#8702](https://github.com/chatmail/core/pull/8702)). +- do not talk about "inconsistent key state" in `test_securejoin_after_contact_resetup`. +- rename `test_aeap_transition_{0,1}` to `test_aeap_transition_{single,group}`. +- do not fetch all messages when `direct_imap` is created. +- `direct_imap`: always pass `mark_seen=False` to fetch(). +- add pseudo transport explicitly rather than by setting ConfiguredAddr. + ## [2.60.0] - 2026-09-11 ### API-Changes @@ -8794,3 +8877,4 @@ https://github.com/chatmail/core/pulls?q=is%3Apr+is%3Aclosed [2.58.0]: https://github.com/chatmail/core/compare/v2.57.0..v2.58.0 [2.59.0]: https://github.com/chatmail/core/compare/v2.58.0..v2.59.0 [2.60.0]: https://github.com/chatmail/core/compare/v2.59.0..v2.60.0 +[2.61.0]: https://github.com/chatmail/core/compare/v2.60.0..v2.61.0 diff --git a/Cargo.lock b/Cargo.lock index b4b778a3e..367983a38 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1327,7 +1327,7 @@ dependencies = [ [[package]] name = "deltachat" -version = "2.61.0-dev" +version = "2.61.0" dependencies = [ "anyhow", "astral-tokio-tar", @@ -1435,7 +1435,7 @@ dependencies = [ [[package]] name = "deltachat-jsonrpc" -version = "2.61.0-dev" +version = "2.61.0" dependencies = [ "anyhow", "async-channel 2.5.0", @@ -1456,14 +1456,14 @@ dependencies = [ [[package]] name = "deltachat-jsonrpc-bindings" -version = "2.61.0-dev" +version = "2.61.0" dependencies = [ "deltachat-jsonrpc", ] [[package]] name = "deltachat-repl" -version = "2.61.0-dev" +version = "2.61.0" dependencies = [ "anyhow", "deltachat", @@ -1479,7 +1479,7 @@ dependencies = [ [[package]] name = "deltachat-rpc-server" -version = "2.61.0-dev" +version = "2.61.0" dependencies = [ "anyhow", "deltachat", @@ -1508,7 +1508,7 @@ dependencies = [ [[package]] name = "deltachat_ffi" -version = "2.61.0-dev" +version = "2.61.0" dependencies = [ "anyhow", "deltachat", diff --git a/Cargo.toml b/Cargo.toml index 2f563f3b1..c8c12ebf4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "deltachat" -version = "2.61.0-dev" +version = "2.61.0" edition = "2024" license = "MPL-2.0" rust-version = "1.89" diff --git a/deltachat-ffi/Cargo.toml b/deltachat-ffi/Cargo.toml index 24b7d531a..26dbcbe0a 100644 --- a/deltachat-ffi/Cargo.toml +++ b/deltachat-ffi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "deltachat_ffi" -version = "2.61.0-dev" +version = "2.61.0" description = "Deltachat FFI" edition = "2024" license = "MPL-2.0" diff --git a/deltachat-jsonrpc-bindings/Cargo.toml b/deltachat-jsonrpc-bindings/Cargo.toml index 72f1f94b4..a5953fa50 100644 --- a/deltachat-jsonrpc-bindings/Cargo.toml +++ b/deltachat-jsonrpc-bindings/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "deltachat-jsonrpc-bindings" -version = "2.61.0-dev" +version = "2.61.0" description = "Autogenerate DeltaChat JSON-RPC API bindings at build time" edition = "2024" license = "MPL-2.0" diff --git a/deltachat-jsonrpc-bindings/typescript/package.json b/deltachat-jsonrpc-bindings/typescript/package.json index 1fc352df4..fef8e71ca 100644 --- a/deltachat-jsonrpc-bindings/typescript/package.json +++ b/deltachat-jsonrpc-bindings/typescript/package.json @@ -54,5 +54,5 @@ }, "type": "module", "types": "dist/deltachat.d.ts", - "version": "2.61.0-dev" + "version": "2.61.0" } diff --git a/deltachat-jsonrpc/Cargo.toml b/deltachat-jsonrpc/Cargo.toml index ed3ef132d..5ed421115 100644 --- a/deltachat-jsonrpc/Cargo.toml +++ b/deltachat-jsonrpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "deltachat-jsonrpc" -version = "2.61.0-dev" +version = "2.61.0" description = "DeltaChat JSON-RPC API" edition = "2024" license = "MPL-2.0" diff --git a/deltachat-repl/Cargo.toml b/deltachat-repl/Cargo.toml index 10e69a6b1..74673e21c 100644 --- a/deltachat-repl/Cargo.toml +++ b/deltachat-repl/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "deltachat-repl" -version = "2.61.0-dev" +version = "2.61.0" license = "MPL-2.0" edition = "2024" repository = "https://github.com/chatmail/core" diff --git a/deltachat-rpc-client/pyproject.toml b/deltachat-rpc-client/pyproject.toml index 6c4ec5c91..751f1819f 100644 --- a/deltachat-rpc-client/pyproject.toml +++ b/deltachat-rpc-client/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "deltachat-rpc-client" -version = "2.61.0-dev" +version = "2.61.0" license = "MPL-2.0" description = "Python client for Delta Chat core JSON-RPC interface" classifiers = [ diff --git a/deltachat-rpc-server/Cargo.toml b/deltachat-rpc-server/Cargo.toml index dce6feb41..e679cd9f4 100644 --- a/deltachat-rpc-server/Cargo.toml +++ b/deltachat-rpc-server/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "deltachat-rpc-server" -version = "2.61.0-dev" +version = "2.61.0" description = "DeltaChat JSON-RPC server" edition = "2024" license = "MPL-2.0" diff --git a/deltachat-rpc-server/npm-package/package.json b/deltachat-rpc-server/npm-package/package.json index ade37bbef..30d3b71cb 100644 --- a/deltachat-rpc-server/npm-package/package.json +++ b/deltachat-rpc-server/npm-package/package.json @@ -15,5 +15,5 @@ }, "type": "module", "types": "index.d.ts", - "version": "2.61.0-dev" + "version": "2.61.0" } diff --git a/python/pyproject.toml b/python/pyproject.toml index 65a357d9b..e7e8b0366 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "deltachat" -version = "2.61.0-dev" +version = "2.61.0" license = "MPL-2.0" description = "Python bindings for the Delta Chat Core library using CFFI against the Rust-implemented libdeltachat" readme = "README.rst" diff --git a/release-date.in b/release-date.in index 3969d88d4..d4cf1c83f 100644 --- a/release-date.in +++ b/release-date.in @@ -1 +1 @@ -2026-09-11 \ No newline at end of file +2026-09-21 \ No newline at end of file