Linus Rath
ee04e95d4f
feat: add UnifiedPush as an alternative to FCM for push notifications
2026-09-24 18:17:43 +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
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
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
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
8e1d03c746
feat: fire calendar and task reminders as local notifications
2026-08-29 18:41:06 +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
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
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
bf92a00199
test: cover the draft route-param builder and tick the composer parity items
2026-08-29 18:34: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
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
3ae9bbe702
feat: add a toast host, prompt dialog, haptics helper and reduce-motion aware animations
2026-08-29 18:20:01 +02:00
Linus Rath
5802caeea9
feat: open deep links, mailto: URLs and share-sheet payloads in the app
2026-08-29 18:20:01 +02:00
Linus Rath
06742ef7d5
fix: render HTML-only mail as HTML, keep stylesheets and block every external-content vector in the reader ( #46 , #49 )
2026-08-29 18:15:22 +02:00
Linus Rath
42ab246cb9
feat: port recipient parsing, reply-identity, sub-addressing, signature, quote-header and template helpers; drop the dead submission api
2026-08-29 18:12:15 +02:00
Linus Rath
1f2df5f079
fix: run the push background task on a detached JMAP session instead of re-binding the client
2026-08-29 18:11:13 +02:00
Linus Rath
240471764a
feat: localize the sign-in flow and offer previously used addresses
2026-08-29 18:10:25 +02:00
Linus Rath
58e3ef6827
fix: query events by date window, scan tasks separately and stop re-probing denied shared accounts ( #907 )
2026-08-29 18:05:56 +02:00
Linus Rath
4bebf70482
feat: sign in with OAuth (PKCE) directly against the mail server and revoke refresh tokens on sign-out
2026-08-29 18:05:16 +02:00
Linus Rath
8deff66274
feat: validate settings on hydrate, align defaults with the webmail and add export/import/reset
2026-08-29 18:04:21 +02:00
Linus Rath
a071d0581c
feat: refetch filters and vacation on push and fan state changes out to screens
2026-08-29 18:03:24 +02:00
Linus Rath
6f747db858
fix: resolve redirects in JS for client-certificate requests and pass blob deadlines to the native path ( #627 )
2026-08-29 18:03:24 +02:00
Linus Rath
ce97232eb2
fix: allow cleartext server URLs only on local hosts, name the mail domain as TOTP issuer and guard external links
2026-08-29 18:03:23 +02:00
Linus Rath
516c9c931a
fix: only drop exact role-folder name duplicates from the folder tree ( #771 )
2026-08-29 18:02:37 +02:00
Linus Rath
a0ce9258cd
feat: files API reads modified dates, decodes WebDAV names, copies/moves nodes and streams uploads ( #700 , #869 , #563 )
2026-08-29 17:59:44 +02:00
Linus Rath
3fd5f10afe
fix: gate event editing on calendar rights and keep read-only calendars out of the pickers ( #762 )
2026-08-29 17:57:54 +02:00
Linus Rath
b52768e6fb
fix: keep the live session on a failed add or switch, recover from revoked sessions, refresh display names and sign in with a TOTP code ( #900 )
2026-08-29 17:57:32 +02:00
Linus Rath
00faceb25f
fix: subscribe to EmailDelivery only, use the relay's email ids and route pushes per account ( #45 )
2026-08-29 17:53:53 +02:00
Linus Rath
5dc40706fa
fix: send invitations with a server-scheduled organizer and match RSVPs against identities and aliases ( #731 )
2026-08-29 17:52:26 +02:00
Linus Rath
580e010b33
fix: check ContactCard/set results, re-fetch created cards, assign UIDs and paginate contact queries ( #644 )
2026-08-29 17:50:44 +02:00
Linus Rath
506a4b1a84
feat: port the reply-recipient, subject-prefix, threading and mailbox-parsing helpers from the webmail
2026-08-29 17:49:23 +02:00
Linus Rath
b538a0e53d
feat: vacation responder sends UTC dates, edits an HTML body and is fully localized
2026-08-29 17:48:18 +02:00
Linus Rath
58a6f45c15
fix: save all-day events with the right length, a time zone and explicit nulls for cleared fields ( #805 )
2026-08-29 17:45:43 +02:00
Linus Rath
3ffcef2ec1
feat: actionable vacation banner, expanded IF/THEN rule view and capability-gated filter tabs
2026-08-29 17:44:14 +02:00
Linus Rath
0b1c240802
fix: harden the JMAP client with request deadlines, retries, rate-limit state and method-error helpers ( #702 , #780 , #907 )
2026-08-29 17:42:32 +02:00
Linus Rath
2c0dbd15d1
fix: use a CSPRNG for OAuth state, TOTP secrets and UUIDs and validate handoff endpoints
2026-08-29 17:42:31 +02:00
Linus Rath
161baf1708
fix: edit or delete a single occurrence or the rest of a series instead of the whole series
2026-08-29 17:42:22 +02:00
Linus Rath
1c6aa680c5
feat: port the extended Sieve rules (attachment field, multi-value conditions) from the webmail
2026-08-29 17:39:43 +02:00
Linus Rath
e650cb2d0a
fix: import vCard dates as RFC 9553 PartialDate and map vendor X- extensions ( #224 , #701 )
2026-08-29 17:37:44 +02:00
Linus Rath
be82bfe814
feat: show shared mailboxes (group accounts) in the sidebar #37
2026-08-02 20:17:29 +02:00
Linus Rath
2577f4e64b
Merge pull request #33 from arnauda-gh/fix/attachment-direct-view
...
fix(android): open attachments directly with default viewer app
2026-08-02 15:37:03 +02:00
Linus Rath
ee21c15fec
refactor(android): tidy the attachment direct-view handoff
...
Follow-up to the direct-view fix. No behaviour change on the happy path,
but the handoff is now easier to reason about and covered by tests.
- Use `File.contentUri` from the expo-file-system 19 API instead of the
legacy `getContentUriAsync`, dropping the `expo-file-system/legacy`
import. Same FileProvider, one less round trip through the bridge.
- Pull the intent launch into `openWithViewer`, which returns false when
the handoff didn't happen, so the fallback reads as a decision rather
than as an empty catch. It also no longer swallows the reason silently.
- Rewrite the expo-sharing comment above `shareAttachment`: it warns
against pre-translating to a content URI, which is still true for every
`Sharing.shareAsync` call but is exactly what the new VIEW path has to
do. Note why `downloadAttachment` keeps the share sheet as well.
- Record why FLAG_ACTIVITY_NEW_TASK is deliberately absent: the module
launches via startActivityForResult, which a new task would cancel.
2026-08-02 15:36:31 +02:00
Linus Rath
f040a48e2f
feat: iOS TestFlight release pipeline
2026-08-01 13:29:15 +02:00
Linus Rath
c29cbcd549
feat: step-by-step sign-in with server discovery from the email address
2026-08-01 13:28:31 +02:00
arnauda-gh
b7995fafde
fix(android): open attachments directly with default viewer app
...
Fixes #32 .
On Android, Sharing.shareAsync triggers Intent.ACTION_SEND (Share sheet). Updated shareAttachment to convert the file URI to a content URI and launch android.intent.action.VIEW via expo-intent-launcher, with fallback to shareAsync if no viewer application is installed for the MIME type.
2026-07-24 12:03:28 +02:00