Guida utente:
- Pulsante info nell'AppBar principale
- InfoBottomSheet: icona app, versione, autore, licenza, link alla guida
- GuidePage: tre tab (Pasti / Converti / Spesa) con card e step numerati,
portata dalla DocsPanel Vue originale
AppBar globale in app.dart con titolo dinamico per tab corrente.
Icona launcher:
- flutter_launcher_icons eseguito in build.sh prima di flutter build apk
(sia debug che release) per applicare assets/icon-only.png all'APK.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
docker/build/: build headless APK Android
- Dockerfile: Ubuntu 22.04 + Java 17 + Flutter stable + Android SDK
- build.sh: genera android/ automaticamente se mancante, poi
flutter build apk; --release aggiunge zipalign + apksigner
docker/dev/: ambiente di sviluppo web con hot reload
- Dockerfile: Ubuntu 22.04 + Flutter stable (solo web, senza Android SDK)
- docker-compose.yml: espone porta 5173, monta il progetto come volume
- entrypoint.sh: inizializza web/ se mancante, flutter pub get,
flutter run -d web-server su 0.0.0.0:5173
docker/README.md: documentazione aggiornata per entrambi i container;
rimossi Dockerfile e build.sh Vue/Capacitor non più usati.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Dockerfile: aggiunge android:screenOrientation="portrait" all'activity
in AndroidManifest.xml per bloccare il portrait nativamente sull'APK
- App.vue: fixOrientation() rileva il landscape tramite dimensioni viewport
e applica un counter-rotate CSS in modo che l'app rimanga visivamente
in portrait anche da browser mobile (dev server)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Con --head la DIST_DIR puntava alla directory temporanea che veniva cancellata
dal trap EXIT prima che l'utente potesse recuperare l'APK. L'APK viene ora
copiato esplicitamente in PROJECT_ROOT/dist/ dopo il docker run.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Rimuove mipmap-anydpi-v26 per usare i PNG custom al posto delle
adaptive icons di default; semplifica il loop con bash parameter
expansion e cp invece di doppio convert
- Patcha android/app/build.gradle con versionName/versionCode letti
da package.json prima della compilazione Gradle
@capacitor/assets usa sharp (nativo Node.js) che falliva silenziosamente
nel container Docker. ImageMagick è più affidabile e senza dipendenze native.
Genera ic_launcher.png e ic_launcher_round.png per tutte le densità mipmap.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Aggiunge COPY assets/ e npx @capacitor/assets generate --android
per popolare i mipmap Android prima della build Gradle.
Senza questo step l'app mostrava l'icona di default di Capacitor.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Kotlin 1.8+ incorpora jdk7/jdk8 nel main stdlib; Capacitor generava
un conflitto tra kotlin-stdlib:1.8.22 e kotlin-stdlib-jdk8:1.6.21.
Aggiunge una resolutionStrategy Gradle per forzare tutte le varianti
stdlib alla versione 1.8.22 dopo `npx cap add android`
node:20-slim (Debian Bookworm) non ha openjdk-21 nei repo.
Usa eclipse-temurin:21-jdk-jammy (Adoptium/Ubuntu) come base
e installa Node.js 20 via NodeSource.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- docker/Dockerfile: ambiente Node 20 + OpenJDK 17 + Android SDK 34
dist/ ricevuto come volume montato dall'host (non buildata nel container)
- docker/build.sh: esegue npm run build locale poi lancia il container
flag --head per buildare da HEAD ignorando modifiche non committate
- docker/README.md: requisiti host (x86_64 obbligatorio), utilizzo,
pipeline e note su prima build (~10-15 min)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>