Linus Rath
edba184bc0
fix: keep an Outlook-style reply from loading the quoted message's remote images
2026-10-26 19:30:18 +01:00
Linus Rath
12ee24a81a
Merge pull request #1355 from maxhaomh/fix/outlook-quote-lines
2026-10-26 19:28:56 +01:00
Linus Rath
4bfaf8abce
Merge pull request #1363 from lucamzanon/feat/account-archive-restore-prompt
2026-10-26 19:26:13 +01:00
Linus Rath
e99cce05fe
Merge pull request #1370 from maxhaomh/feat/disable-quick-reply
2026-10-26 19:24:49 +01:00
Linus Rath
7677b87c5e
Merge pull request #1373 from motofix/fix/1371-download-name-slash
2026-10-26 19:23:56 +01:00
Julien Béti
460343d86d
fix: show inline images whose part name is a path #1371
2026-10-26 18:34:57 +01:00
Linus Rath
e159ca1420
fix: name the rail's Mail entry Mail for screen readers instead of its unread count
2026-10-26 16:49:44 +01:00
Max Hao
7216089629
feat: add quick reply feature with toggle in settings and tests
2026-10-26 11:40:47 -04: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
4a9284aa48
fix: mark the answered or forwarded message from a Pro compose tab also when the send is held for undo
2026-10-26 16:14:18 +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
87701c8c20
fix: keep the calendars shown or hidden in the Pro interface as the user set them
2026-10-26 15:15:58 +01:00
Linus Rath
7da326b86e
fix: keep the server's path in the fallback CalDAV address
2026-10-26 15:15:58 +01:00
Linus Rath
f0392a6705
fix: check a meeting reply's sender against the attendee who answers, not the organizer
2026-10-26 15:15:58 +01:00
Linus Rath
ae897b42a4
fix: make the impersonation handoff really clear the previous account list and ignore ?impersonated=1 links from elsewhere
2026-10-26 14:58:31 +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
8c9cf8e63e
test: check draft account and threading headers in createDraft's options after the merge
2026-10-26 12:26:57 +01:00
Linus Rath
dcde570ebe
fix: say the directory can't be browsed instead of that a refresh failed when the server lists only the people you know
2026-10-26 12:25:32 +01:00
Linus Rath
b038c82dcc
fix: only offer to apply a counter proposal sent by one of the meeting's participants
2026-10-26 12:25:31 +01:00
lucamzanon
2f8c6e13bf
feat: offer to restore the saved account list on a new device
...
Part 3 of 3 of the account archive (#1198 ). Signing in on a browser that
knows no other account, with a list saved for that account, opens a dialog
asking for the backup password and restores the list as Settings does.
Not now hides the offer for that account in this browser; the restore
stays in Settings.
2026-10-26 12:23:18 +01:00
Linus Rath
b5c6b67ba4
fix: keep a link in a printed message from redirecting the webmail tab
2026-10-26 11:22:10 +01:00
Linus Rath
3f2f27321c
fix: keep an unquoted cid: image from swallowing the rest of the message
2026-10-26 11:22:10 +01:00
Linus Rath
6014142358
fix: show conversation and attached-message attachment names without directional override characters
2026-10-26 11:22:10 +01:00
Linus Rath
c133659c83
fix: run links in conversation messages through the reader's link gate
2026-10-26 11:22:10 +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
Max Hao
5430b9e446
fix: honor borderless Outlook-style HTML quotes
2026-10-25 22:22:41 -04:00
Linus Rath
3bfba19ca5
fix: give Mountain View's list chips Gmail's height and spacing
2026-10-25 13:14:24 +01:00
Linus Rath
f7a4087c91
feat: split the Mountain View inbox into Unread and Everything else, as Gmail's unread first
2026-10-25 13:13:46 +01:00
Linus Rath
e31f55064e
fix: use the current calendar and contacts icons in the Mountain View side panel
2026-10-25 12:56:48 +01:00
Linus Rath
cb663d2222
fix: keep settings switches full width next to long labels
2026-10-25 12:49:55 +01:00
Linus Rath
0b1463b7d5
feat: show attachment and code chips as Gmail pills in Mountain View
2026-10-25 12:48:49 +01:00
Linus Rath
39c8b14574
fix: open the admin panel in the desktop layout without a phone-layout flash
2026-10-25 12:42:02 +01:00
Linus Rath
07627b3a60
fix: give every app's sidebar header and toolbar the same height as mail
2026-10-25 12:30:23 +01:00
Linus Rath
9c360694bf
fix: send paragraphs with the spacing the composer shows #1340
2026-10-25 12:27:13 +01:00
Linus Rath
6be0f70452
perf: skip plugin round trips when a slot re-renders with the same props
2026-10-25 02:40:43 +02:00
Linus Rath
782d4f8bf5
perf: stop loading the app's stores in every plugin frame
2026-10-25 02:09:37 +02:00
Linus Rath
a49ab079ec
fix: sanitize quoted and signature HTML in re-opened drafts (GHSA-g35q-3gpc-x2rr)
2026-10-24 22:13:19 +02: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
1bd1a6b123
Merge pull request #1334 from HOLOEYE-JZ/feat/sidebar-tags-first
...
feat: admin policy gate to list the Tags above the shared mailboxes
2026-10-24 17:55:01 +02:00
Linus Rath
3b8dd4cd82
Merge pull request #1317 from LeonardNJU/feat/plugin-sidebar-heading-actions
...
feat(plugins): allow inline actions in collapsible sidebar headers
2026-10-24 17:54:53 +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
Jacob Zeitz and Claude Opus 5.5
96526c1b41
feat: admin policy gate to list the Tags above the shared mailboxes
...
A new feature gate, tagsAboveSharedEnabled (default off, so the sidebar
keeps its order), lists the Tags section above the shared mailboxes
instead of below them. With many shared mailboxes expanded, the tags
otherwise end up out of sight. In Mountain View the tags then follow the
Labels list directly, also when More is open.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-24 08:54:23 +02:00
Linus Rath
a037f9a6e9
fix: do not offer push onboarding while the resync is restoring the subscription #1321
2026-10-22 23:15:32 +02:00
Linus Rath
7049844cf3
fix: keep the message list within the screen on phones
2026-10-22 23:08:39 +02:00
lsamc
51404ed015
feat(plugins): allow inline actions beside sidebar section headings
2026-10-21 21:20:29 -04: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