- GDPR: tydligt skilj lämna hushåll (åtkomst) från kontoradering.
- Token-säkerhet: sha256-hash i DB, single-use, 7 dagars expiry, max 10
aktiva länkar, roll adult vid join, ingen owner-transfer.
- Analytics: aldrig token eller invite_code i properties.
- Webbfallback noterad som fas-1-spår utanför Fas 4.
- Uppdatera .env API_BASE_URL till http://192.168.8.123:4000.
- Lägg till gitignorerad .env.telefontest med REACT_NATIVE_PACKAGER_HOSTNAME
och API_BASE_URL.
- Lägg till scripts/expo-lan.sh som dödar gammal expo-tmux, sourcar
.env.telefontest och startar Expo med rätt variabler.
- Uppdatera first-deploy.sh staging-sammanfattning: skriv ut API_BASE_URL
och påminn om ./scripts/expo-lan.sh.
- Lägg till docs/RUNBOOK-STAGING-EXPO.md.
- Merge leftovers into existing meal_box when same recipeId + cookedAt date + frozen + available.
- Store mealBoxMutations JSONB on cooking_sessions for deterministic undo.
- Undo decrements portions/remaining, discards box at zero, appends correction ledger rows.
- Mobile: undo button in cooking/[id].tsx after-flow and meal-boxes.tsx within 24h window.
- i18n undo strings across all 12 locales; parity test green.
- 6 new integration tests: merge, no cross-date merge, frozen split, undo restore, undo discard, ledger invariant.
- Update FAS3 audit doc with 3d semantics.
Closes Fas 3d
- consumptionPortions = min(planned, actualPortionsEaten + leftoverEstimatePortions).
Meal boxes are a subset of leftovers; raw inventory is only retained for
portions that were never cooked.
- Added validation leftoverEstimatePortions >= mealBoxPortions with localized
400 error (cooked.leftoverLessThanBox) in server i18n + all 12 locales.
- Removed unused COOKING_SESSION_STATUSES / MEAL_BOX_STATUSES imports from
apps/api/src/lib/cooking.ts.
- Hardened test cleanup to delete mealBoxes/meals/recipeCooks/cookingSessions
by household before dropping storageLocations.
- New regression tests: meal-box double-counting, eaten+leftover split, and
leftover < box rejection.
- Updated FAS3-COOKING-SESSIONS-AUDIT.md with corrected physics semantics.