Files
chat_web_app/llm-fe/capacitor.config.ts
T
westfarn a4a28ef13e
Unit Tests / test (push) Successful in 11s
Ship Android app by wrapping the web build with Capacitor (#20) (#28)
## Summary
- Closes #20
- Add Capacitor 7 to `llm-fe/` (`capacitor.config.ts`, appId `com.aimloperations.chat`, `webDir: build`) and commit the generated `android/` project
- npm scripts: `build:mobile` (`.env.mobile` + CRA build + `cap sync`), `android:open`, `android:sync`, `assets:generate`
- `.env.mobile` defaults to prod backend; override independently of web deploys
- Native chrome: Android back button (history / exit at root), status bar + keyboard resize, safe-area CSS; Preferences registered for JWT mirror (#22)
- Icons/splash via `@capacitor/assets`; signing via optional `keystore.properties`; docs in `llm-fe/ANDROID.md` + root README

Blockers #22 / #23 / #24 already on master.

## Test plan
- [x] `npm run test:ci` (79 tests)
- [x] `npm run build` + `npx cap add android` / `cap sync`
- [ ] `npm run build:mobile` + open in Android Studio on a machine with SDK
- [ ] Emulator/device QA: login, chat stream, theme, back button, keyboard/safe-area, WS resume
- [ ] Generate upload keystore outside repo; `./gradlew bundleRelease` for internal testing trackReviewed-on: #28
2026-07-26 17:12:48 -07:00

28 lines
653 B
TypeScript

import type { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.aimloperations.chat',
appName: 'Hesychia',
webDir: 'build',
server: {
// Bundled assets; HashRouter (#24) handles deep links without a rewrite server.
androidScheme: 'https',
},
android: {
allowMixedContent: false,
},
plugins: {
SplashScreen: {
launchAutoHide: true,
backgroundColor: '#0f172a',
showSpinner: false,
},
Keyboard: {
// StatusBar does not overlay the WebView; keep resizeOnFullScreen for notch devices.
resizeOnFullScreen: true,
},
},
};
export default config;