Commit Graph
1981 Commits
Author SHA1 Message Date
Linus Rath 863806fc65 fix: translate system folder names in the advanced search folder list #1429 2026-10-29 14:24:07 +01:00
Linus Rath 6d96f31652 fix: keep the composer's spacing on the reply attribution line 2026-10-29 14:14:41 +01:00
Linus Rath a75db40f7f Merge pull request #1421 from pcatapan/codex/composer-quote-collapse 2026-10-29 14:12:41 +01:00
Linus Rath 5ab935a879 Merge pull request #1417 from b3rsrk/fix/foreign-draft-paragraph-spacing 2026-10-29 14:12:38 +01:00
Linus Rath 47ee263d76 Merge pull request #1419 from HOLOEYE-JZ/feat/plugin-search-results-pending
# Conflicts:
#	components/email/plugin-search-results.tsx
2026-10-29 14:11:34 +01:00
Linus Rath 8e533f090c Merge pull request #1418 from HOLOEYE-JZ/feat/plugin-search-result-marks 2026-10-29 14:11:11 +01:00
Linus Rath 720a903d57 Merge pull request #1428 from VasilisNtovolos/fix/download-all-error-feedback 2026-10-29 14:11:07 +01:00
Linus Rath 4406a6435e Merge pull request #1426 from VasilisNtovolos/fix/attachment-download-error-feedback 2026-10-29 14:10:42 +01:00
Linus Rath 764ee97692 test: bring the main test suite back to green after the vitest 5 upgrade and header rework 2026-10-29 14:07:40 +01:00
VasilisNtovolos 995262bde2 fix: report partial and failed attachment ZIP downloads 2026-10-29 14:02:24 +02:00
VasilisNtovolos 35064316ad fix: show errors when attachment downloads fail 2026-10-29 13:19:29 +02:00
pcatapan 9e00896043 feat(composer): collapse quoted reply history behind an ellipsis 2026-10-29 11:00:58 +01:00
Jacob Zeitz 03876158fe feat(plugins): hold the search results block's place while a plugin still searches
A plugin's results to a search came all at once after its handler answered,
with nothing before: the block then appeared above the message list and
pushed it down, under a pointer about to click a row. onProvideSearchResults
handlers that search elsewhere (a CRM's search by meaning) take seconds.

Each plugin's answer now shows as it comes, and the store keeps the plugins
still asked. One that has not answered after 300 ms gets the block at a fixed
height with placeholder rows under "Searching for more results…"; its
entries then fill that height, so the list moves once, with its own results.
A plugin that answers at once (one not searching for this query) shows
nothing.
2026-10-29 10:25:59 +01:00
Jacob ZeitzandClaude Opus 5.5 fa4db60032 feat(plugins): let a plugin search result's snippet mark what matched
An entry from onProvideSearchResults may wrap what matched in <mark>, as
SearchSnippet/get does, and the block above the message list highlights
it with the list's own SearchSnippetText. The host keeps the marks,
escapes everything else and cuts the snippet by its text, closing a mark
it cuts, so the snippet is still never rendered as HTML.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 10:03:27 +01:00
Till OberbeckmannandClaude Opus 5 797fb875e1 fix: keep the paragraph spacing of a draft written elsewhere #1416
A draft does not have to come from the composer: the JMAP API, another
client, an automation or a template can leave one in Drafts, and its
paragraphs carry no style, so every mail client lays them out with the
user agent's 1em margins. Since #1340 the composer stamps its own 4px
margin on every paragraph it serializes, so opening such a draft to read
it over and pressing Send re-flowed the message, and the composer showed
it at a spacing the recipient would never see.

What is loaded now keeps the spacing it came with: a paragraph with text
and no margin of its own is stamped with the mail default on the way in,
so the editor shows the message's own layout and what goes out is what
came in. The empty paragraph a new message is scaffolded with is left
alone, as are table cells, the quoted original and an embedded
signature. addParagraphSpacing skips a paragraph that already states a
margin, so nothing is declared twice.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-10-29 10:01:12 +01:00
Linus Rath 4aea0976a4 chore: update dependencies, postal-mime 4 and jest-dom 7 2026-10-29 01:52:40 +01:00
Linus Rath 99b6857d90 fix: keep settings tab labels on one line 2026-10-29 00:57:07 +01:00
Linus Rath 6b41692d81 fix: show themes the admin installed in the theme picker without opening mail first 2026-10-29 00:55:41 +01:00
Linus Rath 367e29913a fix: show the advanced settings switch below the app info in the settings sidebar 2026-10-29 00:49:15 +01:00
Linus Rath 6c681020b2 fix: show a clearer no-results icon and replace hand-drawn icons with Tabler ones 2026-10-29 00:22:12 +01:00
Linus Rath 63375f6870 Merge pull request #1410 from motofix/fix/1407-vcard-4-export
fix: export contacts as valid vCard 4.0 #1407
2026-10-29 00:13:30 +01:00
Linus Rath f12a13e1fd feat: create documents in the formats the document editor can edit from New file #1393 2026-10-29 00:01:13 +01:00
Linus Rath 8b35962efb fix: show section labels in sentence case instead of all caps 2026-10-28 22:26:39 +01:00
Linus Rath 39eb38a0fa fix: give the mail, calendar, contacts, files and settings headers one search field and one button style 2026-10-28 22:16:48 +01:00
Linus Rath 0d3916cfcc feat: add a light event colors setting that shows calendar events tinted with a color bar, as in Outlook 2026-10-28 21:50:47 +01:00
Linus Rath 67b44fd5de fix: keep the inner edge of color bars straight on rounded events, tasks and notes 2026-10-28 21:50:29 +01:00
Linus Rath 38720f2d43 feat: print contact lists, contacts, groups and directory entries from Print or Ctrl+P 2026-10-28 21:08:21 +01:00
Linus Rath d5bf6b98c4 feat: print the calendar's month, week, day, agenda, tasks and single events 2026-10-28 21:08:20 +01:00
Linus Rath ba13866311 feat: print a clean copy of the page instead of the app shell 2026-10-28 21:08:20 +01:00
Linus Rath d9afc9b643 fix: open the reader's more menu in place instead of sliding in from the right 2026-10-28 21:04:30 +01:00
Linus Rath 14871f784d fix: move view source from the reader toolbar into the more menu 2026-10-28 20:08:23 +01:00
Linus Rath 9aa132c02f feat: flash the settings section a jump-row button scrolls to 2026-10-28 20:05:13 +01:00
Linus Rath 785c19fe8c fix: show the version footer in the settings sidebar only with advanced settings on 2026-10-28 19:57:01 +01:00
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 720e146225 feat: make the mail filter panel simpler with on/off toggles, date and size ranges and every field in view 2026-10-28 19:38:46 +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 8c38d44448 Merge branch 'main' of https://github.com/bulwarkmail/webmail 2026-10-28 18:06:09 +01:00
Julien Béti a3fdd72763 fix: export contacts as valid vCard 4.0 #1407
The export declared VERSION:3.0 but wrote vCard 4.0 syntax, and wrote the JSContact phone feature \"mobile\" as TYPE=MOBILE, which is no vCard type, so importers dropped such numbers.

- Declare VERSION:4.0 and write 4.0 throughout: basic-format dates and timestamps, data: URIs for inline media, VALUE=text for a UID or RELATED that is no URI, geo: URIs, lines folded at 75 octets, CRLF after every line, and the webmail's own PRODID.
- Map "mobile" to CELL and back; MAIN-NUMBER and x- types are kept.
- Write N before FN: some importers ignore the name otherwise.
- The contact form stores mobile phones as "mobile" (RFC 9553) and still reads the "cell" it used to write.
2026-10-28 17:27:07 +01:00
Linus Rath 90ec6748ac fix: keep the translations out of every page of the Lite export 2026-10-28 17:16:35 +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 17c3bdb22c Merge pull request #1395 from lucamzanon/fix/eml-preview-nested-attachments 2026-10-28 17:04:55 +01:00
Linus Rath 8108249a35 Merge pull request #1406 from HOLOEYE-JZ/feat/plugin-ui-navigate
# Conflicts:
#	app/(main)/[locale]/layout.tsx
2026-10-28 17:02:42 +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 4421c3ce7e fix: spin refresh icons the way their arrows point 2026-10-28 17:00:50 +01:00
Linus Rath 96797597c5 Merge branch 'main' into feat/org-features 2026-10-28 15:14:34 +01:00
Jacob Zeitz ba45d0f8b9 feat(plugins): api.ui.openPage moves the tab to one of the plugin's own pages 2026-10-28 13:50:12 +01:00
Linus Rath fdd00ac639 Merge branch 'ux/final-ccs' 2026-10-28 13:24:08 +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 ac5596165a fix: show only the app's own message for a wrong address in the contact form, without the browser bubble over it 2026-10-28 13:05:43 +01:00
Linus Rath 1b25d23a07 fix: keep the organizer mark capitalised in german event participants 2026-10-28 13:04:30 +01:00