328f7b4f31
feat: live HLS preview, proxy worker fixes, Settings tabs, growing-files + Premier panel
...
- worker/proxy: scale-to-even filter, analyzeduration 100M, skip images, hasAudio
- worker/promotion: SMB landing zone -> S3 on idle, queues proxy job, status='ready'
- web-ui screens-ingest: HlsPreview component replaces fake LiveStrip/FauxFrame
- web-ui screens-admin: functional Settings tabs (S3, GPU, Growing, SDI, AMPP)
- mam-api /settings/growing: GET/PUT growing-files config
- mam-api /assets/:id/live-path: SMB UNC/POSIX path for live growing assets
- capture-manager: GROWING_ENABLED -> write hires to /growing instead of S3 stream
- recorders.js: pass GROWING_ENABLED to capture container, bind /growing mount
- docker-compose: mount /mnt/NVME/MAM/wild-dragon-growing on mam-api + worker
- premiere-plugin: Mount Live button, Relink-to-HiRes, live->ready status poll
2026-05-22 19:12:53 -04:00
629022ab5f
fix(worker): use npm install instead of npm ci — no package-lock.json present
2026-05-20 23:29:15 -04:00
76281b7564
feat: GPU worker Dockerfile using CUDA base with ffmpeg NVENC support
2026-05-20 14:18:55 -04:00
b175eaf54c
fix: clean up temp segment directory after conform job finishes
2026-05-19 23:06:54 -04:00
fb3b998cfd
fix(worker/thumbnail): mark asset ready even when thumbnail extraction fails
...
If the thumbnail job throws (network blip, ffmpeg error, short clip), the
asset was left stuck in status='processing' indefinitely. Since the proxy
already exists and the asset is playable, set status='ready' in the catch
block before re-throwing so BullMQ can still record the failure.
2026-05-18 23:51:04 -04:00
7260b188c5
fix: remove dead DB UPDATE calls in conform worker
...
The jobs table row no longer exists for conform jobs (POST /jobs/conform
now goes directly to BullMQ). The UPDATE queries were no-ops (WHERE id = NULL)
so they're safe to remove. BullMQ tracks completed/failed status itself.
2026-05-18 23:28:13 -04:00
717fdcd611
feat: extract and store fps/codec/resolution/duration_ms from source file
...
Uses getMediaInfo (ffprobe) on the downloaded original before transcoding.
Populates the asset record so the library can display accurate metadata.
2026-05-18 23:22:56 -04:00
817eaff8b1
feat: add getMediaInfo to executor.js using ffprobe JSON output
...
Exposes video stream fps/codec/resolution and container duration/size
so the proxy worker can populate asset metadata after transcoding.
2026-05-18 23:22:26 -04:00
562881f0db
fix(jobs): stall detection + manual kill button so 5h-stuck actives can't happen
...
A thumbnail job from earlier stayed 'active' for 6+ hours: worker was restarted at 70% progress, BullMQ left it in the active set, and there was no stall reaper because the worker was created with only the default options.
Worker now passes stalledInterval: 30000, lockDuration: 60000, lockRenewTime: 15000, maxStalledCount: 1 to the Worker constructor. If a run dies, BullMQ reclaims the job back to waiting within 30s and a 'stalled' event is logged. Otherwise the lock is renewed mid-job.
Jobs UI gains a 'Kill' button per row next to Details. Calls DELETE /api/v1/jobs/:id which already removes the job from Redis. Use it on any row that looks stuck.
2026-05-17 19:10:19 -04:00
cc174c4977
Fix worker/index.js: job.progress is a property not a function in BullMQ v3+
2026-05-16 00:46:53 -04:00
0bdfbaf130
fix(infra+workers): S3 creds, ffprobe, BullMQ awaits, thumbnail seek, bin optional, docker-compose vars, jobs Redis, recorders stop codes: thumbnail.js
2026-05-16 00:29:51 -04:00
647cf55389
fix(infra+workers): S3 creds, ffprobe, BullMQ awaits, thumbnail seek, bin optional, docker-compose vars, jobs Redis, recorders stop codes: proxy.js
2026-05-16 00:29:50 -04:00
8be9c20124
fix(infra+workers): S3 creds, ffprobe, BullMQ awaits, thumbnail seek, bin optional, docker-compose vars, jobs Redis, recorders stop codes: executor.js
2026-05-16 00:29:49 -04:00
b2da06b4cc
fix(infra+workers): S3 creds, ffprobe, BullMQ awaits, thumbnail seek, bin optional, docker-compose vars, jobs Redis, recorders stop codes: client.js
2026-05-16 00:29:48 -04:00
47c113e6c3
fix(auth+bugs): optional auth bypass, login routes, conform column name, panel metadata fields, login page: conform.js
2026-05-15 23:40:13 -04:00
6aff3cabc0
fix: set asset status=ready after thumbnail completes
2026-05-15 21:26:22 -04:00
10949bc460
fix: dispatch thumbnail job after proxy completes instead of racing from upload route
2026-05-15 21:26:16 -04:00
5bc6cf7c17
add services/worker/src/ffmpeg/executor.js
2026-04-07 21:58:21 -04:00
9e2833ba85
add services/worker/src/db/client.js
2026-04-07 21:58:20 -04:00
76e15b4b76
add services/worker/src/edl/parser.js
2026-04-07 21:58:20 -04:00
0537b7ab44
add services/worker/src/s3/client.js
2026-04-07 21:58:20 -04:00
7a677fe36e
add services/worker/src/workers/proxy.js
2026-04-07 21:58:19 -04:00
a97804bcb3
add services/worker/src/workers/thumbnail.js
2026-04-07 21:58:19 -04:00
1ff7ff8d2b
add services/worker/src/workers/conform.js
2026-04-07 21:58:19 -04:00
1a1f34a468
add services/worker/src/index.js
2026-04-07 21:58:18 -04:00
b2d0072104
add services/worker/package.json
2026-04-07 21:58:18 -04:00
167bf25443
add services/worker/Dockerfile
2026-04-07 21:58:18 -04:00