Linus Rath
4ec2ccac11
fix: say the mail server refuses push relays that are not on a public domain
2026-10-29 02:03:24 +01:00
Linus Rath
20be110537
fix: keep the device sync push types when a subscription write fails for another reason
2026-10-29 02:00:50 +01:00
Linus Rath
24232bf2e9
test: seed the live Stalwart test's own mail so it runs on any account and on 1.0
2026-10-29 01:38:30 +01:00
Linus Rath
df4cb7688d
fix: offer only the vacation and favicon settings the app has in the settings search
2026-10-29 01:37:46 +01:00
Linus Rath
f1db6b488a
Merge branch 'main' into feat/stalwart-1.0
2026-10-29 01:30:03 +01:00
Linus Rath
f358d60584
fix: place calendar events at their clock time on DST change days
2026-10-25 14:18:45 +01:00
Linus Rath
b4331a9bf9
feat: sign in with an access token
2026-10-25 12:14:30 +01:00
Linus Rath
470e7fc3ba
fix: keep the drawers' account header below the status bar and sheet rows above the home indicator on iPhone
2026-10-23 19:51:48 +02:00
Linus Rath
8303ff769f
feat: let the iOS notification extension reach the active account without push setup
2026-10-22 22:53:42 +02:00
Linus Rath
f62849d1fe
feat: turn on push notifications on iOS through the relay's APNs transport
2026-10-22 22:53:42 +02:00
Linus Rath
2618680b21
feat: keep iOS credentials where a notification extension can read them
2026-10-22 22:53:42 +02:00
Linus Rath
533f176e88
test: time each module's evaluation at start-up in builds made for the performance harness
2026-10-22 22:04:29 +02:00
Linus Rath
da72415ef3
test: mark the steps of the start-up restore for the performance harness
2026-10-22 22:04:29 +02:00
Linus Rath
0109273037
fix: start typing in the message body when the empty space under it is tapped
2026-10-22 22:04:29 +02:00
Linus Rath
33eb8f99e5
fix: show the undo button on the undo bar in dark mode
2026-10-22 22:04:29 +02:00
Linus Rath
721c2e34a1
fix: sign out of the last account instead of staying signed in
2026-10-22 22:04:28 +02:00
Linus Rath
e06d92d88f
fix: open the photo, camera and file pickers from the compose attach sheet on ios
2026-10-22 22:04:28 +02:00
Linus Rath
42e89122bd
test: mark where the time goes when a message opens
2026-10-22 22:04:28 +02:00
Linus Rath
33fc33910a
test: add test ids to the contact form's name and email fields
2026-10-22 22:04:28 +02:00
Linus Rath
dde504f825
fix: let screen readers reach each option in sheets and menus
2026-10-22 22:04:28 +02:00
Linus Rath
f5f3637d01
fix: keep full-screen modal headers below the status bar on iPhones with a notch
2026-10-22 22:04:28 +02:00
Linus Rath
bdade8503d
test: mark how long each persisted cache takes to load
2026-10-22 22:04:28 +02:00
Linus Rath
57ca1c8083
test: log timing marks for the performance harness when launched with -perfMarks
2026-10-22 22:04:28 +02:00
Linus Rath
ae0b76442a
test: add stable test ids to sign-in fields, tabs and message rows
2026-10-22 00:28:41 +02:00
Linus Rath
341cdb0e61
feat: build a Google Play bundle alongside the GitHub APK
...
The app now has two product flavors. `github` is the sideloaded APK as
before, with the same package name and its in-app updater. `play` is a
bundle for Google Play as `org.bulwarkmail.mobile`, without the updater
or the installer permission, since Play forbids apps updating themselves.
- `release-android.yml` builds the Play bundle in a second job, checks
its signer, package name and permissions, and keeps it as an artifact.
With `PLAY_SERVICE_ACCOUNT_JSON` set it uploads it to internal testing.
- The Play flavor uses the new Firebase project; the GitHub flavor keeps
the old one until the app re-registers its token when it changes.
- Widget clicks and the device-sync account type follow the package name.
- Photos come from the system picker without asking for media access,
and the unused microphone permission from expo-camera is removed.
- A manual workflow run without a tag no longer replaces the APK of the
latest release.
2026-10-20 12:56:44 +02:00
Linus Rath
c7eda4735c
feat: trust user-installed CAs and pick the TLS client certificate before the first sign-in #3
2026-10-19 13:16:47 +02:00
Linus Rath
5f5ffdaddb
feat: mute notifications for single folders or whole accounts #78
2026-10-19 13:11:12 +02:00
Linus Rath
2b486cb1ef
fix: show tags with no local definition in the message header, as the list does #79
2026-10-19 13:02:29 +02:00
Linus Rath
323797b4ee
fix: release a PDF that finishes opening after its preview was closed
2026-10-16 19:42:04 +02:00
Linus Rath
9166b0fb3c
docs: note which files the preview shows
2026-10-16 19:40:59 +02:00
Linus Rath
d22fb8d5d0
feat: open the files inside ZIP archives and attached messages
2026-10-16 19:39:57 +02:00
Linus Rath
56d826c508
test: cover how the PDF preview reports protected and unreadable files
2026-10-16 19:24:19 +02:00
Linus Rath
e5492b89c8
feat: show PDFs in the app on Android
2026-10-16 19:23:17 +02:00
Linus Rath
11e74042e2
fix: hand files with a generic type to other apps by the type their name implies
2026-10-16 19:11:50 +02:00
Linus Rath
95580b84ea
feat: play video and audio, and show SVG, HTML and Markdown files in the preview
2026-10-16 19:11:24 +02:00
Linus Rath
3aca2d80c0
fix: preview .eml attachments that carry attachments of their own
2026-10-16 18:48:26 +02:00
Linus Rath
7c534301ee
refactor: open files from mail, the list, Files and compose through one preview
2026-10-16 18:48:26 +02:00
Linus Rath
14dc5ff2d4
Merge pull request #76 from lucletoffe/feat/calendar-sort-order
...
feat(calendar): order calendars by sortOrder and move them from the drawer
2026-10-15 23:37:37 +02:00
Linus Rath
14ba28c79c
Merge pull request #74 from lucletoffe/fix/compose-visual-viewport
...
fix(composer): stop the body's first lines hiding under To/Cc/Subject on Android
2026-10-15 23:23:40 +02:00
Linus Rath
598adc154d
Merge pull request #72 from lucletoffe/fix/draft-part-blobids
...
fix(drafts): keep a re-opened draft's attachments on live blobs across saves and sends
2026-10-15 23:23:26 +02:00
lucletoffe and Claude Opus 5.5
3c0af52c4e
feat(calendar): order calendars by sortOrder and move them from the drawer
...
Calendars were listed in the order the server returns them (creation
order on Stalwart) and sortOrder was never read. Sort them like the
webmail now does and as JMAP Calendars asks: lower sortOrder first,
equal sortOrder by name (case- and accent-insensitive, numbers by
value), each account's calendars kept together. The store keeps the list
sorted, so the drawer, the event editor and the other pickers agree.
The drawer's long-press panel gains Move up / Move down for the user's
own calendars. A move renumbers that account's calendars 1, 2, 3... and
writes sortOrder only where it changes; the panel stays open so a
calendar can be moved several places.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-10-15 22:07:33 +02:00
Linus Rath
744b17908d
fix: open a settings page at its top instead of the list's scroll position
2026-10-15 15:36:59 +02:00
Linus Rath
c7edae9ed3
fix: move a setting's control under its label when a long label leaves no room
2026-10-15 15:29:13 +02:00
Linus Rath
c07b39a070
fix: keep device sync free of expo by registering device locales from i18n #75
2026-10-15 15:19:18 +02:00
Linus Rath
7e5e296271
fix: use the app switch for the sender override in compose
2026-10-15 15:16:32 +02:00
Linus Rath
ad6dff79ba
fix: draw contact form fields like the webmail and quiet the letter headers in the contact list
2026-10-15 15:16:32 +02:00
Linus Rath
a4ca72fb3d
fix: draw event and task fields like the webmail and use the app switch in the event form
2026-10-15 15:16:32 +02:00
Linus Rath
e731357b89
fix: format dates in the device region for the app language #75
2026-10-15 15:15:19 +02:00
Linus Rath
9cf1d3e849
fix: draw the text field in dialogs like the other inputs
2026-10-15 15:04:01 +02:00
Linus Rath
d3dcc4e830
fix: show folder roles, filter origins and app modes as outline badges
2026-10-15 15:04:01 +02:00