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>
- DocsPanel: pannello documentazione slide-from-right con nav a pill,
IntersectionObserver per sezione attiva, card con step numerati e callout tip
- InfoPanel: bottone "Guida" emette open-docs invece di aprire link esterno
- App: integra DocsPanel con v-model showDocs
- Converter: fix capitalize food names (capFirst invece di text-transform),
simmetria visiva input/output (stesso underline e font-size 1.6rem),
rimosso CSS morto (doppio align-items, doppio background, visibility hack)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sostituisce text-transform:capitalize (che maiuscolava ogni parola)
con capFirst() — solo la prima lettera del metodo è maiuscola.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Aggiunge forno e friggitrice ad aria a ogni voce verdura dove
applicabile; aggiunge padella alle verdure che ne erano prive.
Documenta ogni valore derivato con metodologia e k-factor.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Bottone "Genera lista della spesa" in fondo alla pagina Piano Pasti:
- raccoglie tutti gli item da tutti i giorni e pasti
- deduplica (case-insensitive) e salta item già presenti in lista
- aggiunge come non spuntati alla lista esistente
- naviga automaticamente alla tab Lista della spesa
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Permette di connettersi da altri dispositivi sulla stessa rete
tramite http://<ip>:5173 durante lo sviluppo.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Su dispositivi con status bar alta o notch il bottone info finiva
sotto l'area di sistema e non era toccabile. Aggiunto env(safe-area-inset-top)
per posizionarlo sempre nell'area visibile.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- docs/conversioni.md: sostituisce coefficienti placeholder con dati da fonti
ufficiali (SINU, Istituto Muzzone, AEMMEDI, Nutrizionistadoc); aggiunge
sezione friggitrice ad aria con regola derivata dal forno; nuovi alimenti:
orzo, riso (4 varietà), spigola, sogliola, vitello, uova, verdure miste
- src/data/conversions.json: allineato al documento, include metodi friggitrice
ad aria per pollo, tacchino, pesce, verdure e tuberi
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Aggiunge pipeline Docker per build APK Android:
- Dockerfile con Java 21, Android SDK 34, ImageMagick per icone
- build.sh con flag --head per build da ultimo commit
- Icone generate da assets/icon-only.png via ImageMagick
- Fix kotlin-stdlib conflict e versione da package.json
- 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>
- assets/icon-only.png: icona 1024×1024 da usare con
npx @capacitor/assets generate per generare le icone Android/iOS
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Rimuove versione duplicata (era nell'header e nella lista)
- Rimuove descrizione ridondante e bottone Chiudi full-width
- Aggiunge icona app (quadrato verde con iniziale B)
- X per chiudere in alto a destra, tap overlay per dismissione
- Righe info in card con bordo, pattern iOS/Android settings
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- InfoPanel.vue: bottom sheet con nome, versione (da package.json),
autore (Davide Grilli), licenza EUPL v1.2 e link documentazione
- App.vue: bottone info fisso in alto a destra, visibile da tutte
le pagine, con animazione slide-up sul pannello
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
MealPlanner:
- Titolo "Piano Pasti" (più breve e da app)
- Sottotitolo "Oggi, mercoledì 25 marzo" con data completa formattata
Converter:
- Layout calcolatrice: input sinistra | swap | risultato destra
- Card unificata con header alimento e footer fattore di resa
- Icona ricerca nell'input, stato iniziale con hint
- Titolo "Convertitore", sottotitolo descrittivo
- Tasto swap per invertire direzione invece del toggle
MealCard:
- Fix emoji pranzo 🌤️ → 🍽️ (rendering universale)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Slash command che attiva il profilo senior frontend/UX designer.
Include checklist di revisione (touch, accessibilità, CSS, Vue 3)
e pattern di riferimento con le variabili CSS e componenti del progetto.
Formato SKILL.md conforme alla documentazione ufficiale Claude Code.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Licenza europea copyleft: chi distribuisce o modifica il software
deve rilasciare il sorgente sotto EUPL o licenza compatibile.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- App.vue: root con navigazione tra le tre pagine
- BottomNav.vue: barra navigazione inferiore (Pasti, Converti, Spesa)
- MealPlanner.vue + MealCard.vue: pianificatore settimanale con lista voci per pasto
- Converter.vue: convertitore crudo/cotto con ricerca testuale
- ShoppingList.vue + CheckboxItem.vue: lista spesa con checkbox
- utils/storage.js: wrapper LocalStorage (save/load)
- utils/conversion.js: rawToCooked e cookedToRaw
- data/conversions.json: 14 alimenti con coefficienti di resa
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Aggiunge struttura base del progetto: package.json, vite.config.js,
index.html con viewport mobile, main.js, CSS globale mobile-first
e .gitignore.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Documento di specifiche per BitePlan: meal planner settimanale,
convertitore peso crudo/cotto e lista della spesa.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>