Commit Graph

365 Commits

Author SHA1 Message Date
dadaloop82 458206b39f Rimuovi sezione 'Sposta il resto' dal form USA
Lo spostamento si fa già cambiando la posizione nell'edit inventario.
Rimossa UI duplicata e relative funzioni JS.
- Versione: 20260316a
2026-03-16 06:38:04 +00:00
dadaloop82 68dd7810f0 Fix ricalcolo scadenza per freezer e sotto vuoto
- selectPurchaseType: non usa più date hardcoded, ricalcola sempre in base
  alla posizione e stato sotto vuoto corrente
- Edit inventario: cambiare posizione o toggle sotto vuoto ricalcola la scadenza
- Spostamento prodotto: ricalcola scadenza per la nuova posizione
- Fix DB: fusi di pollo freezer 120gg, Bel Paese vacuum 21gg, Speck vacuum 75gg
- Versione: 20260315j
2026-03-15 19:15:22 +00:00
dadaloop82 dc9785c160 Estendi 'Prodotti Aperti' a tutti i tipi (g, ml, l, pz, non solo conf)
- Query SQL ora rileva prodotti aperti per tutte le unità dove la quantità
  non è multiplo della dimensione confezione (soglia 2% per evitare errori arrot.)
- Frontend: rendering differente per conf (X conf + rimanente) e altri (Xg / Yg)
- Versione: 20260315i
2026-03-15 19:05:03 +00:00
dadaloop82 e2942d73f2 USA: possibilità di spostare il prodotto in altra posizione dopo l'uso 2026-03-15 18:44:53 +00:00
dadaloop82 f9910c99b5 Fix USA: mostra solo posizioni dove il prodotto esiste (previene 'not found') 2026-03-15 18:37:10 +00:00
dadaloop82 8f1a2b785f Scadenza: freezer estende durata, sotto vuoto formaggi potenziato, ricalcolo al cambio posizione 2026-03-15 18:15:09 +00:00
dadaloop82 4239e0b204 🫙 Sotto vuoto: flag per estendere scadenza prodotti conservati sotto vuoto 2026-03-15 18:09:38 +00:00
dadaloop82 3f0f27e938 Multipack→conf pre-fill (2x200g→2 conf da 200g) + modifica inventario da action page 2026-03-15 17:58:11 +00:00
dadaloop82 b90fe409d6 Sempre modificabile nome/marca prodotto: bottone ✏️ sulla preview 2026-03-15 17:51:22 +00:00
dadaloop82 067a4acb5c Add: mostra totale aggiornato nel toast + auto-rimuovi da Bring dopo acquisto 2026-03-15 17:47:29 +00:00
dadaloop82 17fdc993a5 Bring: non inviare marca/quantità, usa solo nomi generici catalogo. Puliti 27 articoli. 2026-03-15 17:19:36 +00:00
dadaloop82 bd1e5d950f Prodotti aperti: mostra solo conf con capacità nota (latte, panna ecc.) 2026-03-13 15:15:46 +00:00
dadaloop82 f64423296b Prodotti aperti: includi anche non-conf con quantità parziale (19 prodotti) 2026-03-13 15:10:17 +00:00
dadaloop82 948e851b71 Dashboard: sezione Prodotti Aperti (conf parzialmente usate) 2026-03-13 15:02:27 +00:00
dadaloop82 ac76d02cb6 Fix validazione input: allinea min con step per sub-unità (50g ora funziona) 2026-03-13 14:56:35 +00:00
dadaloop82 6c9fade761 Fix display confezioni parziali: mostra '1 conf da 1L + 800ml' invece di arrotondare a 2 2026-03-13 14:50:08 +00:00
dadaloop82 38c8914fea Fix step sub-unità: L ora step 0.1, ml step 50, g step 10 2026-03-13 14:46:12 +00:00
dadaloop82 3733adf2e9 Confezioni: permetti uso parziale in sub-unità (ml, g) con switch unità 2026-03-13 14:42:39 +00:00
dadaloop82 9062c498de Svuota campo ricerca inventario/prodotti al cambio pagina 2026-03-13 14:34:34 +00:00
dadaloop82 e300f56c52 Modifica prodotto: rimossa immagine rotta dal form 2026-03-13 14:24:42 +00:00
dadaloop82 c76ffd731e Aggiungi bottone MODIFICA nella pagina azione prodotto esistente 2026-03-13 14:23:15 +00:00
dadaloop82 d92b72cfae Fix: svuota ricerca, rimuovi autocomplete prodotto nuovo, camera più grande, modalità spesa, fix duplicati chat 2026-03-13 14:20:00 +00:00
dadaloop82 cbb7d53e78 Screensaver: orologio più grande, frasi dinamiche fade-in/out, font fact ingrandito 2026-03-13 07:16:55 +00:00
dadaloop82 0315f0b1c7 Centralize ALL data to shared DB: shopping prices, review confirmations, spesa credentials 2026-03-12 18:08:08 +00:00
dadaloop82 f2b090f107 Move recipes, chat, settings to shared DB — sync across devices, 1 recipe per meal per day 2026-03-12 18:06:50 +00:00
dadaloop82 d73a471500 Global remote logging for all operations, stop tracking runtime files 2026-03-12 17:35:53 +00:00
dadaloop82 c5f22fdf42 feat: BarcodeDetector nativo + camera selector + recipe dedup + remote debug logging
- Scanner: usa BarcodeDetector API nativa (Chrome Android) come primario, Quagga come fallback
- Settings: aggiunta tab Fotocamera per scegliere posteriore/anteriore/specifica
- Scanner feedback: barra verde (scansione attiva), gialla (barcode rilevato)
- Ricette: invio titoli ricette del giorno per evitare duplicati nello stesso giorno
- Debug: sistema di logging remoto (client_debug.log) per diagnostica da dispositivi chioscati
- Fix: permessi .env per scrittura da Apache
2026-03-12 17:32:54 +00:00
dadaloop82 3a7fce49a0 Shopping list improvements: dedup Bring items, sync removals, server-side DupliClick token check, redesigned price layout, recipe archive with CSS, fridge/opened priority in recipes, better search with spec in query 2026-03-12 12:06:02 +00:00
dadaloop82 5d4a21db63 ui: riorganizza quantità in lista inventario
- Numero grande e visibile (es. '10')
- Sotto: unità + dettaglio confezione (es. 'conf da 36g')
- Sotto: proporzione rimasta in piccolo (es. '¼')
- Stesso layout per dashboard compact items
- Frazione esclusa per unit=conf (dove default_quantity è il peso)
- Cache-busting v=20260311c
2026-03-11 15:58:52 +00:00
dadaloop82 e6a9fb06a7 fix: cache-busting + validazione conf + reset form prodotto
- Aggiunto version param a CSS/JS per forzare reload browser
- startManualEntry() resetta pf-conf-size-row correttamente
- Validazione: se unit=conf ma dimensione non specificata, errore
- onAddUnitChange: scrollIntoView quando conf-size-row appare
- Reset campi conf quando si cambia unità nel form aggiungi
2026-03-11 15:54:20 +00:00
dadaloop82 bf2e137502 feat: confezioni (conf) chiede dimensione singola confezione
- Nuovo campo package_unit in DB (migrazione automatica)
- Form aggiungi/modifica: quando si seleziona 'conf', appare campo per
  specificare il contenuto della singola confezione (es. 300g, 2L)
