2876 Commits
Author SHA1 Message Date
Linus Rath 4efb9a2a75 docs: list the private monthly sponsor in the 1.17.2 changelog 1.17.2 2026-10-24 22:59:08 +02:00
Linus Rath 5872bf20e9 chore: release 1.17.2 2026-10-24 22:46:52 +02:00
Linus Rath af07bb3cd3 fix: list admin plugins when the browser can't cache their code #1327 2026-10-24 22:37:16 +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 89e93e330e fix: send a sub-address of your own address from your account, not a shared catch-all 2026-10-24 17:58:45 +02:00
Linus Rath 16e88e8a1b fix: end every push with a notification so Safari keeps the subscription #1322 2026-10-24 17:58:21 +02:00
Linus Rath 35660690d2 fix: fire task alerts from the start when they are relative to it #1328 2026-10-24 17:57:56 +02:00
Linus Rath 0d4631c5a8 test: bound the impersonation expiry by both ends of the handoff 2026-10-24 17:56:38 +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 7370b6bad0 Merge pull request #1335 from tobiasge/feat/plugin-regional-formatting
feat: mirror regional presentation settings to plugin sandboxes
2026-10-24 17:55:06 +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 6d44e9320c Merge pull request #1333 from HOLOEYE-JZ/feat/plugin-keywords-update-remove
feat: let plugins update and remove the tags they added
2026-10-24 17:54:58 +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
Linus Rath bf725814ad Merge pull request #1326 from VasilisNtovolos/fix/bulk-move-client-routing
fix: route bulk move by authenticated client
2026-10-24 17:54:44 +02:00
Linus Rath bec2796f1d Merge pull request #1307 from VasilisNtovolos/fix/bulk-delete-client-routing
fix: route bulk delete and trash by authenticated client
2026-10-24 17:54:39 +02:00
Linus Rath a2e795d132 Merge pull request #1306 from VasilisNtovolos/fix/zip-export-failure-retry
fix: reject incomplete email ZIP exports and allow retry
2026-10-24 17:54:35 +02:00
Linus Rath 225d84bf2b Merge pull request #1311 from vladonv/fix/uk-translation-forward-move-to
fix(i18n): correct Ukrainian "forward" and "move to" translations
2026-10-24 17:54:31 +02:00
Tobias Genannt 2b5a9dbfc5 feat: mirror regional presentation settings to plugin sandboxes
Plugins running in iframe sandboxes previously lacked access to the user's regional formatting settings (dateLocale, timeFormat 12h/24h, timeZone, and firstDayOfWeek) unless they requested privileged settings:read permissions.

