# e-SUN Android App Native Kotlin + Jetpack Compose app (API 35) that provides a light-therapy style full-screen white display based on Kelvin presets. ## First Increment Scope - 3 editable temperature presets (default 3000K / 4500K / 6000K) - 3 editable timer presets (default 5 / 10 / 30 min) - Kelvin-to-RGB approximation for screen color - Full-screen Shine mode with: - Keep-screen-on - Temporary in-app brightness override - Controls shown on touch and auto-hidden after 5s - Timer end returns to main screen - Brightness persistence (default 50% on first launch) - Placeholder ad section (`AD HERE`) - Unit test coverage for Kelvin conversion output range ## BuildTool.sh The project intentionally runs builds through `./BuildTool.sh` so local development and CI use the same build path. ### Common commands ```bash ./BuildTool.sh --setup-only ./BuildTool.sh --no-commit --apk-only ./BuildTool.sh --no-commit --with-aab ``` ### Behavior - `--setup-only`: prepares the local Android SDK/tooling and exits. - `--apk-only`: builds the debug APK. - `--with-aab`: also builds the release AAB. - `--no-commit`: skips the post-build git commit step. - Local builds increment `versionCode` and `versionName`. - CI can provide `CI_VERSION_CODE` to force the build version code and `CI_ARTIFACT_TIMESTAMP` to control the release AAB filename. - Artifacts are copied into `dist/`. - Gitea Actions uses this same script instead of duplicating build logic in YAML. ## Upload Key (Release Signing) For this first increment, release uses default debug signing unless custom signing is added. Recommended future setup: 1. Generate upload key: ```bash keytool -genkeypair -v -keystore upload-keystore.jks -alias upload -keyalg RSA -keysize 2048 -validity 10000 ``` 2. Store credentials in local, untracked file (e.g. `keystore.properties`). 3. Reference it from `app/build.gradle.kts` signingConfigs. 4. Extend `BuildTool.sh` to validate presence before release builds. ## Logging App logs key interactions and state updates through tags: - `ESunMainViewModel` - `ESunShine` This keeps debugging actionable without excessive noise.