Memories "count 2 but no images" root cause: - DB rows exist with processing_status='failed'/'uploading' from aborted uploads whose R2 objects never actually landed. The img onError fires and hides the tile, but the count still includes these orphaned rows. - Fix: GET /api/memories now excludes failed rows and uploading rows older than 30 min from both the SELECT and the count. Also fires a background DELETE to clean up orphaned rows so they stop accumulating. Profile / memories upload silent failures: - Some Android cameras return file.type="" which caused the avatar API to reject the upload with a 400 error. Error was caught but shown in a small text node buried below the form — invisible when looking at the avatar area. - Fix: added resolveContentType() helper (used in profile, memories, home) that falls back to extension-based detection when file.type is empty/octet-stream. - Fix: profile page now uses a separate uploadMsg state rendered immediately below the avatar so errors/success are always visible on mobile without scroll. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| icons | ||
| file.svg | ||
| globe.svg | ||
| icon.svg | ||
| next.svg | ||
| sw.js | ||
| vercel.svg | ||
| window.svg | ||