Linus Rath
989385f4f6
Merge branch 'feat/desktop-offline' into feat/do-ux-compose-fixes
...
# Conflicts:
# components/email/email-viewer.tsx
# components/settings/accessibility-settings.tsx
# lib/__tests__/settings-search.test.ts
# lib/settings-search.ts
2026-11-04 09:54:25 +01:00
Linus Rath
ceaceb7f2a
Merge branch 'feat/desktop-offline' into feat/do-ux-compose-fixes
...
# Conflicts:
# components/email/email-composer.tsx
# components/email/email-viewer.tsx
# 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/et/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/th/common.json
# locales/tr/common.json
# locales/uk/common.json
# locales/vi/common.json
# locales/zh-TW/common.json
# locales/zh/common.json
2026-11-04 09:20:50 +01:00
Linus Rath
fcc9fc0cc0
Merge branch 'feat/desktop-offline' into feat/do-ux-mail-fixes
...
# Conflicts:
# components/email/email-viewer.tsx
# components/mail/mail-app.tsx
# components/offline/offline-host.tsx
# components/ui/welcome-banner.tsx
# 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/et/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/th/common.json
# locales/tr/common.json
# locales/uk/common.json
# locales/vi/common.json
# locales/zh-TW/common.json
# locales/zh/common.json
2026-11-04 09:11:09 +01:00
Linus Rath
ad7ff4fc6b
fix: label the Attach from Files dialog's X as Close
2026-11-04 07:37:26 +01:00
Linus Rath
4f00deffe9
fix: title an attached message by its subject and show it in the reader's font and date format
2026-11-04 06:38:13 +01:00
Linus Rath
fc7b607ff7
fix: end Files and composer menu entries that open a dialog with …, and translate Share
...
The Files tests now look for the new menuAudit keys: the menu entries
moved to them so they can end in "…" while toolbar buttons keep the
plain label.
2026-11-04 05:32:23 +01:00
Linus Rath
b8cb12174c
fix: bring office editing back after sign-in when the first status check was refused #1518
2026-11-03 21:45:13 +01:00
Linus Rath
e9e07ddb64
Merge main into feat/assistant-everywhere
2026-11-03 01:35:57 +01:00
Linus Rath
ad36f8d382
fix: show the side panel only where the plugin does, and keep it steady
...
- The button and the panel of Calendar, Contacts, Files and Settings
show only when the plugin's shouldShow says yes, so a plugin switched
off for these views (admin, user or no service) leaves no button that
opens an empty panel, and no extra rows in Contacts and Settings.
- Files: while the details are open the panel steps aside there only;
the other views keep it as the user left it. With both stored open the
details fold when the page loads.
- Resizing stops where the view keeps its 480 px, so a drag or the arrow
keys no longer fold the panel away (and the handle keeps the focus).
- Settings and Contacts render the same element with or without the
panel, so a form keeps what was typed when the panel starts docking.
- Contacts on a phone: the panel button sits over an open contact too.
- The panel buttons of the reader and the views have one name, "Plugin
panel", with aria-pressed, and name the plugin's panel shortcut in
their title; the open panels are named landmarks.
The reader tests look the button up by its new name and pressed state
(viewer-toolbar-over-side-panel, reader-plugin-surfaces,
viewer-plugin-panel-width), since "Show/Hide plugin panel" is gone.
2026-11-02 23:54:53 +01:00
Linus Rath
8fcd647215
feat: let plugins show a side panel next to Calendar, Contacts, Files and Settings
2026-11-02 21:59:36 +01:00
Linus Rath
bda9e11d37
fix: give the Files details panel the same header height as the other side panels
2026-11-02 21:02:05 +01:00
Linus Rath
57c1d5d472
feat: show the contacts, files and plugin page shapes while the app loads
2026-11-01 19:36:09 +01:00
Linus Rath
9c913d4d79
fix: hold and return the focus in file previews, the document editor and other full-screen overlays
2026-10-29 18:02:59 +01:00
Linus Rath
b0a51aae93
fix: list the files sidebar folders as lists and mark the open one, instead of a tree the arrow keys can't move in
2026-10-29 17:53:53 +01:00
Linus Rath
a876064ec8
fix: move real focus through the files list and show its select boxes on keyboard focus and touch
2026-10-29 17:53:51 +01:00
Linus Rath
43c865e3e0
test: type the files sidebar fixture with the store's resource type
2026-10-29 17:53:36 +01:00
Linus Rath
7c282f1f40
fix: say which folder is open and how many are unread in the folder lists
2026-10-29 17:53:36 +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
17c3bdb22c
Merge pull request #1395 from lucamzanon/fix/eml-preview-nested-attachments
2026-10-28 17:04:55 +01:00
Linus Rath
d1e0fddfdc
fix: keep file sizes as number then unit in right-to-left languages and write Files dates in the app's language
2026-10-28 10:24:55 +01:00
Linus Rath
4b2aba430c
fix: let Back close overlays the same way in calendar, contacts and files
2026-10-28 07:32:05 +01:00
lucamzanon
a3fc1e682a
fix(files): preview the attachments of a previewed .eml
...
An attachment inside a previewed .eml could only be downloaded. A
certified-mail (PEC) message carries the actual mail as postacert.eml,
and a forwarded PEC carries the original PEC inside that, so the message
the user wanted to read never opened. A previewable attachment now opens
in a preview stacked on the first one, with download beside it; Escape
and Back close the inner preview first.
2026-10-28 06:32:37 +01:00
Linus Rath
7f9a8bc5e7
fix: show images and other files in one preview frame, with ←/→ to the next file of the folder
2026-10-28 05:39:10 +01:00
Linus Rath
f5f536f7c9
fix: one kind of button in the Files selection bar, a closable details panel on tablets, and a share dialog that takes the focus
2026-10-28 05:29:23 +01:00
Linus Rath
26aef32786
fix: show the same actions in the same order in every menu of a contact, group or folder
2026-10-28 04:57:25 +01:00
Linus Rath
e53578454a
feat: list the Contacts and Files keys under ? and add their commands to the command palette
2026-10-28 04:20:48 +01:00
Linus Rath
c87baa8408
feat: sync the Files settings with the other settings, with export, reset and a one-time move from this device
2026-10-28 03:51:27 +01:00
Linus Rath
e12aa1f5b9
feat: download a folder as a zip built in the browser, with progress and cancel
2026-10-28 03:44:34 +01:00
Linus Rath
408a2c90dc
feat: move files and folders with Move to… and a folder picker instead of only dragging
2026-10-28 03:40:10 +01:00
Linus Rath
3d72d426d4
feat: keep deleted files in a Files trash with Restore, Delete permanently and Empty trash
2026-10-28 03:35:46 +01:00
Linus Rath
91f9213110
fix: make Backspace delete the selection in Files, as in Mail, and keep Alt+Up for going up
2026-10-28 03:22:37 +01:00
Linus Rath
02ce389140
fix: make rename, new folder, address book and import dialogs close on Escape, keep focus and select the name
2026-10-28 03:20:09 +01:00
Linus Rath
14aacd95b8
fix: let Back close an image preview or the document editor instead of leaving Files
2026-10-28 02:48:48 +01:00
Linus Rath
893696791d
fix: keep the hidden Contacts and Files sidebar from covering the nav rail on tablets
2026-10-28 02:40:48 +01:00
Linus Rath
6014142358
fix: show conversation and attached-message attachment names without directional override characters
2026-10-26 11:22:10 +01:00
Linus Rath
cf2c27157d
Merge branch 'main' into feat/stalwart-1.0
...
# Conflicts:
# components/contacts/contacts-app.tsx
# components/email/__tests__/composer-discard.test.tsx
# components/email/calendar-invitation-banner.tsx
# components/email/email-composer.tsx
# components/mail/mail-app.tsx
# components/pro/pro-compose-tab-body.tsx
# components/pro/pro-email-tab-body.tsx
# components/ui/__tests__/avatar.test.tsx
# components/ui/avatar.tsx
# hooks/use-mailbox-drop.ts
# lib/__tests__/calendar-alerts.test.ts
# lib/__tests__/jmap-calendar-tasks.test.ts
# lib/__tests__/jmap-send-threading.test.ts
# lib/demo/demo-client.ts
# lib/demo/fixtures/calendars.ts
# lib/jmap/client-interface.ts
# lib/jmap/client.ts
# lib/web-push.ts
# stores/__tests__/contact-store.test.ts
# stores/__tests__/email-store-thread-key.test.ts
# stores/calendar-store.ts
# stores/contact-store.ts
# stores/email-store.ts
2026-10-26 10:14:12 +01:00
VasilisNtovolos
7fefc128a1
fix: keep file previews open during Strict Mode replay
2026-10-19 16:08:56 +03:00
Linus Rath
c02aadd6a9
fix: preview HTML attachments as sanitised text in a locked frame instead of a same-origin blob document
2026-10-19 00:58:31 +02:00
Linus Rath
b646ff0dc1
fix: preview attachments in the installed app instead of opening a blank window #865
2026-10-17 19:17:55 +02:00
Linus Rath
41a0716c50
Merge branch 'main' into feat/stalwart-1.0
2026-10-16 01:41:48 +02:00
Linus Rath
d16edfe402
fix: put plugin file actions behind a more button in the phone selection toolbar
2026-10-14 09:48:50 +02:00
Linus Rath
eb34caa381
feat: let plugins add entries to file menus and the selection toolbar, and a section to file previews
2026-10-14 04:58:21 +02:00
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
d98f0684d9
test: click the My files breadcrumb in the file picker test
2026-10-11 18:12:14 +02:00
Linus Rath
bf00ea27cf
fix(files): show the loading skeleton instead of "No files yet" before the first listing
2026-10-11 17:00:56 +02:00
Linus Rath
a4909ae106
fix(files): drop the cursor outline from a file once it is deselected
2026-10-11 16:57:00 +02:00
Linus Rath
958aa500b8
feat(files): add right-click menus to My files, folders, starred and recent in the sidebar
2026-10-11 16:50:08 +02:00
Linus Rath
dfa68a1d2f
fix(files): keep the items a drag selection covers after letting go
2026-10-11 16:42:43 +02:00
Linus Rath
87915f8bf1
feat(files): zoom and pan images in the preview, close by clicking beside them
...
The image viewer only zoomed with its buttons, scaled the image inside
a fixed box so a zoomed image could not be moved, and the area around
the image swallowed clicks, so clicking beside it did nothing.
Both the Files image viewer and the attachment preview now use one
viewer that:
- zooms with the wheel, trackpad or two-finger pinch, centred on the
pointer, and with a zoom bar at the bottom (-, percentage, +, fit,
rotate)
- toggles between fit and full size on double-click or double-tap
- pans by dragging, or with the arrow keys, while zoomed
- closes on a click or tap beside the image, but not after a drag
- keeps + / - / 0 / r as shortcuts and Escape to close
2026-10-11 16:32:51 +02:00
Linus Rath
4ba39cef0e
feat(files): rework the Files app layout and interactions
...
The Files app had two layouts (folders inline or in a tree), a back bar
and a permanent warning above the list, a toolbar of ten unlabelled
icons, and a Recent list whose entries did nothing. In the tree layout
folders could not be renamed or deleted at all, and the default view,
default sort and hidden-files settings were ignored.
It now follows the contacts and calendar layout:
- a full-height sidebar with a "+" New menu, My files with the folder
tree, Starred, Recent and Shared with me; folders accept dropped items
- a header with collapsing breadcrumbs (also drop targets), search, sort,
list/grid switch and a details toggle; selecting items swaps it for an
action bar
- list rows open from the name and select from the row, with hover
actions; the grid shows folders as chips and files as cards with
lazy, cached thumbnails
- a details panel for the selection or the current folder, empty-folder
and no-results states, a floating upload card, a dismissible
stability warning, and keyboard navigation with the arrow keys
- touch: tap opens, long-press selects, a "+" button in narrow panes
The tree is built from the listing the store already fetches instead of
one full fetch per folder, so it is current after every change. Recent
files open in their folder, and the settings for view, sort, hidden
files and icons now apply. The inline/sidebar setting is gone.
2026-10-11 16:23:19 +02:00