screentinker/server
ScreenTinker 436a3be7f6 Phase 3: playlist publish/draft state with auto-publish from device detail
Schema: add status and published_snapshot columns to playlists table.
Migration snapshots all existing playlists as published (idempotent via schema_migrations).

Devices always receive the published_snapshot, not live playlist_items.
Edits from device-detail/groups auto-publish immediately (display updates instantly).
Edits from playlist detail page go to draft (requires explicit publish).
POST /playlists/:id/publish snapshots and pushes to all devices.
POST /playlists/:id/discard reverts playlist_items from published snapshot.
Content deletion scrubs references from all published snapshots.

Frontend: draft badge in playlist list, prominent yellow banner with publish/discard
buttons on playlist detail and device detail pages.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 20:52:29 -05:00
..
db Phase 3: playlist publish/draft state with auto-publish from device detail 2026-04-13 20:52:29 -05:00
middleware Security audit remediation: auth, IDOR, XSS, hardening 2026-04-11 22:48:07 -05:00
player Android + web player: handle device_token authentication 2026-04-11 22:52:52 -05:00
routes Phase 3: playlist publish/draft state with auto-publish from device detail 2026-04-13 20:52:29 -05:00
services Phase 2: schedules accept playlist_id, scheduler overrides device playlist 2026-04-11 22:07:36 -05:00
ws Phase 3: playlist publish/draft state with auto-publish from device detail 2026-04-13 20:52:29 -05:00
config.js Initial open source release 2026-04-08 12:14:53 -05:00
package-lock.json Initial open source release 2026-04-08 12:14:53 -05:00
package.json Initial open source release 2026-04-08 12:14:53 -05:00
server.js Security audit remediation: auth, IDOR, XSS, hardening 2026-04-11 22:48:07 -05:00