Repository navigation
Conversation
- Run the main scan's recognition on the fridge and pantry photos separately, route results through ConfidenceRouter, and preselect only sure items. The 14 hard-coded detections are gone, so nothing the photos didn't show can reach the Kitchen. - Show honest states: no photos, nothing found, and a failed scan with Try Again and Continue. If one location fails, the other's items stay reviewable and only the failed one is retried. A failed scan commits nothing. - Keep one intake session per onboarding run, so coming back and adding again reconciles the Kitchen instead of adding a second copy. Choices for items already shown survive a rescan. - Record whether each photo came from the camera or the library in FLCaptureView, and prepare library imports like other scan inputs. - Give the photo remove and retry controls 44 pt targets and specific names, and announce scan results to VoiceOver. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The remove button was a 16 pt icon offset outside the thumbnail. It now has a 44 pt target inside the thumbnail and names the photo it removes. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… failures - Reconcile fridge and pantry as separate intake sessions, and only for locations whose latest scan succeeded, so a failed rescan can't remove food the user already confirmed. - File onboarding lots under the location they were photographed in. Intake now takes an explicit location; the main scan keeps inferring it. - Keep the user's check and uncheck choices for the whole run, so a failed scan and retry don't reset them. - Rescan when a late photo import changes the photos, drop stale results, and stop work when the user leaves mid-scan. - Warn when some photos couldn't be read instead of reporting nothing found. - Back from the final step returns to the review instead of replaying setup. - Show an empty circle, not a check, when nothing is selected. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Use one intake session for the whole onboarding run and one call per confirmation. An item whose higher score moves between fridge and pantry on a rescan keeps its one lot, and food already cooked is never added back. - File each new lot under the section its detection sits in, through a per-ingredient location map. Intake throws a specific error rather than guessing when the map has no entry; the main scan still infers. - Add a required `preserving` set to scan intake. Onboarding uses it to leave earlier confirmations alone when their section's photos failed or weren't all read this time, unless the review shows them again or the user unchecked them. - Show "Couldn't save to your Kitchen" with Try Again and Continue Without Saving when the write fails, instead of moving on silently. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A section with no photos says nothing about its food, so onboarding now treats it like a failed or unread scan: items an earlier confirmation added from it, and not shown now, are preserved unless the user unchecked them. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
When saving the kitchen review fails, keep the exact scan and choices the user confirmed. Try Again retries that confirmation, so a late import that publishes new preselections behind the alert can't be saved unconfirmed. Continue Without Saving discards it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Real scans often find a single item per section, which read "1 items". Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
2 tasks done
… the macos-26 CI workflow Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This was referenced Oct 11, 2026
SamGu-NRX
added a commit
that referenced
this pull request
Oct 11, 2026
SamGu-NRX
added a commit
that referenced
this pull request
Oct 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #4. Base:
feat/minimal-product-20261007.What changed
Onboarding scans the photos the user takes
Onboarding asks the user to photograph their fridge and pantry, but the review step never looked at those photos. After a short delay it showed 14 hard-coded ingredients with made-up confidences labelled as Vision results, and "Add to My Kitchen" wrote them into the real Kitchen. A stir-fry photo produced bread, eggs and butter at 94%.
The review now runs the same recognition as Scan Ingredients (
VisionService.scan) on the captured photos, fridge and pantry separately.ConfidenceRouterdecides what starts checked, as in the main review.OnboardingKitchenDemoDetectionsis deleted; nothing else used it. The logic is inOnboardingKitchenScan.swift, and the screen isOnboardingKitchenReviewStepinOnboardingInventorySteps.swift.Empty, failed and partial scans say what happened
Unreadable means every Vision request failed on a crop. On the simulator, classification always fails while OCR works, and that doesn't raise this warning.
Confirming twice never duplicates, loses or revives food
The user can go back and confirm again any number of times.
ingestConfirmedScancall under a single session reference for the onboarding run, so it saves completely or not at all. An item that moves between the fridge and pantry sections on a rescan stays one lot. Food that was cooked in between isn't added back.ScanLotLocation.photographed(byIngredient:)). They used to land under "Other". If an added ingredient has no location, intake throwsIntakeError.missingLocationinstead of guessing. The main scan passes.inferredFromIngredientand behaves as before.ingestConfirmedScantakes a requiredpreservingset, and lots for those ingredients are left exactly as they are. Onboarding preserves an earlier-confirmed item when its section's latest scan failed, had unreadable photos, or has no photos now, as long as the item isn't shown and the user hasn't unchecked it. The main scan passes[].Capture and accessibility fixes found on the way
ScanImagePreprocessor.prepare, so orientation and the 1600 px cap apply.FLCaptureViewrecords whether each photo came from the shutter or the library, through a newFLCapturedPhoto. The old[UIImage]initialiser still works for its other callers.Verification
~/.long-run/fridgeluck/evidence/lead-verify/(onboarding-review-taco.png,kitchen-after-onboarding-revisit.png,kitchen-final-onboarding.png).OnboardingKitchenReviewTestsdriveOnboardingKitchenIntake.commitagainst a real migrated database, covering:Checklist
ghcan't attach images. The screenshots listed above are local files🤖 Generated with Claude Code