BetterFrame/server/src/shared
Mitchell R d51e01ff0e
feat(pairing): validate replace-target matches existing kiosk
Replacing a kiosk now sanity-checks the incoming device:
- hardware_model must match (Pi 5 swapping in for Pi 5, not Pi 3)
- managed_image flag must match (don't silently switch BYO-OS ↔ image)
- capabilities can narrow legitimately but a "lost capabilities" diff is
  surfaced anyway so the operator notices.

Mismatch raises an error listing what changed; "Force replace" checkbox
on the pair form bypasses for legitimate hardware upgrades. Pending codes
panel also now renders proposed_name / hw_model / capabilities /
managed-image badge so the operator can eyeball the inbound device
before picking a replace target.
2026-05-21 10:16:55 +02:00
..
audit.ts feat(server): audit log — schema, helper, admin UI, hooks for login/pair/firmware 2026-05-14 07:38:18 +02:00
auth.ts fix: use deterministic HKDF key for cookie signing 2026-05-10 02:59:04 +02:00
backup.ts feat(server): backup + restore (AES-256-GCM, PBKDF2, admin UI) 2026-05-14 07:44:01 +02:00
bundle.ts revert(bundle): restore type==='rtsp' gate on stream fallback 2026-05-21 09:39:54 +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
mqtt-bridge.ts feat(server): generic MQTT telemetry bridge (off by default) 2026-05-14 07:46:56 +02:00
nodered-bridge.ts fix(nodered): kiosk-side layout.changed events + provisioning retries 2026-05-13 13:03:51 +02:00
onvif.ts feat(onvif): run discovery from selected kiosk 2026-05-20 06:16:27 +02:00
os-updates.ts feat(ota): add OS update release endpoints 2026-05-20 06:19:46 +02:00
pairing.ts feat(pairing): validate replace-target matches existing kiosk 2026-05-21 10:16:55 +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
types.ts fix(bundle): synthesize stream for any camera with rtsp_url 2026-05-21 09:23:50 +02:00
version.ts fix(release): surface build versions 2026-05-21 08:51:41 +02:00