1203 Commits
Author SHA1 Message Date
Linus Rath 864d2a85e6 test: stub elementFromPoint for the mousedown in the mention tests 2026-10-11 21:27:06 +02:00
Linus Rath 517cd019a8 Merge branch 'main' of https://github.com/bulwarkmail/webmail 2026-10-11 21:16:27 +02:00
Linus Rath 866312129b test: click into the body before typing in the mention tests 2026-10-11 21:15:14 +02:00
Linus Rath 11cf2415d6 Merge pull request #1210 from lucamzanon/fix/mv-collapsed-rail
fix(mountain-view): let the collapsed rail fill its 72px column
2026-10-11 21:09:30 +02:00
Linus Rath 1ed7ec0327 Merge pull request #1213 from shukiv/fix/draft-body-from-body-parts
fix: take a re-opened draft's body from its body parts only
2026-10-11 21:03:18 +02:00
Linus Rath 968c351d4d Merge pull request #1212 from shukiv/fix/composer-attachment-list-scroll
fix: scroll the attachment list instead of burying the send button
2026-10-11 21:03:14 +02:00
Linus Rath a61a7c503e fix: show the sender's name in the contact popover when the saved contact has none 2026-10-11 21:01:42 +02:00
Linus Rath b1a0c069c6 fix: keep the participant suggestions from being cut off by the event form 2026-10-11 20:55:00 +02:00
Linus Rath 687fde4185 fix: stop Bitwarden filling the participant field and line its suggestions up with the typed text 2026-10-11 20:50:10 +02:00
Linus Rath f382568d1d fix: stop Bitwarden offering logins in the mail search box 2026-10-11 20:49:37 +02:00
Linus Rath 8c7758b2f1 fix: line the recipient suggestions up with the typed text on desktop too 2026-10-11 20:45:52 +02:00
Linus Rath 6ea5526783 fix: stop Bitwarden offering logins in the recipient fields 2026-10-11 20:43:47 +02:00
Linus Rath 62a00f713f fix: widen the recipient suggestions on a phone to the whole row 2026-10-11 20:39:59 +02:00
Linus Rath 90bd575e85 fix: make the formatting buttons easier to hit on a phone 2026-10-11 20:31:56 +02:00
Linus Rath 481fa06ed8 fix: keep Reply All on one line in the conversation view 2026-10-11 20:31:21 +02:00
Linus Rath 8d23cfc888 fix: show the suggested name above its address on a phone 2026-10-11 20:30:43 +02:00
Linus Rath 46a1adbb2d fix: start at the top of the body when tabbing into a new message 2026-10-11 20:26:43 +02:00
Linus Rath e3f0f6cb38 fix: fold the formatting toolbar away on a phone behind a Formatting button 2026-10-11 20:21:47 +02:00
Linus Rath f025b2101d fix: name the composer close and conversation back buttons for screen readers 2026-10-11 20:18:19 +02:00
Linus Rath 4b282e7064 fix: give touch tips in the welcome banner on a phone 2026-10-11 20:09:31 +02:00
Linus Rath 434ab6251e fix: show one Edit button on a draft 2026-10-11 20:07:46 +02:00
Linus Rath f8157a92f4 fix: hide the via badge when it repeats the sender name 2026-10-11 20:07:05 +02:00
Shuki Vaknin 2a45f6099c fix: take a re-opened draft's body from its body parts only
A draft that carried attachments and no message re-opened with the
contents of one of the attachments as its text. Attach a .csv to an
empty draft, save it, re-open it: the editor shows the rows of the csv
as what you had written, and the next save or send makes that the real
message.

Both edit-draft paths built the text body by joining every value in
bodyValues:

    Object.values(draft.bodyValues).map(v => v.value).join('\n')

