docs(wiki): full English pass + update for v1.7.13 and built-in scale gateway

- Features.md: translate all Italian UI strings to English (chat examples,
  Avvia cottura → Start Cooking, Spiega → Explain, La quantità è giusta → correct)
- Android-Kiosk.md: translate Italian button labels (Concedi permessi →
  Grant permissions, Rileva automaticamente → Auto-discover); fix
  REQUEST_INSTALL_PACKAGES description (OTA kiosk self-updates, not scale APK);
  fix REORDER_TASKS description; add 'Header Overlay Buttons' section documenting
  the three web overlay buttons (✕ ↻ ⚙️) and the permanent native button hiding
- Scale-Gateway.md: translate Italian button labels (Cerca Bilance Bluetooth →
  Find Bluetooth Scales, Leggi bilancia → Read Scale, Disconnetti/Riconnetti →
  Disconnect/Reconnect)
- FAQ.md: translate all Italian strings (AI non disponibile → AI not available,
  Bring! non configurato, Leggi bilancia, Carica altri → Load more); replace
  outdated 'Gateway install fails' section (separate APK no longer exists for
  kiosk users) with 'Kiosk app update fails'; update ✕ button description to
  reflect the new 3-button overlay (✕ ↻ ⚙️); restore missing Getting Help section
- Home.md: update What's New v1.7.13 with complete list of changes; mark
  evershelf-scale-gateway/ as DEPRECATED in repo structure
