Skip to content

UI/mobile application - #771

Draft
jbpenrath wants to merge 15 commits into
mainfrom
ui/mobile-application
Draft

UI/mobile application#771
jbpenrath wants to merge 15 commits into
mainfrom
ui/mobile-application

Conversation

@jbpenrath

Copy link
Copy Markdown
Contributor

Purpose

Mobile Application UI

@jbpenrath jbpenrath self-assigned this Jul 30, 2026
@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 09c66818-58ad-4635-a212-2d1a9d62aa95

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@jbpenrath
jbpenrath force-pushed the feat/message-preview branch 2 times, most recently from 2fc9ef9 to 8bd3238 Compare August 5, 2026 14:46
@jbpenrath
jbpenrath force-pushed the ui/mobile-application branch 3 times, most recently from ef71f57 to 9ef2ee9 Compare August 10, 2026 08:24
@jbpenrath
jbpenrath changed the base branch from feat/message-preview to development August 10, 2026 08:43
@jbpenrath
jbpenrath force-pushed the ui/mobile-application branch 5 times, most recently from 79e2239 to bc364b2 Compare August 12, 2026 08:01
@jbpenrath
jbpenrath force-pushed the ui/mobile-application branch from a5f5772 to f26cdc4 Compare August 13, 2026 08:54
@jbpenrath
jbpenrath force-pushed the development branch 2 times, most recently from 7ad586b to 31b51b5 Compare August 13, 2026 10:08
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
jbpenrath force-pushed the ui/mobile-application branch from f26cdc4 to cd34c04 Compare August 13, 2026 10:14
Base automatically changed from development to main August 13, 2026 10:32
@jbpenrath
jbpenrath force-pushed the ui/mobile-application branch from cd34c04 to 7bfd689 Compare August 13, 2026 16:57
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
jbpenrath force-pushed the ui/mobile-application branch from 7bfd689 to 8d12995 Compare August 13, 2026 17:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant