feat(mobile): Android app shell with Capacitor
The web client already has a full mobile UI (MobileShell and 17 sibling screens) and ships as a PWA, so what was missing to get an APK was a native container, not an interface. The WebView loads the instance over the network instead of bundling a copy of the web build. Bundling would mean republishing an APK on every site deploy — there is no electron-updater equivalent here — and it would move the page to https://localhost, turning every same-origin /api and /ws call into a cross-origin one. The cost is no offline mode, which for a realtime chat app costs nothing: public/index.html covers the unreachable-server case. packages/mobile sits outside the pnpm workspace on purpose. Capacitor's CLI and Gradle both assume a flat node_modules, and keeping it out leaves pnpm-lock.yaml and the existing web/desktop CI untouched by it. Icons are generated from the existing brand art. The launch screen is a layer-list over the brand background rather than Capacitor's per-density splash.png set, which is light and flashed white before the WebView painted. CI builds an *unsigned* APK. The signing key stays on the VPS and is applied there — an APK signature is what proves an update came from us, so the key has no reason to exist on a second machine. Background voice (foreground service) is not in this commit: a plain WebView is throttled when the screen goes off and the call drops. That is the next phase. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
# Project-wide Gradle settings.
|
||||
|
||||
# IDE (e.g. Android Studio) users:
|
||||
# Gradle settings configured through the IDE *will override*
|
||||
# any settings specified in this file.
|
||||
|
||||
# For more details on how to configure your build environment visit
|
||||
# http://www.gradle.org/docs/current/userguide/build_environment.html
|
||||
|
||||
# Specifies the JVM arguments used for the daemon process.
|
||||
# The setting is particularly useful for tweaking memory settings.
|
||||
org.gradle.jvmargs=-Xmx1536m
|
||||
|
||||
# When configured, Gradle will run in incubating parallel mode.
|
||||
# This option should only be used with decoupled projects. More details, visit
|
||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||
# org.gradle.parallel=true
|
||||
|
||||
# AndroidX package structure to make it clearer which packages are bundled with the
|
||||
# Android operating system, and which are packaged with your app's APK
|
||||
# https://developer.android.com/topic/libraries/support-library/androidx-rn
|
||||
android.useAndroidX=true
|
||||
Reference in New Issue
Block a user