1816c7fa1e
fix(api): guard DELETE 404, verify sequence before clip wipe, add clip validation
2026-05-18 19:53:14 -04:00
05d49b7199
feat(api): add sequences route with CRUD, clip sync, and EDL export
2026-05-18 19:50:29 -04:00
eb248c690f
fix(db): use DO blocks for idempotent ALTER TABLE (ADD CONSTRAINT IF NOT EXISTS is not valid PG syntax)
2026-05-18 19:48:11 -04:00
c662df94c4
fix(db): add CHECK constraints, UNIQUE, and asset_id index to sequences schema
2026-05-18 19:46:42 -04:00
b12d8c619a
feat(db): add sequences and sequence_clips tables
2026-05-18 19:41:21 -04:00
0964645910
docs: add Phase 1 NLE Editor implementation plan
2026-05-18 19:34:53 -04:00
9032853629
docs: finalize spec with user decisions (auto-save, multi-sequence, 59.94fps, gap-ok)
2026-05-18 19:23:01 -04:00
67251a0dcd
docs: add editor + growing file + feature expansion design spec
2026-05-18 19:14:00 -04:00
0b94153518
Replace inline auth script with shared auth-guard.js in tokens.html
2026-05-18 13:46:10 -04:00
3203832aa9
Replace inline auth script with shared auth-guard.js in users.html
2026-05-18 13:44:35 -04:00
88c0781767
Replace inline auth script with shared auth-guard.js in jobs.html
2026-05-18 13:43:22 -04:00
81b832dc70
Replace inline auth script with shared auth-guard.js in recorders.html
2026-05-18 13:41:52 -04:00
936867c0c3
Replace inline auth script with shared auth-guard.js on recorders, jobs, users, tokens pages: tokens.html
2026-05-18 13:38:27 -04:00
de3920dd4a
Replace inline auth script with shared auth-guard.js on recorders, jobs, users, tokens pages: users.html
2026-05-18 13:38:26 -04:00
9dfefc5731
Replace inline auth script with shared auth-guard.js on recorders, jobs, users, tokens pages: jobs.html
2026-05-18 13:38:25 -04:00
f3fbb027f6
Replace inline auth script with shared auth-guard.js on recorders, jobs, users, tokens pages: recorders.html
2026-05-18 13:38:24 -04:00
e3128acb15
fix: use shared auth-guard.js on capture.html
2026-05-18 13:27:24 -04:00
d8766f18cc
fix: use shared auth-guard.js on upload.html
2026-05-18 13:26:19 -04:00
a40232e2b5
fix: use shared auth-guard.js on settings.html
2026-05-18 13:25:03 -04:00
ebe8b3be59
fix: use shared auth-guard.js on index.html
2026-05-18 13:24:25 -04:00
cb63e4743d
fix: /me returns guest user when AUTH_ENABLED is false so auth-guard never fires on dev
2026-05-18 13:21:37 -04:00
4f649b41a9
feat: add shared auth-guard.js with 401 → login redirect
2026-05-18 13:21:22 -04:00
725c3ed292
feat: rebuild settings.html with new shell layout
2026-05-18 13:08:19 -04:00
9ceb5db1e3
feat: add admin sidebar section and user footer widget
2026-05-18 13:08:04 -04:00
533250b1c3
feat: add admin sidebar section and user footer widget
2026-05-18 13:07:47 -04:00
ffffe8039e
feat: add admin sidebar section and user footer widget
2026-05-18 13:07:40 -04:00
027e73467f
feat: add admin sidebar section and user footer widget
2026-05-18 13:06:57 -04:00
95fa1b83b6
feat: add admin sidebar section and user footer widget
2026-05-18 13:06:40 -04:00
4213c8a7b3
feat: auth system — CSS page transitions, API helpers, users/tokens pages
2026-05-18 13:00:31 -04:00
c7d8be9f28
feat: auth system — CSS page transitions, API helpers, users/tokens pages
2026-05-18 12:59:36 -04:00
2d21d4d44d
feat: auth system — CSS page transitions, API helpers, users/tokens pages
2026-05-18 12:58:24 -04:00
d0f9848717
feat: auth system — CSS page transitions, API helpers, users/tokens pages
2026-05-18 12:57:50 -04:00
28a4b24911
feat(mam-api): wire users, groups, and tokens routes into main app
2026-05-18 12:51:14 -04:00
1e4c92c2df
feat(mam-api): add personal API token routes
2026-05-18 12:50:58 -04:00
d23ca9be73
feat(mam-api): add groups admin CRUD routes with member management
2026-05-18 12:50:49 -04:00
5ed604136c
feat(mam-api): add users admin CRUD routes
2026-05-18 12:50:33 -04:00
f93feb6e40
feat(mam-api): add auth middleware with session and Bearer token support
2026-05-18 12:50:21 -04:00
f57ed1b498
feat(mam-api): add auth middleware with session and Bearer token support
2026-05-18 12:45:15 -04:00
2d8c44c529
feat(mam-api): add groups and API tokens schema patch
2026-05-18 12:45:06 -04:00
3154cce37c
fix: ETag case mismatch in multipart upload complete route
...
api.js sends parts as { partNumber, ETag } (uppercase) but upload.js
was reading p.etag (lowercase), resulting in undefined ETag passed to
S3 CompleteMultipartUpload → InvalidPart error on all large file uploads.
Also handle both casings defensively.
2026-05-16 18:56:38 -04:00
17646c1155
fix(jobs): read from BullMQ queues instead of empty DB table
...
GET /api/v1/jobs now queries the proxy, thumbnail, and conform BullMQ
queues directly and returns normalized job objects with id, type,
status, progress, asset_id, timestamps, and error fields.
Also adds DELETE /:id to remove completed/failed jobs from the queue,
supporting the clearCompleted action in jobs.html.
The PostgreSQL jobs table is still used only for conform job creation
(POST /conform) to preserve that workflow.
2026-05-16 17:38:53 -04:00
44b59742b8
redesign: jobs.html — filter tabs, type chips, inline progress, detail panel
2026-05-16 17:02:39 -04:00
7aae1d2738
feat: redesign capture.html with new design system
2026-05-16 16:48:25 -04:00
f7a96677ef
feat: redesign recorders.html with new design system
2026-05-16 13:57:20 -04:00
cf93b2f378
feat: redesign upload.html and recorders.html: upload.html
2026-05-16 13:06:10 -04:00
c6cca63595
feat: redesign index.html, upload.html, recorders.html: index.html
2026-05-16 13:04:45 -04:00
c0d3d0590b
feat: full GUI redesign — broadcast control register aesthetic: common.css
2026-05-16 13:02:33 -04:00
f5abf359fb
fix(nginx): use Docker embedded DNS resolver to avoid startup DNS failure
...
nginx resolves upstream hostnames at config load time, which fails when
sibling containers haven't registered with the Docker DNS yet. Using
resolver 127.0.0.11 with set $upstream defers resolution to request
time, preventing the "host not found in upstream" startup crash.
2026-05-16 08:44:50 -04:00
af9c9dbae4
fix(db): parse DATABASE_URL in pool.js instead of individual DB_* vars
...
pool.js was using DB_HOST/DB_USER/etc which were never set.
The docker-compose.yml passes DATABASE_URL. Parse that if present,
fall back to individual vars for local dev.
2026-05-16 08:39:47 -04:00
3c97999ea3
chore: use env-var port bindings — no hardcoded host ports
...
All host ports are now configurable via .env variables with sensible
defaults. This prevents collisions when deploying alongside existing
services on TrueNAS or any other host.
2026-05-16 08:27:25 -04:00