- Visualizzazione: '3 conf (da 300g)' in inventario, dettaglio, butta
- formatQuantity aggiornato con supporto package_unit
- API: salva/restituisce package_unit in tutti gli endpoint
- Ricette e chat: contesto arricchito con info confezione
- CSS: stili per il nuovo campo conf-size
2026-03-11 15:43:44 +00:00
dadaloop82 af3b5941a0 Add Gemini Chat: conversational AI assistant for kitchen help
- Gemini star icon button next to camera in header
- Full chat page with message bubbles, typing indicator
- Conversation history persisted in localStorage (last 50 messages)
- System context includes: full inventory with expiry dates, appliances, dietary restrictions
- Multi-turn conversation with Gemini 2.0 Flash
- Pre-built suggestion chips: snack, juice/smoothie, light meal, use expiring items
- Clear chat button for fresh conversations
- Indigo/purple themed UI matching Gemini branding
- PHP gemini_chat API endpoint with inventory context injection
2026-03-11 15:26:19 +00:00
dadaloop82 ff1f27fe8d Add 'Da revisionare' dashboard section for suspicious quantities
- Flags inventory items with abnormally small or large quantities
- Per-unit thresholds (pz/conf, g, kg, ml, l)
- Confirm button (✓) to mark as correct (stored in localStorage)
- Edit button (✏️) opens existing edit modal
- Smooth dismiss animation on confirm
- Amber-themed styling to distinguish from expiry alerts
2026-03-11 13:48:24 +00:00
dadaloop82 d5071361b5 Fix indicatore confezione: solo ¼ ½ ¾ quando utile, no doppioni
- Frazione mostrata solo se c'è un avanzo reale e default_quantity > 1
- Rimossi duplicati (5 pz + 5 conf), pieno, ⅛, titoli ridondanti
- pz/conf arrotondati a intero (no 8.8 pz)
- Stile più discreto e piccolo
2026-03-11 13:38:28 +00:00
dadaloop82 df56d8dc76 Fix conversione unità ricette + indicatore confezione
- Fix qty_number nelle ricette: validazione e conversione automatica
  delle unità di misura (g↔kg, ml↔L, g→pz con default_quantity)
