dragonflight/services/mam-api/src
ZGaetano 1afb150237 feat(assets): cleanup-live-orphans + retry handles non-error states
Two changes for issue #7 (HLS cleanup + orphan reaper) and the user's
"SRT clips ingest but won't play" complaint:

1) New POST /assets/cleanup-live-orphans — lists every directory under
   /live/<uuid>/ and deletes the ones whose UUIDs don't match an asset
   row. These accumulate when a recorder crashes mid-capture: the live
   HLS dir is created but no asset is ever finalized in the DB, so the
   files just sit on disk forever.

2) POST /assets/:id/retry now also works for assets that are 'ready'
   or 'archived' but have no proxy_s3_key. The original behavior (only
   re-queue when status='error') made it impossible to re-generate a
   proxy for older recorder captures that landed without one — the
   user could see a thumbnail in the library but the player would just
   show "Preview not yet available" with no retry path.
2026-05-23 10:28:42 -04:00
..
ampp feat: AMPP folder sync integration — pre-create folder hierarchy on upload, expose lookup endpoint for Script Task: client.js 2026-04-18 13:42:07 -04:00
db feat(comments): persistent frame-anchored comments on asset detail 2026-05-23 04:21:11 +00:00
middleware feat(mam-api): add auth middleware with session and Bearer token support 2026-05-18 12:45:15 -04:00
routes feat(assets): cleanup-live-orphans + retry handles non-error states 2026-05-23 10:28:42 -04:00
s3 feat(s3): dynamic DB-driven config with rebuildS3Client + Proxy export 2026-05-20 15:47:40 -04:00
index.js feat(comments): persistent frame-anchored comments on asset detail 2026-05-23 04:21:11 +00:00
scheduler.js feat(scheduler): recorder scheduling — UI, CRUD, tick loop, recurrence 2026-05-23 03:19:24 +00:00