Release history
watchstate releases
Self-hosted service to sync your plex, jellyfin and emby play state. without relying on 3rd-party external services.
All releases
14 shown
Fixed legacy DB migration command now skips non‑existent tables.
Full changelog
What's Changed
- fix: allow legacy db migration command to skip tables that dont exists by @arabcoders in https://github.com/arabcoders/watchstate/pull/820
Full Changelog: https://github.com/arabcoders/watchstate/compare/v1.8.0...v1.8.1
Commits since v1.8.0
- a83098e fix: allow legacy db migration command to skip tables that dont exists. Fixes #819
- HMAC signature verification for command requests
- CLI view for history
- Additional locking handling in processing DB
Full changelog
What's Changed
- Refactor: move migrations over to new db package. by @arabcoders in https://github.com/arabcoders/watchstate/pull/815
- fix: webhook failing sometimes during long import operations. by @arabcoders in https://github.com/arabcoders/watchstate/pull/816
Full Changelog: https://github.com/arabcoders/watchstate/compare/v1.7.0...v1.8.0
Commits since v1.7.0
- fca37d9 fix: prevent infinite loop when StreamBody used in wrong way.
- f28211b refactor: improve the console history.
- 6731b4c refactor: how we handle and discover prune handlers
- 8a8f045 feat: implement HMAC signature verification for command requests.
- 2f0cefe chore: better naming format for tests, and updated external packages
- 9308e87 fix: another attempt at fixing sqlite 21 bad parameter or other API misuse error
- 4b03386 refactor: move migrations and db operations over to new package.
- 17049a1 fix: some tests didnt set the tmpPath correctly.
- b0b2683 refactor: fix sqlite pragma loading
- 61724f8 refactor: standardize user selection cross commands
- 5775d34 chore: delete useless tests and standardize tests support utils
- 88d3b85 refactor: decouple old dblayer from new package connection
- 0771186 fix: webhook failing sometimes during long import operations.
- e253dd0 feat: add CLI view for history view
- d493cde feat: handle more locking cases in processing db.
- 6884835 refactor: tests
- 233230a refactor: handle emby multipart request and test events.
- 0415550 feat: redesign the video player.
- cc554fc refactor: queue webhooks directly to cache if task scheduler is runnig task.
- 00b6f97 fix: add compat for v1.7.0 migrations
- 1fe7290 feat: link task prev run to event id
- Playlist sync across multiple backends
- Plex NFO agent support
- OpenAPI viewer
Full changelog
What's Changed
- feat: Playlist Sync by @arabcoders in https://github.com/arabcoders/watchstate/pull/812
- feat: add support for plex new nfo agent by @arabcoders in https://github.com/arabcoders/watchstate/pull/814
Full Changelog: https://github.com/arabcoders/watchstate/compare/v1.6.0...v1.7.0
Commits since v1.6.0
- 01b6444 feat: initial code to support playlist sync cross backends
- 63279a1 refactor: add more logging to playlist sync and switch to more relaxing sync mode
- 22d6174 docs: add openapi viewer
- cf669fb fix: fix an edge case where due to global transaction some inserts would fail and the failed prepared statement will carry over.
- 5c81df1 fix: sqlite 21 bad parameter or other API misuse triggered sometimes due to different scaler type
- cbf5f82 refactor: minor UI updates to logs rendering
- 18f3baf feat: add support for plex new nfo agent
- Harden security throughout API endpoints
- Restrict auth open scope to limited routes
- Ratelimit middleware
- Environment key management commands
- API token refresh
Full changelog
What's Changed
- feat(console): gracefully handle command execution restore by @arabcoders in https://github.com/arabcoders/watchstate/pull/806
- Refactor: Harden security throughout API endpoints by @arabcoders in https://github.com/arabcoders/watchstate/pull/807
- Fix: Major performance tuning and bug fixes by @arabcoders in https://github.com/arabcoders/watchstate/pull/811
Full Changelog: https://github.com/arabcoders/watchstate/compare/v1.5.1...v1.6.0
Commits since v1.5.1
- fc5352a refactor: improve history rendering and add raw view to search
- fa34ef1 feat(console): gracefully handle command execution restore
- 7afc881 fix(console): harden the restore logic
- 0aed994 refactor(console): make ping event a comment instead of an event
- 7c67e53 refactor: extend the form guard to route change as well
- de4899a refactor: as player endpoint is public and secured by token it doesnt need the api key.
- 137db07 fix: restrict the auth open scope to limited routes
- b4bcdc9 feat: add Ratelimit middleware
- e70e620 feat: add commands to manage environment keys
- 3a14818 refactor: update dialog message handling
- 7983361 feat: add token refresh to the API
- 30812b6 refactor: drop command auto run in web console
- de53247 feat: add TestCommand for API endpoint testing
- c378100 refactor: limit backup API endpoint to json/zip files
- 0810c0e feat: enhance static asset serving and restrict static serving to specified dirs
- 4cc6c5a fix: allow setting theme as system
- 30e49e2 fix: update tests to target existing file.
- d0cbd5c fix: do not fallback to remote api for icons.
- 88876c3 fix: include complete icons
- 5fb3acb refactor: update how we render changelog page
- da14aa0 refactor: add swipe control for sidebar
- ca45255 fix: isMobile watch
- 57a753c refactor: rename variable to showSidebar
- 5359713 refactor: re-enable plex external user support
- 1a137b2 feat: add backend TestCommand for backend client actions
- df57e67 feat: Add date format customization for WebUI
- 632df7b fix(ui/sidebar): edge swipe in iOS safari
- 7eba957 fix(httpClient): Debug logging now preserves named query params
- 3116929 fix: sidebar should be styled like main content
- 2550ff2 refactor: update the history item view page
- 2f5b123 feat: add user-aware db query command
- 6ed688b Refactor: implement real sync-requests for export related write requests
- 53aca78 refactor: save profile data to file in dev mode
- 04e604c fix: wrap import call in single transaction to speed up the import proccess
- 2c7262d refactor: Reuse prefetched show metadata during Plex and Jellyfin import
- Users and sub-users renamed to identities
- Integration of arabcoders/database package with updated database configuration
Full changelog
What's Changed
- Refactor: update history rendering page by @arabcoders in https://github.com/arabcoders/watchstate/pull/802
- refactor: rename users and sub users to identities by @arabcoders in https://github.com/arabcoders/watchstate/pull/804
Full Changelog: https://github.com/arabcoders/watchstate/compare/v1.5.0...v1.5.1
Commits since v1.5.0
- 2cc3a3b refactor: affix user db file with version
- 2e947bd feat: integrate arabcoders/database package and update database configuration
- 5b64d66 refactor: update how history page renders
- 119bed0 docs: add contributing guidelines for the project
- 73c7bb3 refactor: rename users and sub users to identities to reduce confusion, and convert backends:create to an API endpoint
- 0b41257 docs: update README
- Frontend rewrite using Nuxt UI
- API documentation
- Scheduler display fixes
- Plex no longer provides way to obtain external user token
- Updated firebase/php-jwt to version 7.0
- Configuration option to disable deduplication
Code quality improvements including linting and test preparation, bugfixes for metadata and imports, and switched build tool from pnpm to bun.
Fixed Jellyfin API mark-as-played workaround and resolved incomplete Plex user list synchronization issue affecting media state tracking.