Commit Graph
100 Commits
Author SHA1 Message Date
link2xt d39ed9d0f1 test: fix flaky test_send_receive_locations 2025-11-12 05:50:00 +00:00
link2xt 69a3a31554 chore(release): prepare for 2.26.0 2025-11-11 17:30:19 +00:00
link2xt 1cb0a25e16 fix: do not ignore I/O errors in BlobObject::store_from_base64 2025-11-08 20:06:45 +00:00
link2xt 2e9fd1c25d test: do not add QR inviter to groups right after scanning the code
The inviter may be not part of the group
by the time we scan the QR code.
2025-11-08 03:26:23 +00:00
link2xt 1b1a5f170e test: Bob has 0 members in the chat until securejoin finishes 2025-11-08 03:26:23 +00:00
link2xt 1946603be6 test: at the end of securejoin Bob has two members in a group chat 2025-11-08 03:26:23 +00:00
link2xt c43b622c23 test: move test_two_group_securejoins from receive_imf to securejoin module 2025-11-08 03:26:23 +00:00
link2xt 73bf6983b9 fix: do not add QR inviter to groups immediately
By the time you scan the QR code,
inviter may not be in the group already.
In this case securejoin protocol will never complete.
If you then join the group in some other way,
this results in you implicitly adding that inviter
to the group.
2025-11-08 03:26:23 +00:00
link2xt aaa0f8e245 fix: do not return an error from receive_imf if we fail to add a member because we are not in chat
This happens when we receive a vg-request-with-auth message
for a chat from which we have been removed already.
2025-11-08 03:26:23 +00:00
link2xt 5a1e0e8824 chore: rustfmt 2025-11-08 03:26:23 +00:00
link2xt cf5b145ce0 refactor: remove unused imports 2025-11-07 17:31:34 +00:00
link2xt dd11a0e29a refactor: replace imap:: calls in migration 73 with SQL queries 2025-11-07 07:12:08 +00:00
link2xt 3d86cb5953 test: remove ThreadPoolExecutor from test_wait_next_messages 2025-11-07 07:09:35 +00:00
link2xt 75eb94e44f docs: fix Context::set_stock_translation reference 2025-11-07 06:56:10 +00:00
link2xt 7fef812b1e refactor(imap): move resync request from Context to Imap
For multiple transports we will need to run
multiple IMAP clients in parallel.
UID validity change detected by one IMAP client
should not result in UID resync
for another IMAP client.
2025-11-06 19:16:30 +00:00
link2xt 5f174ceaf2 test: test editing saved messages 2025-11-06 18:38:11 +00:00
link2xt 06b038ab5d fix: is_encrypted() should be true for Saved Messages chat
Otherwise UIs don't allow to edit messages sent to self.
This was likely broken in b417ba86bc
2025-11-06 18:38:11 +00:00
link2xt 81ba2d20d6 fix: add device message instead of partial message when receive_imf fails 2025-11-05 14:11:27 +00:00
link2xt 9c2a13b88e refactor(sql): do not expose rusqlite Error type in query_map methods
We use query_and_then() instead of query_map() function now.
The difference is that row processing function
returns anyhow::Result, so simple fallible processing
like JSON parsing can be done inside of it
when calling query_map_vec() and query_map_collect()
without having to resort to query_map()
and iterating over all rows again afterwards.
2025-11-03 23:08:56 +00:00
link2xt 997e8216bf refactor: split "transport" module out of "login_param"
`login_param` module is now for user-visible entered login parameters,
while the `transport` module contains structures for internal
representation of connection candidate list
created during transport configuration.
2025-11-03 18:58:36 +00:00
link2xt c9b3da4a1a chore(release): prepare for 2.23.0 2025-11-01 16:03:01 +00:00
link2xt 098084b9a7 feat: temporarily disable OpenPGP recipient anonymization 2025-11-01 15:27:00 +00:00
link2xt 56370c2f90 ci: update Rust to 1.91.0 2025-10-31 12:33:47 +00:00
link2xt 59959259bf chore: fix Rust 1.91.0 lint for derivable Default 2025-10-31 12:33:47 +00:00
link2xt 08f8f488b1 refactor: remove unused call to get_credentials() 2025-10-31 12:33:35 +00:00
link2xt f34311d5c4 build: do not install pdbpp in the test environment for CFFI Python bindings
Closes <https://github.com/chatmail/core/issues/7376>
2025-10-31 12:33:23 +00:00
link2xt 885a5efa39 fix: stop notifying about messages in contact request chats 2025-10-31 07:31:35 +00:00
link2xt 2ada3cd613 fix: stop using leftgrps table 2025-10-28 19:41:47 +00:00
link2xt 05ba206c5a feat: allow plain domain in dcaccount: scheme
This is similar to old `dcaccount:` with URL,
but creates a 9-character username on the client
and avoids making an HTTPS request.

