Linus Rath
c633185cda
Merge branch 'main' into feat/stalwart-1.0
...
# Conflicts:
# CONTRIBUTING.md
# LICENSE
# README.md
# app/api/calendar-agenda/route.ts
# app/api/wopi/files/[fileId]/contents/route.ts
# app/api/wopi/launch/route.ts
# components/calendar/calendar-app.tsx
# components/calendar/calendar-day-view.tsx
# components/calendar/calendar-month-view.tsx
# components/calendar/calendar-week-view.tsx
# components/calendar/event-modal.tsx
# components/contacts/contact-detail.tsx
# components/email/email-composer.tsx
# components/email/email-list.tsx
# components/files/file-browser.tsx
# components/files/files-app.tsx
# components/files/folder-tree-sidebar.tsx
# components/filters/filter-rule-modal.tsx
# components/mail/mail-app.tsx
# hooks/use-mailbox-drop.ts
# integration/run-tests.sh
# lib/__tests__/calendar-agenda-route.test.ts
# lib/__tests__/jmap-draft-lifecycle.test.ts
# lib/__tests__/web-push.test.ts
# lib/account-state-manager.ts
# lib/jmap/client-interface.ts
# lib/jmap/client.ts
# lib/jmap/types.ts
# lib/message-list-order.ts
# lib/sieve/generator.ts
# lib/sieve/parser.ts
# lib/telemetry/payload.ts
# lib/thread-utils.ts
# lib/unified-mailbox.ts
# lib/web-push.ts
# lib/wopi/token.ts
# locales/ar/common.json
# locales/ca/common.json
# locales/cs/common.json
# locales/da/common.json
# locales/de/common.json
# locales/en/common.json
# locales/es/common.json
# locales/fa/common.json
# locales/fr/common.json
# locales/he/common.json
# locales/hu/common.json
# locales/it/common.json
# locales/ja/common.json
# locales/ko/common.json
# locales/lv/common.json
# locales/mn/common.json
# locales/nb/common.json
# locales/nl/common.json
# locales/pl/common.json
# locales/pt/common.json
# locales/ro/common.json
# locales/ru/common.json
# locales/sk/common.json
# locales/tr/common.json
# locales/uk/common.json
# locales/zh-TW/common.json
# locales/zh/common.json
# scripts/lite/lib.mjs
# stores/__tests__/calendar-store-synthetic-ids.test.ts
# stores/__tests__/email-store-shared-folder-keywords.test.ts
# stores/__tests__/email-store-unified-actions.test.ts
# stores/__tests__/file-store.test.ts
# stores/email-store.ts
# stores/file-store.ts
# stores/message-list-tabs-store.ts
2026-10-12 08:35:08 +02:00
Linus Rath
37440e02b0
fix: let tasks move into and live in calendars shared with you #1204
2026-10-12 07:36:46 +02:00
Linus Rath
19797b4c65
fix: sort the message list by date sent when that order is picked #1219
2026-10-12 07:22:00 +02:00
Linus Rath
c587ad459e
fix: keep the dark body backdrop full width in Mountain View and show Gmail's help button
2026-10-12 02:00:02 +02:00
Linus Rath
f160dae25c
fix: stop the panes sliding when animations are turned off #1215
2026-10-12 01:55:57 +02:00
Linus Rath
66122ae652
feat: order Mountain View's bulk actions like Gmail's and search the Move to menu
2026-10-12 01:54:15 +02:00
Linus Rath
0a82835626
feat: lay out Mountain View's account card like Gmail's
2026-10-12 01:53:19 +02:00
Linus Rath
5efe718cf0
feat: order Mountain View's message menu like Gmail's and add Find emails from
2026-10-12 01:45:35 +02:00
Linus Rath
986daef90b
feat: add Gmail's side panel with calendar, tasks and contacts to Mountain View
2026-10-12 01:40:30 +02:00
Linus Rath
cedac10c29
feat: use Gmail's advanced search form in Mountain View
2026-10-12 01:34:02 +02:00
Linus Rath
78e68e8886
feat: write Mountain View replies in place under the conversation
2026-10-12 01:29:55 +02:00
Linus Rath
c652fec371
feat: give Mountain View's compose window Gmail's title bar and bottom bar
2026-10-12 01:26:03 +02:00
Linus Rath
943a92bd42
feat: show the whole conversation around the open message in Mountain View
2026-10-12 01:16:15 +02:00
Linus Rath
1980de68c8
feat: give Mountain View's open message Gmail's toolbar, pager and header
2026-10-12 01:10:10 +02:00
Linus Rath
20b52a060f
feat: draw Mountain View's message rows like Gmail's
2026-10-12 01:01:09 +02:00
Linus Rath
cf558e7e9f
feat: lay out Mountain View's navigation like Gmail's, with a Labels section
2026-10-12 00:46:48 +02:00
Linus Rath
ae151cec25
feat: set Mountain View's content on a rounded card over a tinted canvas
2026-10-12 00:37:59 +02:00
Linus Rath
2534c4fde5
chore: release 1.14.1
1.14.1
2026-10-11 22:36:24 +02:00
Linus Rath
6e5e071078
fix: stop painting plain mails on a gray background in dark mode
2026-10-11 22:19:05 +02:00
Linus Rath
864d2a85e6
test: stub elementFromPoint for the mousedown in the mention tests
1.14.0
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
38f6ad805b
fix: translate the rule menu's loading and run messages
2026-10-11 21:13:40 +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
a248144e54
chore: release 1.14.0
2026-10-11 21:08:32 +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
63c9835099
fix: translate the new composer and send strings
2026-10-11 20:36:38 +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
47f6378d3f
fix: stop calling a reload without Remember me an expired session
2026-10-11 20:15:45 +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