mirror of
https://github.com/chatmail/core.git
synced 2026-04-17 21:46:35 +03:00
Merge tag 'v1.119.0'
This commit is contained in:
40
CHANGELOG.md
40
CHANGELOG.md
@@ -1,5 +1,45 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [1.119.0] - 2023-08-03
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
|
||||||
|
- imap: Avoid IMAP move loops when DeltaChat folder is aliased.
|
||||||
|
- imap: Do not resync IMAP after initial configuration.
|
||||||
|
|
||||||
|
- webxdc: Accept WebXDC updates in mailing lists.
|
||||||
|
- webxdc: Base64-encode WebXDC updates to prevent corruption of large unencrypted WebXDC updates.
|
||||||
|
- webxdc: Delete old webxdc status updates during housekeeping.
|
||||||
|
|
||||||
|
- Return valid MsgId from `receive_imf()` when the message is replaced.
|
||||||
|
- Emit MsgsChanged event with correct chat id for replaced messages.
|
||||||
|
|
||||||
|
- deltachat-rpc-server: Update tokio-tar to fix backup import.
|
||||||
|
|
||||||
|
### Features / Changes
|
||||||
|
|
||||||
|
- deltachat-rpc-client: Add `MSG_DELETED` constant.
|
||||||
|
- Make `dc_msg_get_filename()` return the original attachment filename ([#4309](https://github.com/deltachat/deltachat-core-rust/pull/4309)).
|
||||||
|
|
||||||
|
### API-Changes
|
||||||
|
|
||||||
|
- deltachat-rpc-client: Add `Account.{import,export}_backup` methods.
|
||||||
|
- deltachat-jsonrpc: Make `MessageObject.text` non-optional.
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- Update default value for `show_emails` in `dc_set_config()` documentation.
|
||||||
|
|
||||||
|
### Refactor
|
||||||
|
|
||||||
|
- Improve IMAP logs.
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
|
||||||
|
- Add basic import/export test for async python.
|
||||||
|
- Add `test_webxdc_download_on_demand`.
|
||||||
|
- Add tests for deletion of webxdc status-updates.
|
||||||
|
|
||||||
## [1.118.0] - 2023-07-07
|
## [1.118.0] - 2023-07-07
|
||||||
|
|
||||||
### API-Changes
|
### API-Changes
|
||||||
|
|||||||
10
Cargo.lock
generated
10
Cargo.lock
generated
@@ -1105,7 +1105,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "deltachat"
|
name = "deltachat"
|
||||||
version = "1.118.0"
|
version = "1.119.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ansi_term",
|
"ansi_term",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
@@ -1182,7 +1182,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "deltachat-jsonrpc"
|
name = "deltachat-jsonrpc"
|
||||||
version = "1.118.0"
|
version = "1.119.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-channel",
|
"async-channel",
|
||||||
@@ -1206,7 +1206,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "deltachat-repl"
|
name = "deltachat-repl"
|
||||||
version = "1.118.0"
|
version = "1.119.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ansi_term",
|
"ansi_term",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
@@ -1221,7 +1221,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "deltachat-rpc-server"
|
name = "deltachat-rpc-server"
|
||||||
version = "1.118.0"
|
version = "1.119.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"deltachat",
|
"deltachat",
|
||||||
@@ -1246,7 +1246,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "deltachat_ffi"
|
name = "deltachat_ffi"
|
||||||
version = "1.118.0"
|
version = "1.119.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"deltachat",
|
"deltachat",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "deltachat"
|
name = "deltachat"
|
||||||
version = "1.118.0"
|
version = "1.119.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MPL-2.0"
|
license = "MPL-2.0"
|
||||||
rust-version = "1.67"
|
rust-version = "1.67"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "deltachat_ffi"
|
name = "deltachat_ffi"
|
||||||
version = "1.118.0"
|
version = "1.119.0"
|
||||||
description = "Deltachat FFI"
|
description = "Deltachat FFI"
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "deltachat-jsonrpc"
|
name = "deltachat-jsonrpc"
|
||||||
version = "1.118.0"
|
version = "1.119.0"
|
||||||
description = "DeltaChat JSON-RPC API"
|
description = "DeltaChat JSON-RPC API"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
default-run = "deltachat-jsonrpc-server"
|
default-run = "deltachat-jsonrpc-server"
|
||||||
|
|||||||
@@ -55,5 +55,5 @@
|
|||||||
},
|
},
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"types": "dist/deltachat.d.ts",
|
"types": "dist/deltachat.d.ts",
|
||||||
"version": "1.118.0"
|
"version": "1.119.0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "deltachat-repl"
|
name = "deltachat-repl"
|
||||||
version = "1.118.0"
|
version = "1.119.0"
|
||||||
license = "MPL-2.0"
|
license = "MPL-2.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "deltachat-rpc-server"
|
name = "deltachat-rpc-server"
|
||||||
version = "1.118.0"
|
version = "1.119.0"
|
||||||
description = "DeltaChat JSON-RPC server"
|
description = "DeltaChat JSON-RPC server"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|||||||
@@ -60,5 +60,5 @@
|
|||||||
"test:mocha": "mocha -r esm node/test/test.js --growl --reporter=spec --bail --exit"
|
"test:mocha": "mocha -r esm node/test/test.js --growl --reporter=spec --bail --exit"
|
||||||
},
|
},
|
||||||
"types": "node/dist/index.d.ts",
|
"types": "node/dist/index.d.ts",
|
||||||
"version": "1.118.0"
|
"version": "1.119.0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -376,6 +376,11 @@ def test_webxdc_download_on_demand(acfactory, data, lp):
|
|||||||
ac2._evtracker.get_matching("DC_EVENT_WEBXDC_STATUS_UPDATE")
|
ac2._evtracker.get_matching("DC_EVENT_WEBXDC_STATUS_UPDATE")
|
||||||
assert msg2.get_status_updates()
|
assert msg2.get_status_updates()
|
||||||
|
|
||||||
|
# Get a event notifying that the message disappeared from the chat.
|
||||||
|
msgs_changed_event = ac2._evtracker.get_matching("DC_EVENT_MSGS_CHANGED")
|
||||||
|
assert msgs_changed_event.data1 == msg2.chat.id
|
||||||
|
assert msgs_changed_event.data2 == 0
|
||||||
|
|
||||||
|
|
||||||
def test_mvbox_sentbox_threads(acfactory, lp):
|
def test_mvbox_sentbox_threads(acfactory, lp):
|
||||||
lp.sec("ac1: start with mvbox thread")
|
lp.sec("ac1: start with mvbox thread")
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
2023-07-07
|
2023-08-03
|
||||||
@@ -143,7 +143,7 @@ pub(crate) async fn receive_imf_inner(
|
|||||||
|
|
||||||
// check, if the mail is already in our database.
|
// check, if the mail is already in our database.
|
||||||
// make sure, this check is done eg. before securejoin-processing.
|
// make sure, this check is done eg. before securejoin-processing.
|
||||||
let replace_partial_download =
|
let (replace_partial_download, replace_chat_id) =
|
||||||
if let Some(old_msg_id) = message::rfc724_mid_exists(context, rfc724_mid).await? {
|
if let Some(old_msg_id) = message::rfc724_mid_exists(context, rfc724_mid).await? {
|
||||||
let msg = Message::load_from_db(context, old_msg_id).await?;
|
let msg = Message::load_from_db(context, old_msg_id).await?;
|
||||||
if msg.download_state() != DownloadState::Done && is_partial_download.is_none() {
|
if msg.download_state() != DownloadState::Done && is_partial_download.is_none() {
|
||||||
@@ -152,14 +152,14 @@ pub(crate) async fn receive_imf_inner(
|
|||||||
context,
|
context,
|
||||||
"Message already partly in DB, replacing by full message."
|
"Message already partly in DB, replacing by full message."
|
||||||
);
|
);
|
||||||
Some(old_msg_id)
|
(Some(old_msg_id), Some(msg.chat_id))
|
||||||
} else {
|
} else {
|
||||||
// the message was probably moved around.
|
// the message was probably moved around.
|
||||||
info!(context, "Message already in DB, doing nothing.");
|
info!(context, "Message already in DB, doing nothing.");
|
||||||
return Ok(None);
|
return Ok(None);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
None
|
(None, None)
|
||||||
};
|
};
|
||||||
|
|
||||||
let prevent_rename =
|
let prevent_rename =
|
||||||
@@ -347,8 +347,8 @@ pub(crate) async fn receive_imf_inner(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if replace_partial_download.is_some() {
|
if let Some(replace_chat_id) = replace_chat_id {
|
||||||
context.emit_msgs_changed(chat_id, MsgId::new(0));
|
context.emit_msgs_changed(replace_chat_id, MsgId::new(0));
|
||||||
} else if !chat_id.is_trash() {
|
} else if !chat_id.is_trash() {
|
||||||
let fresh = received_msg.state == MessageState::InFresh;
|
let fresh = received_msg.state == MessageState::InFresh;
|
||||||
for msg_id in &received_msg.msg_ids {
|
for msg_id in &received_msg.msg_ids {
|
||||||
|
|||||||
Reference in New Issue
Block a user