feat: v1.7.9 — category badges, category search, AI guards
- Category badge on every inventory item (icon + label); 'altro' items refined asynchronously via new guess_category Gemini endpoint (data/category_ai_cache.json) — no AI call when key not configured - Category search: inventory search now matches by macro-category key and translated label (e.g. 'biscotti' finds all cookie items) - Brand fast-path in guessCategoryFromName (Oreo, Barilla, Lavazza…) - Fix: duplicate banner alerts — _bannerLoading guard + _queuedItemIds Set - Fix: mapToLocalCategory with en:dairies (dairi stem added) - Fix: mapToLocalCategory no longer blocks on 'altro' — falls back to guessCategoryFromName(productName) before returning 'altro' - Fix: 'Tonno all'olio' was resolving to condimenti — moved tonno\b check before olio\b in conserve regex block - AI guards: _refineCategoryBadgesAsync and fetchAllPrices now check _geminiAvailable (JS); getShoppingPrice returns no_api_key (PHP) when GEMINI_API_KEY is not set — all AI functions are now explicit
This commit is contained in:
@@ -775,7 +775,10 @@
|
||||
"appliance_exists": "Appliance already exists",
|
||||
"already_exists": "Already exists",
|
||||
"network_retry": "Connection error. Try again.",
|
||||
"select_items": "Select at least one product"
|
||||
"select_items": "Select at least one product",
|
||||
"server_offline": "Server connection lost",
|
||||
"server_restored": "Server connection restored",
|
||||
"server_retry": "Retry"
|
||||
},
|
||||
"confirm": {
|
||||
"remove_item": "Do you really want to remove this product from inventory?",
|
||||
|
||||
Reference in New Issue
Block a user