Linus Rath
521b0aedab
fix: stop naming a jmap metadata property in the demo client
2026-10-31 18:52:29 +01:00
Linus Rath
088a982218
test: expect 30 locales now that vietnamese is in
2026-10-31 18:50:55 +01:00
Linus Rath
d23a2869d1
Merge remote-tracking branch 'origin/main' into fix/found-fix-server
...
# Conflicts:
# Dockerfile
# docker-compose.yml
2026-10-31 18:17:39 +01:00
Linus Rath
f884ffe441
Merge branch 'fix/found-fix-ui' into fix/found-fix-server
2026-10-31 18:17:13 +01:00
Linus Rath
5fe7d1a65a
fix: keep existing compose volumes and add the two that were missing
2026-10-31 18:12:00 +01:00
Linus Rath
136e6be8fd
refactor: drop the unused draft autosave interval setting
2026-10-31 18:07:16 +01:00
Linus Rath
fa9aad95b4
docs: describe where the push relay sends the account label
2026-10-31 18:06:08 +01:00
Linus Rath
9f0413d50b
docs: say in the Lite readme that sign-in with SSO works when Stalwart serves Lite
2026-10-31 18:04:57 +01:00
Linus Rath
88351b2333
fix: point the outgoing hosts list at the current usage stats and updates pages
2026-10-31 18:02:01 +01:00
Linus Rath
6fc3994aac
fix: keep plugin credentials and update-check state across container recreates
2026-10-31 18:00:13 +01:00
Linus Rath
100f6db309
fix: skip the setup wizard in demo mode without a mail server
2026-10-31 18:00:13 +01:00
Linus Rath
ddc24e4fc7
fix: let a browser an admin signed in from before past the shared admin login limit
2026-10-31 17:55:29 +01:00
Linus Rath
e15c335bec
fix: pick up admin changes saved by another replica without a restart
2026-10-31 17:54:40 +01:00
Linus Rath
825d6e76f8
fix: let admins switch off usage stats by clearing the collector address
2026-10-31 17:51:09 +01:00
Linus Rath
6aa48c300d
fix: keep plugin credentials when the docker container is recreated
2026-10-31 17:50:07 +01:00
Linus Rath
072a4219be
fix: drop the connector address setting that nothing used
2026-10-31 17:49:54 +01:00
Linus Rath
f11ddf82dd
fix: tell banner plugins when an admin opened the mailbox through impersonation
2026-10-31 17:48:29 +01:00
Linus Rath
a9e93881b5
feat: match filter conditions against a regular expression #885
2026-10-31 17:45:26 +01:00
Linus Rath
dcc785690c
fix: apply the log level and format set in the setup wizard or admin console
2026-10-31 17:45:06 +01:00
Linus Rath
65ec66b8ef
fix: send embedded-mode messages to the parent origin set in the admin console
2026-10-31 17:43:03 +01:00
Linus Rath
73a7bb7bcd
fix: send the headers plugins add to an outgoing message instead of dropping them
2026-10-31 17:40:20 +01:00
Linus Rath
961c176401
Merge remote-tracking branch 'origin/main' into feat/audience-shots
2026-10-31 17:06:43 +01:00
Linus Rath
ee53eb8d2c
test: add a flight booking with a card to the demo
2026-10-31 16:58:40 +01:00
Linus Rath
9d529ca98f
feat: reply from the address a message was delivered to when to, cc and bcc have no match #1353
2026-10-31 16:55:10 +01:00
Linus Rath
ea604ab8a1
fix: keep the open folder regular weight in mountain view so bold only means unread #1469
2026-10-31 16:31:15 +01:00
Linus Rath
7341e981c3
fix: limit how often a plugin can open a message in the reader #1466
2026-10-31 16:25:07 +01:00
Linus Rath
b8223a4492
Merge pull request #1466 from HOLOEYE-JZ/feat/plugin-open-email
...
feat(plugins): api.ui.openEmail opens a message in the reader
2026-10-31 16:25:05 +01:00
Linus Rath
c09be1cdd3
Merge pull request #1456 from HOLOEYE-JZ/feat/plugin-frame-activity
...
feat(plugins): input in a plugin frame counts as activity for the idle sign-out
2026-10-31 16:25:03 +01:00
Linus Rath
e5ed50dc92
Merge pull request #1467 from HOLOEYE-JZ/feat/plugin-hooks-account-and-composer
...
feat(plugins): star and after-send hooks name the mail's account
2026-10-31 16:25:00 +01:00
Linus Rath
2ceeef3fb9
Merge pull request #1464 from VasilisNtovolos/fix/xhr-upload-inactivity-timeout
...
fix: time out stalled XHR uploads after inactivity
2026-10-31 16:24:56 +01:00
Linus Rath
4c53609b1e
Merge pull request #1465 from HOLOEYE-JZ/fix/tasks-shared-account-without-calendars
...
fix(tasks): skip a shared account without calendar access when listing tasks
2026-10-31 16:24:54 +01:00
Linus Rath
1e462fc67e
Merge pull request #1436 from shukiv/fix/impersonation-expired-app-passwords
...
fix: let a mailbox be opened through the handoff more than five times
2026-10-31 16:24:52 +01:00
Linus Rath
2daffe1364
fix: complete the vietnamese strings and register them for plugin controls #1448
2026-10-31 16:24:49 +01:00
Linus Rath
bc6fee7556
feat: let timed events show as coloured text or a dot in the month view #1449
2026-10-31 16:23:00 +01:00
Linus Rath
6b94f96e83
fix: redirect the bare base path of a sub-path install to the sign-in page #1455
2026-10-31 16:22:58 +01:00
Linus Rath
d3fecae85f
feat: hide the contacts directory when the server refuses it, and let users or admins turn it off #1457
2026-10-31 16:22:24 +01:00
Linus Rath
3b4a0c4c8e
feat: fold the quoted history of iphone mail and outlook replies behind the ••• toggle #1476
2026-10-31 16:21:37 +01:00
Linus Rath
7c88fb8c5b
fix: shrink the mail body to its content when it gets shorter after opening #1474
2026-10-31 16:21:35 +01:00
Linus Rath
3cb3a8d33a
fix: keep pasted images inside the message body for recipients #1451
2026-10-31 16:14:49 +01:00
Linus Rath
5931cd1678
feat: send an oauth resource indicator when one is configured #1461
2026-10-31 16:14:35 +01:00
Linus Rath
3bdbdb1364
docs: move the mobile hand-off contract to the website
2026-10-31 14:32:39 +01:00
Linus Rath
c7eb483202
test: add an e-invoice mail to the demo
2026-10-31 14:17:11 +01:00
VasilisNtovolos
2e8a73ffd2
fix: time out stalled XHR uploads after inactivity
2026-10-31 15:16:17 +02:00
Jacob Zeitz
d5cd3c6e40
feat(plugins): star and after-send hooks name the mail's account
...
Message ids repeat across accounts, so a hook payload naming only an
emailId could not tell a plugin which mailbox the message lies in when
it is a shared or group account's.
onBeforeEmailStarToggle and onEmailStarToggle now carry accountId when
the starred message is not in the user's own account, as the
message-row-actions click context does. Every star (the row's button,
the reader's star, the key, the menu) goes through toggleStar, one
message at a time, so one accountId names it; the account is resolved
before the plugins are asked. An own message's payload is unchanged.
onAfterEmailSend now carries accountId, the JMAP account the sent
message lies in (a mail sent from a shared or group identity lies in
that account), so api.email.get finds it. sendEmail returns that account
as emailAccountId, the S/MIME send too. The hook also carries
composerId, the id the sending composer's slots and actions gave
plugins, so a plugin can act on what the user chose in that composer.
2026-10-31 14:15:06 +01:00
Jacob Zeitz
54ad6390b3
feat(plugins): api.ui.openEmail opens a message in the reader
...
A plugin opens a message as a click on a list row or on a search result
entry naming one does, also a message of a shared or group account,
reached through the login that reads it. On the mail page it opens in
place, in the Pro shell in an email tab as a message link does there;
elsewhere the tab loads the message's link, at most five times a minute.
A message no login reads, or one its account does not have, is refused
with an error the plugin sees, as is one the mail page could not open.
Needs email:read.
2026-10-31 14:14:48 +01:00
Jacob Zeitz
65f97dc96b
fix(tasks): skip a shared account without calendar access when listing tasks
...
A shared account the calendar fan-out probes on suspicion may list the
calendars capability and still refuse CalendarEvent/query (Stalwart 1.0
answers accountNotSupportedByMethod for a share that grants no calendar
access). queryCalendarEvents remembered such an account and skipped it
from then on, but getCalendarTasks failed as a whole on it, so the task
list and the plugin task API stayed empty after a reload until the
calendar page had run once. Reading an account's tasks now takes that
refusal as no tasks and remembers the account the same way, through one
helper both share; any other failure still fails the read.
2026-10-31 14:14:48 +01:00
Linus Rath
f74ff49f58
feat: give the mobile app its organisation policy for its access token
2026-10-31 14:10:53 +01:00
Linus Rath
523e5b8981
test: add an s/mime signed message to the demo
2026-10-31 14:08:48 +01:00
Linus Rath
fb3ba0275a
feat: hand the mobile app a one-time code instead of the sign-in in its link
2026-10-31 14:06:44 +01:00
Linus Rath
eb76c7c884
test: assign support mail for the team inbox in the demo
2026-10-31 14:01:53 +01:00