Commit Graph
225 Commits
Author SHA1 Message Date
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 ZeitzandClaude 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
ghoztyandClaude 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