The scheme is reused to avoid the apps
needing to register for the new scheme.

`http` support is removed because it was
not working already, there is a check
that the scheme is `https` when the URL
is actually used and the core has
no way to make HTTP requests without TLS.
2025-10-28 12:10:52 +00:00
link2xt 9f0d106818 api(deltachat-rpc-client): add Account.add_transport_from_qr() API 2025-10-28 12:10:52 +00:00
link2xt 21caf87119 refactor: use SampleString 2025-10-28 12:10:52 +00:00
link2xt 4abc695790 refactor: use rand::fill() instead of rand::rng().fill() 2025-10-28 12:10:52 +00:00
link2xt f428033d95 build: update rand to 0.9
We already have both rand 0.8 and rand 0.9
in our dependency tree.

We still need rand 0.8 because
public APIs of rPGP 0.17.0 and Iroh 0.35.0
use rand 0.8 types in public APIs,
so it is imported as rand_old.
2025-10-26 07:08:54 +00:00
link2xt 0e30dd895f fix: fix flaky tests::verified_chats::test_verified_chat_editor_reordering and receive_imf::receive_imf_tests::test_two_group_securejoins
Flakiness was introduced in e7348a4fd8.
This change removes a call to joining_chat_id() which created a chat,
now we check for existing group chat
without creating it if it does not exist.
2025-10-25 06:47:17 +00:00
link2xt c001a9a983 refactor(sql): add query_map_collect() 2025-10-24 18:17:15 +00:00
link2xt 5f3948b462 refactor(sql): add query_map_vec()
This also replaces some cases where flatten()
was used, effectively ignoring the errors.
2025-10-24 18:17:15 +00:00
link2xt 45a1d81805 refactor(sql): change second query_map function from FnMut to FnOnce
FnOnce is a supertrait of FnMut,
so any argument that implements FnMut
can also be used in a place where FnOnce is required.
2025-10-24 18:17:15 +00:00
link2xt 3eb1a7dfac feat: protect the Date header 2025-10-23 15:29:14 +00:00
link2xt 2f2a147efb feat: move the messages only from INBOX and Spam folders
We do not try to delete resent messages
anymore. Previously resent messages
were distinguised by having duplicate Message-ID,
but future Date, but now we need to download
the message before we even see the Date.
We now move the message to the destination folder
but do not fetch it.

It may not be a good idea to delete
the duplicate in multi-device setups anyway,
because the device which has a message
may delete the duplicate of a message
the other device missed.

To avoid triggering IMAP busy move loop
described in the comments
we now only move the messages
from INBOX and Spam folders.
2025-10-23 15:29:14 +00:00
link2xt f4938465c3 feat(deltachat-rpc-client): support multiple transports in resetup_account() 2025-10-23 15:14:53 +00:00
link2xt ec3f765727 refactor(add_transport_from_qr): do not set deprecated config values 2025-10-23 14:04:53 +00:00
link2xt a743ad9490 feat: do not send Autocrypt in MDNs 2025-10-23 13:49:40 +00:00
link2xt 89315b8ef2 refactor: stop using deprecated Account.configure() 2025-10-23 13:41:57 +00:00
link2xt e7348a4fd8 feat: do not run SecureJoin if we are already in the group 2025-10-23 06:53:22 +00:00
link2xt c68244692d api(jsonrpc): restore protect argument for create_group_chat
It was removed in 498a831873
Restoring as optional argument to avoid breaking compatibility.
2025-10-22 18:14:21 +00:00
link2xt 3c93f61b4d fix: migrate from tokio-tar to astral-tokio-tar
tokio-tar is unmaintained and has unpatched CVE-2025-62518.
More details on CVE are in <https://edera.dev/stories/tarmageddon>.
tokio-tar is only used for transferring backups
and worst case is that by manually inspecting
a carefully crafted backup user will not see
the same files as get unpacked when importing a backup.
2025-10-22 16:09:21 +00:00
link2xt 2f34a740c7 build(nix): fix build of deltachat-rpc-server-x86_64-darwin 2025-10-20 20:29:47 +00:00
link2xt afc74b0829 fix: do not allow sync item timestamps to be in the future 2025-10-19 11:35:10 +00:00
link2xt 2481a0f48e feat: reset all indirect verifications 2025-10-19 11:35:09 +00:00
link2xt 6c24edb40d feat: do not mark Bob as verified if auth token is old 2025-10-19 11:35:09 +00:00
link2xt e4178789da refactor: remove ProtectionStatus 2025-10-19 11:35:09 +00:00
link2xt b417ba86bc api!: remove Chat.is_protected() 2025-10-19 11:35:09 +00:00
link2xt 498a831873 api!: remove APIs to create protected chats
Create unprotected group in test_create_protected_grp_multidev
The test is renamed accordingly.

