Linus Rath
369274d331
feat: keep iOS credentials where a notification extension can read them
2026-10-22 10:36:17 +02:00
Linus Rath
c39e977de5
ci: catch the ios push banner and the extension's log
2026-10-22 10:36:14 +02:00
Linus Rath
24948cb717
ci: keep the app's js log and pin the sign-out dialog button
2026-10-22 10:30:39 +02:00
Linus Rath
6b434346ff
ci: give the ios test legs more time
2026-10-22 10:17:49 +02:00
Linus Rath
1827f8eb34
ci: run the ios perf flows in one maestro process and report every round
2026-10-22 10:17:17 +02:00
Linus Rath
9c549c9d00
ci: keep the notification logs and settings of the ios push test
2026-10-22 10:16:34 +02:00
Linus Rath
f00cd6a259
ci: check and retype web sign-in fields in the ios flows
2026-10-22 09:54:21 +02:00
Linus Rath
62931bcc53
ci: grant notification permission before the ios push test
2026-10-22 09:43:20 +02:00
Linus Rath
5622d732e9
ci: steady the ios flows around transitions, pickers and covered fields
2026-10-22 09:32:11 +02:00
Linus Rath
db3c6b5ba1
ci: test ios push notifications on the simulator with simctl push
2026-10-22 09:04:27 +02:00
Linus Rath
680d4745ed
ci: run each ios perf measurement as its own flow
2026-10-22 08:29:55 +02:00
Linus Rath
8533bd4f99
ci: fix ios feature flow steps for the drawer, search, selection, calendar and contacts
2026-10-22 08:20:49 +02:00
Linus Rath
52975bd715
ci: test the webmail hand-off with a webmail session left in the browser
2026-10-22 04:45:29 +02:00
Linus Rath
bf226c3794
ci: fix ios sign-out, scanner and add-account flow steps
2026-10-22 04:44:23 +02:00
Linus Rath
ca09708fd1
ci: match ios drawer rows by their joined label and keep failed-step hierarchies
2026-10-22 04:40:42 +02:00
Linus Rath
96d9d54cc9
ci: type the first character alone in ios flows and answer the webmail hand-over prompt
2026-10-22 03:55:43 +02:00
Linus Rath
02bd714afd
ci: add an ios performance leg that compares two simulator builds
2026-10-22 03:11:39 +02:00
Linus Rath
e57ee3d446
ci: sign the ios simulator build ad hoc so the keychain has its entitlements
2026-10-22 03:05:51 +02:00
Linus Rath
08e2f47187
ci: sign the ios simulator app ad hoc so the keychain works, and fix flow selectors
2026-10-22 02:54:00 +02:00
Linus Rath
de414f7ed6
ci: run each ios flow in its own maestro process and add the feature flows
2026-10-22 02:15:35 +02:00
Linus Rath
273051e5f5
ci: run sign-in flows for every method on iphone and ipad simulators
2026-10-22 01:54:03 +02:00
Linus Rath
fa68b2eb53
ci: type a test value in the ios warm-up flow and log what the driver does
2026-10-22 01:28:13 +02:00
Linus Rath
3748a64b10
ci: turn off the ios slide-to-type tip that swallows typed text in simulator tests
2026-10-22 01:15:24 +02:00
Linus Rath
2078388e6f
ci: log why the maestro ios driver fails to start and allow reusing a built app
2026-10-22 00:49:38 +02:00
Linus Rath
ea9bad7cff
ci: run maestro flows on the ios simulator
2026-10-22 00:28:41 +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
1c9bbcc383
chore: update version number to 0.1.83
0.1.83
2026-10-19 13:16:57 +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
083ec958a0
chore: sync the locale catalogs from the webmail
2026-10-19 13:03:52 +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
86400b124a
chore: update version number to 0.1.82
0.1.82
2026-10-16 19:46:04 +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
1f253e9488
fix: stop a PDF page rendered after its preview closed from leaving files behind
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
e0f18713aa
chore: update version number to 0.1.81
0.1.81
2026-10-16 19:27:04 +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
b50436b1ba
chore: update version number to 0.1.80
0.1.80
2026-10-16 19:12:43 +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
9a15334bef
chore: update version number to 0.1.79
0.1.79
2026-10-16 18:49:43 +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