This commit is contained in:
dadaloop82
2026-05-16 06:32:53 +00:00
parent e21b76ad7f
commit 80303f7900
5 changed files with 47 additions and 32 deletions
+19 -5
View File
@@ -36,12 +36,12 @@ Overview of what the wizard will configure.
### Step 3 — Permissions ### Step 3 — Permissions
Grant camera, microphone, and storage permissions needed by the web app. Grant camera, microphone, and storage permissions needed by the web app.
The button transforms from "Concedi permessi" to **"✅ Permessi concessi — Continua →"** (green) once all permissions are granted. The button transforms from **"Grant permissions"** to **"✅ Permissions granted — Continue →"** (green) once all permissions are granted.
### Step 4 — Server URL ### Step 4 — Server URL
Enter your EverShelf server URL (e.g. `https://192.168.1.100/dispensa`). Enter your EverShelf server URL (e.g. `https://192.168.1.100/dispensa`).
**Or tap "Rileva automaticamente"** to let the wizard scan your LAN: **Or tap "Auto-discover"** to let the wizard scan your LAN:
- 60 parallel threads, TCP pre-check, ports 80/443/8080/8443 - 60 parallel threads, TCP pre-check, ports 80/443/8080/8443
- Only scans your actual Wi-Fi/Ethernet subnet (VPN and cellular interfaces ignored) - Only scans your actual Wi-Fi/Ethernet subnet (VPN and cellular interfaces ignored)
- Real-time feedback as hosts are tested - Real-time feedback as hosts are tested
@@ -62,9 +62,23 @@ All done — the web app loads in full-screen kiosk mode.
--- ---
## Header Overlay Buttons
Three buttons are injected into the top-left of the web header by the kiosk app:
| Button | Action |
|--------|--------|
| **✕** | Exit kiosk mode (confirmation dialog) |
| **↻** | Hard-refresh — clears WebView cache and reloads the app |
| **⚙️** | Open EverShelf Settings |
The native Android settings button is permanently hidden once the overlay is injected — the **⚙️** web button replaces it entirely.
---
## Exiting Kiosk Mode ## Exiting Kiosk Mode
Tap the **✕** button in the header (top-left). A confirmation dialog appears. Tap the **✕** button in the header overlay (top-left). A confirmation dialog appears.
--- ---
@@ -133,6 +147,6 @@ Requires Android Studio or JDK 17+ with the Android SDK.
| `CAMERA` | Barcode scanning and AI photo identification | | `CAMERA` | Barcode scanning and AI photo identification |
| `RECORD_AUDIO` | Voice input in AI chat | | `RECORD_AUDIO` | Voice input in AI chat |
| `WAKE_LOCK` | Keep the screen on | | `WAKE_LOCK` | Keep the screen on |
| `REQUEST_INSTALL_PACKAGES` | Install the Scale Gateway APK | | `REQUEST_INSTALL_PACKAGES` | Over-the-air kiosk self-updates (installs new APK from GitHub releases) |
| `ACCESS_WIFI_STATE` | LAN auto-discovery | | `ACCESS_WIFI_STATE` | LAN auto-discovery |
| `REORDER_TASKS` | Bring app to foreground after gateway launch | | `REORDER_TASKS` | Bring the kiosk app to foreground when needed |
+12 -14
View File
@@ -43,15 +43,13 @@ docker compose up -d
## AI Features ## AI Features
### AI features don't work / "AI non disponibile" ### "AI not available" error
1. Check that `GEMINI_API_KEY` is set in `.env` 1. Check that `GEMINI_API_KEY` is set in `.env`
2. Verify the key is valid at [aistudio.google.com](https://aistudio.google.com) 2. Verify the key is valid at [aistudio.google.com](https://aistudio.google.com)
3. Check that you haven't exceeded the free tier quota (15 req/min, 1500 req/day) 3. Check that you haven't exceeded the free tier quota (15 req/min, 1500 req/day)
4. Look for errors in the PHP error log 4. Look for errors in the PHP error log
### Recipe generation stops midway
This is usually a Gemini API timeout. The app streams results via SSE — if the server PHP timeout is too low, the stream is cut short. Increase `max_execution_time` in `php.ini`: This is usually a Gemini API timeout. The app streams results via SSE — if the server PHP timeout is too low, the stream is cut short. Increase `max_execution_time` in `php.ini`:
```ini ```ini
@@ -62,7 +60,7 @@ max_execution_time = 120
## Shopping List (Bring!) ## Shopping List (Bring!)
### "Bring! non configurato" message in the shopping tab ### "Bring! not configured" message in the shopping tab
Add your Bring! credentials to `.env`: Add your Bring! credentials to `.env`:
@@ -90,7 +88,7 @@ BRING_PASSWORD=yourpassword
### Scale shows weight but form doesn't auto-fill ### Scale shows weight but form doesn't auto-fill
- The auto-fill only triggers for products with unit `g` or `ml` - The auto-fill only triggers for products with unit `g` or `ml`
- Make sure you tapped "⚖️ Leggi bilancia" first to activate the scale modal - Make sure you tapped **"⚖️ Read Scale"** first to activate the scale modal
- The weight must stabilize (stay within 10g) for the countdown to start - The weight must stabilize (stay within 10g) for the countdown to start
### Bluetooth scale not appearing in the gateway app ### Bluetooth scale not appearing in the gateway app
@@ -109,19 +107,19 @@ BRING_PASSWORD=yourpassword
- Try entering the URL manually instead of using auto-discovery - Try entering the URL manually instead of using auto-discovery
- Check that the server responds on the expected port (80/443/8080/8443) - Check that the server responds on the expected port (80/443/8080/8443)
### Gateway install fails with an error dialog ### Kiosk app update fails
The dialog shows the exact failure code. Common causes: The kiosk checks for a new release every 6 hours and downloads it from GitHub. If the install fails:
| Code | Cause | Fix | | Symptom | Fix |
|------|-------|-----| |---------|-----|
| `STATUS_FAILURE` (1) | Generic install failure — often OEM restriction | Enable "Install from unknown sources" for the kiosk app in Android Settings | | "Install from unknown sources" dialog | Enable the setting for the EverShelf Kiosk app in Android Settings |
| `STATUS_FAILURE_CONFLICT` (3) | Signature mismatch with existing install | Uninstall the old gateway app, then retry | | Persistent failure after download | Force-stop the app, clear its data, and relaunch the update flow |
| `STATUS_FAILURE_STORAGE` (6) | Not enough storage | Free up space on the device | | Not enough space | Free up storage on the device |
### Exit button (✕) is not visible ### Exit button (✕) is not visible
The ✕ button is injected into the header by the kiosk app. If the web app's header is covered or the page failed to load, try the hard refresh (↻) button. If neither is visible, triple-tap the page title area to access the developer settings. Three buttons are always visible in the kiosk header overlay: **✕** (exit), **↻** (refresh), **⚙️** (settings). If the page failed to load entirely, tap **↻** first. If nothing is visible, restart the device.
### App is stuck in kiosk mode after a crash ### App is stuck in kiosk mode after a crash
@@ -139,7 +137,7 @@ The version is cached by the browser. Do a hard refresh:
### Transactions are missing from the log ### Transactions are missing from the log
The log shows the last 50 entries by default. Tap "Carica altri" to load more. Entries older than the database creation date won't appear. The log shows the last 50 entries by default. Tap **"Load more"** to load more. Entries older than the database creation date won't appear.
### "Can only undo transactions within 24 hours" ### "Can only undo transactions within 24 hours"
+7 -7
View File
@@ -83,9 +83,9 @@ Recipes stream live via Server-Sent Events so results appear as they are generat
### AI Chat Assistant ### AI Chat Assistant
Open **💬 Chat** to ask questions like: Open **💬 Chat** to ask questions like:
- "Cosa posso fare con le uova e la pasta?" - "What can I make with eggs and pasta?"
- "Quanti giorni dura il prosciutto cotto aperto in frigo?" - "How long does cooked ham last once opened in the fridge?"
- "Suggeriscimi uno spuntino veloce" - "Suggest a quick snack"
The assistant knows your current inventory. The assistant knows your current inventory.
@@ -121,7 +121,7 @@ Configure `BRING_EMAIL` and `BRING_PASSWORD` in `.env` to enable.
## 🍳 Cooking Mode ## 🍳 Cooking Mode
Start cooking mode from any recipe by tapping **Avvia cottura**. Start cooking mode from any recipe by tapping **Start Cooking**.
### Features ### Features
@@ -132,7 +132,7 @@ Start cooking mode from any recipe by tapping **▶ Avvia cottura**.
- Custom REST endpoint (e.g. Home Assistant) - Custom REST endpoint (e.g. Home Assistant)
- **Built-in timers** — automatic timer suggestions based on recipe text; 10-second vocal countdown warning before expiry - **Built-in timers** — automatic timer suggestions based on recipe text; 10-second vocal countdown warning before expiry
- **Ingredient tracking** — mark ingredients as used; leftover quantities prompt a "move to another location" flow - **Ingredient tracking** — mark ingredients as used; leftover quantities prompt a "move to another location" flow
- **Recipe completion** — "Buon appetito!" spoken on the last step - **Recipe completion** — "Buon appetito!" *(Enjoy your meal!)* spoken on the last step
--- ---
@@ -155,8 +155,8 @@ Actions per item: Use, Throw away, Edit, Dismiss. Swipe or tap arrows to navigat
Highlights suspicious quantities (e.g. "You have 0 eggs but used 12 this month"). Actions: Highlights suspicious quantities (e.g. "You have 0 eggs but used 12 this month"). Actions:
- One-tap correction to the suggested quantity - One-tap correction to the suggested quantity
- Inline edit with free-form quantity - Inline edit with free-form quantity
- "🤖 Spiega" for AI explanation - "🤖 Explain" for AI explanation
- Dismiss (with current quantity shown: "La quantità è giusta (2 pz)") - Dismiss (with current quantity shown: "The quantity is correct (2 pcs)")
### Anti-Waste Report ### Anti-Waste Report
+6 -3
View File
@@ -47,8 +47,11 @@ All data stays on your server. No cloud, no subscriptions.
## 🆕 What's New ## 🆕 What's New
### v1.7.13 (2026-05-16) ### v1.7.13 (2026-05-16)
- **Critical fix:** Fresh-install crash resolved — `transactions` schema was missing the `undone` column, causing a database failure on every new installation - **Fix:** Kiosk Settings button (⚙️) added to the web overlay — tapping the camera button no longer accidentally opens kiosk settings
- **Fix:** Race condition in DB migrations no longer causes `duplicate column name` errors on concurrent first requests - **Fix:** Opened-item expiry badge is now consistent with the top banner: low-risk items (jams, condiments) show amber ⚠️ "Check soon" instead of misleading red ⛔ "Expired"
- **Cooking Mode:** 3D wheel UI with perspective card flip, ghost steps (prev/next), float animation, and full `prefers-reduced-motion` support
- **CI:** `data/category_ai_cache.json` added to `.gitignore`
- **Critical fix (DB):** Fresh-install crash resolved — `transactions` schema was missing the `undone` column
### v1.7.12 (2026-05-13) ### v1.7.12 (2026-05-13)
- "Use first" banner now shows opening date and location instead of a confusing calculated expiry - "Use first" banner now shows opening date and location instead of a confusing calculated expiry
@@ -81,7 +84,7 @@ EverShelf/
├── translations/ # i18n JSON files (it, en, de) ├── translations/ # i18n JSON files (it, en, de)
├── docs/openapi.yaml # OpenAPI 3.0 spec ├── docs/openapi.yaml # OpenAPI 3.0 spec
├── evershelf-kiosk/ # Android kiosk app (Kotlin) ├── evershelf-kiosk/ # Android kiosk app (Kotlin)
└── evershelf-scale-gateway/ # Android BLE gateway app (Kotlin) └── evershelf-scale-gateway/ # Android BLE gateway app (Kotlin) — DEPRECATED, built into kiosk since v1.6.0
``` ```
--- ---
+3 -3
View File
@@ -75,7 +75,7 @@ In EverShelf **Settings → Scale**:
### 4. Connect your scale ### 4. Connect your scale
Tap **"Cerca Bilance Bluetooth"** (Find Bluetooth Scales). Make sure your scale is powered on. Tap it in the list to pair and connect. Tap **"Find Bluetooth Scales"**. Make sure your scale is powered on. Tap it in the list to pair and connect.
--- ---
@@ -84,7 +84,7 @@ Tap **"Cerca Bilance Bluetooth"** (Find Bluetooth Scales). Make sure your scale
When scale integration is enabled: When scale integration is enabled:
1. Open the **Add** or **Use** form for any product with unit `g` or `ml` 1. Open the **Add** or **Use** form for any product with unit `g` or `ml`
2. A **"⚖️ Leggi bilancia"** button appears 2. A **"⚖️ Read Scale"** button appears
3. Tap it — a live weight display appears with a stability indicator 3. Tap it — a live weight display appears with a stability indicator
4. Step on or place the product on the scale 4. Step on or place the product on the scale
5. When the reading stabilizes, a **5-second countdown** starts 5. When the reading stabilizes, a **5-second countdown** starts
@@ -127,7 +127,7 @@ Every 6 hours the gateway app checks GitHub releases. If a newer version is avai
### Weight not appearing in EverShelf ### Weight not appearing in EverShelf
- Confirm the Gateway URL in EverShelf Settings matches the URL shown in the gateway app - Confirm the Gateway URL in EverShelf Settings matches the URL shown in the gateway app
- Check that the Android device and the EverShelf server are on the same network - Check that the Android device and the EverShelf server are on the same network
- Tap "Disconnetti / Riconnetti" in the gateway app to refresh the WebSocket connection - Tap "Disconnect / Reconnect" in the gateway app to refresh the WebSocket connection
### "Mixed content" error in browser ### "Mixed content" error in browser
- Make sure you are accessing EverShelf over HTTPS (not plain HTTP) - Make sure you are accessing EverShelf over HTTPS (not plain HTTP)