Linus Rath
768f3fe19b
fix: make Undo after Report spam put the message back and say Moved back, and name the Spam folder as the sidebar shows it
2026-10-28 10:40:17 +01:00
Linus Rath
f8a2d7821a
fix: say when a rescheduled message goes out now after Reschedule
2026-10-28 10:35:53 +01:00
Linus Rath
780b64461e
fix: close a message in the reader once its scheduled send is cancelled instead of still showing it as scheduled
2026-10-28 10:28:11 +01:00
Linus Rath
60b5a91a87
fix: give the phone conversation header Move and a More menu with the message's other actions, and keep a long subject to two lines
2026-10-28 10:20:11 +01:00
Linus Rath
ed9fa2de45
feat: offer Undo after a move to another account and in lists that mix accounts, moving the messages back into their folders
2026-10-28 08:06:45 +01:00
Linus Rath
f60ddf3f95
fix: give a message the same actions in its row menu, the reader's ⋮ and the phone panel, Print, View source, Export and Pin included, and one menu look for Mail's ⋮, Move, Tag and composer menus
2026-10-28 07:42:24 +01:00
Linus Rath
92815cc0ab
fix: keep opening a message as cheap as before: mount Mail's new dialogs, the selection bar and the folder options button only when they show
2026-10-28 06:48:00 +01:00
Linus Rath
65d4a66774
Merge branch 'main' into ux/mail
2026-10-28 05:57:23 +01:00
Linus Rath
446789b4e7
fix: give the empty mail list a next step: Clear search after a search, Compose in Drafts
2026-10-28 05:57:19 +01:00
Linus Rath
e5ef5ee9bf
fix: use the same icons for the same actions in Mail: Refresh, Back, Edit, Compose, More and the amber star
2026-10-28 05:48:50 +01:00
Linus Rath
af6deee047
feat: add Mail's commands to the command palette: reply, archive, delete, move, read state, spam and go to a folder
2026-10-28 05:27:17 +01:00
Linus Rath
b7d68191dd
fix: keep accented names in vCard file names, show an imported card's own name, stop starring both name fields, and compose from Contacts without asking for an account
2026-10-28 05:20:37 +01:00
Linus Rath
7166c5f112
fix: translate the last English words in Mail: Cc, Unknown, (No subject), Contact added, Copy and the move and connection messages
2026-10-28 05:16:30 +01:00
Linus Rath
d17277fab2
fix: point Mail's arrows, indents and panels the right way in right-to-left languages, and keep English subjects and sizes readable there
2026-10-28 05:16:29 +01:00
Linus Rath
43dd87b301
Merge branch 'main' into ux/mail
2026-10-28 05:16:28 +01:00
Linus Rath
b9ecf7eeea
fix: add the folder's actions to the mail list header, and Select all, Refresh and folder actions to the phone's menu without a keyboard hint in its search
2026-10-28 05:16:09 +01:00
Linus Rath
e3f1ccce75
feat: add a Sort menu to the mail list header
2026-10-28 05:16:08 +01:00
Linus Rath
91446a807c
fix: make the mail list easier by keyboard: a skip link, named row checkboxes, hover actions on focus, no hidden or nested buttons
2026-10-28 05:16:08 +01:00
Linus Rath
949c050eb0
fix: give the phone conversation view Archive, Delete, Report spam and Mark as unread
2026-10-28 05:16:08 +01:00
Linus Rath
f7adbf1efe
feat: add Cancel send for scheduled messages, which puts them back into Drafts, and show their actions once
2026-10-28 04:48:13 +01:00
Linus Rath
2693ca0447
fix: ask in the app's own dialog before sending without a delay the account can't do
2026-10-28 04:48:12 +01:00
Linus Rath
d378b97396
fix: reschedule a scheduled message in the Schedule send dialog instead of typing a date into a browser prompt
2026-10-28 04:48:11 +01:00
Linus Rath
fd3e66e64b
fix: ask for a fresh 2FA code in every app, not only in Mail, and translate the prompt
2026-10-28 03:27:03 +01:00
Linus Rath
8d43023c48
fix: keep the keyboard shortcuts button and All inboxes in the Mountain View top bar outside Mail
2026-10-28 03:12:59 +01:00
Linus Rath
6c5aead20b
feat: undo a delete to Trash, archive, move, spam report or remove from folder from its toast
2026-10-28 03:11:43 +01:00
Linus Rath
7a93b0e6c8
fix: follow the Delete action setting when deleting a message, and delete for good when it says so
2026-10-28 02:37:18 +01:00
Linus Rath
ad7001cbe8
fix: show new mail of another signed-in login in the unified inbox without a click #1350
2026-10-26 20:35:53 +01:00
Linus Rath
d610312483
fix: update the open calendar and show reminders on time when events change elsewhere #1349
2026-10-26 20:35:52 +01:00
Linus Rath
9de2efb722
fix: open a shared or group account's message from its link instead of the own message with the same id #1351
2026-10-26 20:01:11 +01:00
Linus Rath
af536ac90a
fix: keep the account and other query parameters of a mail link Lite replays after a 404 #1352
2026-10-26 20:01:10 +01:00
Linus Rath
2f8b4863ff
Merge pull request #1338 from HOLOEYE-JZ/feat/plugin-search-results
2026-10-26 19:32:56 +01:00
Linus Rath
272fc5e1f4
fix: reuse a group account's year and month archive folders instead of creating them again or in the own account
2026-10-26 16:14:19 +01:00
Linus Rath
34ad859ce4
fix: refuse Undo and Send now for a delayed send of a signed-out account instead of acting through the active one
2026-10-26 16:11:53 +01:00
Linus Rath
ceaa9cea39
fix: highlight only the open message in lists that mix accounts, not another account's message with the same id
2026-10-26 16:11:52 +01:00
Linus Rath
54b197080c
fix: keep a discarded draft of a signed-out account instead of deleting another account's message with its id
2026-10-26 16:11:52 +01:00
Linus Rath
0b917d6262
fix: mark the replied, forwarded or receipted message as answered in its own account, not another account's message with the same id
2026-10-26 16:11:52 +01:00
Linus Rath
acac3128bc
fix: archive and delete a message from its own account's folders in tag and unified views
2026-10-26 16:11:51 +01:00
Linus Rath
e314e56661
fix: keep the own and a group's scheduled mail apart when their ids are the same
2026-10-26 12:26:58 +01:00
Linus Rath
cf2c27157d
Merge branch 'main' into feat/stalwart-1.0
...
# Conflicts:
# components/contacts/contacts-app.tsx
# components/email/__tests__/composer-discard.test.tsx
# components/email/calendar-invitation-banner.tsx
# components/email/email-composer.tsx
# components/mail/mail-app.tsx
# components/pro/pro-compose-tab-body.tsx
# components/pro/pro-email-tab-body.tsx
# components/ui/__tests__/avatar.test.tsx
# components/ui/avatar.tsx
# hooks/use-mailbox-drop.ts
# lib/__tests__/calendar-alerts.test.ts
# lib/__tests__/jmap-calendar-tasks.test.ts
# lib/__tests__/jmap-send-threading.test.ts
# lib/demo/demo-client.ts
# lib/demo/fixtures/calendars.ts
# lib/jmap/client-interface.ts
# lib/jmap/client.ts
# lib/web-push.ts
# stores/__tests__/contact-store.test.ts
# stores/__tests__/email-store-thread-key.test.ts
# stores/calendar-store.ts
# stores/contact-store.ts
# stores/email-store.ts
2026-10-26 10:14:12 +01:00
Jacob Zeitz and Claude Opus 5.5
fc438c275f
feat: open the message a plugin's search result names
...
An entry of onProvideSearchResults may carry email: { id, accountId? }.
A click on it opens the message in the reader through the login that
reaches the account, as a list row does, and marks the entry while it
is open; any other click stays onAction.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-25 15:22:38 +01:00
Linus Rath
6d459674f8
Merge pull request #1109 from hildebrandttk/fix/group-identity-sent-copy
...
fix: save a group identity's drafts in the group account's Drafts (#1…
2026-10-24 17:55:10 +02:00
Linus Rath
10caa9e2f3
Merge pull request #1316 from ghozty/feat/app-name-strings
...
feat: name the app with the configured APP_NAME in user-facing strings
2026-10-24 17:54:49 +02:00
Linus Rath
7049844cf3
fix: keep the message list within the screen on phones
2026-10-22 23:08:39 +02:00
ghozty and Claude Opus 5.5
30f51e5ca4
feat: name the app with the configured APP_NAME in user-facing strings
...
Some user-facing strings still said "Bulwark" on a deployment with its own
APP_NAME: Settings > General > Default apps (protocol handlers), the "Open
Bulwark" notification, the rate-limit banner and toast, the plugin connect
dialog, one plugin permission text and the connector page.
These strings now take an {appName} placeholder, filled by productName():
the configured APP_NAME, or "Bulwark" when it is unset or the default
"Webmail" (the same rule as the TOTP issuer and the About card, #1160 ).
A stock install reads as before.
The settings search (the settings page and api.app.searchSettings) indexes
these texts with the name filled in, so "bulwark" or the configured name
finds Default apps and no result carries the raw placeholder.
Locales: the 13 keys in every locale that has "Bulwark" in them. Languages
that inflect the name (cs, et, hu, ko, ro, sk, tr) use a neutral form such
as "{appName} uygulamasında" instead of a declined "Bulwark'ta"; a native
check of those is welcome.
Not changed on purpose: the mobile app, push relay, Lite, demo and admin
texts, which speak about Bulwark itself.
Closes #1314
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-22 04:14:54 +03:00
Linus Rath
ed42c5a92d
fix: cancel the original scheduled send before creating its replacement on reschedule #1308
2026-10-21 19:42:56 +02:00
VasilisNtovolos
41b70853fa
fix: preserve message ownership in Pro blob downloads
2026-10-20 14:33:42 +03:00
Stefan Hildebrandt
04efcfc1f3
fix: save a group identity's drafts in the group account's Drafts ( #1090 )
...
Drafts were always created in the primary account, so a message composed as
a group identity sat in the member's own Drafts while its Sent copy (since the
previous commit) went to the group.
- createDraft takes { accountId, previousDraftAccountId }: the draft goes to
the account that owns the From identity (resolveSendAccountId, now public
and briefly caching the identity lists for autosave), and the replaced
version is destroyed in the account it lives in.
- The composer tracks draftAccountId next to draftId (save, re-resolve of
attachment blobs, send, discard, stashed state), since draft ids are only
unique within one account.
- sendEmail destroys the sent draft in options.draftAccountId; discarding
(inline and Pro tab) deletes it there, through the identity's login.
- Re-opening a draft from a group/shared Drafts folder (or a stamped
aggregate row) keeps its account.
- resolveSendAccountId is optional on IJMAPClient; without it drafts stay in
the primary account.
- Tests: client unit tests for draft placement / replacement / send cleanup,
E2E spec 18 draft cases (autosave + send, discard).
2026-10-19 16:33:27 +02:00
VasilisNtovolos
a73ac09035
fix: route conversation blobs by originating message
2026-10-19 15:43:38 +03:00
Linus Rath
bfe98b49a0
fix: act on the clicked row when another account has a message with the same id (GHSA-8x23-qw3w-mhrx)
2026-10-18 17:54:48 +02:00
Linus Rath
58eff0e879
Merge pull request #1258 from HOLOEYE-JZ/feat/archive-feature-gate
...
feat: admin policy gate to turn off archiving #1257
2026-10-18 14:29:27 +02:00