Commit Graph

10 Commits

Author SHA1 Message Date
4fbf1abb57 Fix Metal texture size mismatch in mask loading
Scale mask and image to texture dimensions when loading into Metal
textures, fixing crash when brush mask has different dimensions
than the source image.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 12:54:27 -05:00
ab46586ece Complete remaining high-priority features
- Edge refinement: Wire toggle to actually snap brush strokes to edges
  using Sobel gradient analysis in EdgeRefinement.swift
- Brush preview circle: Show visual cursor following finger during drawing
- PHAsset storage: Capture localIdentifier for Photo Library imports
- Low-confidence mask warning: Show "Does this look right?" for uncertain
  detections based on mask coverage and edge sharpness analysis
- Fix Swift 6 concurrency warnings with nonisolated static methods

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 12:45:08 -05:00
99faa068f3 Add person/wire removal features and accessibility support
- Person removal: select all people option, mask dilation, brush refinement
- Wire removal: line brush fallback mode with Catmull-Rom smoothing
- Image import: Files app document picker, large image warnings
- Accessibility: VoiceOver labels, announcements, Dynamic Type support,
  high contrast mask option, Reduce Motion, 44pt touch targets, steppers

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 12:36:45 -05:00
00138d944d Fix ImagePipeline operation rendering
Update MaskOperation to store mask dimensions for reconstruction.
Implement proper operation rendering in ImagePipeline:
- Apply mask+inpaint operations with proper mask reconstruction
- Handle adjustment operations by type (brightness/contrast/saturation)
- Scale masks when rendering previews at reduced resolution

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 23:43:53 -05:00
48ee7ecd7c Add Metal-based inpainting and brush selection tools
Implement GPU-accelerated inpainting using Metal compute shaders:
- Add Shaders.metal with dilateMask, gaussianBlur, diffuseInpaint, edgeAwareBlend kernels
- Add PatchMatchInpainter class for exemplar-based inpainting
- Update InpaintEngine to use Metal with Accelerate fallback
- Add BrushCanvasView for manual brush-based mask painting
- Add LineBrushView for wire removal line drawing
- Update CanvasView to integrate brush canvas overlay

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 23:41:43 -05:00
eec086e727 Add export functionality with format options
- Add ExportView with JPEG, PNG, HEIC format support
- Include quality slider for JPEG compression
- Show image dimensions and estimated file size
- Implement save to Photo Library with proper permissions
- Add share sheet for AirDrop, Messages, etc.
- Wire export button in PhotoEditorView to show ExportView
- Add HEIC encoding extension for UIImage

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 23:30:54 -05:00
daa8ba82bb Integrate services with UI via EditorViewModel
- Add EditorViewModel coordinating masking, contour detection, and inpainting
- Connect PhotoEditorView to viewModel with mask confirmation bar
- Add processing overlay and error toast UI
- Update CanvasView with tap-to-mask functionality
- Add coordinate conversion from view space to image space
- Update ToolbarView to bind to viewModel state
- Wire up undo/redo actions through viewModel

Person, object, and wire removal now flow:
tap -> detect -> preview mask -> confirm -> inpaint

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 23:29:21 -05:00
20707da268 Implement core project structure and foundation components
Project Setup (Spec 01):
- Configure iOS 17.0 deployment target
- Add photo library usage descriptions
- Create proper folder structure (App, Features, Services, Models, Utilities)

Data Model (Spec 02):
- Add EditOperation enum with mask, inpaint, adjustment cases
- Add MaskOperation, InpaintOperation structs (Codable)
- Add Project model with operation stack and undo/redo support
- Add MaskData with dilation support via vImage

Services (Specs 03-05):
- Add InpaintEngine with Metal + Accelerate fallback
- Add MaskingService wrapping Vision framework
- Add ContourService for wire/line detection and scoring

UI Components (Specs 06-08):
- Add PhotoEditorView with photo picker integration
- Add CanvasView with pinch-to-zoom and pan gestures
- Add ToolbarView with tool selection and inspector panel

Utilities:
- Add ImagePipeline for preview/export rendering
- Add EdgeRefinement for smart brush edge detection
- Add check_build.sh for CI verification

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 23:26:37 -05:00
1049057d7d Add Ralph Wiggum agent setup and project specifications
- 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>
2026-01-23 23:19:41 -05:00
c64aa4b8ac first commit 2026-01-23 23:17:06 -05:00