BetterFrame/server/src/shared
Mitchell R a9484d1dd7
feat(cloud-cameras): type=cloud + bidirectional sync + PG default
Cloud cameras are now a distinct type ('cloud') managed entirely by
sync. Bidirectional: cameras added in vendor cloud appear automatically,
removed cameras get deleted. Cloud cameras and their entities are
read-only in admin UI — no manual editing.

- Camera type CHECK widened to include 'cloud'
- New columns: cloud_account_id, cloud_vendor_camera_id,
  cloud_stream_url, cloud_stream_type
- Repo: upsertCloudCamera, deleteCloudCamerasNotIn,
  listCloudCamerasByAccount
- Sync replaces import: full reconciliation per account
- Hik-Connect: fetch HLS preview URLs via previewURLs endpoint
- Tuya: fetch stream URLs during sync (not just on demand)
- Kiosk API: GET /api/kiosk/cameras/:id/stream returns fresh
  relay URL from vendor (session-based URLs expire)
- Cloud cameras show read-only detail page with cloud badge
- Coolify compose: postgres 18 as default, BF_DB=postgres,
  server depends_on postgres healthy

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-23 11:36:49 +02:00
..
cloud-cameras feat(cloud-cameras): type=cloud + bidirectional sync + PG default 2026-05-23 11:36:49 +02:00
artifact-cleanup.ts fix: PG cloud_accounts migration + rollout-safe cleanup + setup cursor 2026-05-23 02:59:27 +02:00
audit.ts feat(db): full async Repository conversion for PostgreSQL support 2026-05-23 02:07:44 +02:00
auth.ts feat(db): full async Repository conversion for PostgreSQL support 2026-05-23 02:07:44 +02:00
backup.ts feat(server): backup + restore (AES-256-GCM, PBKDF2, admin UI) 2026-05-14 07:44:01 +02:00
bundle.ts feat(smart-url): automated login/navigation sequences for web cells 2026-05-23 02:21:27 +02:00
camera-health.ts feat(db): full async Repository conversion for PostgreSQL support 2026-05-23 02:07:44 +02:00
cec-relay.ts refactor: collapse 6 non-service plugins into shared modules 2026-05-10 02:29:25 +02:00
coordinator-registry.ts feat(onvif): run discovery from selected kiosk 2026-05-20 06:16:27 +02:00
env-overrides.ts feat(server): env-var overrides for sec-config keys + docker healthchecks 2026-05-14 07:33:10 +02:00
firmware.ts fix(firmware): diagnostic dump + smart-quote / BOM / multi-quote handling 2026-05-18 22:52:35 +02:00
kiosk-lan.ts feat(preview): pull entity snapshot from active kiosk first 2026-05-21 10:35:27 +02:00
mqtt-bridge.ts feat(server): generic MQTT telemetry bridge (off by default) 2026-05-14 07:46:56 +02:00
nodered-bridge.ts feat(os-ota-ui): admin pages for OS releases + rollouts + per-kiosk panel 2026-05-21 11:30:33 +02:00
onvif.ts feat(onvif): event routing config + GetEventProperties + subscription status 2026-05-23 00:38:54 +02:00
os-updates.ts feat(os-ota): resumable chunked download with Range header support 2026-05-23 01:44:34 +02:00
pairing.ts feat(db): full async Repository conversion for PostgreSQL support 2026-05-23 02:07:44 +02:00
plugin-registry.ts refactor: collapse 6 non-service plugins into shared modules 2026-05-10 02:29:25 +02:00
rate-limit.ts feat(server): rate limit (login + pair) + CSP/security headers 2026-05-14 07:40:22 +02:00
secrets.ts fix: use deterministic HKDF key for cookie signing 2026-05-10 02:59:04 +02:00
snapshot.ts feat: multi-display + snapshot + health + GPIO + nodered embed 2026-05-13 01:18:22 +02:00
strip-secrets.ts feat: restructure Node-RED nodes + server event emission 2026-05-13 02:26:08 +02:00
tenant.ts feat(multi-tenant): schema-per-tenant model + PostgreSQL migration DDL 2026-05-23 01:15:49 +02:00
types.ts feat(cloud-cameras): type=cloud + bidirectional sync + PG default 2026-05-23 11:36:49 +02:00
version.ts fix(version): derive server version from git at Docker build time 2026-05-21 16:02:21 +02:00