- capture-manager.js, routes/capture.js: fix ffmpeg -sources decklink parse regex from v4l2 hex-address format (never matched DeckLink output) to correct indented-line format. Port 2+ (index 1+) was falling through to a wrong model-name fallback, causing ffmpeg to open the wrong input and produce black frames. Now logs the detected device list and the selected name at start. - recorders.js (/start): accept per-take projectId override in request body. If provided, clips go to that project instead of the recorder's default project_id. Used for both the live-asset INSERT and the PROJECT_ID env var passed to the capture container. - screens-ingest.jsx (RecorderRow): add project dropdown shown when recorder is stopped. Defaults to the recorder's configured project; operator can change it before hitting Record without editing the recorder config.
116 lines
5 KiB
Markdown
116 lines
5 KiB
Markdown
# Work Log — May 2026
|
|
|
|
## Summary
|
|
Session focused on auth system architecture, dashboard redesign, and audio track inspector. Multiple iterations on auth approach; settled on simplified local-account model with RBAC. Dashboard rebuilt as control-room status board. Audio tab completed with full metering and fader controls.
|
|
|
|
## Auth System Work
|
|
|
|
### Commits
|
|
- `002e5ac` — auth: top-to-bottom rework — local accounts, RBAC + client tag, audit log, env-bootstrap
|
|
- `d1f9557` — auth: park login flow — circle back
|
|
- `9726dbb` — Revert "auth: top-to-bottom rework..."
|
|
- `4172b0d` — rip out entire auth/login flow
|
|
|
|
### What Happened
|
|
Attempted comprehensive auth rewrite including:
|
|
- Local user account system with bcrypt hashing
|
|
- Role-based access control (admin/editor/viewer)
|
|
- Client tagging for audit trails
|
|
- Environment-based bootstrap (AUTH_ENABLED flag)
|
|
- Session management with PostgreSQL backing
|
|
|
|
**Decision**: Reverted entire auth work. Reason: complexity vs. current product stage. System was over-engineered for self-hosted use case where auth is optional.
|
|
|
|
**Current State**: Auth disabled by default (AUTH_ENABLED=false). When enabled, system returns synthetic /auth/me endpoint. No persistent user management yet.
|
|
|
|
### Related Fixes
|
|
- `cfcbec0` — fix(auth): make AUTH_ENABLED=true workable end-to-end
|
|
- `e71c330` — fix(auth): remove manual session.save() — was suppressing Set-Cookie header
|
|
- `65684aa` — fix(auth): ensure sessions table exists + log session.save errors
|
|
|
|
## Dashboard Redesign
|
|
|
|
### Commits
|
|
- `a48e1d9` — dashboard: rebuild as control-room status board (on air / up next / attention / work)
|
|
- `e5e0656` — dashboard: redesign stat cards, compress header, improve density
|
|
- `5de1e3d` — dashboard: add dense stat cards, cluster bars, job rows, sparkline fixes
|
|
- `48d54a3` — dashboard: add missing dash-* CSS classes; cluster: add stat-row/stat-card CSS
|
|
|
|
### What Changed
|
|
Transformed dashboard from generic metrics view to broadcast control-room interface:
|
|
- **On Air** section: live stream status, bitrate, duration
|
|
- **Up Next** section: queued clips/segments
|
|
- **Attention** section: warnings, errors, resource alerts
|
|
- **Work** section: active jobs, encoding progress
|
|
|
|
Added visual components:
|
|
- Dense stat cards with icon + value + trend
|
|
- Cluster health bars (CPU, memory, disk per node)
|
|
- Job progress rows with ETA
|
|
- Sparkline charts for trend visualization
|
|
|
|
CSS infrastructure added for consistent spacing/sizing across dashboard components.
|
|
|
|
## Audio Tab Implementation
|
|
|
|
### Commit
|
|
- `c48c7e6` — feat(audio-tab): full audio track inspector with meters, mute/solo, faders
|
|
|
|
### Features
|
|
- Per-track audio meters (VU-style, real-time)
|
|
- Mute/solo buttons per track
|
|
- Fader controls (0-100 dB range)
|
|
- Master output meter
|
|
- Track naming/labeling
|
|
- Visual feedback for clipping/peaks
|
|
|
|
## Other Work
|
|
|
|
### Storage & Admin
|
|
- `64d739b` — feat(admin): unified Storage settings page with mount/bucket health diagnostics
|
|
- `a44d8bd` — feat(admin): live video-presence indicators on cluster DeckLink ports
|
|
|
|
### Player & Streaming
|
|
- `a86c1c7` — fix(player): stitch S3 ranges around RustFS empty-body bug (#143)
|
|
- `d257a19` — fix(player): buffer indicator + 416 instead of 500 on out-of-range S3
|
|
- `37247fd` — fix(video): direct S3 signed URL for streaming + proxy bitrate 1.5Mbps
|
|
- `e4d4c00` — feat(proxy): VBR 500k-1M encoding for proxy generation
|
|
|
|
### Cluster & Hardware
|
|
- `55ff2e7` — feat(cluster): full hardware breakdown per node
|
|
- `5ff507b` — fix(node-agent): use nsenter to run nvidia-smi in host mount namespace
|
|
- `558c18e` — fix(node-agent): detect GPUs via docker run --gpus all ubuntu:22.04
|
|
- `a6f045b` — fix(node-agent): probe GPU via Docker API async at startup, cache result
|
|
|
|
### Release & Cleanup
|
|
- `04ce096` — chore: 1.2 ship-prep sweep — close 38 issues
|
|
- `f0f6156` — release: add v1.1.0 ZXP artifact (Growing tab + visual system alignment)
|
|
|
|
## Blockers / Open Questions
|
|
|
|
### Auth System
|
|
- **Decision needed**: Should auth be mandatory for production? Current design assumes optional.
|
|
- **API endpoints missing**: `/users`, `/auth/me`, `/groups` routes not yet implemented in mam-api
|
|
- **Frontend expects**: Users list, groups management, role-based UI filtering
|
|
|
|
### Dashboard
|
|
- Real data integration needed (currently mock data)
|
|
- Cluster stats endpoint integration
|
|
- Job queue polling/WebSocket updates
|
|
|
|
### Audio
|
|
- Backend audio processing pipeline not yet connected
|
|
- Metering data source undefined
|
|
- Fader changes need routing to encoder
|
|
|
|
## Next Steps (Recommended)
|
|
|
|
1. **Clarify auth requirements**: Is user management needed for v1.2? If yes, implement `/users` and `/groups` endpoints.
|
|
2. **Connect dashboard to live data**: Wire cluster stats, job queue, stream status to real endpoints.
|
|
3. **Audio backend integration**: Define audio processing pipeline and metering data flow.
|
|
4. **Testing**: Add integration tests for auth flow, dashboard data binding, audio control.
|
|
|
|
---
|
|
|
|
**Session ended**: 2026-05-27 06:31 CDT
|
|
**Status**: Work logged, auth decision documented, next steps identified
|