Commit Graph
315 Commits
Author SHA1 Message Date
Linus Rath 0401352e6e Merge branch 'feat/enterprise-pack-d'
# Conflicts:
#	components/email/thread-conversation-view.tsx
#	lib/admin/outgoing-hosts-registry.ts
2026-11-01 10:48:21 +01:00
Linus Rath e80f5ade81 feat: let admins turn off downloads, export, printing and the install prompt, and add a watermark
Organisation > Devices now sets policy.json `organisation.devices`, each
switch off by default and scoped per domain or group:

- No downloads: attachments and files only preview (reader, conversation
  view, Pro tab, list chips, .eml previews, the Files app). Download,
  Download all, Open in new tab, Save to Files, drag-out, the browser's
  PDF viewer (pdf.js instead) and media download controls go away.
- No export: no .eml export, View source, message drag-out, or folder and
  account export; a running export stops and its file is deleted when
  the switch turns on. Import stays.
- No printing: no Print buttons in mail, calendar and contacts; Ctrl+P
  prints a note; the reader frame prints blank.
- No install prompt: no card, and the browser's own banner is held back.
- Watermark: the user's address and the date over the reader,
  previews and every printout (mail, calendar, contacts, plugins).

A message follows its own account's policy; what isn't about one message
follows the strictest signed-in account. Every user path hides its
button, and the anchor and new-tab helpers refuse as a backstop
(lib/download-guard.ts), never the blob readers. The plugin APIs
`ui.downloadFile` and `ui.print` refuse too, and the office editor frame
loses `allow-downloads`.

