UI/mobile application - #771
Draft
jbpenrath wants to merge 15 commits into
Draft
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
jbpenrath
force-pushed
the
feat/message-preview
branch
2 times, most recently
from
August 5, 2026 14:46
2fc9ef9 to
8bd3238
Compare
jbpenrath
force-pushed
the
ui/mobile-application
branch
3 times, most recently
from
August 10, 2026 08:24
ef71f57 to
9ef2ee9
Compare
jbpenrath
force-pushed
the
ui/mobile-application
branch
5 times, most recently
from
August 12, 2026 08:01
79e2239 to
bc364b2
Compare
jbpenrath
force-pushed
the
ui/mobile-application
branch
from
August 13, 2026 08:54
a5f5772 to
f26cdc4
Compare
jbpenrath
force-pushed
the
development
branch
2 times, most recently
from
August 13, 2026 10:08
7ad586b to
31b51b5
Compare
The pnpm-style layout bakes install-local .store/<hash> paths into the native project files committed by cap sync, and the named node_modules volume masked the host tree — breaking the IDE and the Gradle/Xcode builds that resolve Capacitor plugins through relative paths into src/frontend/node_modules. Back to the hoisted layout installed in the bind mount, with the bootstrap check updated accordingly.
A staging and a production build must coexist on one device: the app id, displayed name and OIDC deep-link scheme become env-driven (MOBILE_APP_ID / MOBILE_APP_NAME / MOBILE_AUTH_SCHEME) across cap sync, gradle and Xcode (generated xcconfig) — a divergence between the JS and native halves strands the login callback silently, and a wrong identity is frozen forever by the first store upload, so release builds now fail on any mismatch. mobile-android-release produces the signed Play bundle; the upload keystore and google-services.json stay per-instance and gitignored.
Adapt the whole webmail UI to the native shell in one pass: bottom navigation bar, mobile thread header/toolbar, swipe actions on thread rows, pull-to-refresh, drawer, a BlockNote formatting toolbar pinned above the keyboard, a dedicated icon set, haptics and keyboard handling. Everything branches on isNativePlatform() (with a dev-only DEV_FAKE_NATIVE escape hatch for desktop devtools) so the desktop web UI keeps its existing layout. Dependency bumps (BlockNote, Cunningham, Capacitor plugins) support these components.
…icit Origin Against an HTTPS backend Django's CSRF check rejects mutations carrying neither Origin nor Referer — headers the native HTTP client never sends and that the Capacitor-patched fetch silently strips (browser forbidden header). Mutations in the shell now call the CapacitorHttp plugin directly with an explicit Origin; reads stay on the patched fetch to keep request cancellation. The web app caches the session-bound CSRF token served by /users/me (no csrftoken cookie under CSRF_USE_SESSIONS), and shareable deep links use the deployed origin instead of the WebView-local one. Invisible in dev: the plain-HTTP backend never triggers the check.
Align the doc with the code it describes: the logout section still documented the SSO-preserving flow replaced by the IdP round-trip, the release checklist tested the old behaviour, and the new identity / Play publishing tooling and the HTTPS CSRF Origin constraint were undocumented.
The displayed version was scattered and inconsistent: a 1.0 fallback in gradle and the Makefile, a hardcoded MARKETING_VERSION = 1.0 in the Xcode project, and an unrelated 0.9.0 in package.json. The package.json "version" field becomes the single source of truth, bumped manually per release: gradle parses it directly and iOS receives it through the generated xcconfig, so a bump is a one-line change. Set to 0.1.0 — the app is pre-1.0. The MOBILE_VERSION_NAME env plumbing is dropped accordingly.
jbpenrath
force-pushed
the
ui/mobile-application
branch
from
August 13, 2026 10:14
f26cdc4 to
cd34c04
Compare
jbpenrath
force-pushed
the
ui/mobile-application
branch
from
August 13, 2026 16:57
cd34c04 to
7bfd689
Compare
CURRENT_PROJECT_VERSION was left at the Xcode default of 1, so every iOS build shipped the same CFBundleVersion. App Store Connect refuses an upload reusing a build number within a MARKETING_VERSION, which would have blocked the second upload of any release, and App.getInfo().build reported a constant "1" — leaving the build number meaningless in the support version report. Feed it from MOBILE_VERSION_CODE, the variable Android already reads for its versionCode, so both stores order a release by the same git-derived commit count. Xcode release builds run from the host IDE, where the container environment never lands, so the value has to travel through generated.xcconfig — hence make mobile-build now passes the variable too.
jbpenrath
force-pushed
the
ui/mobile-application
branch
from
August 13, 2026 17:00
7bfd689 to
8d12995
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
Mobile Application UI