- 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>
1.6 KiB
1.6 KiB
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
VNGenerateForegroundInstanceMaskRequestgenerates 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
indexesOfInstancesContainingPointto 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