dccda8ebc9396b0859504f8a5252140b1b836220
Root cause: autoAddCriticalItems used stale in-memory cache (old critical items) and re-added items to Bring right after manual removal, because on_bring was now false but urgency was still 'critical' in the old cache. PHP smartShopping(): - Rename stockByFirstToken → stockByAnyToken (indexes ALL significant tokens) - 'Passata di pomodoro' depleted + 'Polpa di pomodoro' in stock → share token 'pomodoro' → passata no longer flagged as critical (COVERS: passata/polpa/pelato and any future tomato product variant) - Same logic: 'aglio'/'aglio rosso', 'latte'/'latte di montagna', etc. JS loadSmartShopping(): - When critical item set changes (items added OR removed), immediately reset _autoAddedCriticalTs and _bringCleanupTs so next shopping load uses fresh data instead of debounced old data JS cleanupObsoleteBringItems(): - Use any-token matching (like PHP) for both stockByAnyToken and urgentSmartByToken → 'Passata di pomodoro' in Bring, 'polpa' in stock → share 'pomodoro' → removed
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%