Commit Graph
1802 Commits
Author SHA1 Message Date
Linus Rath bc3b6a0eb6 fix: collapse search hits for the same server object reached through several logins #641 2026-09-01 22:15:49 +02:00
Linus Rath c73f90eb35 Merge pull request #852 from shukiv/feat/clear-search-on-folder-change
feat(search): add "clear search when switching folders" setting
2026-09-01 21:53:00 +02:00
Linus Rath 96cdf3749f feat: avatars, tinted icons and structured previews in global search results #641 2026-09-01 21:41:35 +02:00
Linus Rath a9cd4ced60 feat: match the search tab chrome to the mail page sidebar #641 2026-09-01 21:30:16 +02:00
Linus Rath 1d8e4b9d8a fix: duplicate calendar-app import and type errors the stale tsbuildinfo hid 2026-09-01 21:08:10 +02:00
Linus Rath c075b79cbb feat: global search palette and search tab in the Pro shell #641 2026-09-01 20:55:13 +02:00
Linus Rath 0c7437f67a feat: open global search hits through the owning login on every surface #847 2026-09-01 20:55:13 +02:00
Linus Rath 0db6bfdc64 feat: global search core: query parser, ranking, cross-account providers #641 2026-09-01 20:55:12 +02:00
Shuki Vaknin 12f01409a6 feat(search): add "clear search when switching folders" setting
Switching folders currently keeps an active search applied and re-runs
it in the newly selected folder — deliberate behavior from #553, where
users wanted the query to follow them across folders. Others expect the
opposite: clicking Inbox/Sent should drop the search and just browse the
folder.

Add an opt-in setting (Settings → email behavior) that reconciles both.
Default is off, so #553's search-follows-you behavior is unchanged for
everyone. When on, any folder click clears the text query and advanced
filters and browses the folder instead of re-running the search.

Applied uniformly across the four folder-entry paths in MailApp — normal
mailboxes, per-account (Pro sidebar) folders, unified views, and cross
views — via one helper so no path diverges.
2026-09-01 21:26:08 +03:00
Linus Rath f2415d266c Merge pull request #948 from shukiv/fix/batch-toolbar-top-of-list
fix(list): stop the batch toolbar hiding the message you just selected
2026-09-01 20:18:28 +02:00
Linus Rath 3f2837277c Merge pull request #941 from ponchofiesta/bugfix/940-create-contact-in-selected-addressbook
fix: set default addressbook to selected one
2026-09-01 20:17:31 +02:00
Shuki Vaknin 71dd5f4fed fix(list): stop the batch toolbar hiding the message you just selected
Opening the toolbar feeds its height back into scrollTop so rows keep
their position on screen. At the top of the list there are no rows above
to hold steady, so that scroll instead slides the first message under the
toolbar — select the top message and it disappears behind the bar acting
on it.

Skip the compensation when the list is already at the top and let the
content move down there, which is what the toolbar taking up space
should do. Mid-list behaviour is unchanged, and the scroll is clamped at
zero so collapsing the toolbar cannot drive it negative.
2026-09-01 19:05:35 +03:00
Shuki Vaknin 0e1c34cdec feat(list): show attachments on list rows and open them from there
A message with attachments showed a paperclip and nothing else, so the
only way to reach a file was to open the message, scroll to the bottom
and find it. The list rows never had the information to do better:
EMAIL_LIST_PROPERTIES asked for hasAttachment, a boolean.

Request attachments alongside it and render the files as chips under the
preview, each one opening that file directly. Chips honour the existing
mailAttachmentAction setting, so they preview or download exactly as the
viewer's attachment list does.

Inline parts are filtered out. A single Outlook message routinely carries
half a dozen cid: signature spacers of under 200 bytes; chipping those
would bury the one file the reader actually wants. Only parts that are
neither inline nor cid-referenced, and that carry a filename, are shown —
two at a time, with the remainder collapsed into a count.

