v1.1.0 — Fallbacks & undo
Fallbacks & undo milestone. All three feature items shipped.
Added
- Non-food product coverage — OFF lookup now walks Open Food Facts → Open Beauty Facts → Open Pet Food Facts → Open Products Facts on
404, so cosmetics, pet food, and household products that aren't on the food endpoint still resolve through their sibling databases (#44). - Delete UNDO — after confirming a delete, a snackbar offers UNDO for a few seconds. Restored items preserve their original id and every column;
restore()is wrapped inNonCancellableso a backgrounded VM can't lose the row mid-write (#46). - Surfaced failure feedback — delete and undo paths now show "Could not delete X" / "Could not undo delete of X" instead of silently swallowing exceptions.
Security
- OFF response body cap (SR-24) — HTTP client rejects responses advertising
Content-Length > 256 KBbefore parse. Known limitation: OFF's CDN uses chunked transfer encoding and omitsContent-Lengthon real responses, so chunked / no-Content-Lengthresponses pass through. A streaming-bounded body read is tracked at #52 for v1.2. - CancellationException contract preserved across all new suspend code.
Privacy
- OFF chain walks up to four sister-project hosts on 404. Happy path is still a single request to OFF; only
404walks the chain (5xx / timeout / network error / contract violation fail fast). Every request still carries only the scanned barcode plus the staticPantryTracker/1.1.0 (<repo URL>)User-Agent — no user identifier, no cookie, no device fingerprint.
Install
Sideload-only. Min Android 8.0 (API 26), targets Android 16 (API 36). See docs/release/SHIPPING.md for install paths.
Signing identity unchanged from v1.0 (SHA-256 ec9a4bb8…b3d9) — this APK installs as an update over v1.0.x.
Full changelog: CHANGELOG.md