Commit Graph
2043 Commits
Author SHA1 Message Date
Linus Rath 7b59f2562f Merge pull request #1493 from ibayue/feat/signature-insert-toggles 2026-11-02 20:23:58 +01:00
Linus Rath 42add9400c Merge pull request #1502 from pirate/fix/mailbox-pagination-only 2026-11-02 20:23:57 +01:00
Linus Rath 45c1d9b3d6 Merge pull request #1499 from Schrobo/fix/shared-mailbox-push-target 2026-11-02 20:23:56 +01:00
Linus Rath b8aa44c16f Merge pull request #1492 from shadow1runner/feat/template-inline-images 2026-11-02 20:23:55 +01:00
Linus Rath 8ef3ad901e fix: page large folder lists on stalwart 1.0 and retry when mail arrives mid-load #1502 2026-11-02 20:18:49 +01:00
Linus Rath 2b7f5b1b4e Merge branch 'feat/boot-skeleton' 2026-11-02 20:16:37 +01:00
Linus Rath 244e8b7b5a fix: keep the login and mailbox owner in notification links on safari 16 #1499 2026-11-02 20:15:34 +01:00
Linus Rath f1b2c20f1d chore: undo stray formatting changes from the signature toggles #1493 2026-11-02 20:15:29 +01:00
Linus Rath 14e1ab5f26 test: cover quick reply with the reply signature toggle off #1493 2026-11-02 20:14:49 +01:00
Linus Rath 0bacfb389e Merge branch 'feat/boot-skeleton-mail' into feat/boot-skeleton
# Conflicts:
#	app/boot-skeleton.css
#	lib/boot-skeleton/boot-script.ts
2026-11-02 20:01:22 +01:00
Linus Rath 3db7b745d0 Merge branch 'feat/boot-skeleton-calendar' into feat/boot-skeleton
# Conflicts:
#	app/boot-skeleton.css
#	components/boot-skeleton/shell.tsx
2026-11-02 19:51:39 +01:00
Nick Sweeting c862909fdd fix: respect single-call paging and preserve folders on page failures 2026-11-02 10:50:50 -08:00
Linus Rath 56678fd499 Merge branch 'feat/boot-skeleton-auth' into feat/boot-skeleton
# Conflicts:
#	components/boot-skeleton/shell.tsx
2026-11-02 19:42:04 +01:00
Nick Sweeting 2262b2baf1 fix: paginate mailbox retrieval without sidebar changes 2026-11-02 09:06:27 -08:00
Szymon Chroboczek 62906e45dc fix: preserve mailbox owner in push notification links 2026-11-02 12:47:44 +01:00
daluchenandClaude Code 1f8b1f4533 feat: add signature auto-insert toggles, off by default
Automatic signature insertion was unconditional: any identity with a
signature got it embedded in new mail and appended to replies, forwards
and quick replies. Users who want a signature only in specific contexts
had no way to opt out.

Add two per-account synced settings, both defaulting to off:

- signatureNewMailEnabled: insert the signature in new messages (and
  re-opened drafts, which open in compose mode)
- signatureReplyForwardEnabled: append it in replies, forwards and the
  quick reply box

With a toggle off the composer neither embeds the signature into the
body, nor appends one at send or draft-save time, nor shows the
read-only preview under the editor - the preview would promise a
signature that never goes out. A signature pasted in by hand is never
stripped (bodyCarriesSignature still short-circuits the append).

Also flip signatureSeparatorEnabled's default from true to false: the
RFC 3676 "-- " delimiter surprised users more than it helped. Only the
default changes - no migration, so users who already set it keep their
choice.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-11-02 11:05:17 +08:00
Helmut Wolf 48f0b94ee6 feat: send a template's data: images as inline parts #1490
Images in a template arrive as data: URIs (an imported templates file, or a
template saved from a message with a pasted image) and went out as they
were, so Gmail and Outlook did not show them. Inserting a template now
uploads each one like a pasted image and tags it with the cid, so the send
path turns it into a cid: part in multipart/related.
2026-11-01 20:15:52 +01:00
Linus Rath d2205b9c09 Merge branch 'feat/boot-skeleton-cfa' into feat/boot-skeleton
# Conflicts:
#	app/boot-skeleton.css
2026-11-01 19:59:52 +01:00
Linus Rath 63e62865d6 Merge branch 'feat/boot-skeleton-settings' into feat/boot-skeleton
# Conflicts:
#	app/boot-skeleton.css
2026-11-01 19:59:39 +01:00
Linus Rath c06b4b5e28 feat: show the calendar's grid while the app loads 2026-11-01 19:48:20 +01:00
Linus Rath b6ca61f8a7 feat: draw the new-contact form while the app loads on /contacts/new 2026-11-01 19:47:19 +01:00
Linus Rath 57c1d5d472 feat: show the contacts, files and plugin page shapes while the app loads 2026-11-01 19:36:09 +01:00
Linus Rath afe3fca08a feat: draw the mail page's folders, list and reader while the app loads 2026-11-01 19:33:35 +01:00
Linus Rath f5bcc8d47d feat: show the sign-in, admin and setup pages' shape while they load 2026-11-01 19:25:13 +01:00
Linus Rath 5166cd0a5a feat: show the settings page's shape while the app loads 2026-11-01 19:24:13 +01:00
Linus Rath 8ae78fe641 feat: read the Pro tabs before the first paint 2026-11-01 19:15:54 +01:00
Linus Rath 3f3dfebb84 test: keep archived items without accountId in the client test #1480 2026-11-01 18:53:12 +01:00
Linus Rath 441371554b feat: draw the rail's add app button in the page skeleton 2026-11-01 18:48:01 +01:00
Linus Rath 8d790b29fd feat: show the page's skeleton on Lite pages while their language loads 2026-11-01 18:41:58 +01:00
Linus Rath 943276696b feat: paint the saved theme, density and layout before the app loads 2026-11-01 18:41:58 +01:00
Linus Rath f5ed12f5cb refactor: keep the density tables and legacy settings tabs in plain modules 2026-11-01 18:41:36 +01:00
Linus Rath 55f1875f20 refactor: take quick reply plugin recipients from the quick reply envelope #1445 2026-11-01 18:18:48 +01:00
Linus Rath 5caf3378b2 Merge pull request #1445 from illuwa-soft/feat/upstream-quick-reply-actions
feat: offer composer plugin actions in quick reply
2026-11-01 18:15:18 +01:00
Linus Rath dd94a2b7c8 refactor: keep composer snapshot comments in English #1443 2026-11-01 18:15:13 +01:00
Linus Rath 4a597eb0dc Merge pull request #1443 from illuwa-soft/feat/upstream-composer-read-api
feat: add composer snapshots and conditional edits

