More reliable photo uploads and analysis with better error recovery

Photos that fail to upload or analyze now show detailed status, and you can retry or delete them directly from the UI.

Bug Fixes

Photo uploads and AI analysis are now more resilient. The system detects timeout and transient errors during image fetching and vision analysis, retries failed items with exponential backoff, and lets you see exactly which photos didn't process — all from a failed-photo review sheet with built-in retry and delete actions.

Large batches are handled gracefully: analysis claims are bounded to prevent memory issues, and timeouts trigger graceful degradation instead of stalling the entire pipeline. Failed photos no longer silently disappear — they appear in your inventory view with a dedicated badge so you can review them at any time.