48543ee8c4eb47fc73ceafa4ccdb084d56cb9e6b
- Restructure estimateOpenedExpiryDays (PHP+JS): check 'eternal' items FIRST
before any location check, so they never get 5/30d regardless of shelf:
- Salt/sugar/honey/vinegar/bicarbonato -> 9999d (never expires)
- Spirits -> 730d, aroma/extracts/tea -> 730d, olio/coffee -> 365d
- Pasta/rice/dry legumes (non-frigo) -> 365d; Polenta/flour -> 180d
- Maionese/ketchup/senape -> 90d, soy sauce -> 90d anywhere
- Dispensa fallback: 60d (was 30d); pantry salsa di pomodoro -> 5d
- Fruit/veg in fridge: specific rules (banana 10d, citrus 14d, etc.)
- burro 30d, panna 4d, mortadella/wurstel 5d (improved from old values)
- Fix dashboard (getStats): remove min() with stored expiry_date (was from old
wrong estimation); use opened_at + new estimate directly
- Filter opened list: skip items with days_to_expiry > 365 (non-perishables)
- Fix useFromInventory (both paths): min(opened_estimate, sealed_expiry)
so original sealed expiry is respected if it expires sooner
- DB migration: re-compute expiry_date for all 22 opened inventory rows
(maionese: +90d, salt/sugar/aceto: +9999d, muesli/biscotti: +60d, etc.)
- Clear opened_at for 'inchusa' birra (user confirmed: not actually opened)
- Fix '4 conf + 0ml' display: only show remainder if remainderAmt >= 1
- Add '✅ Stabile' expiry badge for days > 365 (JS)
- Add dispensa-ca.crt to /data/ for browser import (HTTPS trust)
Description
EverShelf: Your pantry's best friend. A self-hosted, open source smart pantry manager with AI expiry tracking, barcode scanning, smart shopping lists, and Android Kiosk support.
android-kioskdockerfood-wastehome-automationinventory-managementinventory-trackingiotopen-sourcepantry-managerself-hostedsmart-kitchensustainability
MIT
87 MiB
Languages
JavaScript
42.5%
PHP
33.8%
CSS
8.3%
Kotlin
8%
HTML
6.5%
Other
0.7%