dragonflight/services/web-ui/public
ZGaetano a03c85f08a feat: server-side filmstrip worker + fix scheduler crash + fix clip freeze
Root causes found:
1. Scheduler crashing every 15s: assets table has no error_message column.
   Fix: remove error_message from UPDATE in scheduler.js (#66 regression).

2. Clip freezing: client-side filmstrip seek loop runs on main thread,
   seeks same proxy the player is streaming → both stall → freeze.
   Fix: replace browser seek loop entirely with server-side FFmpeg worker.

3. No dedicated filmstrip worker: filmstrip was never pre-built server-side.

Changes:
- services/mam-api/src/db/migrations/018-add-filmstrip-s3-key.sql
  Add filmstrip_s3_key TEXT column to assets table

- services/worker/src/workers/filmstrip.js (new)
  BullMQ worker: downloads proxy, runs FFmpeg fps filter to extract
  28 evenly-spaced JPEG frames, base64-encodes them, uploads JSON
  array to S3 at filmstrips/<assetId>.json, stores key in DB

- services/worker/src/workers/thumbnail.js
  Queue filmstrip job automatically after thumbnail completes

- services/worker/src/index.js
  Register filmstrip worker (concurrency=2), export filmstripQueue
  singleton, close it on SIGTERM

- services/mam-api/src/routes/assets.js
  - filmstripQueue added
  - POST /reprocess?type=filmstrip now supported
  - GET /:id/filmstrip returns signed S3 URL for JSON frames

- services/mam-api/src/routes/jobs.js
  filmstrip queue visible in Jobs UI

- services/web-ui/public/screens-asset.jsx
  Replace browser seek loop with fetch of /assets/:id/filmstrip
  → fetch S3 JSON → render frames. Zero browser-side video seeking.
  Right-click and Files tab re-generate via API endpoint.
2026-05-26 16:39:44 +00:00
..
css fix: remove Google Fonts, fix editor link to :47435, fix page titles 2026-05-18 22:56:51 -04:00
downloads feat: editor coming-soon bumper + embedded Premiere panel downloads 2026-05-26 14:34:28 +00:00
fonts web-ui: wave-1 finish — self-host fonts + multi-stage Dockerfile 2026-05-21 16:32:55 +00:00
img feat(brand): add Wild Dragon logo + favicon 2026-05-18 14:11:29 +00:00
js Fix editor timeline interactions 2026-05-25 01:10:45 -04:00
app.jsx fix(#53): show error banner with retry when loadData() rejects 2026-05-25 17:42:39 -04:00
data.jsx fix(#38,#54): fix apiFetch Content-Type header order; fix normalizeAsset seed hash 2026-05-25 17:42:06 -04:00
favicon.ico feat(brand): add Wild Dragon logo + favicon 2026-05-18 14:11:29 +00:00
icons.jsx feat(home,users): real metrics, working Users row actions + Groups CRUD 2026-05-23 03:30:10 +00:00
index.html feat(editor): Phase 1 core NLE editor React SPA rewrite 2026-05-24 16:20:38 -04:00
login.html fix: close all 24 open issues (#40–#94) 2026-05-26 14:10:44 +00:00
modal-new-recorder.jsx feat(ui): polish round 2 — live refresh, schedule calendar, jobs times, real sidebar user 2026-05-23 14:52:04 -04:00
screens-admin.jsx feat: editor coming-soon bumper + embedded Premiere panel downloads 2026-05-26 14:34:28 +00:00
screens-asset.jsx feat: server-side filmstrip worker + fix scheduler crash + fix clip freeze 2026-05-26 16:39:44 +00:00
screens-editor.jsx feat: editor coming-soon bumper + embedded Premiere panel downloads 2026-05-26 14:34:28 +00:00
screens-home.jsx feat(home): restore launcher home page; move current home to Dashboard 2026-05-23 10:48:06 -04:00
screens-ingest.jsx fix: close all 24 open issues (#40–#94) 2026-05-26 14:10:44 +00:00
screens-jobs.jsx fix(jobs): cancel running + delete failed jobs to unstick the queue 2026-05-23 16:54:05 -04:00
screens-library.jsx fix: close all 24 open issues (#40–#94) 2026-05-26 14:10:44 +00:00
screens-projects.jsx fix: close all 24 open issues (#40–#94) 2026-05-26 14:10:44 +00:00
shell.jsx feat(editor): Phase 1 core NLE editor React SPA rewrite 2026-05-24 16:20:38 -04:00
styles-asset.css feat(web-ui): asset detail + rest CSS: styles-asset.css 2026-05-22 08:06:39 -04:00
styles-fixes.css fix: close all 24 open issues (#40–#94) 2026-05-26 14:10:44 +00:00
styles-modal.css feat(web-ui): Z-AMPP screen + component CSS: styles-modal.css 2026-05-22 08:03:57 -04:00
styles-rest.css feat(schedule): right-click menu + drag-to-resize on EPG event blocks 2026-05-23 16:33:57 -04:00
styles-screens.css fix: bin creation 500 error + add drag-and-drop + project rename 2026-05-24 13:27:24 -04:00
styles.css feat(web-ui): Z-AMPP design system CSS: styles.css 2026-05-22 08:02:35 -04:00
tweaks-panel.jsx Add Z-AMPP UI: visuals + tweaks-panel: tweaks-panel.jsx 2026-05-22 08:13:37 -04:00
visuals.jsx feat(ui): wire screens to live API data; add thumbnail lazy-loading: visuals.jsx 2026-05-22 10:04:23 -04:00