Commit Graph
84 Commits
Author SHA1 Message Date
Linus Rath 57a3b97b5e test: cover booking cards end to end on both test servers 2026-10-30 05:58:53 +01:00
Linus Rath ef39fc8615 test: sign the org specs in to the admin through the API, not the login form 2026-10-28 11:06:09 +01:00
Linus Rath 5d90a850bd Merge branch 'feat/org-recovery' into feat/org-features
# Conflicts:
#	components/email/email-list.tsx
2026-10-28 09:17:56 +01:00
Linus Rath 272083399c Merge branch 'feat/org-tags' into feat/org-features
# Conflicts:
#	lib/admin/restriction-keys.ts
#	lib/jmap/client.ts
2026-10-28 09:15:17 +01:00
Linus Rath f1a666777b Merge branch 'feat/org-features' into feat/org-recovery 2026-10-28 09:08:49 +01:00
Linus Rath 68756cd088 test: answer the paged archive calls in the recovery spec and check the Trash link stays away from an empty archive #1319 2026-10-28 09:08:44 +01:00
Linus Rath da37d96449 test: cover per-tag saves, the group tag view and the delete warning on phones 2026-10-28 09:01:47 +01:00
Linus Rath 3a03bc363b Merge branch 'feat/org-templates' into feat/org-features 2026-10-28 09:01:42 +01:00
Linus Rath 9d9a50e407 test: cover migrating a browser's templates and hidden personal templates against the test servers 2026-10-28 08:33:05 +01:00
Linus Rath b6d49aac4f test: check that the team inbox badge names bob where the server shares names 2026-10-28 08:25:02 +01:00
Linus Rath 7f06ed7637 Merge branch 'feat/org-features' into feat/org-tags
# Conflicts:
#	lib/admin/restriction-keys.ts
2026-10-28 08:14:39 +01:00
Linus Rath fcd9930e4a test: cover recovering deleted items against the test servers #1319 2026-10-28 08:08:34 +01:00
Linus Rath 62bed18fe8 Merge branch 'feat/org-features' into feat/org-teaminbox 2026-10-28 07:38:25 +01:00
Linus Rath 8d8bc26602 test: check that the team inbox names are kept in the team Inbox on Stalwart v1.0.0 2026-10-28 07:19:08 +01:00
Linus Rath 97d686b916 test: check that the 1.0 test build was asked for shared tags and stayed online 2026-10-28 07:18:16 +01:00
Linus Rath 5efcca2315 test: cover the team inbox plugin's assignment, filters and phone menu against the test servers 2026-10-28 07:16:53 +01:00
Linus Rath a049282cc0 test: check live edits and the unified inbox for shared tags 2026-10-28 07:15:14 +01:00
Linus Rath a19d95c4bb test: cover shared tags in group mailboxes against the test servers 2026-10-28 07:10:42 +01:00
Linus Rath b5e92ba176 Merge branch 'feat/org-features' into feat/org-templates
# Conflicts:
#	lib/admin/restriction-keys.ts
2026-10-28 07:10:25 +01:00
Linus Rath 2944ead665 test: check that the 1.0 test build drops the metadata request and the app stays online 2026-10-28 06:45:12 +01:00
Linus Rath e3479c1a19 test: cover shared templates against the test servers 2026-10-28 06:38:40 +01:00
Linus Rath 82918fc7d7 Merge branch 'feat/org-features' into feat/org-delegates
# Conflicts:
#	lib/admin/restriction-keys.ts
2026-10-28 06:30:09 +01:00
Linus Rath 49c9ec6a45 fix: start a delegate's Change from what they have and keep what fits no choice as it is
Change used to pre-fill the closest choice and then replace everything
of that type, so a folder added after "all", a single non-Inbox folder,
a non-default calendar, free/busy only or manager rights were narrowed
or widened on Save. Now a type gets a choice only when the grants match
it exactly; anything else starts at "Keep as it is", which leaves that
type out of the patch. Mixed levels keep each type's rights.

