github-actions[bot]
56ca58bc18
chore: auto-merge develop → main
...
Triggered by: b2e0f6d feat: add ha_info, ha_shopping_items endpoints and avahi mDNS service file for HACS integration
2026-05-23 13:25:19 +00:00
dadaloop82
b2e0f6d683
feat: add ha_info, ha_shopping_items endpoints and avahi mDNS service file for HACS integration
...
- api/index.php: new haGetInfo() endpoint (unique_id, version, instance, items count)
- api/index.php: new haGetShoppingItems() endpoint (Bring! + internal shopping list)
- api/index.php: haInventorySensor() now accepts ?expiry_days=N query param
- api/cron_smart_shopping.php: auto-register avahi mDNS service if avahi-daemon present
- docker/avahi-evershelf.xml: Zeroconf _evershelf._tcp service declaration
- .env.example: add INSTANCE_NAME variable (used by HA integration for device label)
2026-05-23 13:23:28 +00:00
github-actions[bot]
ddb9bd9f75
chore: auto-merge develop → main
...
Triggered by: 965a672 feat: full Home Assistant integration
2026-05-23 12:30:02 +00:00
dadaloop82
965a672abe
feat: full Home Assistant integration
...
- PHP: _fireHaWebhook(), _sendHaNotify(), haInventorySensor(), haTestConnection()
- PHP: ha_sensor + ha_test routing actions
- PHP: getServerSettings() exposes ha_token (consistent with tts_token)
- PHP: saveSettings() handles all HA_* env keys (url, token, tts_entity, webhook_id, events, notify_service, expiry_days)
- PHP: bringAddItems(), shoppingAdd(), updateInventory() fire shopping_add / stock_update webhooks
- Cron: daily HA expiry/expired webhook + push notify with flag-file guard
- HTML: 🏠 Settings tab button + full HA panel (connection, TTS, webhook, notify, sensor cards)
- JS: serverKeys + loadSettingsUI extended with HA fields
- JS: _applyHaSettingsUI(), _loadHaTab(), _renderHaSensorYaml()
- JS: onHaEnabledChange(), testHaConnection(), applyHaTtsPreset()
- JS: saveHaSettings(), copyHaSensorYaml(), showHaWebhookHelp()
- JS: _buildHaTtsRequest() for HA media_player TTS
- JS: speakCookingStep() now supports HA TTS as first-priority path
- JS: onTtsEngineChange() fixed to show server section for both 'server' and 'custom'
- Translations: settings.ha.* (52 keys) in all 5 languages (it/en/de/fr/es)
- .env.example: HA_ENABLED/URL/TOKEN/TTS_ENTITY/WEBHOOK_ID/EVENTS/NOTIFY_SERVICE/EXPIRY_DAYS
- docs/wiki/Home-Assistant.md: new wiki page (REST sensors, webhooks, TTS, push notify, troubleshooting)
- README: HA integration highlighted as first feature block
2026-05-23 12:28:09 +00:00
github-actions[bot]
7249daa8eb
chore: auto-merge develop → main
...
Triggered by: ec53f75 docs: update README
2026-05-23 12:11:11 +00:00
dadaloop82
ec53f7529c
docs: update README
2026-05-23 12:09:37 +00:00
github-actions[bot]
1074dff87d
chore: auto-merge develop → main
...
Triggered by: 3989d11 fix: step.replace is not a function when Gemini returns steps as objects
2026-05-23 11:57:33 +00:00
dadaloop82
3989d11094
fix: step.replace is not a function when Gemini returns steps as objects
...
- PHP generateRecipeStream: normalize recipe.steps to plain strings after
parsing Gemini JSON (handles [{text:'...'}, ...] objects gracefully)
- JS: add _stepStr(s) helper near cooking mode — safely extracts text from
a step regardless of type (string or object {text/description/step key})
and strips leading 'Passo N:' prefix in one place
- JS: replace all 7 manual step.replace(/^Passo.../) calls with _stepStr()
across renderRecipe, renderCookingStep, startCookingMode, replayCookingTTS,
toggleCookingTTS, navigateCookingStep — no more crash if Gemini schema drifts
2026-05-23 11:55:55 +00:00
github-actions[bot]
b010ced1a6
chore: auto-merge develop → main
...
Triggered by: cc0fa09 fix: recipe errors now show specific cause instead of generic 'connection error'
2026-05-23 11:47:00 +00:00
dadaloop82
cc0fa09219
fix: recipe errors now show specific cause instead of generic 'connection error'
...
- PHP generateRecipeStream: wrap entire body in try/catch(\Throwable) to catch
any PHP fatal/exception mid-stream and send it as a proper SSE error event
- PHP: curl timeout raised 60s→90s; capture curl errno/errmsg on failure
- PHP: HTTP error messages now include a human-readable status label
(e.g. 'Quota API esaurita (429)', 'Nessuna risposta da Gemini (cURL: ...)')
- JS catch block: show err.message alongside error.connection so the actual
JS network error (NetworkError, AbortError, etc.) is visible
- JS no-recipe+no-error path: show recipes.stream_interrupted instead of
generic error.connection
- Translation: added recipes.stream_interrupted in it/en/de
2026-05-23 11:45:26 +00:00
github-actions[bot]
c0a076749e
chore: auto-merge develop → main
...
Triggered by: 6a41b53 feat: shopping list pantry hints, barcode multi-API fallback (OPF/beauty/Gemini), README disclaimer
2026-05-23 09:54:56 +00:00
dadaloop82
6a41b53174
feat: shopping list pantry hints, barcode multi-API fallback (OPF/beauty/Gemini), README disclaimer
...
- Shopping list: each item now shows 'Hai già Xg in dispensa' for same-family inventory stock
- Lazy-loads inventory once per shopping page visit (_getShoppingInventoryCache)
- Matches by first significant token (same logic as related-stock on action page)
- Green hint below item badges, dark-mode aware (.shopping-pantry-hint)
- Barcode lookup: added Open Products Facts + Open Beauty Facts as step 3;
Gemini AI (_barcodeLookupGemini) as final step 4 fallback
- Added stockForName PHP endpoint (stock_for_name action) for future use
- Restored missing function signatures for _offFetchProduct() and saveProduct()
that were accidentally lost when stockForName was added in a previous session
- Translation: added shopping.pantry_hint in it/en/de
2026-05-23 09:53:17 +00:00
github-actions[bot]
1d04236bc0
chore: auto-merge develop → main
...
Triggered by: 561c6e9 ci: fix auto-merge — clear checkout extraheader so WORKFLOW_PAT actually reaches git push
2026-05-23 09:37:26 +00:00
dadaloop82
561c6e9809
ci: fix auto-merge — clear checkout extraheader so WORKFLOW_PAT actually reaches git push
2026-05-23 09:35:53 +00:00
dadaloop82
6857c20893
ci: fix checkout to use github.token, WORKFLOW_PAT only for push
2026-05-23 09:23:48 +00:00
dadaloop82
964de98203
ci: test auto-merge with WORKFLOW_PAT secret
2026-05-23 09:18:03 +00:00
dadaloop82
e28a6e4e39
ci: use WORKFLOW_PAT for auto-merge to allow pushing workflow file changes
2026-05-23 08:37:30 +00:00
dadaloop82
fd9e2471e0
fix: remove invalid 'workflows' permission from ci.yml
2026-05-23 08:30:57 +00:00
dadaloop82
3c8a9693b2
fix: isSuspiciousDefaultQty — use package_unit threshold for pz+g/ml products
2026-05-23 08:28:58 +00:00
dadaloop82
b38bdc45f5
fix: add workflows:write permission to auto-merge job
2026-05-23 08:27:04 +00:00
dadaloop82
83a0df272a
fix: CI auto-merge push auth — set remote URL with GITHUB_TOKEN before push
2026-05-23 08:21:26 +00:00
dadaloop82
6320b575e0
v1.7.25 — partial throw from banner, barcode fallback, related stock, Bring! re-add fix
...
- Fix: Bring! items re-appearing after manual removal (missing _markBringPurchased call in removeBringItem / confirmShoppingItemFound; autoAddCriticalItems now respects blocklist for qty=0 items)
- Fix: barcode false 'not found' — new _offFetchProduct() helper tries UPC-A↔EAN-13 candidates × 2 locales with auto-retry; UPCItemDB fallback also iterates candidates
- Fix: bannerThrowAway() now opens partial-throw modal (location + qty input + throw-all button) instead of immediately discarding everything
- Add: related stock card on action page — shows same-family inventory items when scanning a branded product
2026-05-23 08:17:20 +00:00
github-actions[bot]
8ccd218c5a
chore: auto-merge develop → main
...
Triggered by: 5c1afaa feat: redesign action-page hero card (match use-page style)
2026-05-22 21:25:12 +00:00
dadaloop82
5c1afaaaf5
feat: redesign action-page hero card (match use-page style)
2026-05-22 21:23:18 +00:00
github-actions[bot]
6245b15420
chore: auto-merge develop → main
...
Triggered by: 02f673a fix: include dark_mode in save_settings payload (was never written to .env)
2026-05-22 21:15:51 +00:00
dadaloop82
02f673a164
fix: include dark_mode in save_settings payload (was never written to .env)
2026-05-22 21:14:16 +00:00
github-actions[bot]
61bb1b5552
chore: auto-merge develop → main
...
Triggered by: cbf4bd5 feat: show expiry + qty pills on use-page product hero card; redesign card with accent border
2026-05-22 21:11:53 +00:00
dadaloop82
cbf4bd54da
feat: show expiry + qty pills on use-page product hero card; redesign card with accent border
2026-05-22 21:10:19 +00:00
github-actions[bot]
1cdbdb3b25
chore: auto-merge develop → main
...
Triggered by: 837d62c fix: add missing _ensureAudioUnlocked() definition; use shared AudioContext in _playCookingTimerSound
2026-05-22 13:15:59 +00:00
dadaloop82
837d62c335
fix: add missing _ensureAudioUnlocked() definition; use shared AudioContext in _playCookingTimerSound
2026-05-22 13:14:21 +00:00
github-actions[bot]
fa36ba83bf
chore: auto-merge develop → main
...
Triggered by: 1efeaf9 fix: skip use-all confirm when only one item row and no open packages
2026-05-22 04:51:02 +00:00
dadaloop82
1efeaf9236
fix: skip use-all confirm when only one item row and no open packages
2026-05-22 04:49:27 +00:00
dadaloop82
573bcd1102
Merge branch 'main' of github-evershelf:dadaloop82/EverShelf
2026-05-21 18:45:46 +00:00
dadaloop82
426cc9df7e
release: merge develop → main for v1.7.24
v1.7.24
2026-05-21 18:45:35 +00:00
dadaloop82
6f2d6d9944
release: v1.7.24 — changelog, readme badge, manifest version
2026-05-21 18:45:17 +00:00
github-actions[bot]
d3eb82eee2
chore: auto-merge develop → main
...
Triggered by: 98426bf fix: dark_mode persisted in server .env (not localStorage) — add to saveSettings, getServerSettings, applySyncedSettings
2026-05-21 18:42:49 +00:00
dadaloop82
98426bf861
fix: dark_mode persisted in server .env (not localStorage) — add to saveSettings, getServerSettings, applySyncedSettings
2026-05-21 18:41:12 +00:00
github-actions[bot]
264b1f648e
chore: auto-merge develop → main
...
Triggered by: b89df96 fix: dark mode resets to auto on reload — bootstrap dark_mode from localStorage in getSettings()
2026-05-21 18:35:19 +00:00
dadaloop82
b89df961a6
fix: dark mode resets to auto on reload — bootstrap dark_mode from localStorage in getSettings()
2026-05-21 18:33:33 +00:00
github-actions[bot]
5e34bc90b3
chore: auto-merge develop → main
...
Triggered by: 3b100df fix: cooking timer sound/TTS — shared pre-unlocked AudioContext; always speak on alarm regardless of TTS toggle; kiosk bridge TTS check
2026-05-21 18:20:24 +00:00
dadaloop82
3b100df26c
fix: cooking timer sound/TTS — shared pre-unlocked AudioContext; always speak on alarm regardless of TTS toggle; kiosk bridge TTS check
2026-05-21 18:18:45 +00:00
github-actions[bot]
2ecb3cbac6
chore: auto-merge develop → main
...
Triggered by: c2004fd fix: scale use — auto-switch conf→sub (g/ml) when scale is active; show scale btn for conf+weight products
2026-05-21 06:02:55 +00:00
dadaloop82
c2004fd0f8
fix: scale use — auto-switch conf→sub (g/ml) when scale is active; show scale btn for conf+weight products
2026-05-21 06:01:04 +00:00
github-actions[bot]
fba0947945
chore: auto-merge develop → main
...
Triggered by: 3a1f6cf fix: cooking timer — AudioContext.resume() on mobile; always play beep; show done card 3s before dismiss
2026-05-20 18:32:10 +00:00
dadaloop82
3a1f6cfd1e
fix: cooking timer — AudioContext.resume() on mobile; always play beep; show done card 3s before dismiss
2026-05-20 18:30:25 +00:00
github-actions[bot]
37fb522e8b
chore: auto-merge develop → main
...
Triggered by: 66f5a03 fix: wrap updateInventory DB writes in a transaction to prevent concurrent lock errors (#109 #110 )
2026-05-20 15:40:15 +00:00
dadaloop82
66f5a03503
fix: wrap updateInventory DB writes in a transaction to prevent concurrent lock errors ( #109 #110 )
2026-05-20 15:38:34 +00:00
dadaloop82
a37d97dfcd
fix: kiosk — permanently hide native settings btn; add web ⚙️ in overlay; remove scattered show/hide calls
2026-05-20 15:37:57 +00:00
github-actions[bot]
47197d0d66
chore: auto-merge develop → main
...
Triggered by: 1496216 fix: depleted items urgency based on usesPerMonth only (not recency)
2026-05-20 13:47:41 +00:00
dadaloop82
149621651d
fix: depleted items urgency based on usesPerMonth only (not recency)
2026-05-20 13:46:00 +00:00