- Add project constitution with vision, principles, and autonomy settings - Add 15 feature specifications covering full app scope - Configure agent entry points (AGENTS.md, CLAUDE.md) - Add build prompt and speckit command for spec creation - Include comprehensive .gitignore for iOS development Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
34 lines
1.6 KiB
Markdown
34 lines
1.6 KiB
Markdown
# Person Removal Feature
|
|
|
|
## Description
|
|
Tap-to-remove people from photos using Vision's person segmentation.
|
|
|
|
## Acceptance Criteria
|
|
- [ ] User taps person in photo with Person tool selected
|
|
- [ ] `VNGenerateForegroundInstanceMaskRequest` generates mask for tapped person
|
|
- [ ] Mask preview shown with red tint overlay
|
|
- [ ] Mask automatically dilated by 2-4px to capture edge pixels
|
|
- [ ] User can adjust feather amount before confirming
|
|
- [ ] On confirm: mask feathered and passed to InpaintEngine
|
|
- [ ] Inpainted result displayed, operation added to stack
|
|
- [ ] "Select all people" option available when multiple people detected
|
|
- [ ] Multiple people can be removed one at a time
|
|
- [ ] Partial occlusion handled (Vision provides usable mask)
|
|
- [ ] User can refine mask with brush tool if needed
|
|
- [ ] Error handling:
|
|
- No person at tap: "No person found at tap location" toast
|
|
- Low confidence mask: "Does this look right?" confirmation with preview
|
|
- [ ] Performance: mask generation < 500ms, inpaint per spec targets
|
|
|
|
## Technical Notes
|
|
- Vision's person segmentation is robust on iOS 17+
|
|
- Use `indexesOfInstancesContainingPoint` to identify which person was tapped
|
|
- For "select all", combine masks from all detected instances
|
|
- Allow brush refinement by switching to brush tool with existing mask loaded
|
|
|
|
## Edge Cases
|
|
- Person partially out of frame: mask what's visible
|
|
- Person behind object: Vision may include occluding object, allow brush refinement
|
|
- Very small person in photo: may not be detected, suggest zoom or brush
|
|
- Multiple overlapping people: tap selects frontmost, allow sequential removal
|