Linus Rath
ab845783ab
fix: stop adding an OAuth account from signing in the current user again
...
Adding a second account through the server's own OAuth opened the
authorization endpoint in the shared system browser with no `prompt`,
so the identity provider found the session of the account that was
already signed in and quietly handed back the same user.
When adding an account, the PKCE flow now sends
`prompt=select_account` like the webmail does (5771a213), or
`prompt=login` when the server's metadata lists no account picker, and
on iOS it runs the auth session ephemerally so the browser's cookies
don't carry over. The webmail hand-off gets the ephemeral session too.
Android's Custom Tabs have no private mode, so there the prompt is the
only guard.
2026-09-24 18:40:43 +02:00
Linus Rath
5f3f584ca8
fix: auto-send read receipts only for the message on screen and clean up failed ones
...
With "Always send" the banner's auto-send ran in every page the viewer
pager keeps mounted, so opening one message also answered the receipt
requests of its unseen neighbours. The receipt is imported into Sent
before it is submitted, so a refused submission left a "Read: ..." copy
there, and the failure cleared the per-instance guard, so the next
render or remount imported another one.
- the pager marks the page on screen `active`, and the banner only
auto-sends there
- an automatic receipt is tried once per message per session, keyed by
account and id, so a failure or a remounted page does not send again
- `sendReadReceipt` destroys the imported copy when the submission
fails, which also covers the manual "Send receipt" button
2026-09-24 18:36:15 +02:00
Linus Rath
cb6ddd6fcf
fix: strip CR/LF from read-receipt header values (GHSA-w38p-hpqv-g89c)
...
The read receipt is assembled as raw RFC 5322 text, and every header
value in it comes from the message being answered. Stalwart returns
subjects already RFC 2047-decoded, so a sender could hide CRLF in an
encoded-word subject (or in the Message-ID or
Disposition-Notification-To) and have it interpolated verbatim. That
let them add headers such as Reply-To, or a whole body, to a message
the user's own account files in Sent and submits. `encodeHeaderWord`
passed any pure-ASCII value through untouched, CR/LF included.
Port the webmail fix: free-text values go through
`stripHeaderControls` (controls collapse to a space, then RFC 2047 if
non-ASCII), address-like values and message-ids through `headerAtom`
(controls and whitespace removed), and the From display name is quoted
when it uses specials.
2026-09-24 18:36:15 +02:00
Linus Rath
ee04e95d4f
feat: add UnifiedPush as an alternative to FCM for push notifications
2026-09-24 18:17:43 +02:00
Linus Rath
6c82130267
chore: update version number to 0.1.62
0.1.62
2026-08-30 00:37:37 +02:00
Linus Rath
f228257ec9
fix: stop the viewer crashing on any message with attachments by keeping store selectors referentially stable
2026-08-29 22:41:09 +02:00
Linus Rath
a02e7f8a49
test: add an opt-in live Stalwart integration suite
2026-08-29 22:28:42 +02:00
Linus Rath
ea1f53f550
fix: keep the created message id when the server answers a send with an implicit filing update
2026-08-29 22:28:41 +02:00
Linus Rath
4e035f3011
chore: update version number to 0.1.61
0.1.61
2026-08-29 20:25:25 +02:00
Linus Rath
e04bea451a
fix: check the GitHub CLI login before bumping so a failed release does not leave a bare tag
2026-08-29 20:20:54 +02:00
Linus Rath
5cb28f5d5d
chore: update version number to 0.1.60
0.1.60
2026-08-29 20:20:15 +02:00
Linus Rath
94c9a2e7a2
chore: update version number to 0.1.59
0.1.59
2026-08-29 20:19:36 +02:00
Linus Rath
3f2dfe83ee
chore: merge upstream fixes for reply threading, iOS session auth drop, calendar paging and the camera prompt ( #35 , #38 , #39 , #40 )
2026-08-29 20:16:33 +02:00
Linus Rath
99a20777b7
docs: tick the P1 summary and record the fix-pass status in the parity index
2026-08-29 18:56:47 +02:00
Linus Rath
96272b6e17
fix: confirm the host before opening meeting links from calendar events and invitations
2026-08-29 18:56:46 +02:00
Linus Rath
8e33808ded
docs: tick the calendar parity items fixed in this pass
2026-08-29 18:55:31 +02:00
Linus Rath
2abea9742e
feat: add a send-invitations switch and custom reminder offsets, keeping alerts the picker cannot show
2026-08-29 18:53:58 +02:00
Linus Rath
c705227611
chore: add the harvested and hand-written RN locale keys
2026-08-29 18:49:38 +02:00
Linus Rath
5fe8e407c7
feat: duplicate, share as .ics and copy the meeting link of an event; link imported UIDs instead of skipping them ( #113 )
2026-08-29 18:49:08 +02:00
Linus Rath
0159d6acc8
docs: tick the outbox and unified-inbox core items
2026-08-29 18:48:51 +02:00
Linus Rath
8fd709d308
docs: record the commit hashes for the mail-list parity items
2026-08-29 18:47:21 +02:00
Linus Rath
0205aa0e1c
feat: cross-account moves via blob import, shared-account offline sync, parked failed outbox ops with retry and back-off, archive replay with foldering, localized relative dates
2026-08-29 18:47:12 +02:00
Linus Rath
09c24fa805
feat: edit tasks with description, priority and due time, filter the list and overlay due tasks on the calendar
2026-08-29 18:44:36 +02:00
Linus Rath
86c3ab9f28
fix: escape the line-break regex in the quick-reply prefill
2026-08-29 18:42:26 +02:00
Linus Rath
9398b46795
docs: tick the viewer-side core items
2026-08-29 18:41:49 +02:00
Linus Rath
f9ae4423e9
fix: sweep stale export files at launch and carry quick-reply text into the composer
2026-08-29 18:41:49 +02:00
Linus Rath
8e1d03c746
feat: fire calendar and task reminders as local notifications
2026-08-29 18:41:06 +02:00
Linus Rath
a222e89611
refactor: merge the quick reply's email-body imports
2026-08-29 18:40:42 +02:00
Linus Rath
26786ca3e4
fix: add the reader's load-failed translation key
2026-08-29 18:40:02 +02:00
Linus Rath
6ae21d5690
feat: folder actions, tags and unified views in the drawer, folder parent/role editing, tag discovery and account-routed unified actions ( #404 , #498 , #495 , #175 , #658 , #855 )
2026-08-29 18:39:45 +02:00
Linus Rath
d6670c2b60
docs: tick the reader parity items
2026-08-29 18:39:29 +02:00
Linus Rath
d2ed27fd3b
feat: conversation view with collapsible cards, header details, auth chips, unsubscribe and read-receipt banners, attachment preview and zip, embedded-message and TNEF unwrap in the reader ( #480 , #830 , #891 )
2026-08-29 18:38:53 +02:00
Linus Rath
ee3b3ffcc3
test: mock the Expo native modules the stores reach transitively
2026-08-29 18:36:08 +02:00
Linus Rath
0f80e98fbc
feat: localize the calendar, add Saturday week start, ISO week numbers, month chips and 12h labels ( #666 )
2026-08-29 18:35:46 +02:00
Linus Rath
2b44936a17
chore: harvest new RN-only translation keys
2026-08-29 18:34:18 +02:00
Linus Rath
bf92a00199
test: cover the draft route-param builder and tick the composer parity items
2026-08-29 18:34:09 +02:00
Linus Rath
00fd0696b2
docs: note the deferred date-locale item in the parity checklist
2026-08-29 18:33:27 +02:00
Linus Rath
c659b5489c
feat: signature, read-receipt, empty-subject, autosave and sub-address settings, identity Reply-To/Bcc/HTML signature with a default identity, template category/favourite, and reschedule/send-now/edit on the scheduled screen ( #507 )
2026-08-29 18:33:22 +02:00
Linus Rath
3a8264c7f7
feat: translate the account security pane
2026-08-29 18:33:16 +02:00
Linus Rath
dc3ac4c7ed
feat: translate the downloads pane
2026-08-29 18:30:32 +02:00
Linus Rath
ae31a71e01
docs: tick settings pane, theme and sidebar-app items in the parity checklist
2026-08-29 18:30:09 +02:00
Linus Rath
0e63d45599
feat: expose a mobile sidebar-apps selector for the drawer
2026-08-29 18:30:08 +02:00
Linus Rath
22697fd111
feat: translate the appearance, reading, composing, identity, template, keyword and sidebar-app panes
2026-08-29 18:29:34 +02:00
Linus Rath
fe45a444d3
feat: port the webmail's built-in colour themes to the Themes pane
2026-08-29 18:29:18 +02:00
Linus Rath
bea3fc4c42
feat: message-list order presets with the Stalwart keyword-sort polarity probe, avatars-in-junk and folder-count toggles ( #718 , #498 )
2026-08-29 18:28:43 +02:00
Linus Rath
5b72c4d314
feat: drafts with autosave and a save/discard close guard, Bcc, signatures, templates, sub-addressing, From override, read receipts, upload progress, inline-image hydration and an undo-send snackbar in the composer ( #188 , #849 , #848 , #540 , #570 , #684 , #163 )
2026-08-29 18:28:38 +02:00
Linus Rath
3194b5ece1
feat: tags, pins, recipients, not-spam, delete confirm, folder-scoped search and draft editing in the mail list
2026-08-29 18:23:08 +02:00
Linus Rath
f07e039ef0
feat: flip $junk/$notjunk on spam, search all folders by default, keep the search across folders and coalesce refreshes in the mail store ( #850 , #788 , #553 , #175 )
2026-08-29 18:22:14 +02:00
Linus Rath
8206893860
feat: assess invitation trust, read the iTIP method from the ICS and pick the target calendar in the invitation banner
2026-08-29 18:22:00 +02:00
Linus Rath
65c73d82a1
docs: tick misc UI items in the parity checklist
2026-08-29 18:21:34 +02:00