Add source descriptions for manual imports#38
Conversation
Greptile SummaryThis PR adds an optional source-description bottom sheet that appears after a user manually picks an image from the Today FAB or empty state. The description is stored in the source's
Confidence Score: 5/5Safe to merge; the description field flows cleanly through all layers and dismiss/skip/save paths are covered by targeted tests. The pick → describe → import sequence is correctly sequenced in the cubit, with explicit null-return semantics distinguishing cancel from skip. The description value is normalised before storage and before job queuing, keeping empty-string edge cases handled consistently. New unit and integration tests exercise all three user paths (dismiss, skip, save with text). No files require special attention. The previously noted concerns about _normalizedSourceDescription duplication and repeated jsonDecode in _metadataString remain open but were flagged in an earlier review pass. Important Files Changed
Reviews (2): Last reviewed commit: "Cancel manual import on description dism..." | Re-trigger Greptile |
Summary
Fixes #37.
Validation
flutter analyzeflutter testTargeted checks:
flutter test test/features/source_ingestion/presentation/source_ingestion_cubit_test.dart test/features/source_ingestion/domain/source_ingestion_use_cases_test.dart test/features/ai_processing/domain/ai_job_queue_test.dart test/features/today/presentation/today_screen_test.dartflutter test integration_test/beta_feedback_icon_e2e_test.dartattempted; blocked locally because Xcode could not find the booted simulator destination.flutter test integration_test/beta_feedback_icon_e2e_test.dart -d macosattempted fallback; blocked because no macOS desktop project is configured.Sanitized validation note:
artifacts/issue_37_manual_import_description/validation.md(ignored).Private demo proof uploaded for PR 38 attempt 2.