SystemMessage::ChatE2ee is added in encrypted groups
regardless of whether they are protected or not.
Previously new encrypted unprotected groups
had no message saying that messages are end-to-end encrypted
at all.
2025-10-19 11:35:09 +00:00
link2xt c6722d36de api!: remove public APIs to check if the chat is protected 2025-10-19 11:35:09 +00:00
link2xt 90f0d5c060 api: make dc_chat_is_protected always return 0 2025-10-19 11:35:09 +00:00
link2xt 90ec2f2518 docs: document Autocrypt-Gossip _verified attribute 2025-10-19 11:35:09 +00:00
link2xt 5b66535134 feat: verify contacts via Autocrypt-Gossip
This mechanism replaces `Chat-Verified` header.
New parameter `_verified=1` in `Autocrypt-Gossip`
header marks that the sender has the gossiped key
verified.

Using `_verified=1` instead of `_verified`
because it is less likely to cause troubles
with existing Autocrypt header parsers.
This is also how https://www.rfc-editor.org/rfc/rfc2045
defines parameter syntax.
2025-10-19 11:35:09 +00:00
link2xt eea848f72b fix: don't ignore QR token timestamp from sync messages 2025-10-19 11:35:09 +00:00
link2xt 214a1d3e2d feat: do not resolve MX records during configuration
MX record lookup was only used to detect Google Workspace domains.
They can still be configured manually.
We anyway do not want to encourage creating new profiles
with Google Workspace as we don't have Gmail OAUTH2 token anymore
and new users can more easily onboard with a chatmail relay.
2025-10-18 18:09:56 +00:00
link2xt e270a502d1 refactor: remove invalid Gmail OAuth2 tokens
They were already unused since
<https://github.com/chatmail/provider-db/pull/310>
2025-10-18 18:09:56 +00:00
link2xt 61b49a9339 Merge tag 'v2.22.0'
Release 2.22.0
2025-10-17 10:53:12 +00:00
link2xt 41c80cf3f2 chore(release): prepare for 2.22.0 2025-10-17 10:51:26 +00:00
l 6fd3645360 Merge pull request #7320 from chatmail/link2xt/dont-notify-contact-request-calls 2025-10-17 10:45:41 +00:00
link2xt b812d0a7f7 fix: do not notify about incoming calls for contact requests and blocked contacts 2025-10-17 10:30:46 +00:00
link2xt e8a4c9237d test: accept the chat with the caller before accepting calls 2025-10-17 10:30:46 +00:00
link2xt 5256013615 feat: protect Autocrypt header 2025-10-16 23:34:44 +00:00
link2xt 9826c28581 feat: anonymize OpenPGP recipients 2025-10-16 23:34:03 +00:00
link2xt 9ceceebdc3 ci: set 7 days cooldown on Dependabot updates
This fixes the warning
<https://docs.zizmor.sh/audits/#dependabot-cooldown>
and avoids updating to freshly published dependencies
that are more likely to be unpublished.
2025-10-16 20:50:24 +00:00
link2xt 187d913f84 ci: pin GitHub action astral-sh/setup-uv
Pinned version corresponds to the current v7.1.0 tag.
2025-10-16 20:50:03 +00:00
link2xt 4a0b180d86 chore(release): prepare for 2.21.0 2025-10-16 18:18:10 +00:00
link2xt 1e0def87fd feat: cache tile.openstreetmap.org tiles for 7 days 2025-10-15 17:07:55 +00:00
link2xt a219e5ee8c feat: set User-Agent for tile.openstreetmap.org requests 2025-10-15 17:07:55 +00:00
link2xt 8070dfcc82 refactor(mimeparser): store only one signature fingerprint
Messages are normally not signed with more than one key
and in this case we pick an arbitrary signature later anyway.
2025-10-15 16:45:36 +00:00
link2xt 176a89bd03 feat(deltachat-repl): add send-sync command
This allows to send send messages when disconnected
using `send_msg_sync` to create a dedicated connection
and send a single message.

The command can be used for measuring
the duration of SMTP connection establishment.
2025-10-15 16:45:19 +00:00
link2xt dd8dd2f95c build(nix): remove unused dependencies
darwin.apple_sdk.frameworks is deprecated and does nothing according to
<https://nixos.org/manual/nixpkgs/stable/#sec-darwin-legacy-frameworks>

