- custom_inference_worker: reuse existing device_group from DeviceController
to avoid double kp.connect_devices() conflict on same USB port
- custom_inference_worker: add TYPE_CHECKING guard for kp type annotations
to prevent potential NameError at import time
- utilities_screen: replace missing back_arrow.png with text arrow (←)
- utilities_screen: add set_device_controller() so AppController can inject
MainWindow's shared DeviceController instance
- main.py: wire UtilitiesScreen to share MainWindow's DeviceController
- video_thread: emit camera_error_signal on failure and max-retry exhaustion
- media_controller: connect camera_error_signal and display error on canvas
- media_panel: fix pause button using wrong delete icon; use video_normal SVG
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove unused files (model_controller.py, model_service.py, device_connection_popup.py)
- Clean up commented code in device_service.py, device_popup.py, config.py
- Update docstrings and comments across all modules
- Improve code organization and readability
- device_controller: Add connect_device, disconnect_device, get_device_group methods
- inference_controller: Add select_custom_tool method for custom model inference
- custom_inference_worker: New worker thread for custom model inference with YOLO V5 post-processing
- custom_model_block: New UI component for uploading custom .nef model and firmware files
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>