- New uploads go directly to S3 when configured (no local URL generation)
- Automatic migration of existing local files on first access
- Added _migrate_to_s3_if_needed() method to File model
- Integrated migration triggers in view_url(), medium_url(), thumbnail_url()
- Backward compatible: supports users switching from local to S3 storage
- Silent failure handling: migration errors don't break user experience
Supports seamless transition from local file storage to S3 without downtime.
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com
- New uploads go directly to S3 when configured (no local URL generation)
- Automatic migration of existing local files on first access
- Added _migrate_to_s3_if_needed() method to File model
- Integrated migration triggers in view_url(), medium_url(), thumbnail_url()
- Backward compatible: supports users switching from local to S3 storage
- Silent failure handling: migration errors don't break user experience
Supports seamless transition from local file storage to S3 without downtime.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>