From e8192d19207b7907bb2a0e6e6d5f928465632a0c Mon Sep 17 00:00:00 2001 From: Maurus Decimus <11444311+mdecimus@users.noreply.github.com> Date: Sun, 12 Jul 2026 15:20:50 +0200 Subject: [PATCH] Fix JMAP VacationResponse: `isEnabled` reset to false whenever properties are changed --- CHANGELOG.md | 4 +++- crates/jmap/src/vacation/set.rs | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 894bd66e..810c2509 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,9 @@ If you are upgrading from v0.16.x, replace the binary (or run `docker pull`). If ## Fixed - OAuth resource indicators: Accept `imap`, `smtp`, `pop3` and `sieve` as valid resource indicators for OAuth access tokens. - PostgreSQL: Incomplete channel binding implementation. -- JMAP: Return RFC-3339-conformant UTCDate literals in capabilities: min `0001-01-01T00:00:00Z`, max `9999-12-31T23:59:59Z`. +- JMAP: + - VacationResponse: `isEnabled` reset to false whenever properties are changed. + - Capabilities: Return RFC-3339-conformant UTCDate literals in capabilities: min `0001-01-01T00:00:00Z`, max `9999-12-31T23:59:59Z`. - Reject invalid duration values (e.g. `1h30m`). - Branding: Custom logos for domains do not work. - Sieve: add `Received` headers to auto-generated messages and detect loops. diff --git a/crates/jmap/src/vacation/set.rs b/crates/jmap/src/vacation/set.rs index 8edfc108..64787441 100644 --- a/crates/jmap/src/vacation/set.rs +++ b/crates/jmap/src/vacation/set.rs @@ -141,7 +141,7 @@ impl VacationResponseSet for Server { }; // Parse properties - let mut is_active = false; + let mut is_active = document_id.is_some_and(|id| active_script_id == Some(id)); let mut build_script = create_id.is_some(); let vacation = sieve.vacation_response.as_mut().unwrap();