libiconv dependency also does not seem to be needed for `libdeltachat`,
I have checked that `nix build .#libdeltachat` still succeeds on macOS.
2025-10-15 16:43:54 +00:00
link2xt eb1bd1d200 feat: TLS 1.3 session resumption 2025-10-15 16:41:50 +00:00
link2xt 460d2f3c2a refactor: pass ALPN around as &str 2025-10-15 16:41:50 +00:00
link2xt 0ab10f99fd refactor: use rustls reexported from tokio_rustls 2025-10-15 16:41:50 +00:00
link2xt f180a7c024 test: test expiration of non-ephemeral message with unknown viewtype 2025-10-13 18:51:46 +00:00
link2xt 7fac9332e1 test: test expiration of ephemeral messages with unknown viewtype 2025-10-13 18:51:46 +00:00
link2xt 8dd7c42f69 chore(release): prepare for 2.20.0 2025-10-13 11:34:44 +00:00
link2xt ab9fd3d5ed chore(release): prepare for 2.19.0 2025-10-12 17:33:43 +00:00
link2xt cc54a3feda fix: do not try to process calls from partial messages
Any control information from the message
should only be downloaded when the message
is fully downloaded to avoid processing it twice.
Besides, "partial" messages may actually be full messages
with an error that are only processed as partial
to add a message bubble allowing to download the message later.
2025-10-12 17:20:21 +00:00
link2xt 94984f35ec fix: do not fail to receive call accepted/ended messages referring to non-call Message-ID
In-Reply-To may refer to non-call message
as we do not control the sender.
It may also happen that call message
was received by older version and processed
as text, in which case correct In-Reply-To
appears to be referring to the text message.
2025-10-12 17:20:21 +00:00
link2xt 2d7dc7a1be fix: do not fail to fully download previously trashed messages 2025-10-12 13:12:00 +00:00
link2xt 87035ff744 feat: slightly increase saturation of colors
It really depends on the screen,
but on Android phones with higher DPI
than laptop screen the contrast
looks a bit too low.

It should not be increased too high
because of clipping.
2025-10-09 20:28:21 +00:00
link2xt 8eddcfc9d2 ci: update to Python 3.14
I have not updated Python interpreters for legacy bindings
in scripts/run_all.sh because I have not checked
if manylinux images already exist and work for building wheels.
Legacy Python bindings are deprecated
and we don't publish new releases for them.
2025-10-09 15:55:59 +00:00
link2xt 0bc9fe841a chore(release): prepare for 2.18.0 2025-10-08 02:01:02 +00:00
link2xt 1bb966e5a8 ci(nix): switch from DeterminateSystems/nix-installer-action to cachix/install-nix-action
Determinate Systems GitHub action
installs Nix version from Determinate Systems
and Determinate Nix Installer has
dropped support for installing upstream Nix:
https://determinate.systems/blog/installer-dropping-upstream/

This commit switches to upstream Nix
to avoid accidentally depending on any features
of Determinate Nix.
2025-10-07 15:56:02 +00:00
link2xt 34e631395f ci(nix): run the workflow when workflow file changes 2025-10-07 15:56:02 +00:00
link2xt 080ddde68d refactor: assert that Iroh node addresses have home relay URL
With newer Iroh it is possible to obtain
own node address before home relay is selected
and accidentally send own address without relay URL.

It took me some time to debug why Iroh 0.92.0
did not work with iroh-relay 0.92.0
so I'm adding these assertions even
while we still use Iroh 0.35.0.
2025-10-07 15:53:37 +00:00
link2xt 209a8026fb fix: do not fail to load messages with unknown viewtype 2025-10-06 15:29:24 +00:00
link2xt 23bfa4fc43 api!: remove APIs for video chat invitations 2025-10-05 12:19:10 +00:00
link2xt 58d40c118c chore(release): prepare for 2.17.0 2025-10-04 00:41:56 +00:00
link2xt 9d39769445 refactor: return the reason when failing to place calls 2025-10-04 00:23:46 +00:00
link2xt bfc08abe88 fix: forward calls as text messages 2025-10-04 00:23:46 +00:00
link2xt 6a7b097273 fix: lowercase "call" in "Missed call" and similar strings
This string is used in summaries
and message bubbles and is typically not capitalized,
unlike menu items.
2025-10-03 15:06:29 +00:00
link2xt df2c35b551 ci: fix CI checking Nix formatting
`nix fmt` by itself tries to read stdin,
not `flake.nix`.
2025-10-02 18:39:16 +00:00
link2xt 3cd4152a3c api!: remove deprecated verified_one_on_one_chats config 2025-10-02 18:35:12 +00:00
link2xt d509b0cf5c ci: require that Cargo.lock is up to date
Versions in the lockfile should
be compatible with MSRV
and not automatically downgraded in CI.
2025-10-02 12:35:25 +00:00