# Codex Handoff ## Project - Native Android app - Package: `id.abelbirdnest.mobile` - App name: `Abelbirdnest Stock` - Stack: Kotlin + Jetpack Compose - Blueprint source of truth: [mobile-api-blueprint.md](./mobile-api-blueprint.md) ## API / Environment - Production base URL is used from Postman env. - Active API host used during testing: `https://abelbirdnest.id/api/v1` ## Test Accounts - `OWNER` -> `abel@zappcare.id` / `abel1234` - `PURCHASING` -> `tini@zappcare.id` / `tini1234` - `SALES` -> `budi@zappcare.id` / `budi1234` - `QC` -> `edi@zappcare.id` / `edi12345` - `WAREHOUSE` -> `jhon@zappcare.id` / `jhon1234` ## Implemented Modules - `dashboard` - `lots` - `washing` - `stock_adjustments` - `purchases` - `purchase_analyses` - `purchase_realizations` - `fund_requests` - `sales_regular` - `sales_jit` - `consignments` - `lot_transformations` ## Hidden / Removed From Mobile Navigation - `receipts` - intentionally hidden because newer server/mobile flow no longer uses it for active role navigation ## Important Behavior - App is server-driven from `mobile/bootstrap`, but module ordering and UI prioritization were aligned to the blueprint where needed. - `PURCHASING` login issue was fixed by not forcing `/mobile/lots` fetch for roles that do not have `lots`. - Quick actions now only show modules that are not already present in the bottom bar. - For `OWNER`, quick actions were reduced to match actual mobile need. Extra actions like `dana`, `sales`, `jit`, `titip jual`, and `washing` were removed from quick actions. ## Recent UI Changes ### Login - Brand text changed to `Abelbirdnest` - Centered vertically - `Lupa Kata Sandi?` restored - Removed extra elements below the main login CTA except forgot password ### Lots - Lot detail top gap was reduced by: - removing extra spacer - disabling nested scaffold content insets in detail - Lot detail footer actions were removed entirely: - `Print Ulang` - `Pindah Lokasi` - `Ubah Status` - reason: no real mobile action flow yet, avoid dead buttons ### Scan Lot - Scanner layout was reworked: - `Tutup` moved outside the camera panel - scanner panel wrapped as its own card/section - manual input visually separated from camera section - scanner corner markers fixed so their directions are correct ### Washing - `Lot` picker uses search / scan workflow - `Tempat Cuci` changed to simple dropdown - card action button `Selesaikan` forced to one line by reducing font and spacing ## Known Gaps / Things Not Yet Wired - Some modules are present as minimum mobile flows only, aligned to blueprint, not full web parity. - `lot_transformations` still needs full create flow audit if expanded beyond current scope. - Some modules are read-only where blueprint only required read paths. - `pindah lokasi` and `ubah status` for lot detail are not implemented, and UI was intentionally removed. ## Build / Deploy - Android SDK path used locally: `/opt/android-sdk` - Typical build command: - `./gradlew assembleDebug` - Typical install command: - `adb install -r app/build/outputs/apk/debug/app-debug.apk` - Last confirmed installed package timestamp during this session: - `lastUpdateTime=2026-05-21 23:29:49` ## Current Device - Frequently used connected device: - `CPH2781` (Oppo) ## Notes For Next Codex - Use `mobile-api-blueprint.md` as the primary spec. - Use web project only as a secondary reference for payload shape or flow hints, not as the source of truth. - Be careful with nested `Scaffold` padding/insets; several UI gaps came from double insets. - Many server responses differ slightly between endpoints; avoid assuming detail response shape matches scan/list response shape.