mirror of
https://github.com/bulwarkmail/native.git
synced 2026-10-31 00:06:17 +00:00
bda118bc556408fd54571ab4fd794e75b3473967
Three faults in how a series' changed and cancelled occurrences follow a change of the whole series (found in review, live on 1.0 and 0.16.23 for the web's version of the same code): - A rule that names its days - a series on Mondays and Tuesdays, one on the 5th and the 6th of each month - keeps its occurrences on those days when its start moves. Moving every occurrence by a day moved each override along anyway, so the Monday's landed on the Tuesday's key and one silently overwrote the other: the cancelled Tuesday came back with the Monday's title, and the Monday lost its change. Under such a rule every override but the first occurrence's now stays on its day, at the series' new time; the same holds for the new series of "this and following". Two overrides that still meet on one key (an hourly series turned all-day) no longer overwrite each other: the one that stays where it is, else the first, is kept, and the others are left out and logged. - "Does not repeat" for every occurrence kept the first occurrence's override on the single event, because a series' start counts as an occurrence of any rule: cancelled, 1.0 left the event out of every range query (still stored); retitled, 0.16.23 listed it twice. A series made single now keeps no overrides. - The SEQUENCE a change of every occurrence raises (0.16.6 to 0.16.23 refuse a lower one) came from the series as the app held it. A series opened from a reminder or a link was that copy, possibly older than the server's. The store now reads a series from the server every time a scope edit asks for it, so the raise, the overrides a split or a move rewrites and the rule all start from what the server holds.
Bulwark Mobile
Beta - work in progress. Many features are unfinished or rough. Expect bugs, missing functionality, and breaking changes between releases. Do not rely on this for primary email yet.
React Native (Expo SDK 54) client for Bulwark Webmail - a JMAP-based mail, calendar, and contacts app.
What works today
- Sign in to any JMAP server (e.g. Stalwart)
- Multiple accounts
- Email list, threads, compose
- Calendar (basic)
- Contacts (basic)
- Push notifications via the Bulwark relay - FCM by default, or UnifiedPush (e.g. ntfy) for devices without Google Play services
- In-app sideload updates from GitHub Releases
What's missing or rough
- iOS builds, but push notifications and client certificates are Android-only so far
- S/MIME, plugins, themes - UI stubs only (filters & rules, the vacation responder and file storage are real implementations)
- Calendar editing is partial; contacts editing is basic
- No Play Store distribution yet (sideload APK from Releases); iOS ships via TestFlight
Run locally
npm install
npx expo start
Then press a for Android, i for iOS, or scan the QR with Expo Go.
For release APK builds and signing see docs/android-release.md. For iOS builds and TestFlight distribution see docs/ios-release.md.
License
AGPL-3.0-only. See LICENSE.
Languages
TypeScript
95.5%
Kotlin
2.7%
JavaScript
0.9%
HTML
0.5%
Sieve
0.2%
Other
0.1%