Two assertions in components/mail/__tests__/blob-routing.test.tsx now
expect `{ kind: 'export' }` as the fifth argument of downloadBlob for an
.eml export: the export says what it is, so the backstop checks "No
export" rather than "No downloads" for it.
2026-11-01 08:52:34 +01:00
Linus Rath b3369c7e78 feat: send every link click through the link check 2026-11-01 08:31:27 +01:00
Linus Rath 3d7a4298eb fix: list company calendars in the calendar list on phones 2026-11-01 06:56:03 +01:00
Linus Rath 595f23556f fix: let Suggest times skip the edited event's own time and close on Escape from its button
Also says how many times it found to screen readers, and the attendee
line for an address the server won't look up reads "Couldn't look up
this address".
2026-11-01 06:49:29 +01:00
Linus Rath c89c1cb36c fix: fetch company calendars for the active account when several are signed in 2026-11-01 06:37:50 +01:00
Linus Rath a9e1b7bf43 fix: answer invitations in a group or shared mailbox as that account again #634
The banner only answered on the user's own copy since 877198a4b, so an
invitation in a group mailbox (or a boss's mailbox a delegate reads)
was imported into the user's own calendar and answered there: no
reply reached the organiser and the user got a duplicate. It now uses
the copy in the message's own account and answers as that account, as
the group without SENT-BY, as the person with SENT-BY naming the user.
The user's own answer bar on a calendar shared with them also finds the
same occurrence of their own copy of a series.
2026-11-01 06:29:13 +01:00
Linus Rath 3bd8e83d60 feat: show company calendars set by the admin 2026-11-01 05:41:34 +01:00
Linus Rath 877198a4bf feat: answer invitations in a calendar shared with you as its owner #634 2026-11-01 05:05:12 +01:00
Linus Rath ab2fc6454d feat: let admins share every user's free/busy with a group 2026-11-01 04:51:30 +01:00
Linus Rath 93f02e9615 feat: suggest meeting times that are free for every attendee #1164
The participant availability test that expected "Free/busy isn't
available on this server" when Stalwart refuses the directory listing
now expects the attendee list: Stalwart 1.0.1 still answers
getAvailability for the principals the user knows with directory
queries off, so the list stays and names who couldn't be looked up.
The 1.0 build that refuses the lookups too keeps its own case.
2026-11-01 04:47:05 +01:00
Linus Rath 44e6808a86 fix: read attendee availability in the calendar's time zone 2026-11-01 04:34:31 +01:00
Linus Rath 48c8d37e37 fix: hide subscribe to calendar in lite, which can't fetch feeds 2026-10-31 17:52:28 +01:00
Linus Rath bc6fee7556 feat: let timed events show as coloured text or a dot in the month view #1449 2026-10-31 16:23:00 +01:00
Linus Rath 597b546e11 fix: keep the calendar period title readable at 320px wide 2026-10-29 19:38:45 +01:00
Linus Rath 35be105a73 fix: size small text in rem so it follows the browser and app text size 2026-10-29 19:38:45 +01:00
Linus Rath f43eb9f41a fix: give chip remove buttons, tree expanders, task circles and month events a 24px target 2026-10-29 19:38:45 +01:00
Linus Rath 9f6c7b99c9 fix: raise text contrast to 4.5:1 in every built-in theme, light and dark 2026-10-29 19:38:45 +01:00
Linus Rath 1111dd6709 fix: show the focus outline on menu items, grid cells and other roving-focus controls 2026-10-29 19:38:44 +01:00
Linus Rath 5e188998a7 feat: explain technical terms next to their labels in Settings and the admin area 2026-10-29 18:10:29 +01:00
Linus Rath 4e2affe406 fix: name the remaining search boxes, filter fields and settings inputs that only had a placeholder 2026-10-29 18:03:00 +01:00
Linus Rath f73643bbbd fix: name the template, advanced search and admin server fields 2026-10-29 18:03:00 +01:00
Linus Rath 0e2a05e0ea fix: name the event editor's title, date, time and select fields 2026-10-29 18:03:00 +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 db596ac2ec feat: open a calendar event's menu with Shift+F10 2026-10-29 17:53:53 +01:00
Linus Rath 76ad807477 fix: make other months' days in the calendar readable 2026-10-29 17:53:53 +01:00
Linus Rath 0026abba40 fix: put calendar events inside the grid cells of their day so screen readers read them with the date 2026-10-29 17:53:52 +01:00
Linus Rath 19e0acde91 fix: make the mini calendar a grid with arrow keys, full date names and event days in words 2026-10-29 17:53:52 +01:00
Linus Rath d5d7d39ef4 feat: show the calendar's name on events when names next to colours is on 2026-10-29 17:53:51 +01:00
Linus Rath cf4d02b49b feat: draw calendar, tag and folder colours in a colour-blind-safe palette when that setting is on 2026-10-29 17:53:51 +01:00
Linus Rath 8e55184e1f fix: name pane resize handles, expose their width and keep their arrow keys from the mail shortcuts 2026-10-29 17:53:51 +01:00
Linus Rath f23784a488 feat: open submenus, previews and the rail peek only on click when hover opening is off 2026-10-29 17:53:37 +01:00
Linus Rath ef826972dd fix: put the focus back somewhere sensible after an action removes it 2026-10-29 17:53:36 +01:00
Linus Rath dcc504fcfa feat: add landmarks, an h1 per app, skip links and F6 between panes 2026-10-29 17:53:35 +01:00
Linus Rath 13d697ddfb feat: turn off every single-key shortcut when the setting is off 2026-10-29 17:53:34 +01:00
Linus Rath 368acca121 fix: stop app shortcuts from acting behind open dialogs and menus 2026-10-29 17:53:33 +01:00
Linus Rath 2dbe5d0244 fix: show a shared calendar in the color the server gives it #1414 2026-10-29 14:35:22 +01:00
Linus Rath 8b35962efb fix: show section labels in sentence case instead of all caps 2026-10-28 22:26:39 +01:00
Linus Rath 39eb38a0fa fix: give the mail, calendar, contacts, files and settings headers one search field and one button style 2026-10-28 22:16:48 +01:00
Linus Rath 0d3916cfcc feat: add a light event colors setting that shows calendar events tinted with a color bar, as in Outlook 2026-10-28 21:50:47 +01:00
Linus Rath 67b44fd5de fix: keep the inner edge of color bars straight on rounded events, tasks and notes 2026-10-28 21:50:29 +01:00
Linus Rath d5bf6b98c4 feat: print the calendar's month, week, day, agenda, tasks and single events 2026-10-28 21:08:20 +01:00
Linus Rath 4421c3ce7e fix: spin refresh icons the way their arrows point 2026-10-28 17:00:50 +01:00
Linus Rath 96797597c5 Merge branch 'main' into feat/org-features 2026-10-28 15:14:34 +01:00
Linus Rath 1b25d23a07 fix: keep the organizer mark capitalised in german event participants 2026-10-28 13:04:30 +01:00
Linus Rath ddaf2e24b2 fix: start every event title in the arabic month view at the same edge 2026-10-28 12:59:00 +01:00
Linus Rath 382b26f128 fix: ask before the rail or the mountain view top bar leaves an event or task with unsaved changes 2026-10-28 12:50:59 +01:00
Linus Rath 8566cf2b29 Merge branch 'ux/calendar3' 2026-10-28 11:06:37 +01:00
Linus Rath 19369be8b6 test: drop a prop the agenda view doesn't take from the right-to-left test 2026-10-28 11:01:41 +01:00
Linus Rath 8e278b940a fix: fit long view names in the phone view switcher and show the focus ring of a time slot under an event 2026-10-28 10:58:35 +01:00