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
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
Linus Rath
a385c6e410
test: read folder counts in one snapshot so a draining badge cannot hang the poll #1194
2026-10-11 18:52:23 +02:00