Commit graph

  • c1aee36326
    Merge pull request #62 from screentinker/fix/ai-separate-image-key screentinker 2026-06-09 13:47:52 -0500
  • dc6424a3cc feat(ai): separate optional image API key (#41) ScreenTinker 2026-06-09 13:47:47 -0500
  • c23e8ca289
    Merge pull request #61 from screentinker/feat/ai-images-phase2 screentinker 2026-06-09 13:40:19 -0500
  • 303c83e86a feat(ai): generate background + foreground images for signs (#41 Phase 2) ScreenTinker 2026-06-09 13:40:14 -0500
  • df4110d9ca
    Merge pull request #60 from screentinker/fix/ai-deoverlap screentinker 2026-06-09 12:57:45 -0500
  • 734795f20b fix(ai): de-overlap generated text + layer shapes behind text (#41) ScreenTinker 2026-06-09 12:57:41 -0500
  • 958f5683e4
    Merge pull request #59 from screentinker/fix/ai-canvas-fit screentinker 2026-06-09 12:51:27 -0500
  • 4cc8ccb67e fix(ai): keep generated designs inside the canvas (#41) ScreenTinker 2026-06-09 12:51:23 -0500
  • f7f78a7486
    Merge pull request #58 from screentinker/feat/ai-model-dropdown screentinker 2026-06-09 12:36:34 -0500
  • 1420a0d2b7 feat(ai): model dropdown + longer generate timeout (#41) ScreenTinker 2026-06-09 12:36:29 -0500
  • d117016f2d
    Merge pull request #57 from screentinker/feat/ai-content-design screentinker 2026-06-09 12:24:00 -0500
  • 0ba36949cf feat(ai): AI content design in the Designer, BYO endpoint (#41 Phase 1) ScreenTinker 2026-06-09 12:23:55 -0500
  • bcdffd4f56
    Merge pull request #56 from screentinker/fix/branding-fouc screentinker 2026-06-09 11:43:46 -0500
  • 2de99a12e9 fix(branding): no ScreenTinker default flash on load/switch (#38) ScreenTinker 2026-06-09 11:43:42 -0500
  • 97c52408de
    Merge pull request #55 from screentinker/fix/content-thumbnail-auth screentinker 2026-06-09 11:19:01 -0500
  • 6760f61fb8 fix(content): show thumbnails for not-yet-assigned content (#39) ScreenTinker 2026-06-09 11:18:56 -0500
  • 61279e9bea
    Merge pull request #54 from screentinker/fix/upload-multiple-hint screentinker 2026-06-09 10:50:56 -0500
  • 020f0bfea7 ui(content): advertise multi-file upload in the drop-zone text (#39) ScreenTinker 2026-06-09 10:50:51 -0500
  • 3f429aec85
    Merge pull request #53 from screentinker/fix/template-zone-duplication screentinker 2026-06-09 10:16:06 -0500
  • cb21b8e34a fix(layouts): atomic zone save (stop template zone duplication) ScreenTinker 2026-06-09 10:16:01 -0500
  • e2460855d9
    Merge pull request #52 from screentinker/fix/migrate-count-addcolumn screentinker 2026-06-09 10:02:43 -0500
  • bae70e9154 fix(db): count only ADD COLUMN as new migrations in boot log (#37 follow-up) ScreenTinker 2026-06-09 10:02:38 -0500
  • 7ef3e2eb93
    Merge pull request #51 from screentinker/fix/migration-schema-verify screentinker 2026-06-09 09:31:57 -0500
  • 7ab19adcea fix(db): observable migrations + fail-fast schema verification (#37) ScreenTinker 2026-06-09 09:31:52 -0500
  • 9deccf0a2f
    Merge pull request #50 from screentinker/feat/admin-delete-org-workspace screentinker 2026-06-09 09:22:25 -0500
  • 0d14db97a6 feat(admin): Delete Organization + Workspace with cascade (#36) ScreenTinker 2026-06-09 09:22:21 -0500
  • 36d1578794
    Merge pull request #49 from screentinker/feat/admin-create-org screentinker 2026-06-09 09:10:20 -0500
  • ae595a208d feat(admin): Create Organization for platform admins (#35) ScreenTinker 2026-06-09 09:10:15 -0500
  • 69b46647c5
    Merge pull request #48 from screentinker/feat/zone-fit-mode screentinker 2026-06-09 08:55:20 -0500
  • 8fd971405e feat(layouts): per-zone fit mode + default to 'contain' ScreenTinker 2026-06-09 08:55:15 -0500
  • 7af9f7a057
    Merge pull request #47 from screentinker/fix/player-coldstart-layout screentinker 2026-06-09 08:31:03 -0500
  • 397aedf2d8 fix(player-web): don't optimistic-render fullscreen when layout is unknown ScreenTinker 2026-06-09 08:30:58 -0500
  • 8de15465ad
    Merge pull request #46 from screentinker/fix/player-cache-layout screentinker 2026-06-09 08:27:46 -0500
  • 00964e90a8 fix(player-web): cache layout so cold start renders zones on first pass ScreenTinker 2026-06-09 08:27:41 -0500
  • ccee032740
    Merge pull request #45 from screentinker/fix/zone-widget-content-type screentinker 2026-06-09 08:22:10 -0500
  • 4fe8e87416 fix(player-web): render widgets in any zone, not just zone_type=widget ScreenTinker 2026-06-09 08:22:05 -0500
  • 67d2eae2cf
    Merge pull request #44 from screentinker/fix/widget-render-nostore screentinker 2026-06-08 23:46:46 -0500
  • 8e7d599170 fix(widgets): no-store on widget/kiosk render ScreenTinker 2026-06-08 23:46:42 -0500
  • 8dce93d4dc
    Merge pull request #43 from screentinker/fix/widget-render-frameable screentinker 2026-06-08 23:37:52 -0500
  • 827b1c4c87 fix(widgets): make widget/kiosk render frameable (X-Frame-Options) ScreenTinker 2026-06-08 23:36:53 -0500
  • d13ac58e74
    Merge pull request #30 from screentinker/fix/widget-render-xss screentinker 2026-06-08 23:20:38 -0500
  • ac1b24fe43
    Merge pull request #42 from screentinker/fix/sw-video-passthrough screentinker 2026-06-08 23:17:08 -0500
  • 68fb6a985e Merge remote-tracking branch 'origin/main' into fix/sw-video-passthrough ScreenTinker 2026-06-08 23:15:32 -0500
  • 546fcdc105 fix(player-web): independent per-zone rotation in multi-zone layouts ScreenTinker 2026-06-08 23:12:29 -0500
  • d4f71bbf3a fix(sw): stop the admin service worker from breaking video playback ScreenTinker 2026-06-08 23:08:13 -0500
  • 6ef2cb548c
    Merge pull request #33 from screentinker/fix/fullscreen-widgets screentinker 2026-06-08 22:54:11 -0500
  • 5c0721b77f Merge branch 'main' into fix/fullscreen-widgets ScreenTinker 2026-06-08 22:42:59 -0500
  • 3510670ce1 fix(android): YouTube Error 153 + visible web-frame errors ScreenTinker 2026-06-08 22:42:59 -0500
  • c184b94602 fix(android): log per-zone content switches (live debug) ScreenTinker 2026-06-08 22:36:07 -0500
  • c94757fc97 fix(android): per-zone rotation + stop fullscreen controller in multi-zone ScreenTinker 2026-06-08 22:19:25 -0500
  • 73912d5f58 feat(debug): live per-device debug logging toggle on the device screen ScreenTinker 2026-06-08 21:49:03 -0500
  • 50d7dbe222 fix(player): zone reset on multi->single layout switch + don't blank multi-zone ScreenTinker 2026-06-08 21:31:27 -0500
  • c1fbe165e7
    Merge pull request #34 from screentinker/fix/sidebar-scroll screentinker 2026-06-08 21:21:00 -0500
  • 2e14de2069 fix(ui): make sidebar nav scrollable on short screens ScreenTinker 2026-06-08 20:41:15 -0500
  • c7bbc4f815 fix(android): ZoneManager.cleanup must not remove the activity's static views ScreenTinker 2026-06-08 20:34:30 -0500
  • 171b69233c
    Merge pull request #32 from screentinker/fix/android-device-fixes screentinker 2026-06-08 20:08:58 -0500
  • 911cd07951 fix(android): render widgets in fullscreen / single-zone layouts ScreenTinker 2026-06-08 20:07:23 -0500
  • 60cda97b1d fix(android): stop pairing-code glyph clip + remove duplicate instruction ScreenTinker 2026-06-08 19:53:44 -0500
  • 86340caf9d fix(android): keep pairing code fully on-screen (was clipped at bottom) ScreenTinker 2026-06-08 19:46:30 -0500
  • 06c6c3214b fix(android): make pairing code fit/visible on all screen sizes ScreenTinker 2026-06-08 19:18:29 -0500
  • d41bd1f27d fix(android): verify OTA APK signature before install + disable backup (Critical) ScreenTinker 2026-06-08 19:06:23 -0500
  • ccaf83a698 fix(android): make pairing code fit/visible on all screen sizes ScreenTinker 2026-06-08 19:18:29 -0500
  • 401c4b00b5 fix(security): sanitize public widget render to close stored XSS ScreenTinker 2026-06-08 19:11:14 -0500
  • 9bad686667 fix(android): verify OTA APK signature before install + disable backup (Critical) ScreenTinker 2026-06-08 19:06:23 -0500
  • 50ad1f670b
    Merge pull request #28 from screentinker/fix/security-quick-wins screentinker 2026-06-08 19:04:14 -0500
  • ba3e2cc785 fix(security): patch quick-win findings from the codebase review ScreenTinker 2026-06-08 19:02:19 -0500
  • 66ef47239f fix(android): Android 14+ MediaProjection / foreground-service compliance (#5) ScreenTinker 2026-06-08 17:19:56 -0500
  • d6e85b1745
    Merge pull request #26 from screentinker/feat/global-default-branding-15 screentinker 2026-06-08 17:03:39 -0500
  • eb13f716d0 feat(branding): instance-level default white-label branding (#15) ScreenTinker 2026-06-08 16:55:22 -0500
  • 5433a97bc9
    Merge pull request #25 from screentinker/fix/single-workspace-settings-19 screentinker 2026-06-08 16:40:44 -0500
  • 3bf108d0fb fix(switcher): expose workspace settings for single-workspace users (#19) ScreenTinker 2026-06-08 16:39:42 -0500
  • c1f2f0a637
    Merge pull request #24 from screentinker/feat/searchable-org-switcher-16 screentinker 2026-06-08 16:32:45 -0500
  • 1f62ffbc3b feat(switcher): searchable/filterable org switcher (#16) ScreenTinker 2026-06-08 16:31:46 -0500
  • 0f84cac440
    Merge pull request #23 from screentinker/feat/admin-user-workspace-mgmt screentinker 2026-06-08 16:26:07 -0500
  • 2872b883c7 feat(admin): manage a user's workspace memberships (multi + per-workspace role) ScreenTinker 2026-06-08 16:24:52 -0500
  • 66c95bb331 fix(db): cascade tenant resources on workspace/org delete (#18 follow-up) ScreenTinker 2026-06-08 16:01:52 -0500
  • ec44cb785a
    Merge pull request #21 from screentinker/fix/delete-user-fk-cascade-18 screentinker 2026-06-08 10:52:50 -0500
  • 05f9c20ecf fix(admin): user deletion failed with FOREIGN KEY constraint (#18) ScreenTinker 2026-06-08 10:51:32 -0500
  • 7615eabdd5 feat(admin): Workspace column + inline move/assign on the Users page ScreenTinker 2026-06-08 10:21:41 -0500
  • 65691e26da chore(admin-sw): bump cache to v3 to evict stale clients ScreenTinker 2026-06-05 15:22:24 -0500
  • 400872f8ea feat(admin): Add User from the platform Users page (workspace picker) ScreenTinker 2026-06-05 14:40:31 -0500
  • 9aae64c47a
    Merge pull request #20 from screentinker/docs/surface-disable-registration screentinker 2026-06-08 10:30:13 -0500
  • 406f481a57 docs: surface DISABLE_REGISTRATION self-hosting flag (#11) ScreenTinker 2026-06-08 10:29:08 -0500
  • 212170eb88
    Merge pull request #17 from screentinker/feat/role-model-and-admin-users screentinker 2026-06-05 13:44:46 -0500
  • 5502a3eaa8 fix(roles): make platform_operator assignable + add deny/assign regression tests ScreenTinker 2026-06-05 12:44:39 -0500
  • 7674f6dc9f test(admin): node:test coverage for Add User + role gating ScreenTinker 2026-06-05 11:23:06 -0500
  • 54549420e7 feat(signup): optional org-on-create for self-service signups (#12) ScreenTinker 2026-06-05 11:16:27 -0500
  • 6e31770cee feat(admin): admin-provisioned user creation + first-login gate (#10) ScreenTinker 2026-06-05 11:03:56 -0500
  • 48902f6807 feat(roles): add cross-org platform_operator staff role (#13) ScreenTinker 2026-06-05 10:30:21 -0500
  • 797eab7c8d refactor(roles): normalize the platform-role model (#14) ScreenTinker 2026-06-05 09:58:46 -0500
  • 0fec335e75 docs: add Android player troubleshooting & recovery guide ScreenTinker 2026-06-03 19:58:09 -0500
  • 890ec5790f fix(proof-of-play): throttle play_logs writes to prevent runaway bloat ScreenTinker 2026-06-02 09:52:22 -0500
  • cbe00d6c85 feat(signup): T+3 activation nudge for users with zero paired screens ScreenTinker 2026-05-30 20:28:24 -0500
  • 6edc50203a feat: implement AI improvements AI Scout Agent 2026-05-31 00:43:12 +0300
  • 2f78fa1106 chore: track .env.example (un-ignore from .env.* rule) ScreenTinker 2026-05-30 16:16:52 -0500
  • c0b220836a fix(signup): make admin-notify recipient env-driven, not hardcoded ScreenTinker 2026-05-30 16:16:33 -0500
  • a0abdc01ed fix(signup): route admin signup notification to support@ not personal inbox ScreenTinker 2026-05-30 14:52:59 -0500
  • b67fbaa1b6 feat(signup): welcome email + admin signup notification (slice 1) ScreenTinker 2026-05-30 14:50:27 -0500
  • d7e3ae6076 security(widgets): tighten webpage widget inner sandbox ScreenTinker 2026-05-30 13:14:31 -0500
  • fe36c8c4b9 security(widgets): add sandbox="allow-scripts" to widget iframes ScreenTinker 2026-05-28 12:28:34 -0500