Commit Graph
830 Commits
Author SHA1 Message Date
Linus Rath 6559b34135 fix: keep Mountain View's row actions, checkbox and star on the subject line when attachment chips make the row taller 2026-10-28 19:53:33 +01:00
Linus Rath 8916a4ef75 fix: keep the search clear button inside the field and move filter, sort and refresh out of the crowded list header 2026-10-28 19:26:44 +01:00
Linus Rath baa5577ea7 Merge pull request #1360 from arnauda-gh/fix/scheduled-email-date-and-conversation-status
# Conflicts:
#	components/email/email-viewer.tsx
#	components/email/thread-conversation-view.tsx
#	components/mail/mail-app.tsx
2026-10-28 17:14:23 +01:00
Linus Rath 4d870c8409 Merge pull request #1394 from lucamzanon/fix/send-waits-for-draft-saves 2026-10-28 17:02:22 +01:00
Linus Rath 96797597c5 Merge branch 'main' into feat/org-features 2026-10-28 15:14:34 +01:00
Linus Rath 7271c87844 fix: let plain-text messages in the phone conversation take their own text direction 2026-10-28 13:09:30 +01:00
Linus Rath 2bb63f648b fix: keep the phone conversation's reply buttons readable and count its messages with each language's plural forms 2026-10-28 12:46:18 +01:00
Linus Rath 8fb4e51dc5 fix: end mail menu items in an ellipsis only where they open a dialog, drop the key hint and say Report spam on the reader button in every language 2026-10-28 12:42:22 +01:00
Linus Rath 0532fb2a47 fix: let senders, subjects and previews in the list and reader take their own text direction, so English text in Arabic is cut at its end 2026-10-28 11:06:18 +01:00
Linus Rath 23be243dba fix: name the reader's Reply, Reply all, Forward and Star without key hints, keeping the hint in the tooltip 2026-10-28 10:56:25 +01:00
Linus Rath 3700ec432c fix: ask Delete this email permanently? and Delete these emails? in the delete confirms 2026-10-28 10:54:16 +01:00
Linus Rath 90e94c6307 fix: show the composer's Discard as a standard button the height of Send 2026-10-28 10:47:12 +01:00
Linus Rath c60cc702f7 fix: open Save to Files with My files selected so Save here works right away 2026-10-28 10:45:12 +01:00
Linus Rath 1f078d0a56 fix: show an attachment's Download and Preview as named buttons the size of Save to Files 2026-10-28 10:43:52 +01:00
Linus Rath 55f0ff8762 fix: give every button in the selection bar the same size 2026-10-28 10:42:59 +01:00
Linus Rath 489a2b2f5f test: give the thread row test's auth store the state the plugin actions read 2026-10-28 10:20:15 +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 917b313d5d fix: show a message row's quick actions when the row gets the keyboard focus 2026-10-28 10:11:15 +01:00
Linus Rath 135ed4c4fc fix: let Escape in the Insert link dialog close only the dialog, not the composer 2026-10-28 10:07:39 +01:00
arnauda-gh 831a3e6b8d fix: show scheduled status indicator in conversations 2026-10-28 09:20:31 +01:00
Linus Rath 5d90a850bd Merge branch 'feat/org-recovery' into feat/org-features
# Conflicts:
#	components/email/email-list.tsx
2026-10-28 09:17:56 +01:00
Linus Rath 272083399c Merge branch 'feat/org-tags' into feat/org-features
# Conflicts:
#	lib/admin/restriction-keys.ts
#	lib/jmap/client.ts
2026-10-28 09:15:17 +01:00
Linus Rath f1a666777b Merge branch 'feat/org-features' into feat/org-recovery 2026-10-28 09:08:49 +01:00
Linus Rath 4d846cfc91 fix: read the whole deleted items archive newest first and only for the account shown #1319
Stalwart's x:ArchivedItem/query without calculateTotal scans ids
ascending, stops at 5000 and only then reverses them, so the newest
items of a large archive never showed, and admin accounts got every
account's items. The review of the branch also found gaps around
account switches, restores and focus.

- Read the archive in pages of 500 with calculateTotal, newest first,
  stop at a whole page older than the days limit, and offer
  "Show older" after 2000 items; detection asks for one item.
- Send the accountId filter and fall back without it on
  unsupportedFilter; keep only items of the account, never one without
  an account id.
- Ask nothing until config and policy are loaded and the policy is the
  current account's; the later check after a refusal is forced.
- Show the Trash link only when the archive holds a message inside the
  days limit; the Settings page shows whenever the server has the
  feature and says that archiving must be on in Stalwart.
- Restore: notFound leaves the list with a note, forbidden hides the
  page, results for another account are dropped, the button keeps focus.
