daluchen and Claude Code
5dde5e00e1
feat: add batch forward-as-attachment for selected emails
...
Multi-select emails in the list, right-click, and pick "Forward as
attachments" to open one composer carrying every selected message as
its own message/rfc822 (.eml) attachment - the batch sibling of the
existing single-message action.
- lib/forward-as-attachment.ts: buildBatchForwardAsAttachmentPayload
builds one payload from many emails. The subject is count-based
(there is no single original subject), with the count localized via
an injected label so the subject never claims more attachments than
the composer carries. Emails without a blobId are skipped; null when
none has one, matching the single flow's silent no-op.
- mail-app.tsx: handleBatchForwardAsAttachment resolves the selection
through useEmailStore.getState() (fresh state, list-ordered
attachments, stale ids drop out), runs the plugin transform and veto
hooks per email - one veto cancels the whole compose - and opens the
composer with the attachments seeded via replyTo. Clears the
selection only on success.
- email-context-menu.tsx / email-list.tsx: new batch menu item shown
when the right-clicked email belongs to a multi-selection; hidden in
the scheduled view like the single item.
- locales: context_menu.forward_as_attachments and
email_composer.forward_batch_count in all 27 locales.
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-10-15 14:50:31 +08:00
..
2026-10-15 14:50:31 +08:00
2026-10-14 21:36:50 +02:00
2026-10-14 04:00:36 +02:00
2026-09-20 19:59:37 +02:00
2026-10-12 07:36:46 +02:00
2026-10-14 20:08:37 +02:00
2026-10-13 13:36:51 +02:00
2026-09-30 14:23:09 +02:00
2026-10-15 06:05:22 +02:00
2026-10-14 13:59:41 +02:00
2026-10-14 18:49:56 +02:00
2026-10-14 10:58:19 +02:00
2026-10-14 04:34:14 +02:00
2026-09-30 08:54:14 +02:00
2026-10-13 13:36:51 +02:00
2026-10-06 23:31:03 +02:00
2026-10-13 13:36:51 +02:00
2026-09-26 15:15:23 +02:00
2026-08-29 12:46:39 +02:00
2026-08-25 19:16:20 +02:00
2026-10-08 14:32:39 +02:00
2026-10-09 10:54:38 +02:00
2026-10-09 10:54:38 +02:00
2026-10-09 10:54:38 +02:00
2026-10-05 10:36:20 +02:00
2026-09-30 09:02:58 +02:00
2026-10-13 13:36:51 +02:00
2026-10-15 00:12:59 +02:00
2026-10-14 05:10:10 +02:00
2026-09-10 10:45:45 +02:00
2026-06-19 12:31:07 +02:00
2026-09-19 00:53:53 +02:00
2026-09-19 13:01:07 +02:00
2026-10-13 15:56:10 +02:00
2026-08-16 21:18:57 +02:00
2026-10-02 22:56:16 +02:00
2026-10-05 23:09:48 +02:00
2026-09-03 22:12:15 -07:00
2026-08-29 11:03:48 +02:00
2026-04-21 17:42:52 +02:00
2026-04-16 16:54:09 +02:00
2026-09-30 14:21:20 +02:00
2026-09-09 18:27:01 +02:00
2026-09-26 20:47:13 +02:00
2026-09-09 16:38:55 +02:00
2026-08-25 18:50:50 +02:00
2026-10-11 18:43:04 +02:00
2026-10-13 13:13:56 +02:00
2026-04-12 01:10:28 +02:00
2026-09-01 20:55:13 +02:00
2026-10-02 16:31:44 +02:00
2026-10-13 13:36:51 +02:00
2026-10-14 19:44:54 +02:00
2026-10-11 18:04:26 +00:00
2026-10-11 18:53:15 +02:00
2026-10-11 22:19:05 +02:00
2026-08-25 19:36:04 +02:00
2026-09-23 19:41:44 +02:00
2026-10-07 19:04:15 +02:00
2026-10-15 01:17:39 +02:00
2026-10-14 13:20:21 +02:00
2026-06-25 01:04:26 +02:00
2026-05-06 20:07:36 +02:00
2026-05-22 15:22:33 +02:00
2026-09-24 10:00:01 +02:00
2026-10-14 01:43:43 +02:00
2026-10-14 21:36:50 +02:00
2026-08-20 16:49:31 +02:00
2026-09-22 20:54:01 +02:00
2026-09-30 15:08:31 +02:00
2026-10-15 01:03:02 +02:00
2026-08-20 14:21:41 +02:00
2026-10-15 14:50:31 +08:00
2026-10-11 20:00:47 +02:00
2026-09-24 21:15:22 +02:00
2026-05-18 16:01:29 +02:00
2026-10-13 14:53:23 +02:00
2026-10-13 13:36:51 +02:00
2026-07-21 23:26:51 +02:00
2026-08-06 18:44:14 +02:00
2026-07-29 17:18:38 +02:00
2026-07-29 17:18:42 +02:00
2026-09-26 20:24:23 +02:00
2026-10-13 13:36:51 +02:00
2026-09-18 22:16:57 +02:00
2026-09-19 00:53:53 +02:00
2026-09-17 23:54:33 +02:00
2026-09-19 00:53:53 +02:00
2026-02-16 18:51:30 +01:00
2026-06-24 19:32:13 +02:00
2026-09-17 20:55:39 +02:00
2026-09-29 20:28:39 +02:00
2026-10-02 23:04:28 +02:00
2026-07-04 14:52:26 +02:00
2026-08-29 18:11:50 +02:00
2026-10-14 03:58:58 +02:00
2026-10-14 04:05:43 +02:00
2026-10-14 03:50:55 +02:00
2026-10-14 06:26:10 +02:00
2026-10-14 04:05:43 +02:00
2026-10-14 07:40:32 +02:00
2026-10-14 02:33:45 +02:00
2026-10-14 20:08:37 +02:00
2026-10-14 03:04:17 +02:00
2026-10-14 06:21:17 +02:00
2026-10-14 02:21:45 +02:00
2026-10-14 11:35:00 +02:00
2026-09-26 16:55:34 +02:00
2026-10-14 03:39:13 +02:00
2026-10-14 11:35:00 +02:00
2026-10-14 01:47:58 +02:00
2026-09-30 19:03:34 +02:00
2026-08-16 23:04:22 +02:00
2026-07-22 19:17:23 +02:00
2026-06-25 00:25:28 +02:00
2026-04-09 22:13:08 +02:00
2026-09-30 22:43:59 +02:00
2026-09-26 15:45:59 +02:00
2026-09-23 13:40:01 +02:00
2026-09-23 13:40:01 +02:00
2026-08-25 21:13:34 +02:00
2026-09-09 19:27:08 +02:00
2026-08-16 21:12:21 +02:00
2026-08-06 19:19:18 +02:00
2026-10-11 20:03:42 +02:00
2026-10-11 19:50:40 +02:00
2026-09-29 20:15:14 +02:00
2026-10-14 23:51:17 +02:00
2026-08-25 20:09:18 +02:00
2026-10-13 13:36:51 +02:00
2026-10-13 15:55:54 +02:00
2026-05-09 17:37:41 +02:00
2026-05-31 15:52:27 +02:00
2026-10-13 15:55:54 +02:00
2026-09-19 13:32:41 +02:00
2026-10-06 23:26:27 +02:00
2026-10-11 19:41:48 +02:00
2026-10-11 19:41:48 +02:00
2026-09-26 15:31:05 +02:00
2026-05-06 20:07:36 +02:00
2026-08-18 15:48:05 +02:00
2026-10-07 08:26:51 +03:00
2026-10-06 22:14:29 +02:00
2026-10-13 13:36:51 +02:00
2026-10-06 22:14:29 +02:00
2026-08-06 18:23:21 +02:00
2026-09-26 14:36:02 +02:00
2026-09-19 13:32:41 +02:00
2026-09-26 14:36:02 +02:00
2026-08-16 02:19:04 +02:00
2026-09-30 09:02:58 +02:00
2026-10-13 13:36:51 +02:00
2026-09-26 14:15:10 +02:00
2026-10-15 00:41:07 +02:00
2026-10-06 23:29:42 +02:00
2026-10-14 23:51:17 +02:00
2026-08-23 19:44:56 +06:00
2026-10-15 00:41:08 +02:00
2026-09-26 14:41:14 +02:00
2026-08-31 23:53:24 +02:00
2026-10-15 06:15:15 +02:00
2026-05-21 23:35:58 +02:00
2026-10-10 19:24:10 +02:00