Downloads resolve the blob source from the row's own message rather than
the selected one, so they stay correct in the unified inbox where each
row can belong to a different account.
2026-09-01 18:51:51 +03:00
Shuki Vaknin 4279c37bb7 feat(mobile): clear the query from the header search field
Once a search runs the header field shows the active query, but the only
way back to the full list was to open the panel and clear it there.

Put a clear button at the trailing end of the field, shown only while a
query is applied. The field is now a container rather than one button,
since nesting a button inside a button is invalid markup — the label
area and the clear control are siblings.
2026-09-01 18:44:44 +03:00
Shuki Vaknin b6af6c16d3 fix(mobile): dismiss the search panel once a search runs
The full-screen panel is fixed inset-0, so it sat on top of the very
list it filters: submitting a query worked, updated the list underneath,
and left the reader staring at an empty panel.

Close it on submit, on picking a contact suggestion, and on clear, so
the results it just produced are what you land on. The header field then
shows the active query rather than the placeholder, so a filtered list
does not look unexplained, and tapping it reopens the panel to refine.

SearchBox gains an autoFocus prop so the panel opens straight to the
keyboard instead of needing a second tap.
2026-09-01 18:37:01 +03:00
Shuki Vaknin 3924e30572 feat(mobile): search-first header, replacing the second toolbar row
Phones stacked two 56px bars: the mailbox title, then a row holding
select-all, the search box, the filter toggle and refresh. That is 112px
of chrome before the first message, and the title merely repeats what
the drawer already shows.

The header now carries the account avatar and a tappable search field,
and the second row is presented full-screen when that field is tapped —
so the same SearchBox, suggestions, history and filter chips appear,
none of it rebuilt. Select-all and refresh remain in that panel, and the
list already supports long-press selection and pull-to-refresh.

Tablet and desktop are unchanged; the row is only relocated on phones.
2026-09-01 18:24:07 +03:00
Shuki Vaknin fe948f7931 fix(account-switcher): add a header variant that stays on screen
The rail variant flies its popover out sideways, which is right for a
narrow vertical sidebar but wrong at the top of the screen: anchored to
a trigger at the inline-end edge it runs straight off the viewport. In
RTL that edge is the left one, so the menu opened past the left border
and was unreachable.

Add a "header" variant that drops the menu below the trigger and pins it
by its trailing edge, with a max-width so it can never exceed the
viewport. rail and expanded are untouched.
2026-09-01 18:24:07 +03:00
Shuki Vaknin a158ff096e fix(mobile): open the folder drawer from the right in RTL
The mobile/tablet sidebar was pinned with physical direction utilities —
left-0 and -translate-x-full — which do not flip under dir="rtl". In
Hebrew the drawer therefore anchored to the left edge and slid in from
the left, away from the hamburger button that opens it.

