The --fatal-infos flag was too strict for the existing codebase, causing lint gates to fail on info-level hints. Switch to --fatal-warnings which blocks actual warnings while allowing benign info-level suggestions through.
- Add .gitea/workflows/ci.yml: lint -> test -> build-android -> build-ios pipeline - Flutter 3.41.x aligned with devcontainer (was 3.27.x) - Java 17 (temurin) with Gradle build cache - flutter precache --android + SDK license acceptance (CI crash fixes) - Conditional release signing via ANDROID_KEYSTORE_* secrets - Pre-build gates (analyze + test) skip expensive build on failure - Conditional whitelabel build script (only when theme.json exists) - APK + AAB artifact upload (90-day retention) - Add .gitea/workflows/release.yml: tag-triggered release pipeline - Lint -> test -> build-android -> build-ios -> publish-release - Gitea Release creation with APK attachment - Fixed Gitea API auth (was leaking placeholder '***' token) - Apple signing support via APPLE_CERTIFICATE_* secrets - Update android/app/build.gradle.kts: conditional release signing - signingConfigs.release block loads from key.properties when present - Falls back to debug signing when key.properties absent - Backward compatible with local dev (no secrets required)