Also in the Delegates page:
- Change and Remove wait, with Try again, while a type couldn't be read
- an answer from the account before an account switch is dropped
- calendars, contacts and files follow their feature gates
- Remove says it covers what was shared from the user's own account
- typing your own address says "That's you"
- groups named only by the session get the group badge
- on Stalwart 1.0 the read hint says read delegates can flag mail
- the person list is plain buttons, not a listbox without arrow keys
- the rights follow sharingRights
2026-10-28 06:28:02 +01:00
Linus Rath 795faceee7 Merge branch 'feat/org-thirdparty' into feat/org-features 2026-10-28 05:51:22 +01:00
Linus Rath 687cd89346 Merge branch 'feat/org-external' into feat/org-features
# Conflicts:
#	lib/outgoing/quick-reply.ts
#	lib/outgoing/send-pipeline.ts
2026-10-28 05:46:11 +01:00
Linus Rath b680a676c0 test: check that remote pictures say the organisation blocks them with no third-party traffic #903 2026-10-28 05:42:43 +01:00
Linus Rath 9bae704c03 test: cover delegates through the real UI on the test servers 2026-10-28 05:38:44 +01:00
Linus Rath 9e809a31db Merge branch 'feat/org-features' into feat/org-thirdparty 2026-10-28 05:27:58 +01:00
Linus Rath 823da8c810 Merge branch 'feat/org-features' into feat/org-external
# Conflicts:
#	components/email/email-viewer.tsx
#	components/mail/mail-app.tsx
2026-10-28 05:19:21 +01:00
Linus Rath c31cb76a47 test: check that a running Gravatar plugin reaches nothing with no third-party traffic #903 2026-10-28 05:19:08 +01:00
Linus Rath 3be3ad5ddf test: cover quick reply Back, the domain on a tap and the plugin hand-over per switch against the test servers 2026-10-28 05:14:00 +01:00
Linus Rath 2ace501871 Merge branch 'feat/org-features' into feat/org-signatures 2026-10-28 04:51:22 +01:00
Linus Rath 7fefb35f25 test: send organisation signatures and disclaimers whose HTML and text versions differ 2026-10-28 04:43:54 +01:00
Linus Rath 97d415a3ab Merge branch 'feat/org-sessions' into feat/org-features 2026-10-28 04:25:22 +01:00
Linus Rath 00fdedbbc1 test: keep the org specs' admin sign-in across runs 2026-10-28 03:31:20 +01:00
Linus Rath 3ef4a40836 test: show the push relay note in the third-party screenshots #903 2026-10-28 03:27:53 +01:00
Linus Rath ddf71d657c test: cover organisation signatures and disclaimers against the test servers 2026-10-28 03:26:52 +01:00
Linus Rath 0fcfd29d6a test: cover the external sender label and recipient warning against the test servers 2026-10-28 03:19:12 +01:00
Linus Rath af47856cde test: cover the idle timeout per domain against the test servers 2026-10-28 02:48:19 +01:00
Linus Rath 63243f0c0b test: check that no request leaves for an outside host in the no third-party traffic mode #903 2026-10-28 02:32:00 +01:00
Linus Rath 90e6e10464 test: cover domain and group policies against the test servers 2026-10-28 01:33:12 +01:00
Linus Rath 47e3fd81d7 fix: create folders and upload files on Stalwart 1.0 2026-10-26 20:47:59 +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
Linus Rath a7cfa5b160 fix: rebuild the plugin sandbox while npm run dev runs, and build it for the integration image 2026-10-25 02:26:18 +01:00
Linus Rath 6d459674f8 Merge pull request #1109 from hildebrandttk/fix/group-identity-sent-copy
fix: save a group identity's drafts in the group account's Drafts (#1…
2026-10-24 17:55:10 +02:00
Linus Rath 7049844cf3 fix: keep the message list within the screen on phones 2026-10-22 23:08:39 +02:00
Linus Rath 1025c1973d refactor: fold the layout and themes tabs into appearance as sections 2026-10-19 17:33:39 +02:00
Stefan Hildebrandt 04efcfc1f3 fix: save a group identity's drafts in the group account's Drafts (#1090)
Drafts were always created in the primary account, so a message composed as
a group identity sat in the member's own Drafts while its Sent copy (since the
previous commit) went to the group.

- createDraft takes { accountId, previousDraftAccountId }: the draft goes to
  the account that owns the From identity (resolveSendAccountId, now public
  and briefly caching the identity lists for autosave), and the replaced
  version is destroyed in the account it lives in.
- The composer tracks draftAccountId next to draftId (save, re-resolve of
  attachment blobs, send, discard, stashed state), since draft ids are only
  unique within one account.
- sendEmail destroys the sent draft in options.draftAccountId; discarding
  (inline and Pro tab) deletes it there, through the identity's login.
- Re-opening a draft from a group/shared Drafts folder (or a stamped
  aggregate row) keeps its account.
- resolveSendAccountId is optional on IJMAPClient; without it drafts stay in
  the primary account.
- Tests: client unit tests for draft placement / replacement / send cleanup,
  E2E spec 18 draft cases (autosave + send, discard).
2026-10-19 16:33:27 +02:00
Linus Rath 4f9271e25b Merge pull request #1108 from hildebrandttk/fix/cross-view-shared-folder-dedup
fix: list a shared folder reachable through two logins only once in c…
2026-10-18 14:57:30 +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