Files
links/links
OpenClaw Sub-agent 366cc35ff5 feat: unify image storage onto files backend + Apple-style collections UI
- Image model: new file OneToOneField → FileUpload; get_url/get_thumbnail_url
  serve via /ui/files/ (Pillow thumbs) with legacy R2 fallback until backfill
- upload_images API now persists through _save_uploaded_file (files backend);
  deletes clean up FileUpload disk+record; collection destroy cascades files
- R2Storage.delete_file implemented (was silently missing → legacy R2 delete no-op)
- manage.py migrate_image_storage: idempotent R2→files backfill (dry-run default,
  --commit, optional --delete-r2); nothing removed from R2 without explicit flag
- Collections list: Apple design system, cover cards, hover actions, mobile-first
- Collection detail: native drag&drop upload (CDN Dropzone removed), lightbox with
  keyboard/swipe nav + description edit + delete, valid JSON image data via json_script
- Slideshow untouched (automatically uses new backend)
- tests: 10 new (upload/delete/URLs/backfill), 148 total green
2026-08-03 16:08:34 +10:00
..
2026-07-30 13:25:36 +10:00
2024-11-04 16:39:15 +11:00
2024-09-08 18:27:54 +10:00
2026-04-14 12:04:44 +10:00
2026-07-30 15:56:31 +10:00
2024-11-17 11:11:08 +11:00
2026-07-29 11:57:12 +10:00
2025-05-29 23:19:29 +10:00
2026-03-30 19:51:12 +11:00
2026-05-11 22:57:25 +10:00
2026-03-29 11:10:37 +11:00
2024-11-03 10:11:25 +11:00
2026-03-30 20:12:22 +11:00
2026-07-30 13:25:36 +10:00
2026-07-30 13:25:36 +10:00
2026-02-12 10:44:37 +11:00
2025-03-02 10:26:44 +11:00
2026-04-14 12:04:44 +10:00
2026-07-30 13:25:36 +10:00