Commit graph

  • 4e4664b603 Add directory board editor UI with content picker, category/entry management ScreenTinker 2026-04-21 22:28:47 -0500
  • 08a83c9ba9 Add directory board widget renderer with scrolling, anti-burn-in, dark/light themes ScreenTinker 2026-04-21 22:28:37 -0500
  • a981171c94 SEO: open-source positioning, GitHub links, OG image, semantic <main> ScreenTinker 2026-04-21 19:56:22 -0500
  • ea80d3aca5 Landing: replace iframe mock with dashboard screenshot ScreenTinker 2026-04-21 19:47:13 -0500
  • 3476f2b7e7 Landing: group Sign In next to Start Free Trial on the right ScreenTinker 2026-04-21 19:37:41 -0500
  • e0bfa76545 Landing: float Sign In to far top-right, separate from Start Free Trial ScreenTinker 2026-04-21 19:30:33 -0500
  • 87a935cb74 Landing: fix mobile nav overflow so Sign In stays visible ScreenTinker 2026-04-21 19:27:19 -0500
  • 25f3870472 Landing: keep Sign In button visible on mobile nav ScreenTinker 2026-04-21 19:24:57 -0500
  • 52297ec618 Settings: add account profile + password change UI ScreenTinker 2026-04-21 19:13:20 -0500
  • 772ead28a2 Fix reset-admin.js: honor recovery token in requireAuth ScreenTinker 2026-04-21 19:08:49 -0500
  • 8da0e60c20 Mobile: public-facing pages (landing + login) ScreenTinker 2026-04-21 18:52:53 -0500
  • 481ae0209a Mobile: fix modal and form control overflow ScreenTinker 2026-04-21 18:48:51 -0500
  • 0bd34544e5 QA fixes: toast aria-live + scope playlist flex-wrap to mobile ScreenTinker 2026-04-21 16:00:41 -0500
  • 8cd5dd518a Playlist: add up/down reorder buttons ScreenTinker 2026-04-21 15:57:40 -0500
  • 06d3e93e21 Mobile: horizontal-scroll tables + tab fade (Commit 4/4) ScreenTinker 2026-04-21 15:56:01 -0500
  • b45d81cfaa Mobile: modals, forms, tap targets, toast (Commit 3/4) ScreenTinker 2026-04-21 15:51:12 -0500
  • 7c8504d593 Mobile: grid + layout reflow (Commit 2/4) ScreenTinker 2026-04-21 15:50:56 -0500
  • 09dbb4b199 Mobile: sidebar polish (Commit 1/4) ScreenTinker 2026-04-21 15:49:49 -0500
  • 2d3bb55db4 Fix startup crash on existing DB: defer group_id index to migration ScreenTinker 2026-04-16 07:59:49 -0500
  • 52dd44a3e8 Add group-level scheduling, group playlist assignment, and persist audio unlock ScreenTinker 2026-04-15 20:22:42 -0500
  • 2104c9cc9f Auto-reload web player when server code changes ScreenTinker 2026-04-13 22:44:47 -0500
  • ad3095cdf5 Fix player video cycling bug and connecting overlay during cached playback ScreenTinker 2026-04-13 22:34:48 -0500
  • d73abc809d Simplify service worker: stop intercepting content requests ScreenTinker 2026-04-13 22:24:15 -0500
  • b4ac2fb821 Fix broken service worker + device auth rejection on playlist refresh ScreenTinker 2026-04-13 22:18:08 -0500
  • dc7450b6a7 Offline resilience: persist playlist cache for cold-start recovery ScreenTinker 2026-04-13 21:49:45 -0500
  • 470197d203 Fix 8 security findings from Phase 3 audit + device-detail banner refresh ScreenTinker 2026-04-13 21:36:16 -0500
  • f30d8b82cd Unify publish behavior: all edits go to draft, require explicit publish ScreenTinker 2026-04-13 21:22:44 -0500
  • 436a3be7f6 Phase 3: playlist publish/draft state with auto-publish from device detail ScreenTinker 2026-04-13 20:52:29 -0500
  • 1cf6b93512 Update README with Phase 2 features and recent additions pre-phase3 ScreenTinker 2026-04-11 23:20:55 -0500
  • 1d253c4cae Android + web player: handle device_token authentication ScreenTinker 2026-04-11 22:52:52 -0500
  • afbe113acf Security audit remediation: auth, IDOR, XSS, hardening ScreenTinker 2026-04-11 22:48:07 -0500
  • b87904c326 Add schema_migrations table for run-once migration tracking ScreenTinker 2026-04-11 22:28:10 -0500
  • df7919f84f Migration: add detailed logging for device, item, and video probe counts ScreenTinker 2026-04-11 22:25:42 -0500
  • 1483500458 Probe video durations during migration and v1 import ScreenTinker 2026-04-11 22:24:56 -0500
  • aee6766c4c Migration: probe video durations with ffprobe during assignment-to-playlist conversion ScreenTinker 2026-04-11 22:21:40 -0500
  • aca1558702 Show auto-generated playlists by default in playlist list ScreenTinker 2026-04-11 22:17:31 -0500
  • af03615ec0 Phase 2: device-detail.js adds playlist picker dropdown ScreenTinker 2026-04-11 22:12:17 -0500
  • a66feab53e Phase 2: playlists UI shows display count, auto-generated filter toggle ScreenTinker 2026-04-11 22:10:48 -0500
  • 40fcbbc32a Phase 2: add playlist assignment + group assign API methods to frontend ScreenTinker 2026-04-11 22:09:56 -0500
  • 6f01d319f5 Phase 2: playlists API returns display_count, is_auto_generated + assign endpoint ScreenTinker 2026-04-11 22:09:32 -0500
  • 33a5be39ed Phase 2: export v2 format with playlists, backward-compat v1 import ScreenTinker 2026-04-11 22:08:44 -0500
  • 19a08ef5bc Phase 2: schedules accept playlist_id, scheduler overrides device playlist ScreenTinker 2026-04-11 22:07:36 -0500
  • f35894d17a Phase 2: device-groups assign-content uses playlists + new assign-playlist endpoint ScreenTinker 2026-04-11 22:06:26 -0500
  • a9aaebc08d Phase 2: devices.js returns playlist items instead of assignments ScreenTinker 2026-04-11 22:05:48 -0500
  • 55c8e354b4 Phase 2: assignments.js operates on device playlists instead of assignments table ScreenTinker 2026-04-11 22:05:19 -0500
  • 6d4d39c2d8 Phase 2: buildPlaylistPayload reads from playlist_items via device.playlist_id ScreenTinker 2026-04-11 22:04:26 -0500
  • c8dffab5ad Phase 2 migration: convert existing assignments to per-device playlists ScreenTinker 2026-04-11 22:03:41 -0500
  • 2af3cec8a6 Phase 2 schema: add playlist_id to devices/schedules, is_auto_generated to playlists ScreenTinker 2026-04-11 22:00:56 -0500
  • 19fc38a59e Make ffprobe re-probe async to avoid blocking the event loop pre-phase2-security ScreenTinker 2026-04-11 21:30:11 -0500
  • 1ad390229b Re-probe video duration with ffprobe when adding to playlist ScreenTinker 2026-04-11 21:24:41 -0500
  • adb107f228 Use content's native duration for videos added to playlists ScreenTinker 2026-04-11 21:23:07 -0500
  • 9057e5b6d1 Add getWidgets API method for playlist add-item modal ScreenTinker 2026-04-11 21:19:24 -0500
  • bc7e68d680 Add playlists view with list, detail, and item management ScreenTinker 2026-04-11 21:18:43 -0500
  • 17e5a8f423 Add playlist API methods to frontend api.js ScreenTinker 2026-04-11 21:16:54 -0500
  • 31e5a5a8f3 Add playlists route to frontend app.js router ScreenTinker 2026-04-11 21:16:08 -0500
  • 865a89836b Add Playlists nav entry to sidebar between Content and Layouts ScreenTinker 2026-04-11 21:15:25 -0500
  • 94f48e76b0 Register playlist routes in server.js ScreenTinker 2026-04-11 21:10:24 -0500
  • e262216c58 Add playlist API routes with full CRUD and item management ScreenTinker 2026-04-11 21:09:58 -0500
  • 1fbeccff7c Add playlists and playlist_items tables to schema ScreenTinker 2026-04-11 21:09:12 -0500
  • f57fc5ad81 Security hardening: auth checks, XSS escaping, input validation ScreenTinker 2026-04-09 22:09:40 -0500
  • faa437881f Add device groups UI, group commands, proxy IP fix, and web player detection ScreenTinker 2026-04-09 22:03:44 -0500
  • e7081a579c Fix widget assignments, designer scaling, and cache strategy ScreenTinker 2026-04-08 16:25:05 -0500
  • e2879fff58 Instant playlist push, fix YouTube looping, auto-fetch video titles ScreenTinker 2026-04-08 15:42:41 -0500
  • b7d0c94313 Move player downloads into Add Display modal for discoverability ScreenTinker 2026-04-08 15:04:33 -0500
  • 8a84923d72 Fix YouTube playback: use IFrame API, fix playlist change detection, network-first caching ScreenTinker 2026-04-08 14:56:49 -0500
  • af371b9d89 Fix YouTube embed error 153 - add mute, origin, and enablejsapi params ScreenTinker 2026-04-08 14:25:44 -0500
  • 4ae7533b85 Hide unclaimed devices from dashboard, add unassigned API, add upgrade docs ScreenTinker 2026-04-08 13:13:46 -0500
  • d18045a386 Fix web player single-video loop and service worker cache errors ScreenTinker 2026-04-08 12:58:43 -0500
  • d67dd41056 Add YouTube and Export/Import to README features list ScreenTinker 2026-04-08 12:21:05 -0500
  • 1594a9d4a4 Initial open source release ScreenTinker 2026-04-08 12:14:53 -0500