- Group summary popup: Changed header to "Decisions", updated button text to "Confirm" and "Undo decisions"
- Added file name and size display below thumbnails in grid view
- Made thumbnails square with better aspect ratio
- Implemented consistent badge design (delete, keep, undecided) in top-right corner
- Added long press to zoom into images with hero animation
- Hide "Undo decisions" button when no decisions made
- Progressive image loading in swipeable photo card (cache → large thumbnail → full)
- Auto-scroll carousel to follow group progression
- Larger action buttons (100x100) positioned higher on screen
- Left-aligned text under thumbnails for better visual alignment
Co-Authored-By: Claude <noreply@anthropic.com>
## Description
- Use `load` instead of `view`, since latter is read-only
- When loading fails in rust, delete index file in dart side and try
again
- Atomically save index file by first writing to temp file
## Tests
Tested in debug mode on my pixel phone.
Add three mandatory development practices:
1. Run flutter analyze after every change - zero issues required
2. Always reuse existing components - search before creating
3. Use Ente design system - no hardcoded colors or text styles
Co-Authored-By: Claude <noreply@anthropic.com>
Create comprehensive development guide from /init command including:
- Project philosophy and privacy focus
- Monorepo context and structure
- Development commands (melos and flutter)
- Architecture overview with service patterns
- Security architecture details
- Development setup requirements
Co-Authored-By: Claude <noreply@anthropic.com>
Updated cLTitle2 from "Manual video stream generation" to "Video streaming enhancements" across all supported locales to match the updated English copy.
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace withOpacity() with withValues(alpha:)
- Replace onPopInvoked with onPopInvokedWithResult
- Update MaterialState references to WidgetState
Co-Authored-By: Claude <noreply@anthropic.com>