Commit Graph
148 Commits
Author SHA1 Message Date
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 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 d3fecae85f feat: hide the contacts directory when the server refuses it, and let users or admins turn it off #1457 2026-10-31 16:22:24 +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 b22968a7df fix: show the message list, not only the reader, with a large browser text size and wrap cut-off labels 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 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 ef13556a01 fix: give every contact form field a label screen readers read out 2026-10-29 18:02:59 +01:00
Linus Rath 693687dc0b fix: show a contact's copy and compose buttons on keyboard focus and touch 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 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 63375f6870 Merge pull request #1410 from motofix/fix/1407-vcard-4-export
fix: export contacts as valid vCard 4.0 #1407
2026-10-29 00:13:30 +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 38720f2d43 feat: print contact lists, contacts, groups and directory entries from Print or Ctrl+P 2026-10-28 21:08:21 +01:00
Julien Béti a3fdd72763 fix: export contacts as valid vCard 4.0 #1407
The export declared VERSION:3.0 but wrote vCard 4.0 syntax, and wrote the JSContact phone feature \"mobile\" as TYPE=MOBILE, which is no vCard type, so importers dropped such numbers.

- Declare VERSION:4.0 and write 4.0 throughout: basic-format dates and timestamps, data: URIs for inline media, VALUE=text for a UID or RELATED that is no URI, geo: URIs, lines folded at 75 octets, CRLF after every line, and the webmail's own PRODID.
- Map "mobile" to CELL and back; MAIN-NUMBER and x- types are kept.
- Write N before FN: some importers ignore the name otherwise.
- The contact form stores mobile phones as "mobile" (RFC 9553) and still reads the "cell" it used to write.
2026-10-28 17:27:07 +01:00
Linus Rath 4421c3ce7e fix: spin refresh icons the way their arrows point 2026-10-28 17:00:50 +01:00
Linus Rath ac5596165a fix: show only the app's own message for a wrong address in the contact form, without the browser bubble over it 2026-10-28 13:05:43 +01:00
Linus Rath 0eb68f1743 Merge branch 'ux/settings-admin2' 2026-10-28 11:06:39 +01:00
Linus Rath f91bee132f fix: keep the contact form's name fields readable on phones and tablets 2026-10-28 10:43:55 +01:00
Linus Rath 2f790a2d75 fix: keep toasts above the Save and Cancel buttons of the contact and group forms 2026-10-28 10:43:55 +01:00
Linus Rath 94029e5aa2 fix: ask before the nav rail or the phone tab bar leaves a contact or group form with changes 2026-10-28 10:43:55 +01:00
Linus Rath 161c9d1de3 fix: ask "delete address book?" with a question mark, like the other delete prompts 2026-10-28 10:23:16 +01:00
Linus Rath cb4f4c9168 fix: add the open contact to the selection on Ctrl+click and Shift+click in Contacts 2026-10-28 10:14:19 +01:00
Linus Rath bae76bcc4e fix: keep a category typed without Enter when the contact is saved 2026-10-28 10:09:57 +01:00
Linus Rath 330627cec1 fix: name the contact or group in the delete confirm and say what is lost 2026-10-28 10:04:42 +01:00
Linus Rath b882d4b4de fix: say Moving, not Adding, in the Move to address book dialog 2026-10-28 09:56:39 +01:00
Linus Rath 6c63b6f5b8 fix: name the group delete entry Delete group in the sidebar menu too 2026-10-28 09:50:36 +01:00
Linus Rath 5f34700553 fix: stop the React warning about isPressed on every Contacts visit 2026-10-28 09:48:43 +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
Linus Rath afd5d8263c fix: delete a contact category the same way in Settings and Contacts, with the same Undo toast 2026-10-28 06:16:10 +01:00
Linus Rath aad2e01777 fix: print a contact even when the browser blocks pop-ups 2026-10-28 06:10:27 +01:00
Linus Rath 84093be964 fix: one word per action and sentence case in Contacts and Files, "Couldn't …" error titles, and "Address book" in the contact form 2026-10-28 05:42:37 +01:00
Linus Rath 15446aa0b6 fix: say when duplicating a contact fails, and why a folder rename failed 2026-10-28 05:22:46 +01:00
Linus Rath b7d68191dd fix: keep accented names in vCard file names, show an imported card's own name, stop starring both name fields, and compose from Contacts without asking for an account 2026-10-28 05:20:37 +01:00
Linus Rath b540b68706 fix: tell an empty address book from an empty account, offer Import there, and use one empty state in Contacts and Files 2026-10-28 05:09:04 +01:00
Linus Rath 083bb1f6bc fix: put New group, Import and Refresh in the phone header menu of Contacts and Files 2026-10-28 05:04:13 +01:00
Linus Rath 4b243dbdbe Merge branch 'main' into ux/contacts-files
# Conflicts:
#	components/contacts/contact-list.tsx
2026-10-28 05:01:48 +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 567880d57f fix: remove the empty bands above and below a contact's name on the phone 2026-10-28 04:47:27 +01:00
Linus Rath c04f850b16 fix: use theme colours for folder icons, stars and contact form errors instead of fixed blue, amber and pink 2026-10-28 04:45:59 +01:00
Linus Rath d24b917c22 fix: use the app's selection colour in Files and the vertical More icon in Contacts and Files 2026-10-28 04:43:56 +01:00
Linus Rath cdd7c0f0b5 fix: give the Contacts and Files buttons and rows a 44px touch target on phones 2026-10-28 04:42:21 +01:00
Linus Rath 1748b5329b fix: name every icon button in Contacts and the file preview for screen readers 2026-10-28 04:34:08 +01:00
Linus Rath 6f371deaa7 fix: show contact dates, print headings and the disabled notice in the app's language 2026-10-28 04:28:09 +01:00