- Forget what servers said at a full sign-out.
2026-10-28 09:08:44 +01:00
Linus Rath 3a03bc363b Merge branch 'feat/org-templates' into feat/org-features 2026-10-28 09:01:42 +01:00
Linus Rath 26d9fadc50 feat: count shared tags per group and open their tag view in that group only 2026-10-28 08:58:23 +01:00
Linus Rath 7f751e7de2 fix: offer the tags of the selection's account in the context menu, like the toolbar 2026-10-28 08:58:19 +01:00
Linus Rath 08f25506d4 Merge branch 'feat/org-teaminbox' into feat/org-features 2026-10-28 08:26:48 +01:00
Linus Rath e0586c1012 test: expect the Undo receipts the Mountain View Move passes 2026-10-28 08:24:16 +01:00
Linus Rath 23f67a5e72 fix: keep plugin chips named by their filter, draw the team icons at once and pass attributes to icons still loading 2026-10-28 08:16:52 +01:00
Linus Rath 42b694fb2c feat: save attachments of shared and group mailboxes to Files by copying the blob on the server 2026-10-28 08:16:47 +01:00
Linus Rath 7f06ed7637 Merge branch 'feat/org-features' into feat/org-tags
# Conflicts:
#	lib/admin/restriction-keys.ts
2026-10-28 08:14:39 +01:00
Linus Rath 9304557819 fix: look up another signed-in account for the external mail checks only when an admin turned them on 2026-10-28 08:07:55 +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 61d4e02e38 test: keep the Trash link out of a shared Trash without an account id 2026-10-28 07:39:00 +01:00
Linus Rath 63d64bba13 fix: show who a template addresses before inserting it and suggest the account's own categories 2026-10-28 07:34:05 +01:00
Linus Rath ba6e6af014 feat: recover deleted items from Stalwart's archive #1319 2026-10-28 07:27:47 +01:00
Linus Rath 30a863c79d fix: put the template, placeholder and composer dialogs on the shared dialog: close X at the end, Escape, outside click, and a discard prompt for typed changes 2026-10-28 07:13:34 +01:00
Linus Rath b5e92ba176 Merge branch 'feat/org-features' into feat/org-templates
# Conflicts:
#	lib/admin/restriction-keys.ts
2026-10-28 07:10:25 +01:00
Linus Rath e2908676ec fix: give menu rows, the phone More panel's close and the subject star a 44px touch target 2026-10-28 07:00: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 b049b6f470 feat: share tag names and colours in group mailboxes #1310 2026-10-28 06:43:46 +01:00
Linus Rath a69d7eee33 feat: let plugins work with team mailboxes: list filters, row badge icons, account info and message conditions
What the team inbox plugin needs, kept general for other plugins:

- `api.ui.setListFilters`: keyword filters drawn as chips in the list
  header of the folders they apply to (by account kind and folder
  role). A chip the user turns on is ANDed into the folder's query and
  comes off with one click; a keyword change a filter tests loads the
  list again (ui:message-list).
- Actions get `accounts`, `hasKeyword` and `notKeyword`, so a button
  shows only on messages of group accounts, or of a keyword state; the
  click of message-row-actions and reader-actions carries the message's
  `accountId`.
- `api.email.updateKeywords`: several keywords in one change, through
  the list for a listed message (email:write).
- `api.user.getSelf`, `getMailAccounts` and `findPeople`: the user's own
  account id (Stalwart's principal id), which accounts are group
  accounts, and people from the directory (account:read).
- `api.accountData`: a plugin's own entry in a mail account's shared
  Inbox metadata on Stalwart 1.0 (email:read / email:write).
- Row badges take an `icon`.
2026-10-28 06:39:57 +01:00
lucamzanon ce6ce0257f fix(compose): a send no longer races the autosave armed during an in-flight save
Send waited for a save already on the server, then flushed a pending
autosave only if its timer was still armed. When the save took longer
than the 2 s debounce, the timer fired during that wait and its save ran
beside the send: the send destroyed a version that save had already
replaced (a "post-send cleanup failed" warning) and the version it
created stayed in Drafts. Cancel the timer before awaiting and queue the
flush behind the save in flight.
2026-10-28 06:30:27 +01:00
Linus Rath b65b7b07d6 fix: give Mail's small controls on the phone a 44px touch target and a name: folder chevrons, search clear, recipient and attachment remove 2026-10-28 06:26:30 +01:00
Linus Rath de49281334 fix: offer the message and conversation links in the reader's menus too, and drop the keyboard shortcuts entry from the phone panel 2026-10-28 06:23:22 +01:00
Linus Rath 19676a14fd feat: make a new tag from the tag picker and open the template manager from the template picker 2026-10-28 06:18:53 +01:00
Linus Rath 29fcd649dd fix: tidy the reader header and toolbar: commas after names, a Cc "+N" that opens the list, labels that don't wrap, and room under the list for the Compose button 2026-10-28 06:14:41 +01:00
Linus Rath 47c47b4f08 feat: keep personal templates in the account on Stalwart 1.0 2026-10-28 06:13:47 +01:00