- get_people() and fetch_all_assets() only caught RequestException, leaving
JSONDecodeError unhandled if Immich returns a non-JSON 200 response
- cli.py thumbnail fetch used a raw header dict instead of get_headers()
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
PIL opens JPEGs without applying EXIF rotation. Immich computes face
bounding boxes on orientation-corrected images, so portrait photos
produced misaligned crops (showing chins/eyes/foreheads instead of
whole faces). ImageOps.exif_transpose() normalizes orientation before
any coordinate math.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>