- 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>
37 lines
1.5 KiB
Markdown
37 lines
1.5 KiB
Markdown
# Wire & Line Removal Feature
|
|
|
|
## Description
|
|
Remove power lines and wires using contour detection with line brush fallback.
|
|
|
|
## Acceptance Criteria
|
|
- [ ] User taps near wire with Wire tool selected
|
|
- [ ] `VNDetectContoursRequest` returns all detected contours
|
|
- [ ] ContourService scores contours and selects best wire-like match:
|
|
- Proximity to tap point
|
|
- Thin/elongated aspect ratio
|
|
- Straightness (low curvature)
|
|
- Length
|
|
- [ ] Best contour highlighted for preview
|
|
- [ ] Mask width configurable: default 6px, range 2-20px via slider
|
|
- [ ] User confirms, mask expanded to configured width, inpaint executes
|
|
- [ ] Line brush fallback when no contour detected:
|
|
- User switches to "Line brush" mode
|
|
- User draws along wire
|
|
- Consistent stroke width maintained
|
|
- Stroke becomes mask for inpainting
|
|
- [ ] Multiple wires can be removed sequentially
|
|
- [ ] Performance: contour detection < 300ms
|
|
|
|
## Technical Notes
|
|
- Power lines against sky have strong edges - ideal case
|
|
- Scoring weights: proximity 0.3, aspect 0.3, straightness 0.2, length 0.2
|
|
- Line brush should use touch velocity for smooth strokes
|
|
- Consider Catmull-Rom spline for smooth line brush paths
|
|
|
|
## Edge Cases
|
|
- No wire-like contours found: "No lines detected. Use line brush" prompt
|
|
- Wire against busy background (buildings, trees): likely needs line brush
|
|
- Curved wires (drooping power lines): scoring allows moderate curvature
|
|
- Wire crosses entire image: may need to process in segments
|
|
- Multiple parallel wires: each tap selects one, remove sequentially
|