2161 Commits
Author SHA1 Message Date
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 e68036e7b0 fix: line up the select-all checkbox with the row checkboxes in mountain view #1473 2026-10-31 16:31:18 +01:00
Linus Rath e128515156 fix: show the real total of the unified inbox in mountain view instead of the loaded count #1471 2026-10-31 16:31:17 +01:00
Linus Rath 663a875972 fix: give the folders their own heading under the unified mailbox in mountain view #1470 2026-10-31 16:31:16 +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 258dc5e54f Merge pull request #1454 from VasilisNtovolos/fix/save-draft-pending-attachments
fix: wait for attachment uploads before saving and closing drafts
2026-10-31 16:24:58 +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 608d23bc14 Merge pull request #1446 from robertdoneill/fix/command-palette-focus-outline
fix: keep the command palette field's focus outline inside the dialog
2026-10-31 16:24:50 +01:00
Linus Rath 341b84fe19 Merge pull request #1448 from vietnamvps/add-vietnamese
feat(i18n): add Vietnamese language support
2026-10-31 16:24:47 +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 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 6c5a727a59 fix: let an identity be saved without a display name #1462 2026-10-31 16:22:22 +01:00
Linus Rath d381144c99 feat: put reply and reply all at the top of the open message on the phone in mountain view #1475 2026-10-31 16:21:40 +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 c13b87c0e8 fix: keep the undo toast off the header on phones #1472 2026-10-31 16:15:58 +01:00
Linus Rath a0da9eb6c2 fix: show the results when searching with a message open in mountain view #1468 2026-10-31 16:15:57 +01:00
Linus Rath 8a4d9e36c9 fix: hide the account dot in the unified view with only one account 2026-10-31 15:57:34 +01:00
Linus Rath 3bdbdb1364 docs: move the mobile hand-off contract to the website 2026-10-31 14:32:39 +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
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 4887ed457c fix: stop list toolbar timers from firing after the toolbar is gone 2026-10-31 02:28:55 +01:00
Linus Rath b11139887d fix: stop the hearing preset card from looking selected 2026-10-31 02:06:19 +01:00
Linus Rath fe65ab528b fix: keep a one-digit unread folder count next to its total 2026-10-31 02:01:16 +01:00
Linus Rath 5340499520 fix: give quick reply the composer's placeholder, attachment and send confirmation checks 2026-10-31 02:00:51 +01:00
Linus Rath 8a09ba5734 fix: leave a bounce's delivery report out of list chips and forwards 2026-10-31 01:50:03 +01:00
Linus Rath d4682890ab fix: hide the quick actions on the open message once the pointer leaves it 2026-10-31 01:47:00 +01:00
Linus Rath c166651d14 fix: leave the preview line out of the density sample while show preview is off 2026-10-31 01:41:35 +01:00
Linus Rath 5f1d03f19c fix: stop the message list from jumping back while scrolling 2026-10-31 01:38:17 +01:00
Linus Rath b9d795b2cc fix: show demo mode as a plain sidebar row instead of a tinted box 2026-10-31 01:37:42 +01:00
Linus Rath 3bb9f7df84 fix: lead with the address when two accounts share a name in the account switcher 2026-10-31 01:37:06 +01:00
Linus Rath 7ecde89fc6 fix: keep the sidebar header gear and plus buttons from running into the folder row below 2026-10-31 01:36:08 +01:00
Linus Rath 99aff47d6e fix: label the search filter panel's button search instead of done 2026-10-31 01:31:04 +01:00
Linus Rath 8b29254a61 fix: hide reply on drafts and scheduled messages in mountain view conversations #1404 2026-10-31 01:26:58 +01:00
Pasquale 3b4b6b9e77 feat: add reply all to expanded mountain view message headers #1404 2026-10-31 01:23:22 +01:00
Linus Rath dafdda5347 fix: let search results move into the open folder #1452 2026-10-31 01:16:34 +01:00
Linus Rath 9af0304616 fix: return to the list after moving or reporting the open message as spam #1458 2026-10-31 01:03:08 +01:00
Linus Rath 3406580a3f fix: return to the list after archiving the open message #1458 2026-10-31 00:56:03 +01:00
Jacob Zeitz df8734f412 feat(plugins): input in a plugin frame counts as activity for the idle sign-out
Input inside an iframe never reaches the host window, so the idle timeout
signed users out while they worked in a plugin page, dialog or panel. The
sandbox runtime now reports trusted input in its frame (the guard's own
events, focus left out) through a MessagePort it hands the host with
sandbox-ready, before any plugin code runs, at most once per 15 s. The
host bridge passes it to a small notifier the session timeout guard
counts like its own window's input, so it reaches the other tabs too.
2026-10-30 16:37:42 +01:00
VasilisNtovolos b6290f85b1 fix: wait for attachment uploads before saving and closing drafts 2026-10-30 14:28:21 +02:00
Linus Rath dee2c07ce9 Merge branch 'main' of https://github.com/bulwarkmail/webmail 2026-10-30 11:05:11 +01:00
Linus Rath 859d368a1c feat: offer add to calendar on booking cards 2026-10-30 05:46:11 +01:00
Linus Rath 4479df3bf5 Merge branch 'feat/structured-mail-calendar' into feat/structured-mail 2026-10-30 05:42:47 +01:00
Linus Rath df257c23ba Merge branch 'feat/structured-mail-cards' into feat/structured-mail 2026-10-30 05:40:44 +01:00
Linus Rath 3aac5a5c4c fix: show booking calendar state across cards, say when a plugin stops a change and make the calendar picker keyboard friendly 2026-10-30 05:40:19 +01:00
Linus Rath b0782af2d1 fix: keep routes and booking numbers in reading order in right-to-left languages 2026-10-30 05:40:17 +01:00
Linus Rath b429f25360 fix: load no product images on conversation cards in plain-text mode 2026-10-30 05:40:16 +01:00