ScreenTinker
7c8504d593
Mobile: grid + layout reflow (Commit 2/4)
...
- Dashboard stats row (.dash-stats-row): flex column on mobile
- Content-library toolbar: stack upload area + remote URL + YouTube boxes vertically
- Info grid: 1 col on mobile (was 2 col); device detail metadata reads cleaner
- Content grid: drop to 1 col below 480px (iPhone SE)
- Schedule controls: wrap, device select fills row
- Schedule calendar: already wrapped in overflow-x:auto, kept horizontal-scroll
approach (future: dedicated mobile day-view)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-21 15:50:56 -05:00
ScreenTinker
afbe113acf
Security audit remediation: auth, IDOR, XSS, hardening
...
- Device WebSocket authentication: devices get a device_token on
registration, must present it on reconnect. All WS events require
prior auth. Timing-safe token comparison.
- IDOR fixes: ownership checks on schedules (device, week), layouts
(all CRUD, zones, duplicate, device assign), video-walls (content,
device-config).
- XSS prevention: shared esc() helper in utils.js, fixed 13 innerHTML
injection points across 9 frontend files.
- OAuth hardening: no longer silently overwrites auth_provider on
accounts with local passwords (returns 409).
- JWT pinned to HS256 for sign and verify.
- Password policy: change endpoint now requires 8 chars (was 6).
- HSTS header enabled (max-age 1 year, includeSubDomains).
- Stripe webhook rejects unsigned payloads when no secret configured.
- Screenshot size validation (max 2MB base64).
- Rate limiting on exports, imports, content operations.
- Content file serving checks playlist_items instead of old assignments.
- Content ownership verified in device-groups assign-content.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 22:48:07 -05:00
ScreenTinker
af371b9d89
Fix YouTube embed error 153 - add mute, origin, and enablejsapi params
...
- Add mute=1, enablejsapi=1, and origin params to YouTube embed URLs
- Fix applies at creation time (content route) and playback time (player)
- Existing YouTube content gets fixed params via fixYoutubeUrl() helper
- Also fixes content library preview iframe
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 14:25:44 -05:00