mirror of
https://github.com/bulwarkmail/native.git
synced 2026-10-31 08:06:36 +00:00
f24ff7da9ead0bc9bb20f00aac35d9f9e8e5d5a9
Etar moves an event, or turns a series into a single event, by deleting the row and inserting a copy. The pair uploaded the move as a patch of the event, but then took the copy as it stood for the new baseline and wrote the server's version over it, so everything else saved with the move was dropped: a changed reminder came back, and an edit made before the move never reached the server. The synced occurrences, which Etar does not copy, were deleted with the old row, losing an occurrence edit that was still waiting. The copy now starts from the old row's baseline with only what the move changed, so any other difference stays dirty and uploads right after the move as an ordinary update. The old row's occurrences move to the new row with what they wait to upload. Attendee rows of the copy are the app's re-insert (Etar writes everyone as required, without a status) and are not read as edits. Checked with planner tests and runs through the engine and the fake server: a reminder saved with the move and a pending occurrence edit both reach the server, the event keeps its uid, and the echo writes nothing.
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%