- Sanity check: cap qty_number al disponibile, correzione valori
  assurdamente piccoli dovuti a errori di Gemini
- Aggiunto indicatore confezione (¼, ½, ¾, pieno) vicino alla
  quantità nell'inventario e nella barra stato dopo scansione
- Aggiunto default_quantity nella query inventory_list
- Nuova funzione formatPackageFraction() per calcolo frazioni
2026-03-11 13:36:21 +00:00
dadaloop82 469aadb8fc Aggiunta pagina impostazioni, preview prodotto migliorata, gestione inventario smart e ricette avanzate
- Icona ingranaggio nella navbar, salvataggio su localStorage e .env
- Preview prodotto più grande dopo scansione barcode
- Controllo inventario dopo scan: mostra quantità disponibile in grande
- 3 pulsanti contestuali (AGGIUNGI/USA/BUTTA) se prodotto già presente
- Funzionalità BUTTA con modale per quantità parziale o totale
- Quantità prominenti nella lista inventario
- Quantità visibili negli alert scadenza/scaduti in dashboard
- Unità di misura modificabile nella modale di modifica inventario
- Opzioni ricetta: Pasto Veloce, Poca Fame, Priorità Scadenze, ecc.
- Gestione smart quantità ricette (evita rimasugli inutilizzabili)
- Elettrodomestici configurabili per suggerimenti ricette
- Restrizioni alimentari nel prompt ricette
- Endpoint API: save_settings, get_settings
2026-03-11 13:08:02 +00:00
dadaloop82 78e0fddf04 fix: 4 miglioramenti - scan→usa, icona camera, log colori, log Bring!
1. Bug scan→usa: ora auto-seleziona la posizione corretta (frigo/dispensa/freezer)
   dove il prodotto è effettivamente presente, non più sempre 'dispensa'
2. Icona telecamera header: più grande (1.8rem/52px) e più centrata nel cerchio
3. Log: icone/colori differenziati -  verde aggiunte,  rosso uscite,
   🛒 blu Bring! - sfondo tintato per ogni tipo
4. Operazioni Bring! loggate come transazioni tipo 'bring' nel diario
2026-03-10 18:25:32 +00:00
dadaloop82 2abcec6fe5 feat: pagina Log con diario operazioni
- Nuova sezione 'Log' nella bottom nav con icona 📒
- Mostra tutte le transazioni (entrate/uscite) raggruppate per data
- Ogni voce: icona 📥/📤, nome prodotto, marca, quantità, posizione, orario
- Bordo verde per aggiunte, rosso per uscite
- Paginazione con 'Carica altri...' (50 per pagina)
- Backend: aggiunto supporto offset a listTransactions
2026-03-10 18:20:31 +00:00
dadaloop82 77ed2d6964 feat: auto-aggiunta a Bring! quando un prodotto finisce
- useFromInventory controlla se il prodotto è esaurito ovunque (qty=0 in tutte le location)
- Se finito, lo aggiunge automaticamente alla lista Bring! con nome e marca
- Toast notifica '🛒 Prodotto finito → aggiunto a Bring!' in tutte le UI (ricetta, uso diretto, usa tutto)
- Prosciutto crudo light e Philadelphia Light aggiunti manualmente a Bring!
2026-03-10 18:18:40 +00:00
dadaloop82 b9f3eb3301 fix: ricorda ingredienti già usati nella ricetta cachata
- Quando clicchi 'Usa', salva used=true nell'ingrediente nel localStorage
- Al reload, ingredienti già usati mostrano '✔️ Scalato' disabilitato
- Evita di scalare lo stesso ingrediente due volte per sbaglio
2026-03-10 17:53:17 +00:00
dadaloop82 8650b377a4 feat: mostra marca, scadenza e posizione negli ingredienti ricetta
- Backend: aggiunge brand e expiry_date all'arricchimento ingredienti
- Frontend: sotto ogni ingrediente dalla dispensa mostra:
  - Marca in corsivo (se presente)
  - Icona posizione (🧊 Frigo/Freezer, 🗄️ Dispensa)
  - Scadenza con colore urgenza ( scaduto, 🔴 <3gg, 🟡 <7gg, 📅 data)
