Add Progress Photos feature for plant growth tracking (Phase 8)
Implement progress photo capture with HEIC compression and thumbnail generation, gallery view with grid display and full-size viewing, time-lapse playback with adjustable speed, and photo reminder notifications at weekly/biweekly/monthly intervals. New files: - ProgressPhoto domain entity with imageData and thumbnailData - ProgressPhotoRepositoryProtocol and CoreDataProgressPhotoRepository - CaptureProgressPhotoUseCase with image compression/resizing - SchedulePhotoReminderUseCase with notification scheduling - ProgressPhotosViewModel, ProgressPhotoGalleryView - ProgressPhotoCaptureView, TimeLapsePlayerView Modified: - PlantMO with progressPhotos relationship - Core Data model with ProgressPhotoMO entity - NotificationService with photo reminder support - PlantDetailView with Progress Photos section - DIContainer with photo service registrations Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -65,15 +65,11 @@
|
||||
};
|
||||
1C4B79FC2F21C37C00ED69CF /* PlantGuideTests */ = {
|
||||
isa = PBXFileSystemSynchronizedRootGroup;
|
||||
exceptions = (
|
||||
);
|
||||
path = PlantGuideTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1C4B7A062F21C37C00ED69CF /* PlantGuideUITests */ = {
|
||||
isa = PBXFileSystemSynchronizedRootGroup;
|
||||
exceptions = (
|
||||
);
|
||||
path = PlantGuideUITests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
@@ -111,7 +107,6 @@
|
||||
DADA0723BB8443C632252796 /* TaskSection.swift */,
|
||||
678533C17B8C3244E2001F4F /* RoomTaskGroup.swift */,
|
||||
);
|
||||
name = Components;
|
||||
path = Components;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
@@ -141,7 +136,6 @@
|
||||
children = (
|
||||
775B6E967C5DFFD7F1871824 /* Repositories */,
|
||||
);
|
||||
name = Data;
|
||||
path = Data;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
@@ -150,7 +144,6 @@
|
||||
children = (
|
||||
52FD1E71E8C36B0075A932F2 /* InMemoryRoomRepository.swift */,
|
||||
);
|
||||
name = Repositories;
|
||||
path = Repositories;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
@@ -160,7 +153,6 @@
|
||||
DEFE3CA84863FD85C7F7BB48 /* Presentation */,
|
||||
43A10090BDB504EEA8160579 /* Data */,
|
||||
);
|
||||
name = PlantGuide;
|
||||
path = PlantGuide;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
@@ -169,7 +161,6 @@
|
||||
children = (
|
||||
EB55B50C41964C736A4FF8A3 /* TodayView */,
|
||||
);
|
||||
name = Scenes;
|
||||
path = Scenes;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
@@ -178,7 +169,6 @@
|
||||
children = (
|
||||
96D83367DDD373621B7CA753 /* Scenes */,
|
||||
);
|
||||
name = Presentation;
|
||||
path = Presentation;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
@@ -189,7 +179,6 @@
|
||||
7A9D5ED974C43A2EC68CD03B /* TodayView.swift */,
|
||||
1A0266DEC4BEC766E4813767 /* Components */,
|
||||
);
|
||||
name = TodayView;
|
||||
path = TodayView;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user