| 1 |
# 📱 OxygenHub Android |
| 2 |
|
| 3 |
 |
| 4 |
 |
| 5 |
 |
| 6 |
|
| 7 |
The official native Android client for OxygenHub, designed for modern devices and fully optimized for foldables like the Pixel 10 Pro Fold. |
| 8 |
|
| 9 |
Built with **Kotlin**, **Jetpack Compose**, and deep **Rust interop** (via `uniffi-rs`) to execute native `oxy` commands directly on your device. |
| 10 |
|
| 11 |
--- |
| 12 |
|
| 13 |
## ✨ Features |
| 14 |
* 🧬 **Commutative History:** Native visualization of the change graph. |
| 15 |
* 🔀 **Offline-First Conflicts:** Resolve conflicts on the go; they're just data. |
| 16 |
* 🌊 **Job Flow Control:** Orchestrate OxygenFlow CI/CD pipelines right from your phone. |
| 17 |
|
| 18 |
## 🛠️ Setup |
| 19 |
|
| 20 |
1. Clone the repository with `oxy clone`, and fetch the pinned Oxygen |
| 21 |
sources: `oxy submodule update --init` (rust-core builds over `oxygen/`). |
| 22 |
2. Install the Android SDK with an NDK (Android Studio's SDK manager), and |
| 23 |
point `local.properties` at it (`sdk.dir=…`) or set `ANDROID_HOME`. |
| 24 |
3. Install the Rust side: `cargo install cargo-ndk` and |
| 25 |
`rustup target add aarch64-linux-android x86_64-linux-android`. |
| 26 |
4. Build and test; the build compiles rust-core for arm64-v8a and x86_64 |
| 27 |
and generates its Kotlin bindings itself: |
| 28 |
```bash |
| 29 |
./gradlew :app:assembleDebug :app:testDebugUnitTest |
| 30 |
``` |
| 31 |
|
| 32 |
## 🏗️ CI/CD |
| 33 |
|
| 34 |
We dogfood **OxygenFlow** for our builds. |
| 35 |
The pipeline is defined in `.flow/pipeline.kdl`. |
| 36 |
|
| 37 |
--- |
| 38 |
*If you notice any issues with Flow or Oxygen during development, please log them in the `~/oxygen_feedback.md` document for the core team.* |