Commit Graph
880 Commits
Author SHA1 Message Date
Linus Rath 6143aaa80d fix: move the focus into the batch tag menu and make the full-screen compose window a dialog 2026-10-29 18:02:59 +01:00
Linus Rath 37a14eca6a fix: name the inbox category tabs in the user's language and tie them to the list 2026-10-29 18:02:57 +01:00
Linus Rath 75b4ec37fb fix: say whether a conversation attachment button previews or downloads, next to the file name 2026-10-29 17:53:59 +01:00
Linus Rath a982c3f235 feat: dim the open message except a band of lines with the reading mask 2026-10-29 17:53:59 +01:00
Linus Rath caed2d313a feat: open a message in a reader view with the app's font, spacing and colours 2026-10-29 17:53:59 +01:00
Linus Rath af3019ea2b feat: read a message aloud with the browser's voice, highlighting what it reads 2026-10-29 17:53:58 +01:00
Linus Rath bb78697981 feat: pause animated images in mail with a play button 2026-10-29 17:53:57 +01:00
Linus Rath 1e929b0a95 feat: read HTML mail as plain text, by default or per message 2026-10-29 17:53:57 +01:00
Linus Rath 3c4d63006c feat: scale wide mail down to the pane on any screen with fit wide mail on 2026-10-29 17:53:56 +01:00
Linus Rath 8cc0f8f258 feat: keep message lines to about 80 characters with the comfortable reading width 2026-10-29 17:53:56 +01:00
Linus Rath dcc0d600f4 feat: show HTML mail in the app's font, colours and spacing when styles are overridden 2026-10-29 17:53:56 +01:00
Linus Rath 24a13cc1f8 fix: stop animations inside mail when reduce motion is on 2026-10-29 17:53:55 +01:00
Linus Rath 324a0f76b2 fix: leave mail colours to the browser in Windows contrast themes 2026-10-29 17:53:55 +01:00
Linus Rath c07ba1a370 feat: show message bodies at the chosen text size and enlarge text below the minimum 2026-10-29 17:53:55 +01:00
Linus Rath b63038a644 fix: name the file on attachment buttons and say whether a conversation message is expanded 2026-10-29 17:53:54 +01:00
Linus Rath c20b9846b9 fix: name each message frame after its subject and give it the mail's language 2026-10-29 17:53:54 +01:00
Linus Rath 8e55184e1f fix: name pane resize handles, expose their width and keep their arrow keys from the mail shortcuts 2026-10-29 17:53:51 +01:00
Linus Rath 4c1f24947e fix: tell screen readers when a draft is saved and read a failed upload out once 2026-10-29 17:53:50 +01:00
Linus Rath 374ae9c8dc feat: ask before deleting or archiving when the confirm settings are on 2026-10-29 17:53:48 +01:00
Linus Rath ee17c0dbaf feat: undo marking read or unread, stars and tags from the toast or with Ctrl+Z 2026-10-29 17:53:47 +01:00
Linus Rath e2fc2c750a feat: read toasts out to screen readers, errors assertively 2026-10-29 17:53:44 +01:00
Linus Rath 53cb49d3ce feat: ask for alt text when an image goes into a message
Pasted and dropped images used to get the file name as alt text, and
there was no way to change it. Now a small dialog asks what the image
shows right after it is inserted, with a "Decorative image" option that
writes alt="". An image already in the text can be described from the
toolbar or from the ALT button on the selected image. The plain-text
part of an HTML mail writes described images as "[Image: ...]" and
leaves decorative ones out.

The formatting toolbar now also re-renders when only the selection
changes, so its pressed states and the image button follow the caret.
2026-10-29 17:53:43 +01:00
Linus Rath 1b24c1980c feat: start new messages in the default compose font and size 2026-10-29 17:53:42 +01:00
Linus Rath 4d91d9b296 feat: ask before sending when confirm before sending is on 2026-10-29 17:53:42 +01:00
Linus Rath 4f35aa13fa fix: show attachment upload progress and failures in words for screen readers 2026-10-29 17:53:41 +01:00
Linus Rath 447a3fa474 fix: make the formatting toolbar one tab stop that says which styles are on 2026-10-29 17:53:41 +01:00
Linus Rath caee90facc fix: name the message body and tie its error to it for screen readers 2026-10-29 17:53:40 +01:00
Linus Rath 0aa751a3a0 feat: move a recipient between To, Cc and Bcc from the chip's menu 2026-10-29 17:53:39 +01:00
Linus Rath ee486077de fix: name the recipient fields and let the keyboard reach and remove chips 2026-10-29 17:53:38 +01:00
Linus Rath 3962900035 fix: show a tag's letter in its dot and its full name with colour names on 2026-10-29 17:53:37 +01:00
Linus Rath ef826972dd fix: put the focus back somewhere sensible after an action removes it 2026-10-29 17:53:36 +01:00
Linus Rath dcc504fcfa feat: add landmarks, an h1 per app, skip links and F6 between panes 2026-10-29 17:53:35 +01:00
Linus Rath 13d697ddfb feat: turn off every single-key shortcut when the setting is off 2026-10-29 17:53:34 +01:00
Linus Rath 69d2f35d78 fix: keep the install card off the send button and remember not now #1411 2026-10-29 14:32:43 +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
VasilisNtovolos 995262bde2 fix: report partial and failed attachment ZIP downloads 2026-10-29 14:02:24 +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 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 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 14871f784d fix: move view source from the reader toolbar into the more menu 2026-10-28 20:08:23 +01:00