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>
102 lines
1.8 KiB
Plaintext
102 lines
1.8 KiB
Plaintext
# Using Android gitignore template: https://github.com/github/gitignore/blob/HEAD/Android.gitignore
|
|
|
|
# Built application files
|
|
*.apk
|
|
*.aar
|
|
*.ap_
|
|
*.aab
|
|
|
|
# Files for the ART/Dalvik VM
|
|
*.dex
|
|
|
|
# Java class files
|
|
*.class
|
|
|
|
# Generated files
|
|
bin/
|
|
gen/
|
|
out/
|
|
# Uncomment the following line in case you need and you don't have the release build type files in your app
|
|
# release/
|
|
|
|
# Gradle files
|
|
.gradle/
|
|
build/
|
|
|
|
# Local configuration file (sdk path, etc)
|
|
local.properties
|
|
|
|
# Proguard folder generated by Eclipse
|
|
proguard/
|
|
|
|
# Log Files
|
|
*.log
|
|
|
|
# Android Studio Navigation editor temp files
|
|
.navigation/
|
|
|
|
# Android Studio captures folder
|
|
captures/
|
|
|
|
# IntelliJ
|
|
*.iml
|
|
.idea/workspace.xml
|
|
.idea/tasks.xml
|
|
.idea/gradle.xml
|
|
.idea/assetWizardSettings.xml
|
|
.idea/dictionaries
|
|
.idea/libraries
|
|
# Android Studio 3 in .gitignore file.
|
|
.idea/caches
|
|
.idea/modules.xml
|
|
# Comment next line if keeping position of elements in Navigation Editor is relevant for you
|
|
.idea/navEditor.xml
|
|
|
|
# Keystore files
|
|
# Uncomment the following lines if you do not want to check your keystore files in.
|
|
#*.jks
|
|
#*.keystore
|
|
|
|
# External native build folder generated in Android Studio 2.2 and later
|
|
.externalNativeBuild
|
|
.cxx/
|
|
|
|
# Google Services (e.g. APIs or Firebase)
|
|
# google-services.json
|
|
|
|
# Freeline
|
|
freeline.py
|
|
freeline/
|
|
freeline_project_description.json
|
|
|
|
# fastlane
|
|
fastlane/report.xml
|
|
fastlane/Preview.html
|
|
fastlane/screenshots
|
|
fastlane/test_output
|
|
fastlane/readme.md
|
|
|
|
# Version control
|
|
vcs.xml
|
|
|
|
# lint
|
|
lint/intermediates/
|
|
lint/generated/
|
|
lint/outputs/
|
|
lint/tmp/
|
|
# lint/reports/
|
|
|
|
# Android Profiling
|
|
*.hprof
|
|
|
|
# Cordova plugins for Capacitor
|
|
capacitor-cordova-android-plugins
|
|
|
|
# Copied web assets
|
|
app/src/main/assets/public
|
|
|
|
# Generated Config files
|
|
app/src/main/assets/capacitor.config.json
|
|
app/src/main/assets/capacitor.plugins.json
|
|
app/src/main/res/xml/config.xml
|