This mirrors the host's resolved presentation preferences into the plugin sandbox:
- Adds RegionalSnapshot (locale, dateLocale, hour12, timeZone, firstDayOfWeek) to BackgroundInit, SlotInit, and LocaleChangeMsg.
- Implements snapshotRegionalSettings() in host-bridge, reusing host resolveDateLocale() and getEffectiveTimeZone().
- Subscribes stores/plugin-store.ts to useSettingsStore to broadcast updates to running sandboxes when regional preferences change.
- Exposes api.i18n.formatTime(date, options) and api.i18n.formatDate(date, options) along with regional getters on api.i18n.
2026-10-24 11:01:13 +02:00
Jacob ZeitzandClaude 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
Jacob ZeitzandClaude Opus 5.5 372fc9ec71 feat: let plugins update and remove the tags they added
keywords.add now records the plugin on each definition it adds
(addedBy). keywords.update changes the label, colour or visibility of
those definitions, never their id; keywords.remove deletes them, as
Settings > Tags does, and leaves the keywords on messages alone. Both
need settings:write and skip every other definition, so a plugin cannot
rename or delete the user's own tags or another plugin's.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 08:54:23 +02:00
VasilisNtovolos 423c1bb329 fix: route bulk move by authenticated client 2026-10-23 13:16:26 +03:00
Linus Rath d1f4ccaccf Update CHANGELOG for version 1.17.1 release
Updated the changelog to reflect the release of version 1.17.1 and removed the unreleased section for version 1.17.2.
2026-10-22 23:49:30 +02:00
Linus Rath 8a31a83bc9 fix: update next.js and dompurify for published advisories 1.17.1 2026-10-22 23:39:03 +02:00
Linus Rath 2be5408be5 chore: release 1.17.1 2026-10-22 23:22:40 +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
Linus Rath 310f910a6a fix: hand a mobile sign-in to the app when the browser was already signed in 2026-10-22 08:02:08 +02:00
lsamc 51404ed015 feat(plugins): allow inline actions beside sidebar section headings 2026-10-21 21:20:29 -04: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 0650067884 chore: update vitest and vite to clear npm audit findings 1.17.0 2026-10-21 23:42:21 +02:00
Linus Rath ba44434401 chore: release 1.17.0 2026-10-21 23:28:02 +02:00
Vlad d7d9c0f193 fix(i18n): correct Ukrainian "forward" and "move to" translations
The "forward" email action was mistranslated as "вперед" (the
directional adverb "forward/ahead") instead of "Переслати" (the verb
"to forward [a message]") across context_menu, email_viewer,
email_composer, and shortcuts. Also "move_to" read as "Перейти до..."
("navigate to...") instead of "Перемістити до..." ("move to..."),
which described the wrong action for moving an email to a folder.
2026-10-21 22:11:01 +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
Linus Rath b594a354a0 Merge remote-tracking branch 'origin/main' 2026-10-21 16:56:59 +02:00
Linus Rath 68047e7fdb fix: open the contact card in place instead of sliding in from the top left 2026-10-21 16:54:29 +02:00
VasilisNtovolos 43be0a1bb3 fix: route bulk delete and trash by authenticated client 2026-10-21 14:14:35 +03:00
VasilisNtovolos 96ae3ce4df fix: reject incomplete email ZIP exports and allow retry 2026-10-21 13:11:41 +03:00
Linus Rath 80323148d2 fix: hide sign out of admin for stalwart admins signed in automatically 2026-10-21 00:09:30 +02:00
Linus Rath 33212f1fad Merge pull request #1300 from VasilisNtovolos/fix/message-drag-blob-routing
fix: route dragged emails by owning account
2026-10-20 22:36:00 +02:00
Linus Rath 96c1cec19f Merge branch 'main' into fix/message-drag-blob-routing 2026-10-20 22:22:13 +02:00
Linus Rath 24317a7d92 test: drag the composer's plugin panels with pointer events 2026-10-20 21:25:18 +02:00
Linus Rath b812fe62f4 fix: keep the composer's editor-ready handler stable so a repeated report can't loop 2026-10-20 21:25:17 +02:00
Linus Rath 69ae5200dc test: drag the composer's plugin panels with pointer events 2026-10-20 21:24:27 +02:00
Linus Rath 617b9b3b51 fix: keep the composer's editor-ready handler stable so a repeated report can't loop 2026-10-20 21:24:03 +02:00
Linus Rath 8428219699 chore: drop the drag test notes from the test folder 2026-10-20 21:15:36 +02:00
Linus Rath eb6fb310da Merge branch 'main' into fix/message-drag-blob-routing 2026-10-20 21:15:36 +02:00
Linus Rath d292f4c376 Merge pull request #1299 from VasilisNtovolos/fix/pro-blob-routing
fix: preserve message ownership in Pro blob downloads
2026-10-20 21:15:08 +02:00
Linus Rath c083c7e075 Merge pull request #1297 from dealerweb/fix/hover-actions-after-delete
fix: show the hover actions on a row that moves under a resting pointer
2026-10-20 21:15:03 +02:00
Linus Rath e1f2ba7dbc Merge pull request #1298 from dealerweb/fix/push-preferences-sandboxed-frame
fix: stop the push preference mirror from throwing in sandboxed plugin frames
2026-10-20 21:14:58 +02:00