mirror of
https://github.com/bulwarkmail/native.git
synced 2026-11-02 16:07:12 +00:00
a330d77d6d2e043007a63c0b90829dd817f8a651
The app compares the server behind an account with the one it recorded and drops what came from a replaced one. The released version recorded none, so on the first start of this one there is nothing to compare with, and a server replaced before the update (Stalwart 1.0 is a fresh install) went unnoticed: - the push subscription expiry the released version recorded made the subscription the new server lacks look revoked, and push was turned off for good; it is now forgotten on the first sight of an account, so the subscription is re-created - the queue of offline edits the released version left was replayed against the new server, where its ids name other messages, so a queued delete deleted another message; it is now discarded on the first sight, with the notice a replaced server shows. Nothing proves a queued edit belongs to the server: the queue records none, a reinstalled Stalwart may accept old JMAP states, and a queued move or delete took its message out of the cached list, so there is no copy to compare the server's message with iCal subscriptions recognise their mirror calendar by name, but a sync still imported the feed into whatever calendar the recorded id named: - the feed now goes only into a calendar that carries the subscription's name, and otherwise into a new mirror; when the name can't be read, the sync fails and is tried again - a rename the server refused renamed the subscription anyway, which then no longer recognised its mirror: pruning stopped and removing the subscription kept the calendar. Now nothing changes and the error is shown - a replaced server claimed subscriptions made before they recorded their account for every account with the same JMAP id, another server's account included. They now go only when no other signed-in account has that id, or may have it, and a sync that finds their mirror records the account on them
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
96%
Kotlin
2.1%
JavaScript
0.9%
Swift
0.4%
HTML
0.3%
Other
0.2%