dragonflight/services/mam-api/src/routes
ZGaetano 888ca65045 feat(capture): Deltacast SDI framework — test-card capture, cluster detection, UI
## capture service
- capture-manager.js: add 'deltacast' source_type to _buildInputArgs.
  Uses 'deltacast://<index>' with ffmpeg deltacast demuxer when
  /dev/deltacast<N> exists; falls back to lavfi testsrc2 + sine test card
  (matching deltacast-sdi-recorder standalone app) when hardware absent.
- routes/capture.js: add GET /devices/deltacast endpoint (enumerates
  /dev/deltacast* + DELTACAST_PORT_COUNT env fallback). Extend /probe to
  handle source_type=deltacast.

## node-agent
- detectHardware(): add 'deltacast' array to capabilities payload.
  Enumerates /dev/deltacast* nodes; falls back to DELTACAST_PORT_COUNT env.
  Adds DELTACAST_MODEL env support. Logs dc= count in heartbeat line.
- sidecar /start: bind /dev/deltacast* device nodes into capture containers
  when sourceType='deltacast'.

## mam-api
- cluster.js: add GET /cluster/devices/deltacast and
  GET /cluster/devices/deltacast/signal endpoints — same shape as
  blackmagic equivalents for UI parity.
- recorders.js /start: pass DELTACAST_PORT_COUNT env to capture container;
  bind /dev/deltacast* device nodes on local spawn.
- migration 024: ALTER TYPE source_type ADD VALUE 'deltacast' (idempotent).
- schema.sql: add 'deltacast' to source_type ENUM for fresh installs.

## web-ui
- modal-new-recorder.jsx: add 'Deltacast' source type card; fetch
  /cluster/devices/deltacast on selection; port picker with TEST CARD
  badge when hardware absent; falls through to manual index entry if
  no devices detected.
2026-05-28 23:12:40 +00:00
..
ampp.js feat: AMPP folder sync integration — pre-create folder hierarchy on upload, expose lookup endpoint for Script Task: ampp.js 2026-04-18 13:42:08 -04:00
assets.js feat(audio-tab): full audio track inspector with meters, mute/solo, faders 2026-05-27 04:53:52 +00:00
auth.js feat(auth): bound-hostname tokens for node-agent + return role from /me 2026-05-27 19:27:59 -04:00
bins.js rip out entire auth/login flow 2026-05-27 03:39:58 +00:00
capture.js rip out entire auth/login flow 2026-05-27 03:39:58 +00:00
cluster.js feat(capture): Deltacast SDI framework — test-card capture, cluster detection, UI 2026-05-28 23:12:40 +00:00
comments.js rip out entire auth/login flow 2026-05-27 03:39:58 +00:00
groups.js rip out entire auth/login flow 2026-05-27 03:39:58 +00:00
imports.js rip out entire auth/login flow 2026-05-27 03:39:58 +00:00
jobs.js fix(uxp+mam-api): Export Timeline render — xmeml schema + BullMQ job poll 2026-05-28 13:58:13 -04:00
metrics.js rip out entire auth/login flow 2026-05-27 03:39:58 +00:00
projects.js rip out entire auth/login flow 2026-05-27 03:39:58 +00:00
recorders.js feat(capture): Deltacast SDI framework — test-card capture, cluster detection, UI 2026-05-28 23:12:40 +00:00
schedules.js rip out entire auth/login flow 2026-05-27 03:39:58 +00:00
sdk.js rip out entire auth/login flow 2026-05-27 03:39:58 +00:00
sequences.js fix(mam-api): pass project_id into conform job so render can register the asset 2026-05-28 14:24:04 -04:00
settings.js rip out entire auth/login flow 2026-05-27 03:39:58 +00:00
storage.js rip out entire auth/login flow 2026-05-27 03:39:58 +00:00
system.js rip out entire auth/login flow 2026-05-27 03:39:58 +00:00
tokens.js feat(auth): bound-hostname tokens for node-agent + return role from /me 2026-05-27 19:27:59 -04:00
upload.js chore: 1.2 ship-prep sweep — close 38 issues 2026-05-27 02:06:14 +00:00
users.js fix(auth): final-review integration fixes — Users page alias + PATCH, CSRF on uploads + heartbeat, drop .bak 2026-05-27 15:42:42 -04:00