- Nuovo stile CSS per riga dettaglio ingrediente
2026-03-10 17:39:49 +00:00
dadaloop82 bae9af0fe5 feat: ricetta persistente + quantità corretta per scalare ingredienti
- Ricetta cachata in localStorage: riaprendo mostra la stessa ricetta
- Si rigenera solo se cambia tipo pasto (colazione/pranzo/cena) o bottone 'Generane un'altra'
- Prompt Gemini aggiornato: richiede qty_number nella stessa unità di misura dell'inventario
- Bottone 'Usa' ora scala la quantità effettiva della ricetta (non più sempre 1)
- Estratta renderRecipe() per riutilizzo con cache
- Aggiunto bottone '🔄 Generane un'altra' nel risultato ricetta
2026-03-10 17:36:34 +00:00
dadaloop82 fa4dc6ae88 feat: bottone 'Usa' per ogni ingrediente ricetta - scala dalla dispensa
- Backend: arricchisce risposta ricetta con product_id, location per ingredienti from_pantry
- Matching fuzzy nome ingrediente AI → prodotto inventario (exact/contains/word overlap)
- Frontend: bottone '📦 Usa' per ogni ingrediente catalogato in dispensa
- Click → chiama inventory_use API → scala 1 unità → feedback visivo (barrato + verde)
- Ingredienti non in dispensa (🛒) mostrati senza bottone
2026-03-10 17:29:49 +00:00
dadaloop82 5258c11f51 Bring! suggerimenti: priorità con emoji + quantità precise
- Specification inviata a Bring! include emoji priorità (🔴/🟡/🟢) + dettagli
- AI prompt aggiornato: specification deve sempre indicare quantità consigliata
- In Bring! si vede es: '🔴 500g, bio' per urgenza alta
2026-03-10 16:47:59 +00:00
dadaloop82 af8eb22736 Dashboard: rimuovi lista prodotti, rinomina Inventario→Dispensa
- Rimossa lista completa prodotti per location dalla dashboard (solo stat cards + scadenze)
- Rinominato 'Inventario' in 'Dispensa' nel nav e nell'header pagina
- Dashboard più leggera: non carica più inventory_list
2026-03-10 16:42:43 +00:00
dadaloop82 19992e6199 Auto-refresh UI after every data mutation
- Added refreshCurrentPage() to reload active page data
- deleteInventoryItem/submitEditInventory now refresh current page (works from dashboard or inventory)
- removeBringItem/addSelectedSuggestions update dashboard shopping count
- Track current page ID for context-aware refresh
2026-03-10 16:15:01 +00:00
dadaloop82 64696dfaa4 Fix: shopping count uses 'purchase' not 'items' from Bring API 2026-03-10 16:12:24 +00:00
dadaloop82 9fb2c7ab03 Freezer-aware expired safety + shopping count in dashboard
- getExpiredSafety: items in freezer get bonus days (carne/pesce +3m, verdura/frutta +6m, latticini/pane +2m, altro +4m)
- Expired items show location icon (❄️/🧊) for context
- Dashboard: replaced 'Totale' stat card with 'Spesa' showing Bring! list count
- Added loadShoppingCount() to fetch count from Bring! API
2026-03-10 16:10:30 +00:00
dadaloop82 6e673963c9 Bring! catalogo IT↔DE: nomi riconosciuti con icone e categorie 2026-03-10 13:46:40 +00:00
dadaloop82 514d5f3143 Lista della Spesa con integrazione Bring! e suggerimenti AI 2026-03-10 13:32:57 +00:00