bodyValues is keyed by part id, and getEmail asks for
fetchAllBodyValues, which per RFC 8621 4.1.4 returns a value for every
text/* part of the message - attachments included. So any attached
.csv, .txt, .log or .md was joined in as body text, and with no html
body to prefer it became the whole message.

Take the body from the parts the server lists as the body instead, and
from nothing else. A draft whose textBody is empty now re-opens empty,
which is what an attachments-only draft is.

The selection lives in lib/email-body-selection.ts beside
getRenderableHtmlBody, which exists because the viewer and the mobile
thread view had already drifted apart once (#489). mail-app and the pro
email tab held character-for-character copies of this join, so the same
drift was already in place.
2026-10-11 18:04:26 +00:00
Shuki Vaknin 58a4041aaa fix: scroll the attachment list instead of burying the send button
Expanding a long attachment list made the composer unusable. With a few
dozen files, "+N" grew the chip row past the bottom of the composer: the
last rows were off-screen, the send toolbar went with them, and nothing
scrolled, so the only way out was to collapse the list again.

The row is a shrink-0 sibling of the body's scroll container, so every
pixel it takes comes out of the composer and out of nothing else, and it
has no scroller of its own. Collapsed that is fine - three chips and a
counter. Expanded, its height is the attachment count.

So bound it when it is expanded and let it scroll itself. 30vh keeps the
toolbar on screen on a laptop and still shows several rows; collapsed
behaviour is untouched, since three chips never needed a cap.

overscroll-contain stops a scroll that reaches the end of the list from
continuing into the message body behind it, which is the usual annoyance
once a small scroller appears next to a large one.
2026-10-11 18:04:26 +00:00
Linus Rath 54b74363e7 feat: offer one-click times in the Schedule send dialog 2026-10-11 20:03:42 +02:00
Linus Rath 46e4f8385c fix: mark quotes and list items in the plain-text part of sent mail 2026-10-11 20:00:47 +02:00
Linus Rath e9a37e14bd fix: close an autosaved draft without asking about unsaved changes 2026-10-11 19:57:10 +02:00
Linus Rath 935a410c8f fix: explain failed sends in plain words and keep toasts off the Send button 2026-10-11 19:54:02 +02:00
Linus Rath 2ae8c89990 fix: show the scheduled time rounded to the minute and with its date 2026-10-11 19:50:40 +02:00
Linus Rath 8e074503a3 fix: ask about a missing subject only once per message 2026-10-11 19:48:26 +02:00
Linus Rath eadcc2b481 fix: put the caret in the body when a reply opens 2026-10-11 19:46:36 +02:00
Linus Rath 39d299b720 fix: title the composer Reply, Reply All or Forward instead of New Message 2026-10-11 19:43:20 +02:00
Linus Rath 7aa35ca5b9 Merge branch 'main' of https://github.com/bulwarkmail/webmail 2026-10-11 19:42:32 +02:00
Linus Rath a4cc91c4fb fix: show one signature separator and keep its trailing space 2026-10-11 19:41:48 +02:00
Linus Rath 22ffc36ca9 feat: let plugins run a message-list search with a JMAP filter #1024 2026-10-11 19:39:58 +02:00
Linus Rath b361387cd9 fix: make Discard delete the draft, also one reopened from Scheduled 2026-10-11 19:21:52 +02:00
Linus Rath 67c5191b2c Merge branch 'main' of https://github.com/bulwarkmail/webmail 2026-10-11 19:18:57 +02:00
Linus Rath ef710c7b92 test: drop unused imports from the new composer tests 2026-10-11 19:18:19 +02:00
Linus Rath 31057af93d fix: stop the Continue draft banner from flashing after a send 2026-10-11 19:16:54 +02:00
Linus Rath e7237e1d05 feat: run saved rules on a folder from its context menu #1166 2026-10-11 19:16:51 +02:00
Linus Rath a5c60ef597 fix: hide Undo send when the delay is over and say when an undo fails 2026-10-11 19:13:10 +02:00
Linus Rath 1614cab78b fix: return to the message list after sending a new message on a phone 2026-10-11 19:04:02 +02:00
Linus Rath 7c21b0d0f9 Merge branch 'main' of https://github.com/bulwarkmail/webmail 2026-10-11 18:59:34 +02:00
Linus Rath 32f74e2083 fix: keep the quoted message when tabbing into a reply or forward 2026-10-11 18:58:55 +02:00
Linus Rath 9dc0f9c892 fix: label the composer toolbar buttons and group send options in a menu 2026-10-11 18:58:26 +02:00
Linus Rath 3efa370e42 fix: split typed addresses on commas and stop sends to invalid addresses 2026-10-11 18:55:46 +02:00
Linus Rath ab97ed2441 fix: add the highlighted suggestion on Enter instead of the typed text 2026-10-11 18:53:15 +02:00
Linus Rath fcc6c15227 fix: close the recipient suggestions once the typed address is added 2026-10-11 18:49:03 +02:00
Linus Rath 7401ea6658 fix: recolour mails for dark mode instead of inverting them
Dark mode used to invert the whole message body with a CSS filter and
re-invert images and coloured cells. Brand colours came out shifted
(red turned pink), white cells set through bgcolor stayed white, and
the result changed after loading remote content because the blocker
strips the background attributes the selectors relied on.

The rendered body is now read back through computed styles and its
colours are rewritten in place: light backgrounds are darkened in their
own hue, vivid and dark fills stay as sent, text and borders only change
when they lack contrast, and anything painted on a background image is
left alone. Transparent dark images get their original light background
behind them when their pixels show they would vanish. The thread
conversation view uses the same pass.

Also fixed along the way:
- blocking remote content dropped every leading `<style>` block, so
  mails lost their CSS until images were loaded
- a mail's `prefers-color-scheme` rules followed the OS instead of the
  app theme
2026-10-11 18:43:04 +02:00
Linus Rath d98f0684d9 test: click the My files breadcrumb in the file picker test 2026-10-11 18:12:14 +02:00