Work / AskCal / Wiki / Surfaces
review
Surfacecanonicalverified 2026-10-09
SURFACE.MOBILE.MEAL.REVIEWYour meal — one screen after the photo
Summary
Everything after the estimate lands is one screen: the photo, one number, a
list of what is in it, and Log it. Every fix happens on that screen, in place.
Drawn in meal/review.html, ask.html, edit.html, change.html,
add.html, logged.html and typed.html. Built as app/meal.tsx.
Why it is drawn this way
The owner's report on 2026-10-09: the app asked a cup of tea about its oil, changing a quantity was hard, changing an item was hard, and the whole post-photo experience was too complex. Home was liked and is unchanged.
- The list looks like Today's. Same row, same dividers. No stepper, badge, chip or bin on a row.
- Tap a row and it opens where it is. The amount is a field and the number pad comes up with it. No minus and plus: the owner asked for typing only (2026-10-09). Digits only, so a count is whole pieces. "Not rice?", Remove and Done sit under the field. No second screen.
- Changing the food reuses the open row. It becomes a search. A match keeps the amount. The last result is the typed name, worked out by the app.
- Adding uses the same search, at the end of the list.
- At most one question, on the same screen, before the list. Only for cooked food. Three answers and a skip. The answer becomes an ordinary row, "Cooking oil", that is edited like any other.
- The photo runs to the top edge, behind the status bar. Close, share and retake float on it. No card and no margin around it.
- Share opens the photo screen (
gallery/photo.html), from here and from a logged meal. - A logged meal is the same screen with Done and Delete in place of Log it.
Decided 2026-10-09
- One question, and the model picks it. The card is the same whatever is
asked: a question, up to three answers with what each adds, and a skip. Oil
is the usual one and is what
meal/ask.htmldraws. Never asked of a drink, a barcode or a database food. - One mark: ≈. It sits before the calories of a food worked out from a photo. Typing the amount removes it. Seen, guessed, unknown, label and "you said" are no longer drawn anywhere — not on a food, not on a meal on Today.
- No range and no "was 500". Trends keeps one bar: exact against ≈.
- A meal with no photo uses the same screen without the image
(
meal/typed.html): barcode, search, typed, bill.
Screens aligned to this
Barcode (no stepper), search, analyzing and type-loading ("one question"), welcome and paywall copy, Today in all three states (no marks), Trends (no "Resolve"), and the components and sheets patterns. The "Logged with one unknown" toast is no longer drawn.
Barcode stays one tap: "Log it" on the found sheet, with "Change the amount" as the side road into the meal screen.
What the build settled
- Four oil answers, and skip means not sure. None, A little, Normal, A lot. Skipping keeps the estimator's own guess as an ≈ row; "None" removes it.
- The oil is answered on the device, so the card prints what each answer
adds. The estimator's own question has no numbers to print and goes back to
/clarify. - Share is on a logged meal with a kept photo only. The photo screen needs both, so the button is not on a plate still being decided.
- Adding does not offer "as typed". Working out a new food from a name costs a scan. Changing a food already on the plate does not, so it does.
- No dish-level correction and no rename. Fix it food by food, or retake.
- Half a piece cannot be typed. The pad is digits only. A meal stored with a half keeps it until the amount is typed again.
When oil is asked — verified on a device, 2026-10-09
- Asked: "two fried eggs", "plain omelette". The estimator left the oil as something it could not see. The card shows None / A little / Normal / A lot.
- Not asked: "a cup of tea with milk" (no fat on the plate; the estimator asked about sugar instead), "boiled rice with one tablespoon of ghee" (the amount was stated; it asked about the rice).
- One row, never two. An answer rewrites the estimator's own oil row. Skip keeps that row at its guess, marked ≈. Removing it does not bring the question back.
- The button says what will be logged. While the oil is being asked about its row is not in the list, so "Log with our guess — 231 kcal" names the total rather than letting 143 become 231 on the way to Today.
- A plate with no fat row is not asked. The estimator is told to name the fat on anything fried, so no row is its answer.
What this removes
scan/result, scan/clarify, scan/corrected, scan/correct-dish,
scan/correct-item, food/meal, food/pick, the three food/portion-*,
food/fat and patterns/fat-card. Also: confidence badges on rows, the
"could be" range, "You ate", the per-piece size sheet, deep-fried as its own
answer, and the second question.