mirror of
https://github.com/bulwarkmail/native.git
synced 2026-10-31 16:06:32 +00:00
2e26ff7b648aca55c3cde47a48e58ce68fbd0b8e
Stalwart 1.0 refuses keywords over 128 bytes and more than 100 keywords on one message, per message in Email/set `notUpdated`; a read-only shared folder refuses any keyword on every version. The app stopped a large selection at the first refused batch, "mark folder as read" ignored refusals, and the list's swipe, bulk and tag actions let the rejection go unhandled, so nothing was said. The keyword sort polarity verdict was stored per server address for a week, so a server reinstalled as 1.0 (which sorts as the RFC says, where 0.16.8-0.16.22 invert) kept the old reading. - Email/set writes send every batch before reporting the first refused message, and "mark folder as read" marks the rest, then reports the refusal. The list shows "Tagging failed" or "Failed to update email" for swipe, bulk and tag actions, and the viewer's automatic mark-as-read puts the message back to unread when it is refused. - The sort polarity verdict is keyed by the server fingerprint as well (stored as `keyword-sort-polarity:v2`), so a replaced or upgraded server is probed afresh. An upgrade that leaves the capabilities alone, such as 0.16.22 to 0.16.23, still waits out the week. - Tests pin that Stalwart 1.0's `$hasattachment` / `$hasnoattachment` never show as tags or as tags to recover; the app lists no other keywords, and tag ids stay within 128 bytes by construction.
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.9%
Kotlin
2.1%
JavaScript
0.9%
Swift
0.4%
HTML
0.4%
Other
0.2%