- Created HistoryFragment with RecyclerView architecture for performance
- Implemented HistoryAdapter with expandable/collapsible Pokemon detection cards
- Added navigation integration between main app and history screen
- Connected to StorageInterface for detection result data retrieval
- Fixed MainActivity to extend FragmentActivity for fragment compatibility
- Added ServiceLocator synchronous storage access method
- Implemented delete functionality with proper state management
- Added empty state handling with informative messaging
- Enhanced build.gradle with navigation-compose dependency
Features:
- Scrollable detection history with smooth expand/collapse animations
- Compact view: Pokemon name, timestamp, processing time, status icons
- Expanded view: Complete Pokemon data organized in sections
- Delete buttons for result management
- Performance optimized for large lists with view recycling
- Proper error handling and lifecycle management
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added ML Kit script-specific recognizers for Japanese, Chinese, Korean
- Implemented multi-script OCR with intelligent fallback logic
- Uses parallel recognition for nickname/species fields only
- Maintains performance by using Latin recognizer for stats/types
- Successfully detects Japanese Pokemon names like "二ン フィイア"
- Removed Tesseract dependencies and cleaned up unused code
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add ClassificationManager singleton to handle class name mappings
- Load class names dynamically from training dataset.yaml (source of truth)
- Remove hardcoded 96-class mapping from YOLOInferenceEngine
- Add SnakeYAML dependency for YAML parsing
- Update all classNames references to use ClassificationManager
- Ensure consistency between model training data and runtime classification
Related todos: #create-classification-module
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace broken FloatingComposeOverlay with EnhancedFloatingFAB
- True floating behavior using WindowManager overlay system
- Edge docking: automatic snap to screen edges within 50dp threshold
- Touch-through support: only FAB intercepts touches, rest passes to underlying apps
- Expandable menu with 5 detection options (DETECT, SHINY, POKEBALL, ALL, DEBUG)
- Material Design styling with circular backgrounds and proper elevation
- Haptic feedback with permission checking and graceful fallbacks
- Auto-hide menu after 3 seconds of inactivity
- Smooth animations: 300ms edge snapping, staggered menu expansion
- Added VIBRATE permission to AndroidManifest.xml
- Added Material Design Components dependency
Technical implementation:
- WindowManager overlay with WRAP_CONTENT sizing for precise touch handling
- ImageButton with custom GradientDrawable backgrounds for Material styling
- ValueAnimator for smooth edge snapping with AccelerateDecelerateInterpolator
- ObjectAnimator for menu item animations with staggered delays
- Safe vibration with runtime permission checks and exception handling
Addresses critical requirements from UI_MODERNIZATION_TASKS.md:
✅ Truly floating like CalcIV - not activity-based
✅ Edge docking with smooth animation
✅ Touch-through for underlying Pokemon GO interaction
✅ Professional Material 3 design
✅ No system UI interference
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>