049beb8818
recorders: add granular codec / container / port columns
...
Expands recorders with video bitrate, framerate, audio codec / bitrate
/ channels, container format, and a node_id/device_index pair so the UI
can pin SDI recorders to a specific node + DeckLink port instead of
relying on a flat "BM1/BM2" index. capture-manager.js consumes these via
env vars and builds ffmpeg args from them.
2026-05-21 00:14:11 -04:00
a39c9831c5
cluster: dedupe rows + enforce unique hostname index
...
Migration 004 wrapped table creation in IF NOT EXISTS, so deploys with
a pre-existing cluster_nodes table never picked up the inline UNIQUE
constraint and accumulated duplicate hostnames on every container
restart. This migration purges older duplicates and adds the unique
index idempotently so the ON CONFLICT (hostname) upsert finally works.
2026-05-21 00:14:01 -04:00
066b9b17d3
feat: expand GPU transcoding settings (extension, framerate, rc mode, audio)
2026-05-20 23:41:42 -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
cc8ee63639
fix(node-agent): replace express with built-in http — no external deps needed
2026-05-20 22:59:03 -04:00
21d31f1678
mam-api: switch base image to node:22-slim (glibc) so host nvidia-smi binary runs
2026-05-20 19:19:33 -04:00
4d101bc812
mam-api: mount host nvidia-smi into container for GPU detection
2026-05-20 19:18:03 -04:00
1e4e2e436f
mam-api: add NODE_IP env passthrough and NVIDIA GPU device reservation
2026-05-20 18:59:55 -04:00
74299629e6
feat: detect GPUs via nvidia-smi and populate cluster_nodes capabilities
2026-05-20 17:25:11 -04:00
a4b9b5be82
fix: prefer NODE_IP env var in getLocalIp() for Docker deployments
2026-05-20 16:16:09 -04:00
a926da1c30
feat: add settings key-value table migration
2026-05-20 15:57:23 -04:00
11e1de1cf8
feat: add S3 / Object Storage settings section
2026-05-20 15:55:34 -04:00
7032cee6b3
feat: call loadS3ConfigFromDb() on startup after migrations
2026-05-20 15:53:26 -04:00
02cfa68b92
fix(assets): replace static S3_BUCKET with getS3Bucket() for dynamic config
2026-05-20 15:49:40 -04:00
737e69d72f
fix(upload): replace static S3_BUCKET with getS3Bucket() for dynamic config
2026-05-20 15:48:48 -04:00
ab504841c3
feat(settings): add S3 / object-storage settings routes (GET, PUT, test)
2026-05-20 15:48:14 -04:00
b1457f0aad
feat(s3): dynamic DB-driven config with rebuildS3Client + Proxy export
2026-05-20 15:47:40 -04:00
beb58d3cd6
Add Settings nav link to sidebar
2026-05-20 15:07:36 -04:00
2f48d0243b
Add Settings nav link to sidebar
2026-05-20 15:06:41 -04:00
cfdd0d1a55
Add Settings nav link to sidebar
2026-05-20 15:05:16 -04:00
0318d15c76
Add Settings nav link to sidebar
2026-05-20 15:02:09 -04:00
0433fc8805
fix(home): prevent bottom cutoff — safe center + remove min-height: 100%
2026-05-20 15:01:50 -04:00
777fa7fc2b
Add Settings nav link to sidebar
2026-05-20 14:56:04 -04:00
53392608e5
Add Settings nav link to sidebar
2026-05-20 14:51:37 -04:00
b7c7bb1662
Add Settings nav link to sidebar
2026-05-20 14:50:02 -04:00
81d51577b8
Add Settings nav link to sidebar
2026-05-20 14:47:54 -04:00
dd1c40c9c8
Add Settings nav link to sidebar
2026-05-20 14:45:49 -04:00
7c37eababd
Add Settings nav link to sidebar
2026-05-20 14:42:46 -04:00
6d371beda9
Add Settings nav link to sidebar
2026-05-20 14:39:36 -04:00
53805f2c59
Add Settings nav link to sidebar
2026-05-20 14:37:38 -04:00
74e87359e2
Add Settings nav link to sidebar
2026-05-20 14:36:03 -04:00
5e2683aba7
Add Settings nav link to sidebar
2026-05-20 14:32:34 -04:00
fe921d0444
Add Settings nav link to sidebar
2026-05-20 14:29:41 -04:00
12a52c40c9
feat: settings.html — GPU transcoding, SDI capture routing, AMPP integration
2026-05-20 14:21:18 -04:00
7486539b32
feat: worker compose adds capture profile (BMD DeckLink) and GPU env vars
2026-05-20 14:19:21 -04:00
a55c182be9
feat: docker-compose.gpu.yml overlay — NVIDIA GPU pass-through + NVENC worker
2026-05-20 14:19:02 -04:00
76281b7564
feat: GPU worker Dockerfile using CUDA base with ffmpeg NVENC support
2026-05-20 14:18:55 -04:00
1725ec1de9
feat: settings routes for hardware inventory, GPU transcoding, capture service URL
2026-05-20 14:18:43 -04:00
dd3c2894f6
feat: cluster heartbeat stores capabilities (GPU/BMD hardware detection)
2026-05-20 14:18:22 -04:00
a941f609f0
feat: node-agent detects NVIDIA GPUs and Blackmagic DeckLink cards, reports in heartbeat
2026-05-20 14:18:07 -04:00
86d2960b60
feat: add capabilities column to cluster_nodes (migration 005)
2026-05-20 14:17:44 -04:00
28a97e2ba3
fix(deploy): test-api.sh — skip capture 404 (sidecar/idle mode is normal)
2026-05-20 13:56:26 -04:00
5161644205
fix(capture): handle non-JSON responses from capture service gracefully
2026-05-20 13:55:06 -04:00
96ef569720
fix(deploy): test-api.sh — fix login POST, sequences 400, settings/ampp path
2026-05-20 13:54:30 -04:00
115c7340ee
fix(deploy): test-api.sh — fix curl -f flag swallowing 4xx, fgrep for literal [, correct /auth/me path
2026-05-20 13:52:59 -04:00
4dd377e28d
feat(cluster): add GET /:id/ping to probe node agent reachability and latency
2026-05-20 13:49:56 -04:00
3128ab43b3
feat(deploy): test-api.sh — API smoke test covering all major endpoints
2026-05-20 13:49:35 -04:00
0b49f28a80
feat(deploy): onboard-node.sh — one-command cluster node provisioning
2026-05-20 13:49:05 -04:00
0b255e063f
feat(deploy): docker-compose.worker.yml for cluster worker nodes
2026-05-20 13:48:27 -04:00
c5a358888b
feat(node-agent): heartbeat agent — CPU/mem stats, health endpoint, bearer token auth
2026-05-20 13:48:18 -04:00