Commit Graph
45 Commits
Author SHA1 Message Date
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
Linus Rath 992ede9500 fix: show and share shared folders in both folder layouts #1181 2026-10-06 22:27:56 +02:00
Linus Rath 92f1973bcc feat: attach files from the Files app in the composer #1179 2026-10-06 15:18:58 +02:00
Linus Rath 7e1a659c06 fix: open the WOPI editor behind a reverse proxy with split addresses #1130 2026-10-04 22:16:29 +02:00
Linus Rath 7f5728fea2 Merge pull request #1101 from dealerweb/fix/wopi-base-path
fix: send the WOPI status and launch requests under the base path
2026-09-30 16:46:11 +02:00
Linus Rath 13b2ea3d19 fix: keep a previewed SVG attachment from running script in the webmail origin 2026-09-30 15:12:19 +02:00
Linus Rath c20527cc29 fix: block remote content in the .eml attachment preview
An attached `.eml` was sanitized and shown in a locked sandbox iframe,
but its remote images still loaded, with no CSP, whatever the user's
remote-content policy said. The preview now uses the viewer's
`sanitizeEmailBodyForIframe` and the strict iframe CSP unless the policy
is `allow`, and sends no referrer.
2026-09-26 14:50:22 +02:00
dealerweb 3eb9ade572 fix: send the WOPI status and launch requests under the base path
Behind a reverse proxy at a sub-path (NEXT_PUBLIC_BASE_PATH, e.g.
/webmail) both WOPI requests used a bare fetch('/api/wopi/...') and
reached the mail server instead of the webmail. The status probe came
back 404, so office editing always looked unavailable there - and since
#1047 the probe runs for every opened message, logging the 404 each
time. Route both through apiFetch like every other API call, and cover
the sub-path mount with a test.
2026-09-24 21:08:17 +02:00