- Add CORS headers to backend server to allow mobile app requests - Implement request timeout (10s) in capacitor-bridge.js to prevent hanging - Add comprehensive logging throughout authentication flow - Add detailed error reporting in initApp for better debugging - Log all API requests with request IDs for traceability This fixes the 'Loading Plugin Compass...' infinite loop issue caused by missing CORS headers and unhandled network timeouts.
Plugin Compass Android (Capacitor)
This folder contains the Android app build for Plugin Compass. The app provides a native mobile experience with sign-in, onboarding, and plugin building features.
Features
- Native sign-in screen with email and OAuth options.
- Full onboarding flow with step-by-step guidance.
- Quick start prompts to help users get started.
- Reuses the existing web UI for builder and apps pages.
- Build via GitHub Actions.
How it works
- Sign-in: Custom mobile-first sign-in screen with email/password and OAuth buttons.
- Onboarding: 4-step onboarding flow introducing key features and quick start prompts.
- UI reuse: After onboarding, users access the builder and apps from the web UI.
- Local storage: Apps and preferences are saved using Capacitor Preferences.
Setup
- Install prerequisites (Node 18+, Android SDK).
- From this folder:
npm install. - Pull UI assets:
npm run prepare-ui. - Add Android platform:
npx cap add android. - Sync:
npx cap sync android.
Development
npm run buildprepares UI and syncs with Android.npx cap open androidopens Android Studio for development.
CI build
- GitHub Actions workflow:
.github/workflows/build-android-app.yml. - The action runs on
ubuntu-latest, sets up Java/Android SDK, and builds the APK.
Custom Mobile Index
The build script creates a custom index.html for mobile with:
- Loading screen with branded animation
- Sign-in screen (email/password + OAuth)
- Onboarding flow (4 steps with quick start prompts)
- Main dashboard with quick actions
Security notes
- User credentials are stored securely using Capacitor Preferences.
- API keys are never exposed to the web layer.
- OpenCode execution is not supported on mobile (desktop app only).