Use the logical start-0 for the inset, and pair the physical translate
with an rtl: override, since translate-x has no logical equivalent. The
RTL rule is emitted after the LTR one, so it wins the cascade despite
Tailwind wrapping rtl: in a zero-specificity :where().
2026-09-01 17:38:18 +03:00
Michael Richter 494adb9b53 fix: set default addressbook to selected one 2026-09-01 15:08:12 +02:00
Paulhenry Saux ee35d71582 fix: add translations for plugind from marketplace 2026-09-01 12:06:03 +02:00
Linus Rath a210b22e49 fix: set name.full on all contact write paths so vCards carry mandatory FN #430 2026-08-31 23:53:24 +02:00
Linus Rath 618636d55d fix: copy mock blob bytes into a plain ArrayBuffer for BodyInit compatibility 2026-08-31 23:47:17 +02:00
Linus Rath 1e9b6ac497 fix: FileNode + blob round-trip in dev mock JMAP, WOPI support for same-origin dev server 2026-08-31 23:45:27 +02:00
Linus Rath 76d67aa1ee feat: add office document fixtures to demo Files and a word-document icon (doc/docx/odt/rtf) 2026-08-31 23:25:05 +02:00
Linus Rath ca7fbbe416 feat: WOPI office document editing in Files (Collabora/OnlyOffice/EuroOffice) #425 2026-08-31 23:16:19 +02:00
Linus Rath 58ebf8d4c5 fix: paginate calendar event fetch so import UID dedup sees all events 2026-08-31 22:48:00 +02:00
Linus Rath d60eb59575 fix: pad attachment preview overlays for the iOS PWA safe area #936 2026-08-31 21:03:08 +02:00
Linus Rath 47dac6421e Merge branch 'main' of https://github.com/bulwarkmail/webmail 2026-08-31 20:43:24 +02:00
Linus Rath a69b3651fd fix: render plain-text-only mail as text in the mobile thread view #489 2026-08-31 20:41:45 +02:00
Linus Rath 49ec08c457 Merge pull request #925 from ponchofiesta/feature/oauth-callback-handler-cleaned
OAuth handler for plugins; extended contacts and addressbook API
2026-08-31 18:08:46 +02:00
Michael Richter 84617d6186 feat: OAuth handler for plugins; extended contacts and addressbook API 2026-08-31 09:55:06 +02:00
Linus Rath f1b4d5753c Merge pull request #929 from ponchofiesta/bugfix/883-fix-pwa-app-icon-size
fix: smaller margin for PWA icons #883
2026-08-31 00:35:08 +02:00
Linus Rath a88b1e0848 fix: keep the two-argument deleteMailbox call when not removing messages 2026-08-29 18:27:01 +02:00
Linus Rath b11cf4b1a5 feat: offer deleting a non-empty folder with its messages 2026-08-29 18:23:09 +02:00
Linus Rath 03b588096d feat: filter advanced search by message size 2026-08-29 18:20:21 +02:00
Linus Rath cc90903f05 feat: request delivery notifications and REQUIRETLS when sending 2026-08-29 18:16:52 +02:00
Linus Rath e54d179f32 feat: surface CalendarEventNotification invitations and updates 2026-08-29 18:11:50 +02:00
Linus Rath 14cdb2f6ff feat: organize invitations as the default ParticipantIdentity 2026-08-29 18:07:47 +02:00
Linus Rath e8c594001d feat: show attendee free/busy via Principal/getAvailability 2026-08-29 18:03:26 +02:00
Linus Rath 0b39e43a4d feat: surface ShareNotification changes as toasts 2026-08-29 17:59:04 +02:00
Linus Rath 6e5aca60a9 feat: share mail folders with other users via mail:share 2026-08-29 17:53:54 +02:00
Linus Rath b408b2597a feat: highlight search hits with SearchSnippet/get 2026-08-29 17:47:23 +02:00
Linus Rath 5805a28e8c feat: resolve pushes with Email/changes and Mailbox/changes deltas 2026-08-29 17:42:21 +02:00
Linus Rath 1859783a8b fix: stop the mobile More menu flashing open when a message is opened 2026-08-29 17:29:03 +02:00
Linus Rath 3ea64b2ffe fix: keep message rows in place when the batch toolbar opens 2026-08-29 17:21:02 +02:00
Linus Rath 40cbe82848 fix: drop duplicate selection checkbox in message list 2026-08-29 17:18:49 +02:00
Linus Rath 1807b2df6b feat: allow setting an address book as default (#924) 2026-08-29 17:15:50 +02:00
Linus Rath 39dcc6b219 fix: invalidate persisted update status after an upgrade 2026-08-29 12:46:39 +02:00
Linus Rath 1e2409f8b9 fix: keep basePath when normalizing Chinese Accept-Language 2026-08-29 12:35:38 +02:00
Linus Rath 42f736b96d Merge pull request #932 from kchuang1015/feat/zh-tw-locale
feat(i18n): add Traditional Chinese (Taiwan) locale
2026-08-29 12:32:02 +02:00