flutter_gemma (MediaPipe LLM inference) requires minSdk 24 and R8 keep
rules for its MediaPipe/protobuf/localagents classes. compileSdk lowered
37->36 (37 ships only as a preview 'android-37.0' platform that Gradle
can't resolve by hash).
LocalAiService interface + Gemma impl via flutter_gemma (MediaPipe LLM
Inference, Android-only, feature-gated elsewhere). Download managed by the
plugin (progress, retries, foreground service); model is HF license-gated so
the download dialog collects an HF token. Degrade path: quota_degraded card
-> fetch /bundle -> structure on-device -> POST /structure -> card upgrades
in place, with a 'Generating on your phone' share state. Profile gains an
Offline AI section (download / enable / delete, honest copy). All failures
silent — the paragraph card is never made worse.
- Switch google-generativeai -> google-genai so Gemini preprocessing
works (import was broken, raw noisy bundles were hitting Cerebras)
- Add structuring prompt rule to discard OCR garbage
- Add Dockerfile (HF Spaces Docker SDK)
- Various backend API and Flutter app updates