Replace the Care tab with a new Today View dashboard that shows
overdue and today's care tasks grouped by room. Features include:
- TodayView: Main dashboard with greeting, progress stats, and task sections
- TodayViewModel: Room-based task grouping with completion tracking
- QuickStatsBar: Progress indicator showing completed vs total tasks
- TaskSection: Collapsible sections for overdue/today tasks
- RoomTaskGroup: Tasks grouped by room with "Water all" bulk action
- InMemoryRoomRepository: In-memory room storage for testing/mocks
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update Plant test fixtures to use roomID instead of deprecated location
- Add URLDataFetcher protocol to ImageCache for dependency injection
- Update ImageCacheTests to use protocol-based mock instead of URLSession subclass
- Add missing cancelReminders(for:plantID:) method to MockNotificationService
- Add Equatable conformance to ImageCacheError for test assertions
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements Phase 3 of the feature roadmap:
- Room entity with 7 default rooms (Kitchen, Living Room, Bedroom, etc.)
- RoomRepositoryProtocol and CoreDataRoomRepository for persistence
- CreateDefaultRoomsUseCase and ManageRoomsUseCase for CRUD operations
- RoomsListView with swipe-to-delete and drag-to-reorder
- RoomEditorView with SF Symbol icon picker
- RoomPickerView for assigning plants to rooms
- Updated Plant entity (location → roomID) and PlantDetailView
- Added "Manage Rooms" section in SettingsView
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Switch CoreDataStack from NSPersistentContainer to NSPersistentCloudKitContainer
- Configure CloudKit container: iCloud.com.t-t.PlantGuide
- Remove uniqueness constraints from all Core Data entities (CloudKit incompatible)
- Add CloudKit container identifier to entitlements
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create DesignSystem with ColorTokens, AppearanceManager, spacing, and typography
- Add appearance picker in Settings (System/Light/Dark modes)
- Replace hardcoded colors with design tokens in MainTabView and Enums+UI
- Inject AppearanceManager via environment in PlantGuideApp
- Add FEATURE_ROADMAP.md documenting 8 planned features
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds competitive analysis document comparing PlantGuide against major
plant identification apps (PlantIn, PictureThis, Planta, etc.) and
CLAUDE.md to help future Claude Code instances navigate the codebase.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix Core Data transformer conflict causing cache decode failures
- Changed PlantCareInfoMO attributes from Transformable to Binary type
- Removed valueTransformerName references that conflicted with manual JSON encoding
- Fix cache key mismatch causing cache misses
- Normalize scientificName to lookup name when saving to cache
- Remove cache expiration (cache now persistent until plant deleted)
- Removed cacheExpiration property and isCacheStale check
- Added forceRefresh parameter to FetchPlantCareUseCase for manual refresh
- Add cache cleanup when deleting plants
- Added PlantCareInfoRepositoryProtocol dependency to DeletePlantUseCase
- Clean up cached care info when plant is deleted
- Add extensive debug logging to PlantNetAPIService
- Log request/response details, status codes, and decoding errors
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Implement camera capture and plant identification workflow
- Add Core Data persistence for plants, care schedules, and cached API data
- Create collection view with grid/list layouts and filtering
- Build plant detail views with care information display
- Integrate Trefle botanical API for plant care data
- Add local image storage for captured plant photos
- Implement dependency injection container for testability
- Include accessibility support throughout the app
Bug fixes in this commit:
- Fix Trefle API decoding by removing duplicate CodingKeys
- Fix LocalCachedImage to load from correct PlantImages directory
- Set dateAdded when saving plants for proper collection sorting
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>