# Conflicts:
#	lib/__tests__/plugin-sandbox-runtime-host-gate.test.ts
#	lib/plugin-sandbox/host-api.ts
2026-11-01 18:13:10 +01:00
Linus Rath 4cd75f4d07 refactor: keep the toast limits named and comments in English #1442 2026-11-01 18:12:42 +01:00
Linus Rath 6915813262 Merge pull request #1442 from illuwa-soft/feat/upstream-progress-toasts
feat: expose frame-scoped plugin progress toasts

# Conflicts:
#	lib/plugin-sandbox/host-bridge.ts
2026-11-01 18:11:12 +01:00
Linus Rath b903ba1e7a Merge pull request #1482 from HOLOEYE-JZ/feat/plugin-task-links
feat: let plugins set task links and related mail
2026-11-01 18:10:57 +01:00
Linus Rath cc6b8899d8 Merge pull request #1481 from HOLOEYE-JZ/feat/plugin-task-alerts
feat: let plugins set task alerts
2026-11-01 18:10:56 +01:00
Linus Rath a3d4853974 fix: hide out of office when the account lacks the vacation permission #1488 2026-11-01 17:48:11 +01:00
Linus Rath c4d9a918bf feat: let admins preset and lock where a new search looks #1485 2026-11-01 17:44:37 +01:00
Linus Rath e4338ac47d feat: add the Search in setting to Message list settings #1485 2026-11-01 17:44:15 +01:00
Linus Rath 3c2eb9bffa feat: let a new search look only in the open folder #1485 2026-11-01 17:43:51 +01:00
Linus Rath 52350876fd fix: label the offline and version API routes in metrics and error reports 2026-11-01 17:40:33 +01:00
Linus Rath 42a09f573d fix: let the Lite host scan accept the licence links in the PST worker 2026-11-01 17:26:31 +01:00
Linus Rath 7e88eeaa60 test: send archived items without accountId like Stalwart does for regular users #1480 2026-11-01 17:25:23 +01:00
Linus Rath d70b51f097 fix: show deleted messages to recover on Stalwart 1.0 #1480 2026-11-01 17:24:09 +01:00
Linus Rath 9ce7927627 fix: keep the old build's offline files from coming back after a deploy #523 2026-11-01 14:49:14 +01:00
Linus Rath 4b60fcc1e6 fix: make the offline outbox never send twice, never lose mail silently and never skip a plugin #523
The review of offline mode found ways to send a message twice, to lose
unsent mail without a word, and to send mail without its signing,
encryption or check plugin. This fixes them and the smaller findings:

- each outbox message is taken for sending in one database transaction
  under a Web Lock per account; only a failure before the submission
  request (SendNotStartedError from the client) puts it back, any other
  one marks it "may have gone out"; read-backs after the submission no
  longer fail a send; a send of a closed tab turns uncertain after a minute
- every sign-out the user didn't confirm names the deleted messages on
  the sign-in page, or in a toast when another account stays signed in
- nothing is queued while an enabled plugin isn't running (after a start
  without the network none can); the composer says why
- the outbox waits for a fresh policy and holds messages the rules have
  since made stricter (a required label, a required send check)
- another tab switching offline mode off sticks: only switching it on
  may create the database
- only attachments of kept messages are kept, filed with their message,
  deleted with it and under the cap between syncs; file names and types
  are sealed; folders that went away leave the scope, and a folder that
  couldn't be asked keeps its mail without holding the others back
- a group scope that forbids offline mode waits until the account's
  groups are known; one server down no longer holds another's mail
- an offline start only when the server is really unreachable, and the
  real sign-in follows by itself once it answers
- the service worker files pages and chunks under the build that served
  them, and the shell list of another build isn't kept under this one
- a raw send counts as the composer's only from the plugin running its
  takeover, for that identity
- errors and refusals are in all languages; the banner tells "offline"
  from "server can't be reached"; outbox buttons name their message;
  changes and messages go in the order they were made
2026-11-01 14:19:54 +01:00
Linus Rath 52188f54d6 Merge branch 'feat/enterprise-pack' into feat/enterprise-pack-f 2026-11-01 13:50:22 +01:00