- Set TopAppBar containerColor to primary with white title, logo, and settings icon
- Apply primary containerColor to NavigationBar with white selected items and 70% opacity unselected items
- Replace safebite_logo_nobg.png with updated asset, remove old backup file
- Add `ShoppingListMemberEntity` table with foreign key cascade to shopping lists
- Add `backgroundResName`, `region`, `sortType`, `displayOrder`, `visibleCategories` fields to `ShoppingListEntity`
- Increment database version to 6
- Implement member CRUD operations in DAO and repository layers
- Add `observeMembers`, `addMember`, `updateMember`, `removeMember` methods across data/domain layers
- Update
- Add `splashScreenEnabled` preference to UserPreferences with default true
- Implement `SplashScreen` composable with animated logo, scale/fade transitions, and gradient background
- Add splash screen toggle in settings UI under "Interface" section
- Update navigation graph to conditionally show splash before dashboard when enabled
- Replace app launcher icons with SafeBite logo drawable
- Add PNG logo drawable and bitmap wrapper for use in composables
- Generate adaptive icon resources with background/foreground layers for API 26+
- Include webp mipmap assets for hdpi, mdpi, xhdpi, xxhdpi, xxxhdpi densities
- Add round icon variants and Play Store asset
- Remove transform gestures (zoom/pan) in favor of fixed ContentScale.Fit background image
- Implement draggable crop frame with corner handles for resize and center drag for repositioning
- Add `FrameHandle` composable with circular white/blue indicators at frame corners
- Replace complex scale/offset calculations with direct frame coordinate manipulation
- Enforce minimum frame size (48dp) and container
- Extract `ImageCropBottomSheet` component for reusable crop interface
- Remove inline `saveCroppedImage` helper in favor of centralized cropping flow
- Add tap-to-recrop functionality on existing item photos in detail sheet
- Implement crop state management with `cropBitmap`, `cropForNewItem`, and `cropForItemId` flags
- Pass `onRequestCrop` callback to `ItemDetailSheet` for both camera/gallery and existing
- Add `saveCroppedImage` helper to center-crop photos to square, resize to 512px, and compress to JPEG
- Apply cropping to both camera capture and gallery picker in `ListDetailScreen` and `ItemDetailSheet`
- Display custom item photos in tiles with `AsyncImage` and camera badge overlay
- Show full-width photos in item detail sheet
- Redesign onboarding "How it works" step
- Add camera/gallery photo capture for custom shopping list items with name and description fields
- Implement `addCustomItemWithImage` in `ListDetailViewModel` to create items with attached photos
- Add "Add to list" button in `ResultScreen` with list picker bottom sheet for scanned products
- Extend `ResultViewModel` with `addToList` method to save scanned products to shopping lists
- Add `PhotoSource
- Add `tag` field to `ShoppingListItemEntity` for visual tags (urgent, offre, whenever)
- Increment database version to 5
- Implement dashboard quick access cards showing shopping lists with remaining item counts
- Add tag selection buttons in item detail sheet with toggle functionality
- Display tag badges on item tiles with color-coded styling (danger for urgent, safe
- Add `customEmoji` field to `ShoppingListItemEntity` for user-selected icons
- Increment database version to 4
- Reorganize catalog categories: add "Condiments & Épices", "Snacks & Bonbons", "Maison & Jardin"
- Expand catalog from ~50 to 200+ items with comprehensive product coverage across all categories
- Add detail tags (Urgent, Offre, Quand cela convient) and
- Add `note` field to `ShoppingListItemEntity` for quantity/description tracking
- Redesign `ListDetailScreen` with vertical hierarchy: active items, recently used section, catalog categories
- Replace swipe gestures with tap (mark bought/restore) and long-press (details sheet) interactions
- Implement `ItemDetailSheet` modal bottom sheet for editing notes,