Commit Graph
100 Commits
Author SHA1 Message Date
link2xt 2131f5e9c0 fix: assign iroh gossip topic to pre-message when post-message is received
Iroh-Gossip-Topic is sent in a post-message. Post-message goes to trash,
so topic should be associated with the existing pre-message that is
updated rather than with the post-message.
2026-02-17 02:54:39 +00:00
link2xt de25eb90ff chore(cargo): update keccak from 0.1.5 to 0.1.6
0.1.5 is yanked and cargo-deny complains
2026-02-14 07:20:42 +00:00
link2xt c475882727 perf: use recv_direct() instead of recv() on the event channel
The difference between recv_direct()[1] and recv()[2]
is that recv() allocates memory for the future on the heap.
Using recv_direct() removes one pointer indirection.

[1] https://docs.rs/async-broadcast/0.7.2/async_broadcast/struct.Receiver.html#method.recv_direct
[2] https://docs.rs/async-broadcast/0.7.2/async_broadcast/struct.Receiver.html#method.recv
2026-02-10 01:32:40 +00:00
link2xt 166e259b18 chore: update fast-socks5 to version 1.0 2026-02-10 01:32:34 +00:00
link2xt cc38298163 refactor: enable clippy::manual_is_variant_and 2026-02-10 01:32:18 +00:00
link2xt 983f43c33c chore(release): prepare for 2.42.0 2026-02-10 00:37:13 +00:00
link2xt e78b509d0a chore: update rPGP from 0.18.0 to 0.19.0 2026-02-08 21:09:38 +00:00
link2xt 583979c6fc fix: set mvbox_move to '0' explicitly for existing chatmail profiles
Otherwise if the user for some reason has no `mvbox_move` config set,
they get a device message about `mvbox_move` deprecation.
2026-02-08 01:58:23 +00:00
link2xt 5bfd8dd517 feat: do not scan not watched folders 2026-02-08 01:57:10 +00:00
link2xt 32b0ca81f8 test: remove test_dont_show_emails
Existing test relies on folder scanning.
We are going to remove the option to not show emails
(<https://github.com/chatmail/core/issues/7631>)
so the test will be removed eventually anyway.
2026-02-08 01:57:10 +00:00
link2xt 5bb0b86f6a chore(release): prepare for 2.41.0 2026-02-06 00:39:03 +00:00
link2xt 396104af47 feat: do not require ShowEmails to be set to All for adding second relay 2026-02-05 19:12:08 +00:00
link2xt b72a677f4c chore(release): prepare for 2.40.0 2026-02-04 21:46:02 +00:00
link2xt 00e78eecf6 feat: add device message about legacy mvbox_move 2026-02-04 21:51:56 +01:00
link2xt 8b0621b724 test: set mvbox_move to 0 for test rust accounts 2026-02-04 21:51:56 +01:00
link2xt 3d409c37a1 chore: remove RUSTSEC-2026-0002 exception from deny.toml
It is an "unsound" advisory for a transitive dependency
and cargo-deny does not report them by default
since cargo-deny 0.19.0.
2026-02-03 21:25:41 +00:00
link2xt 633536bb13 fix: remove Config::DeleteToTrash and Config::ConfiguredTrashFolder
`delete_to_trash` is an option that was added for Gmail
as Gmail archives the messages by default
when they are deleted over IMAP:
<https://github.com/chatmail/core/issues/3957>
(implemented in <https://github.com/chatmail/core/pull/3972>).

Closes <https://github.com/chatmail/core/issues/6444>.
2026-02-03 18:31:55 +00:00
link2xt 94ee485155 chore: update provider database 2026-02-03 18:31:55 +00:00
link2xt ec0dc8bcad refactor: mark ProviderOptions as non_exhaustive
This prevents triggering clippy lint `needless_update`.
2026-02-03 18:31:55 +00:00
link2xt 378fb09c80 ci: make scripts/deny.sh test the locked version of dependencies 2026-02-03 17:25:42 +00:00
link2xt ff2fbebff0 chore(cargo): update bytes from 1.11.0 to 1.11.1
Fixes <https://rustsec.org/advisories/RUSTSEC-2026-0007>
2026-02-03 17:25:42 +00:00
link2xt 3b29469102 feat: do not load more than one own key 2026-01-30 09:48:38 +00:00
link2xt 6325a35b5b test: make test_dont_move_sync_msgs less flaky 2026-01-30 02:08:49 +00:00
link2xt 4fc0d0f53d refactor: remove unused Context.is_inbox() 2026-01-28 17:19:21 +00:00
link2xt 1bf24618fa feat: never create IMAP folders
Existing setups already have the folders created
and for new setups only INBOX should be used.
2026-01-28 14:55:51 +00:00
link2xt 3f98e45c29 chore: update provider database 2026-01-27 23:39:16 +00:00
link2xt 26ddcfaaed feat: do not collect email addresses from messages after configuration
This can only result in adding unencrypted email-contacts
and we do not want to encourage creating unencrypted chats.
2026-01-27 17:49:16 +00:00
link2xt baeb31b5fa chore(release): prepare for 2.39.0 2026-01-23 21:52:40 +00:00
link2xt 5d3bc00fd5 docs(RELEASE.md): add section about dealing with failed releases 2026-01-23 21:43:02 +00:00
link2xt 424928b660 docs(RELEASE.md): push preparation commit to the main branch before tagging 2026-01-23 21:43:02 +00:00
link2xt 9003b248aa chore: merge v2.38.0 into main branch
Release preparation commit was not pushed to main.
2026-01-23 09:09:59 +00:00
link2xt 35875f9b32 ci: update Rust to 1.93.0 2026-01-23 09:03:11 +00:00
link2xt 5ff323ce15 feat(pgp): use preferred hash algorithm for signing instead of hardcoded SHA256
There is no difference for RSA and Ed25519,
the only signing keys that we generate.
The both use SHA256:
<https://github.com/rpgp/rpgp/blob/7e3b6c0af21e4a45c2a2dcba67f0b649e0b6e456/src/types/params/public.rs#L231-L234>

The only difference is for the possible future PQC signing keys
and imported NIST P-512 and NIST P-384 keys.
2026-01-18 03:59:12 +00:00
link2xt 659d21aa9d docs: fix formatting of indoc! link 2026-01-17 14:40:17 +00:00
link2xt 8f604e74ec fix: do not resolve ICE server hostnames during IMAP loop
Hostname resolution may timeout if DNS servers are not responding.
It is also not necessary to resolve fallback ICE server hostnames
if the user is not going to use calls.
2026-01-17 12:55:21 +00:00
link2xt 13dafa46b5 fix: take transport_id into account when marking messages with \Seen flags
Otherwise wrong IMAP client corresponding to a different transport
may pick up the job to mark the message as seen there,
and fail to do it as the message does not exist.
It may also mark the wrong message with the correct folder
and UID, but wrong IMAP server.
2026-01-09 18:40:46 +00:00
link2xt 46bbe5f077 chore(release): prepare for 2.37.0 2026-01-08 20:45:33 +00:00
link2xt 7e811469b3 api: add who_can_call_me config option 2026-01-07 22:00:54 +00:00
link2xt cdacad235e chore: update lru 0.12.3 to 0.12.5 and add RUSTSEC-2026-0002 exception
Closes https://github.com/chatmail/core/issues/7692
2026-01-07 20:18:32 +00:00
link2xt c766397abc test: regression test for vc-request encrypted by the server 2026-01-07 15:47:16 +00:00
link2xt 14a59afd5d fix: do not rely on Secure-Join header to detect {vc,vg}-request 2026-01-07 15:47:16 +00:00
link2xt 8d6f4b0354 chore(release): prepare for 2.36.0 2026-01-03 18:39:16 +00:00
link2xt 284469363e docs: remove references to sentbox_watch config
This config was already removed in 2.23.0.
2026-01-03 13:40:24 +00:00
link2xt 0d2f2b3266 refactor(ffi): remove one pointer indirection for dc_accounts_t
Arc can be converted directly to raw pointers,
so there is no need to create a pointer to Arc
using a Box.
2026-01-01 15:34:55 +00:00
link2xt 25750de4e1 feat: send sync messages over SMTP and do not move them to mvbox 2025-12-26 10:58:33 +00:00
link2xt a89ce8ce7a docs: update documentation for TransportsModified event
It is a follow-up to https://github.com/chatmail/core/pull/7643
Event is not emitted when the transports are modified on this device
and we should consistently say that this event is not only for testing.
2025-12-25 11:16:36 +00:00
link2xt 184736723f fix: reset options not available for chatmail on chatmail profiles 2025-12-24 03:23:23 +00:00
link2xt fd90493766 feat: add core version to receive_imf failure message 2025-12-18 14:44:49 +00:00
link2xt b1883c802b refactor: turn DC_VERSION_STR into &str 2025-12-18 14:44:49 +00:00
link2xt 71ee32b8b7 ci: pin GitHub Action references
Makes `zizmor` happy.
2025-12-18 14:43:27 +00:00
link2xt ddd4fc49a2 chore(release): prepare for 2.35.0 2025-12-16 22:22:20 +00:00
link2xt 7d5bedde4d fix: take transport_id into account when using imap table 2025-12-16 22:08:33 +00:00
link2xt 7ba4a43253 feat: add transport addresses to IMAP URLs in message info 2025-12-16 16:49:49 +00:00
link2xt d87d87f467 fix: do not set normalized name for existing chats and contacts in a migration
We got a report that application is not responding after update
on Android and getting killed before it can start,
suspected to be a slow SQL migration:
<https://github.com/chatmail/core/issues/7602>

This change removes calculation of normalized names for
existing chats and contacts added in
<https://github.com/chatmail/core/pull/7548>
to exclude the possibility of this migration being slow.
New chats and contacts will still get normalized names
and all chats and contacts will get it when they are renamed.
2025-12-12 15:44:51 +00:00
link2xt 121bfd1fa8 ci: update Rust to 1.92.0 2025-12-11 21:23:53 +00:00
link2xt 9e2a4325e9 chore: apply Rust 1.92.0 clippy suggestions 2025-12-11 21:23:53 +00:00
link2xt 4509c1bd06 chore: prepare 2.34.0 release 2025-12-11 16:28:55 +00:00
link2xt 99775458c4 test: test setting up second device between core versions 2025-12-10 22:51:17 +00:00
link2xt 58cd133b5c fix: synchronize primary transport immediately after changing it 2025-12-09 21:43:26 +00:00
link2xt 5902fe2cbe refactor: remove EncryptHelper.prefer_encrypt
It always had the same value of EncryptPreference::Mutual
2025-12-07 15:33:36 +00:00
link2xt 73e0f81e83 test: port test_synchronize_member_list_on_group_rejoin to JSON-RPC 2025-12-07 14:21:48 +00:00
link2xt cbe842735e api(rpc-client): add Chat.num_contacts() 2025-12-07 14:21:48 +00:00
link2xt 72bc9f0ae4 api(rpc-client): accept Account for Chat.{add,remove}_contact() 2025-12-07 14:21:48 +00:00
link2xt 0defa117a0 refactor: use u16 instead of usize to represent progress bar 2025-12-07 13:23:31 +00:00
link2xt 3821cfab0c fix: use u64 to count the number of bytes sent/received over the network
It is possible to send more than 4 GiB into network stream
or receive more than 4 GiB from it, in which case
this counter may overflow.
2025-12-07 13:23:31 +00:00
link2xt 09f159991e fix: use u64 to represent the number of bytes in backup files 2025-12-07 13:23:31 +00:00
link2xt 014d2ace76 fix: use u64 instead of usize to calculate storage usage
On 32-bit systems such as old Android phones usize is 32-bit as well
and cannot store sizes that exceed 4 GiB.
2025-12-06 13:01:46 +00:00
link2xt 646728372b chore: add RUSTSEC-2025-0134 exception to deny.toml 2025-12-06 12:56:16 +00:00
link2xt 7c30aef2ed chore(release): prepare for 2.33.0 2025-12-05 21:35:21 +00:00
link2xt c38d02728e fix: recognize all transport addresses as own addresses
Fix get_secondary_addrs() which was using
`secondary_addrs` config that is not updated anymore.
Instead of using `secondary_addrs` config,
use the `transports` table which contains all the addresses.
2025-12-05 21:15:30 +00:00
link2xt aa5ee19340 chore(release): prepare for 2.32.0 2025-12-04 21:00:59 +00:00
link2xt 952f6735a2 chore(release): prepare for 2.31.0 2025-12-04 19:28:31 +00:00
link2xt a50aa3b6e9 ci: update npm before publishing packages
Newer npm is apparently needed for "trusted publishing".
2025-12-04 19:26:25 +00:00
link2xt 23d95df66a feat: use v2 SEIPD when sending messages to self 2025-12-04 18:25:30 +00:00
link2xt 6db2cf6144 chore(release): prepare for 2.30.0 2025-12-04 17:01:28 +00:00
link2xt 47c1e54219 ci: use "trusted publishing" for NPM packages
See the documentation at <https://docs.npmjs.com/trusted-publishers>.
I have removed the token that was used since <https://github.com/chatmail/core/pull/5575>,
created two new GitHub deployment environments and configured
trusted publishing for two packages (see the environment URLs) on https://www.npmjs.com/
2025-12-04 15:40:28 +00:00
link2xt f7ae2abe52 feat: synchronize transports via sync messages 2025-12-04 14:40:36 +00:00
link2xt 3a7f82c66e api: add TransportsModified event 2025-12-04 14:40:36 +00:00
link2xt 12cee23924 chore(release): prepare for 2.29.0 2025-12-01 02:07:21 +00:00
link2xt 5fb118e5a3 refactor: make signing key non-optional for pk_encrypt 2025-12-01 01:16:01 +00:00
link2xt 1ec3f45dc1 refactor: use SYMMETRIC_KEY_ALGORITHM constant in symm_encrypt_message() 2025-12-01 01:16:01 +00:00
link2xt e4e19b57b3 ci: build Python wheels in separate jobs 2025-11-30 02:59:17 +00:00
link2xt 2efb128fec ci: do not build fake RPC server source packages
The source packages were needed for Android
to repack compatible Linux wheels,
but now Android is officially supported.
2025-11-30 02:59:17 +00:00
link2xt 4a5d5bdeb1 ci: do not install Python manually to bulid RPC server wheels
Python preinstalled in runners should be up to date by now.
2025-11-30 02:59:17 +00:00
link2xt cde4a61be7 ci: fix a typo in deltachat-rpc-server publishing workflow 2025-11-30 02:59:17 +00:00
link2xt dc5f939ac6 feat!: increase backup version from 3 to 4
Migration 140 merged in version 2.28.0
introduced `NOT NULL` transport_id
columns, so old versions of core not aware of it
fail e.g. when they expect conflict on `(folder)`
column rather than `(transport_id, folder)`.
2025-11-29 17:24:08 +00:00
link2xt 343dca87f7 fix: do not use deprecated ConfiguredProvider in get_configured_provider 2025-11-29 00:17:26 +00:00
link2xt 4d06f5a8ae fix: upload sync messages only with the primary transport
Currently there is a race between transports
to upload sync messages and delete them from `imap_send` table.
Sometimes mulitple transports upload the same message
and sometimes only some of them "win".
With this change only the primary transport
will upload the sync message.
2025-11-29 00:17:26 +00:00
link2xt a4bec7dc70 refactor: remove update_icons and disable_server_delete migrations 2025-11-29 00:17:26 +00:00
link2xt 1f32c5ab40 refactor: use ConfiguredProvider config directly when loading legacy settings 2025-11-29 00:17:26 +00:00
link2xt 43e8d5cc6c ci: unpin mypy 2025-11-29 00:16:58 +00:00
link2xt 7e4547582e fix: do not configure folders during transport configuration
We do not have transport ID assigned until configuration finishes,
so we cannot save UID validitiy for folders and write
into any tables that have transport_id column yet.
2025-11-29 00:05:29 +00:00
link2xt 721b9cebef build: pin mypy to 1.18.2
mypy depends on librt since 1.19.0
and it fails to build with PyPy 3.10.
2025-11-28 22:14:38 +00:00
link2xt 0d50d8703f build: use SPDX license expression in Python package metadata
License classifiers are replaced with `license`.
This is supported since `setuptools` v77.0.0:
<https://setuptools.pypa.io/en/stable/history.html#v77-0-0>

Without this change we get
`SetuptoolsDeprecationWarning: License classifiers are deprecated.`
with a reference to
<https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license>
2025-11-28 22:14:38 +00:00
link2xt 9aba299c75 build: increase minimum supported Python version to 3.10
Python 3.9 is not supported since 2025-10-31:
https://devguide.python.org/versions/

mypy just dropped support for Python 3.9:
<https://github.com/python/mypy/commit/1a6ff5904995c1d4c2ce0f0eab296475788fddf0>
2025-11-28 22:14:38 +00:00
link2xt 7bf7ec3d32 api(deltachat-rpc-client): add Message.exists() 2025-11-28 00:30:36 +00:00
link2xt 8a7498a9a8 fix: handle the case when account does not exist in get_existing_msg_ids()
If account is removed, this means the messages are removed as well.
We do not reuse account IDs, so the account will not reappear.
2025-11-28 00:30:36 +00:00
link2xt 38a547dfda build: make scripts for remote testing usable
This updates `scripts/remote_tests_{rust,python}.sh`.
The scripts were previously used to run tests
from CI on remote faster machine,
but they are still usable to run tests remotely
e.g. from a laptop that is on battery.
2025-11-26 17:12:25 +00:00
link2xt 7c998af973 ci: set timeout-minutes for all jobs in ci.yaml workflow
Default is 360 minutes, that is 6 hours.
If the job is running for more than 1 hour,
it is surely stuck, no need to keep running it.
2025-11-26 17:06:20 +00:00
link2xt 6b6ec2a4b7 fix: use the same webxdc ratelimit for all email servers
This removes another distinction between chatmail and non-chatmail
and fixes flaky tests/test_webxdc.py::test_webxdc

Closes <https://github.com/chatmail/core/issues/7522>
2025-11-26 00:47:43 +00:00