CrossWatch Release Notes

Last updated: Mar 14, 2026

  • Mar 11, 2026
    • Date parsed from source:
      Mar 11, 2026
    • First seen by Releasebot:
      Mar 14, 2026
    cenodude logo

    CrossWatch by cenodude

    Update 0.9.13

    cenodude CrossWatch v0.9.13 delivers a refreshed UI, encrypted config, and security upgrades with a no-downgrade rule after upgrade. It preserves cache, adds stability fixes, and reflects performance improvements for a clearer, safer workflow.

    CrossWatch v0.9.13

    Important, after your upgrade to v0.9.13 you cant downgrade. This version now includes encrypted config file, and is not comptabile with older versions. Hope you like the improved interface. The orchestrator and adapters were not changed, so there is no need to delete your cache.

    ✨ Highlights

    • UI Refresh: Updated with a cleaner, more modern and improved status presentation for a fresher overall look (i hope) #137
    • updated: UI changes for main, analyzer, exporter, syncbar, Watchlist, Captures, Editor, Settings
    • Refactor: Cleaned up, updated, and removed unnecessary parts for significantly better performance. #134

    Fixes & Improvements

    • Fixed: Scheduler thread is being started even when scheduling is fully disabled. #133
    • Fixed: Setup wizard now opens correctly again after using Reset all to default #136
    • Fixed: Browser accessibility/compliance warnings caused by unbound labels. #135
    • Fixed: Increased modal slightly and fixed status badge clipping in the header area.
    • Fixed: Cut down repeated scheduler start/stop messages during save and refresh. #132
    • Fixed: Insight Settings Filtering:** The provider list in Insight Settings now shows only providers that are configured.
    • Change: Added a Copy button to the Sync output toolbar so you can quickly copy the active Sync or Watcher log. #131
    • Change: Watchlist, swapped the numeric overview for Coverage Pulse.

    Security Enhancements

    Original source Report a problem
  • Mar 6, 2026
    • Date parsed from source:
      Mar 6, 2026
    • First seen by Releasebot:
      Mar 14, 2026
    cenodude logo

    CrossWatch by cenodude

    Update 0.9.12

    cenodude highlights CrossWatch v0.9.12 a major update that shifts from IMDb first to TMDB first, improves sync reliability, and introduces an experimental Progress feature for resuming playback across Plex Emby and Jellyfin. Security is tightened with unique webhook tokens; clearing cache is advised.

    CrossWatch v0.9.12

    Another huge update as i've continuing the work started in 0.9.11, where we moved from IMDb-first to TMDB-first.
    I’ve made a bunch of optimizations and tightened up the orchestrator integration, so your sync results should be more reliable.
    There’s also a new experimental feature called Progress, which lets you sync resume positions between media servers.
    And last, but definitely not least, security has been improved.

    IMPORTANT - what you absolutely need to do:

    • All Webhooks are now protected with a unique URL/ID token. After updating, every (webhook)user must copy and paste the new webhook URL into their media server.
    • As always, clear your existing cache first, it’s the smartest thing you can do. In Settings - Maintenance - Maintenance tools and then Clear Everything
    • If you don’t clear your existing cache, most improvements won’t be applied. That makes all my work a complete waste....so sad..

    Highlights

    Fixes & Improvements

    • History Sync Reliability: #117
    • Fixed a state persistence issue that could cause history statistics to shrink after a subsequent sync run.
    • CW now preserves watched timestamps/metadata when a provider returns sparse history.
    • Improved ID reconciliation to prevent duplicate history entries when providers disagree on IDs:
      • Uses TMDb first, then falls back to IMDb, then TVDb (in that order) to match the same title across systems.
    • Two-way sync: improved safeguards so ID drift doesn’t trigger false adds/removes or inflated counts.
    • Plex Instances / Profiles: Fixed an issue where Plex per-instance library whitelists)were not being saved #126
    • Plex Instances / Profiles: Fixed an issue where an extra PLEX-P01 could appear in settings. #129
    • Upgrade Migration: The Migrate action in the upgrade warning modal now performs a real migration for required settings. #130
    • History Sync Performance (Jellyfin / Emby / Trakt): Much faster history indexing....more speeeeeeeeeeeed #125
    • Provider Rate Limiting (SIMKL / Trakt / MDBList): Added configurable request throttling to respect upstream API limits. #128
    • Security Enhancements: #123
      • Authentication now fails closed if `config.json exists but can’t be loaded/parsed correctly.
      • Hardened TMDb artwork caching to block path traversal / unintended file overwrite.
      • Webhook endpoints are now protected via a unique URL token generated by CW:
        • /webhook/plextrakt?uniqueID
        • /webhook/jellyfintrakt?uniqueID
        • /webhook/embytrakt?uniqueID
        • /webhook/plexwatcher?uniqueID
      • Added Trusted reverse proxies setting in Settings - Security
      • Use this only if you run CW behind reversed proxies. This will improves secure cookies and rate limiting accuracy.
      • UI logs now redact common secrets (tokens/keys) to reduce leakage.
      • TLS certificate download endpoint now only serves valid X.509 cert files
      • Improved error handling to avoid leaking internal details via API responses.
      • Stronger path validation to prevent unintended directory access via file listing.
    Original source Report a problem
  • All of your release notes in one feed

    Join Releasebot and get updates from cenodude and hundreds of other software products.

  • Mar 5, 2026
    • Date parsed from source:
      Mar 5, 2026
    • First seen by Releasebot:
      Mar 14, 2026
    cenodude logo

    CrossWatch by cenodude

    Update 0.9.11

    cenodude reports CrossWatch v0.9.11 introduces a TMDb-first ID priority, a breaking update that affects all sync pairs and requires migration to wipe state and rebuild gradually. Includes history sync fixes and broader improvements for Plex and Trakt across providers.

    CrossWatch v0.9.11

    Read this. Or cry later. Your choice.

    BREAKING UPDATE: ID priority is now TMDb-first

    Classic small change, huge impact.
    This affects every sync pair. The old split (IMDb for UI/state, TMDb for sync) became too fragile and kept causing avoidable bugs.
    I've changing it now so we can actually reach a stable release someday.
    CrossWatch now prefers IDs in this order: TMDb → IMDb → TVDb → (everything else).

    Why this matters

    • Better matching across providers
    • Fewer duplicates and unresolved items

    Migration behavior (important)

    When you upgrade and click Migrate, we will:

    • Wipe your current state and cache
    • Temporarily stop your scheduler
    • This is intentional. It prevents duplicate entries from being pushed to your trackers.

    After migration

    • Re-enable one pair at a time and let it rebuild your state gradually
    • If you have captures; recreate them.
    • At the moment DONT do any tracker to media server pairs.

    Testing

    This also means that large parts of CrossWatch need to be re-tested. I’ll phase this in, because I’m a one-person operation.

    • Webhooks / Watcher: Tested
    • Sync pairs - Plex to trackers: Tested
    • Sync pairs - tracker from/to tracker: Tested

    Next up: testing Emby/Jellyfin (and friends). I’m not expecting major issues, but please be careful. Plex has already been updated as a delta provider; we still need to apply the same change for Emby/Jellyfin. Until that’s done, the Emby/Jellyfin results won’t reflect any improvements yet.

    🔧 Fixes & Improvements

    • CrossWatch: Reorder ID keys for consistency across various modules (TMDB first) #117
    • Orchestrator: Many improvements for better sync results.
    • Plex Sync (History): Fixed an issue where Plex history could drop to 0 on the second sync
    • Plex Sync (History): Improved state handling so Plex history is treated as incremental (“delta”)
    • Plex Sync (History): Reduced false weird counters in Insights caused by incremental snapshots being stored as full snapshots.
    • Plex Sync (History): Improved shows/episode enrichment.
    • Trakt Sync (History): Fixed a loop where history sync could report +1 added on every run even when nothing new was added.
    • Trakt Sync (History): Improved episode matching
    • Trakt Sync (History): Corrected unresolved/blocked handling so repeated failures are properly blocked
    Original source Report a problem
  • Feb 28, 2026
    • Date parsed from source:
      Feb 28, 2026
    • First seen by Releasebot:
      Mar 14, 2026
    cenodude logo

    CrossWatch by cenodude

    Update 0.9.10

    cenodude unveils CrossWatch v0.9.10 with targeted fixes and performance boosts. Scrobble now suppresses idle playback alerts, clarifies unresolved events, and improves token and payload handling. Sync engine speeds up large runs with clearer reporting. MDBList SIMKL and Trakt adapters gain broader ID support and stability.

    CrossWatch v0.9.10

    🔧 Fixes & Improvements

    • Scrobble: Suppressed user=None playback alerts to reduce filter-log noise when no one is actively watching.
    • Scrobble: Fixed non-default scrobble watchers missing playback events when Plex alert payloads omit the account/user field.
    • Scrobble: Added a debug log entry before dropping unresolved-user alerts to make it clearer why an event was ignored.
    • Scrobble: Improved support for Plex shared-server tokens by using the configured profile username for that watcher.
    • Scrobble UI: Fixed route filter settings leaking into the default profile due to cached provider presets while editing routes.
    • Captures: Fixed history-restore gaps when two entries share the same watch timestamp.
    • Captures: Fixed an edge case where items can return multiple distinct items with the same IMDb ID.
    • Sync Engine: Improved bulk sync completion performance by batching internal blackbox/flap bookkeeping instead of updating it item-by-item.
    • Fixed an issue where large sync runs, especially history imports, could appear to stall after the write phase while CrossWatch was still processing internal retry/unresolved tracking.
    • Reduced post-sync overhead for large add/remove operations so runs can finish and report completion more reliably.
    • Sync Engine: Improved sync result reporting for large one-way runs.
    • Added clearer accounting for provider-confirmed adds versus internally deduplicated items.
    • Improved skipped-item reporting so inferred remainder skips are tracked more transparently during bulk syncs.
    • Added better visibility into duplicate canonical-key collapse during apply/reporting, which helps explain mismatches between provider-reported adds and final run totals.
    • MDBList: Updated the MDBList adapter to v4.1.0.
    • Improved sync compatibility with the current MDBList API blueprint across history, ratings, watchlist, and scrobble flows.
    • Fixed watched-history sync handling for show-level and season-level updates/removals.
    • Improved ratings sync support for additional MDBList-supported IDs, including Trakt, MDBList, and Kitsu where applicable.
    • Hardened watchlist parsing for unified responses and aligned internal health checks/activity tracking with MDBList sync behavior.
    • SIMKL: Updated the SIMKL adapter to v4.1.0.
    • Improved compatibility with the current SIMKL API blueprint across history, ratings, watchlist, and scrobble flows.
    • Fixed anime scrobble handling by sending the correct SIMKL payload shape and supporting additional anime IDs where available.
    • Improved history and ratings sync matching by preserving a broader set of SIMKL-supported IDs.
    • Fixed an anime ratings sync issue where SIMKL anime library data could be parsed incorrectly, causing weaker item matching.
    • Hardened Plan to Watch sync by correctly accepting successful SIMKL removals even when the API returns an empty response body.
    • Fixed history season sync handling by sending season entries using SIMKL's documented season payload shape instead of treating them like plain show-level writes.
    • Improved SIMKL history write accounting so successful season-level additions are counted correctly during bulk imports.
    • Trakt: Updated the Trakt adapter to v4.4.0.
    • Improved compatibility with the current Trakt API blueprint across history, ratings, watchlist, and scrobble flows.
    • Fixed watched-history sync handling for show-level and season-level updates/removals, and improved support for removing entries by Trakt history ID.
    • Improved watchlist sync support for movies, shows, seasons, and episodes to better match Trakt's supported payloads.
    • Fixed scrobble behavior that could create multiple watched dates when stopping near the end and finishing later (configurable via stop_pause_threshold).
    • Improved scrobble logging by downgrading Trakt 422 pause rejections near the scrobble cutoff to WARN (no longer treated as hard errors).
    • Hardened scrobble handling for duplicate/recent playback conflicts to better align with Trakt responses.
    Original source Report a problem
  • Feb 25, 2026
    • Date parsed from source:
      Feb 25, 2026
    • First seen by Releasebot:
      Mar 14, 2026
    cenodude logo

    CrossWatch by cenodude

    Update 0.9.9

    cenodude CrossWatch v0.9.9 hotfix sharpens Plex user detection and filtering, fixes misidentified streams and removes the PMS owner fallback for more consistent results. It’s an improvement patch, not a guaranteed final fix, aimed at better Plex watcher and filter behavior than prior builds.

    CrossWatch v0.9.9 (quick-fix)

    Because of filtering issues affecting Plex users. I’m releasing this quick fix.
    This patch is focused on improving user detection and filtering behavior, which should reduce incorrect matches and missed events.
    It removes the PMS owner fallback and relies more on actual session/user data, which should give more consistent results.
    The main or real issue is that Plex is very inconsistent when it comes to providing the actual usernames.
    This is a quick fix(hotfix). It hasn’t been thoroughly tested yet, so treat it as an improvement release rather than a guaranteed final fix.
    That said, it should deliver better results than the current (0.9.8) version regaring watcher and filtering for Plex.

    🔧 Fixes & Improvements

    • Plex: Fixed misidentificationstreams as the server owner, which affect route filters.

    CrossWatch v0.9.8

    Important (Plex users)
    CrossWatch now supports shared Plex servers (servers you don’t own - no PMS owner) thanks for the idea and support @mesitisg
    This required major changes to Plex authentication and sync adapters.
    Recommended action: Recreate your Plex authentication configs (delete and re-add)
    Disable Watcher first before recreating Plex auth
    You can keep your pairs and watcher config.
    Dont forget to set your whitelists and double check your Plex settings.

    Highlights

    • Plex: Shared Plex server support is now supported (sync and watcher)

    Fixes & Improvements

    • Plex: Keeps separate tokens for Plex account (cloud) and Plex server (PMS) access, so PMS features use the correct token.
    • Plex: History and ratings sync now use the PMS-scoped token, fixing shared-server authorization issues.
    • Plex: Manual Mark as Watched/Unwatched actions in Plex are now tracked more reliably for history sync and use a separate cache.
    • Plex: Fallback-GUID option. History sync no longer drops entries. #111
    • Scrobble: With multiple scrobble routes, CW now logs a single summary line (wired providers: X | wired sinks: Y).
    • Scrobble: Newly created provider profiles/instances now appear immediately in Watcher route dropdowns.
    • Scrobble: Fixed route filter UI state leaking between routes. Opening Filters now loads the correct filters for the selected route.
    • Scrobble: Removed the Live panel/toggle from the Watcher screen. It was confusing for most users.
    • Tautulli: Fixed auth UI where the auth buttons were not visible. (Issue #112)
    • Captures: CW now uses a dedicated Capture Mode when creating captures, ignoring cache and watermarks for consistancy. #110
    Original source Report a problem
  • Feb 24, 2026
    • Date parsed from source:
      Feb 24, 2026
    • First seen by Releasebot:
      Mar 14, 2026
    cenodude logo

    CrossWatch by cenodude

    Update 0.9.8

    cenodude summarizes CrossWatch v0.9.8 delivering shared Plex server support with major authentication and sync changes. Users should recreate Plex auth configs and disable Watcher first. Highlights include PMS token separation, history sync fixes, scrobble routing improvements, and Capture Mode.

    CrossWatch v0.9.8

    Important (Plex users)

    CrossWatch now supports shared Plex servers (servers you don’t own - no PMS owner) thanks for the idea and support @mesitisg
    This required major changes to Plex authentication and sync adapters.
    Recommended action: Recreate your Plex authentication configs (delete and re-add)
    Disable Watcher first before recreating Plex auth
    You can keep your pairs and watcher config.
    Dont forget to set your whitelists and double check your Plex settings.

    ✨ Highlights

    Highlights

    Plex: Shared Plex server support is now supported (sync and watcher)

    Fixes & Improvements

    Plex: Keeps separate tokens for Plex account (cloud) and Plex server (PMS) access, so PMS features use the correct token.
    Plex: History and ratings sync now use the PMS-scoped token, fixing shared-server authorization issues.
    Plex: Manual Mark as Watched/Unwatched actions in Plex are now tracked more reliably for history sync and use a separate cache.
    Plex: Fallback-GUID option. History sync no longer drops entries. #111
    Scrobble: With multiple scrobble routes, CW now logs a single summary line (wired providers: X | wired sinks: Y).
    Scrobble: Newly created provider profiles/instances now appear immediately in Watcher route dropdowns.
    Scrobble: Fixed route filter UI state leaking between routes. Opening Filters now loads the correct filters for the selected route.
    Scrobble: Removed the Live panel/toggle from the Watcher screen. It was confusing for most users.
    Tautulli: Fixed auth UI where the auth buttons were not visible. (Issue #112)
    Captures: CW now uses a dedicated Capture Mode when creating captures, ignoring cache and watermarks for consistancy. #110

    Original source Report a problem
  • Feb 20, 2026
    • Date parsed from source:
      Feb 20, 2026
    • First seen by Releasebot:
      Mar 14, 2026
    cenodude logo

    CrossWatch by cenodude

    Update 0.9.7

    cenodude presents CrossWatch v0.9.7, a scheduling focused release that sharpens reliability with guardrails, new scheduler logs, clearer next-run indicators, and performance boosts to Settings Insight. It tightens UI responsiveness and streamlines banner cues for today vs later runs.

    CrossWatch v0.9.7

    This release streamlines and improves scheduling for a more reliable overall experience.

    ✨ Highlights

    Scheduler status: The banner and Setting Insight now reflect Standard and Advanced scheduling modes.

    🔧 Fixes & Improvements

    • Scheduler: guardrails: Switching to Advanced automatically turns Standard off (and vice versa) to prevent conflicting schedules.
    • Scheduler: logs: Added scheduler logs (start / next run / trigger / success / failure) so scheduled runs aren’t silent.
    • Scheduler: next-run handling: Disabling scheduling no longer shows a far-future placeholder.
    • Advanced scheduler: Advanced jobs now correctly catch up if a job time has already passed.
    • Advanced scheduler: The banner now makes it obvious when the next run is today vs tomorrow/another day.
    • Settings Insight: Insight refreshes far less when the Settings page isn’t open, improving overall UI performance.
    • Settings Insight: Prevents re-rendering when nothing changed, reducing repeated icon reloads.

    Previous change v0.9.6 below:

    CrossWatch v0.9.6

    Big changes: the Plex adapter (history and ratings) was refactored for better accuracy and much faster history syncs.
    First run may still be slow, but follow-up runs should be way faster.
    For users still on v0.8.x, now’s the perfect time to upgrade to v0.9.6.
    ⚠️ Warning possible breaking update for Trakt History pairs
    Trakt is rolling out a change that rounds watched_at to minute precision
    I've changed the Trakt adapter following that same principle now.
    If you have a pair with Trakt using History then either recreate the pair or even better:
    Go to maintenance tools to clean everything. Ref: https://wiki.crosswatch.app/crosswatch/faq

    ✨ Highlights

    Snapshots - Captures: The UI now labels “Snapshots” as Captures.
    Captures Compare (Advanced): Side-by-side A/B diff viewer. Select two Captures, then click Advanced. Ref: https://wiki.crosswatch.app/crosswatch/tools/captures/capture-compare-advanced

    🔧 Fixes & Improvements

    • Trakt: minute precision: Changed the Trakt adapter to follow-up the new minute precision approach.
    • Plex: Home token reliability: History writes now use the active Plex session token (prevents “sometimes only season 1” / random unresolved writes when Plex Home switching is involved).
    • Plex: Strict IDs-only matching: History sync is now fixed and can run in strict ID mode using Plex GUIDs (TMDB/IMDb/TVDB) without title/search fallbacks. This reduces mismatches and makes “IDs-only” actually work.
    • Plex: history capture: Plex history capture is now incremental (watermark and correct mindate usage) instead of re-scanning the entire server history every run.
    • Plex: Persistent GUID index: Uses a per-pair, on-disk GUID→ratingKey index to speed up strict matching.
    • Plex: ratings strict matching improved: Episode/season ratings resolution now also uses show IDs (TMDB/IMDb/TVDB) when matching in Plex, improving accuracy and reducing “unresolved” ratings in strict ID mode.
    • Editor: timestamps: “Watched At” display/editing now matches the UI. Manual edits are interpreted in local time and stored consistently (prevents timezone shifts).
    • Captures - Compare: Compare is now limited to same provider and same feature to prevent misleading diffs. Ref: #97
    • Captures - Compare: Smarter diffing (including timestamp normalization) to avoid false “updates” caused by tiny time differences. Ref: #97
    • Plex: history timestamps: Fixed a potential timezone offset issue by reading Plex history using Plex’s native epoch format for consistent results. Ref: #103
    • Pair-config - One-Way Remove mode UI toggle: Added a new switch in pair-config under Allow mass delete to control one-way deletion behavior:
      • Enabled (default): Deletions are based on source matches — items are only deleted when a match exists between source and destination.
      • Disabled: Mirror mode (mirror) - always follows source (destructive; use with care).
        NB: The logics was already available in v0.9.5, i only added the UI toggle.
        Ref: https://wiki.crosswatch.app/crosswatch/configure-pairs/global-settings
    Original source Report a problem
  • Feb 20, 2026
    • Date parsed from source:
      Feb 20, 2026
    • First seen by Releasebot:
      Mar 14, 2026
    cenodude logo

    CrossWatch by cenodude

    Update 0.9.6

    cenodude CrossWatch v0.9.6 introduces a refactored Plex adapter for faster history syncs, minute‑precision Trakt history, and reliability wins. Snapshots are now Captures; Captures Compare gains a side‑by‑side diff. It adds incremental history capture, strict-ID matching, and a new one‑way delete UI toggle. Release-ready.

    CrossWatch v0.9.6

    Big changes: the Plex adapter (history and ratings) was refactored for better accuracy and much faster history syncs.

    First run may still be slow, but follow-up runs should be way faster.

    For users still on v0.8.x, now’s the perfect time to upgrade to v0.9.6.

    ⚠️ Warning possible breaking update for Trakt History pairs

    Trakt is rolling out a change that rounds watched_at to minute precision

    I've changed the Trakt adapter following that same principle now.

    If you have a pair with Trakt using History then either recreate the pair or even better:
    Go to maintenance tools to clean everything. Ref: https://wiki.crosswatch.app/crosswatch/faq

    Highlights

    Snapshots - Captures: The UI now labels “Snapshots” as Captures.

    Captures Compare (Advanced): Side-by-side A/B diff viewer. Select two Captures, then click Advanced. Ref: https://wiki.crosswatch.app/crosswatch/tools/captures/capture-compare-advanced

    Fixes & Improvements

    Trakt: minute precision: Changed the Trakt adapter to follow-up the new minute precision approach.

    Plex: Home token reliability: History writes now use the active Plex session token (prevents “sometimes only season 1” / random unresolved writes when Plex Home switching is involved).

    Plex: Strict IDs-only matching: History sync is now fixed and can run in strict ID mode using Plex GUIDs (TMDB/IMDb/TVDB) without title/search fallbacks. This reduces mismatches and makes “IDs-only” actually work.

    Plex: history capture: Plex history capture is now incremental (watermark and correct mindate usage) instead of re-scanning the entire server history every run.

    Plex: Persistent GUID index: Uses a per-pair, on-disk GUID→ratingKey index to speed up strict matching.

    Plex: ratings strict matching improved: Episode/season ratings resolution now also uses show IDs (TMDB/IMDb/TVDB) when matching in Plex, improving accuracy and reducing “unresolved” ratings in strict ID mode.

    Editor: timestamps: “Watched At” display/editing now matches the UI. Manual edits are interpreted in local time and stored consistently (prevents timezone shifts).

    Captures - Compare: Compare is now limited to same provider and same feature to prevent misleading diffs. Ref: #97

    Captures - Compare: Smarter diffing (including timestamp normalization) to avoid false “updates” caused by tiny time differences. Ref: #97

    Plex: history timestamps: Fixed a potential timezone offset issue by reading Plex history using Plex’s native epoch format for consistent results. Ref: #103

    Pair-config - One-Way Remove mode UI toggle

    Added a new switch in pair-config under Allow mass delete to control one-way deletion behavior:

    Enabled (default): Deletions are based on source matches — items are only deleted when a match exists between source and destination.

    Disabled: Mirror mode (mirror) - always follows source (destructive; use with care).

    NB: The logics was already available in v0.9.5, i only added the UI toggle.

    Ref: https://wiki.crosswatch.app/crosswatch/configure-pairs/global-settings

    Original source Report a problem
  • Feb 14, 2026
    • Date parsed from source:
      Feb 14, 2026
    • First seen by Releasebot:
      Mar 14, 2026
    cenodude logo

    CrossWatch by cenodude

    Update 0.9.5

    cenodude reports CrossWatch v0.9.5 brings practical reliability boosts and UI polish. It fixes Trakt multi-profile client_id issues, refines one way sync deletions, and adds per pair Trakt collection control. Watchlist and provider visuals get clearer with fixed columns, scrollable pairs, and profile-aware status.

    CrossWatch v0.9.5

    There was an issue with the Trakt provider when using multiple profiles: additional profiles incorrectly reused the default profile’s client_id.
    Most users won’t notice this (because most don’t run multiple Trakt profiles), but if you do: delete all extra Trakt profiles (keep the default), then recreate them.
    Another important change: the default delete behavior for one-way syncs has been updated. Previously, one-way deletes acted like “mirror mode” by default.
    If you intentionally want the old (destructive) mirroring behavior back, set this in your config.json:
    sync.one_way_remove_mode = "mirror"
    ✨ Highlights
    Watchlist list view improvements: Posters no longer collide with sync icons; the layout is cleaner and easier to scan.
    Snapshots comparison: Pick two snapshots and see what changed - Added, Deleted, and Updated (with old/new values).

    🔧 Fixes & Improvements
    Synchronization Providers / Pairs: Fixed the pairs list getting cut off when you have many pairs; it now becomes scrollable after ~5 pairs.
    Providers (multi-profile visibility): Provider status now always reflects your default profile, even if other profiles exist.
    Providers (tooltip improvements): Hovering a provider now shows which profiles/instances are configured and which ones are actually used by your sync pairs.
    Watchlist: Provider icons no longer “jump” left/right per item. Each provider now keeps a fixed slot, making it easier to spot what isn’t synced.
    Watchlist (customizable columns): You can now show/hide columns like Poster, Genre, etc., to build your preferred view.
    MDBList (Watchlist IDs): Watchlist items from MDBList now correctly store TMDb IDs (instead of losing them), improving matching and reducing duplicates.
    Providers (ID preference): Provider ID matching now prefers TMDb before IMDb for improved consistency across integrations. (Orchestrator behavior is unchanged.)
    Trakt (per-pair Collection sync): Add to Trakt Collection is now configured per Trakt pair instead of globally.
    Trakt (Movies/Shows selection): When enabled, you can choose whether Collection updates apply to Movies and/or Shows (default: Movies).
    Trakt (multi-profile auth): Fixed Trakt profiles not storing their own Client ID and Client Secret correctly.
    Trakt (renew all profiles): Token refresh/renew now applies to all Trakt profiles, not only the default one.
    One-way sync (safe deletes): Fixed one-way pairs with Delete enabled incorrectly behaving like mirror mode on subsequent runs, causing unintended mass deletions on the target. Deletes now only propagate items actually deleted on the source.

    BELOW the v0.9.4 release notes:

    CrossWatch v0.9.4

    🔧 Fixes & Improvements
    Watcher Scrobble no longer defaults to Trakt when no sink is configured.
    Watcher If no scrobble sink is set, watching still works, we just don’t scrobble anywhere.
    Watchlist (Internal Tracker) Covers/posters now show up again in both Watchlist and Watchlist Preview

    BELOW the v0.9.3 release notes:

    CrossWatch v0.9.3

    🔧 Fixes & Improvements
    Plex Auth / Profiles: Fixed profile settings leaking into the default profile. Profile values now stay isolated and update immediately. #80
    Plex Home Switching: Improved Home user switching logic (correctly distinguishes Home user ID vs Plex account ID) for more reliable profile/session behavior. #81
    Plex Module Cleanup: Refactored and centralized Plex sync code (shared helpers moved into _common, removed duplication/unused code).
    Maintenance: “Clear provider cache” and “Clean everything” now preserve /config/.cw_state/id/ (Plex device and auth identifiers stay intact).
    Maintenance: Added “Reset all to default” Wipes local state/caches/reports/TLS, backs up config.json with a timestamp, keeps snapshots, then restarts CrossWatch.

    BELOW the v0.9.2 release notes:

    CrossWatch v0.9.2

    Updated Now Playing card and banner to properly handle multiple streams (Watcher Routes mode).
    If anything looks off after updating: Settings → Maintenance → Reset Currently Playing.
    You can also run sinlgle pairs now from the main Synchronize button..
    ✨ Highlights
    Split “Synchronize” button (new)
    Click Synchronize to run everything (as before).
    Click the ▾ to run Sync all or run a single enabled pair directly.

    🔧 Fixes & Improvements
    Scrobble Watcher: Fixed an issue where resume after pause could be missed until the next progress milestone.
    Playing card (Routes mode): Now supports multiple simultaneous streams (such as Plex and Emby to same sink)
    Playing card: Fixed the Now playing time ticker.. it now shows the time played

    BELOW the v0.9.1 release notes:

    CrossWatch v0.9.1

    As always: do a hard refresh (CTRL+F5) - or better, clear your browser cache.
    The number of times caching causes ghost bugs is basically infinite. So tripple please...do it...

    🔧 Fixes & Improvements
    Emby/Jellyfin “Pick User”: Fixed a front-end bind issue where the button could do nothing.
    Strict ID matching (per pair): Optional per-pair setting to match IDs only (disables title/year fallback) for Plex/Emby/Jellyfin.
    Plex Home user history: History sync now writes to the selected Home user, with a safety guard to skip writes if scope switching fails.
    Plex Watcher - Fetch Server UUID: Fixed No server UUID by using the correct UUID endpoint.
    Insights UI counters: Fixed tab counters not updating reliably when switching features.

    BELOW the v0.9.0 release notes:

    CrossWatch v0.9.0 (experimental)

    v0.9.0 brings a new Profile/Instance system and the new Watcher Routes model.
    It’s marked experimental because profiles multiply the possible setups far beyond what older CrossWatch builds had to handle.
    If your current version works and are happy: you can just wait a few versions before it's stable again..
    But if you want to upgrade to test it and help the community shake out bugs, I’ll gladly take it.
    Expect rough edges while I stabilize the new foundation...Look it is what it is....
    If I had to sum this release up in one sentence: you can now run CrossWatch as a multi-profile sync hub for multiple friends/family and their services, even using their tracker APIs.
    IMPORTANT and WARNINGS
    Clear your browser cache for this release. i had some issues with it.. cleaning it did the trick
    The Watcher is much more flexible with the new Routes model - and that also means more ways to accidentally annoy your trackers.
    Be careful: keep the progress step at the default 25% (validate in advanced).
    If you set it to 1% (almost realtime) and run Plex/ Emby/Jellyfin the same time, you’ll push the huge amount of ~300 API calls to a tracker during a 60-minute movie. And yes,, some trackers will kill you and me about it.
    So… think before you configure. You’re responsible for what you do. CrossWatch can do a lot (maybe way too much)… but that doesn’t mean you should enable all of it.
    Be careful with profiles: in v0.9.0 they’re still experimental. They need refinement, but they should already do the job.
    WIKI: Profiles and instances
    WIKI: Watcher
    WIKI: Insights settings
    Look, I get it, nobody wants to read. But I also don’t want to answer questions with “I thought that’s what it was supposed to do.”
    Please read first. If it’s still unclear, ask in Discussions. I’m happy to help Always ask before you hit “sync” and discover new ways to suffer.
    ✨ Highlights
    Provider Profiles / Instances
    Multiple profiles per provider (such as, Plex “Default” and “Kids”)
    Basically, you can now act as the sync hub for family or friends - including using their tracker APIs.
    Watchlist, Analyzer, Exporter, Editor updated to be profile-aware
    Insights Settings
    New modal to include/exclude Features and Provider Profiles
    Watcher / Routes
    Why the new routes mode
    Configure any media server(s) with any tracker(s) and run all together
    Legacy watcher configs migrate to routes mode (Default profile auto-applied)
    UI reflects active routes
    Status shows mode and providers
    Profiles & State (Core Improvements)
    Watchlist
    Aggregates from Default and all profiles
    Insights shows which profile(s) each item comes from
    Analyzer
    Understands multi-profile setups; no longer flags “instances-only” as unconfigured
    Diagnostics support newer scope formats with profile context
    Exporter
    Export modal adds Profile selector
    Export endpoints support optional provider_instance (export per profile where supported)
    Editor
    Current State: load/save per Default and profiles
    State Import (debug): can target a specific profile
    Pair Cache editor supports modern scopes (no legacy pair_ dependency)
    State & Insights Accuracy
    Orchestrator tags synced items with source profile in state.json
    Enables correct per-profile totals and prevents blending
    UI & Visibility
    Configured Providers - Counts configured profiles (including Default), with compact display
    Whitelisting - Whitelists include profiles and show profile names
    🔧 Fixes and Improvements
    Plex Home user picker - Managed users marked as Home Prevents wrong selection / bad account_id
    Plex Watchlist (Discover)- Fixes unauthorized errors after switching Plex Home users
    Emby/Jellyfin - Allow empty password setups (issue #74)

    Original source Report a problem
  • Feb 12, 2026
    • Date parsed from source:
      Feb 12, 2026
    • First seen by Releasebot:
      Mar 14, 2026
    cenodude logo

    CrossWatch by cenodude

    Update 0.9.4

    cenodude unveils CrossWatch v0.9.4 with fixes and improvements like watcher scrobble behavior when no sink is set and watchlist visuals; plus internal tracker stability and preserved config state. It builds on prior releases focused on Plex, profiles, and routes.

    CrossWatch v0.9.4

    🔧 Fixes & Improvements

    • Watcher Scrobble no longer defaults to Trakt when no sink is configured.
    • Watcher If no scrobble sink is set, watching still works, we just don’t scrobble anywhere.
    • Watchlist (Internal Tracker) Covers/posters now show up again in both Watchlist and Watchlist Preview

    BELOW the v0.9.3 release notes:

    CrossWatch v0.9.3

    🔧 Fixes & Improvements

    • Plex Auth / Profiles: Fixed profile settings leaking into the default profile. Profile values now stay isolated and update immediately. #80
    • Plex Home Switching: Improved Home user switching logic (correctly distinguishes Home user ID vs Plex account ID) for more reliable profile/session behavior. #81
    • Plex Module Cleanup: Refactored and centralized Plex sync code (shared helpers moved into _common, removed duplication/unused code).
    • Maintenance: “Clear provider cache” and “Clean everything” now preserve /config/.cw_state/id/ (Plex device and auth identifiers stay intact).
    • Maintenance: Added “Reset all to default” Wipes local state/caches/reports/TLS, backs up config.json with a timestamp, keeps snapshots, then restarts CrossWatch.

    BELOW the v0.9.2 release notes:

    CrossWatch v0.9.2

    • Updated Now Playing card and banner to properly handle multiple streams (Watcher Routes mode).
    • If anything looks off after updating: Settings → Maintenance → Reset Currently Playing.
    • You can also run sinlgle pairs now from the main Synchronize button..

    ✨ Highlights

    • Split “Synchronize” button (new)
    • Click Synchronize to run everything (as before).
    • Click the ▾ to run Sync all or run a single enabled pair directly.

    🔧 Fixes & Improvements

    • Scrobble Watcher: Fixed an issue where resume after pause could be missed until the next progress milestone.
    • Playing card (Routes mode): Now supports multiple simultaneous streams (such as Plex and Emby to same sink)
    • Playing card: Fixed the Now playing time ticker.. it now shows the time played

    BELOW the v0.9.1 release notes:

    CrossWatch v0.9.1

    • As always: do a hard refresh (CTRL+F5) - or better, clear your browser cache.
    • The number of times caching causes ghost bugs is basically infinite. So tripple please...do it...

    🔧 Fixes & Improvements

    • Emby/Jellyfin “Pick User”: Fixed a front-end bind issue where the button could do nothing.
    • Strict ID matching (per pair): Optional per-pair setting to match IDs only (disables title/year fallback) for Plex/Emby/Jellyfin.
    • Plex Home user history: History sync now writes to the selected Home user, with a safety guard to skip writes if scope switching fails.
    • Plex Watcher - Fetch Server UUID: Fixed No server UUID by using the correct UUID endpoint.
    • Insights UI counters: Fixed tab counters not updating reliably when switching features.

    BELOW the v0.9.0 release notes:

    CrossWatch v0.9.0 (experimental)

    • v0.9.0 brings a new Profile/Instance system and the new Watcher Routes model.
    • It’s marked experimental because profiles multiply the possible setups far beyond what older CrossWatch builds had to handle.
    • If your current version works and are happy: you can just wait a few versions before it's stable again..
    • But if you want to upgrade to test it and help the community shake out bugs, I’ll gladly take it.
    • Expect rough edges while I stabilize the new foundation...Look it is what it is....
    • If I had to sum this release up in one sentence: you can now run CrossWatch as a multi-profile sync hub for multiple friends/family and their services, even using their tracker APIs.
    • IMPORTANT and WARNINGS
    • Clear your browser cache for this release. i had some issues with it.. cleaning it did the trick
    • The Watcher is much more flexible with the new Routes model - and that also means more ways to accidentally annoy your trackers.
    • Be careful: keep the progress step at the default 25% (validate in advanced).
    • If you set it to 1% (almost realtime) and run Plex/ Emby/Jellyfin the same time, you’ll push the huge amount of ~300 API calls to a tracker during a 60-minute movie. And yes,, some trackers will kill you and me about it.
    • So… think before you configure. You’re responsible for what you do. CrossWatch can do a lot (maybe way too much)… but that doesn’t mean you should enable all of it.
    • Be careful with profiles: in v0.9.0 they’re still experimental. They need refinement, but they should already do the job.

    WIKI and other notes

    • WIKI: Profiles and instances
    • WIKI: Watcher
    • WIKI: Insights settings
    • Look, I get it, nobody wants to read. But I also don’t want to answer questions with “I thought that’s what it was supposed to do.”
    • Please read first. If it’s still unclear, ask in Discussions. I’m happy to help Always ask before you hit “sync” and discover new ways to suffer.

    ✨ Highlights

    • Provider Profiles / Instances

    • Multiple profiles per provider (such as, Plex “Default” and “Kids”)

    • Basically, you can now act as the sync hub for family or friends - including using their tracker APIs.

    • Watchlist, Analyzer, Exporter, Editor updated to be profile-aware

    • Insights Settings

    • New modal to include/exclude Features and Provider Profiles

    • Watcher / Routes

    • Why the new routes mode

    • Configure any media server(s) with any tracker(s) and run all together

    • Legacy watcher configs migrate to routes mode (Default profile auto-applied)

    • UI reflects active routes

    • Status shows mode and providers

    • Profiles & State (Core Improvements)

    • Watchlist

    • Aggregates from Default and all profiles

    • Insights shows which profile(s) each item comes from

    • Analyzer

    • Understands multi-profile setups; no longer flags “instances-only” as unconfigured

    • Diagnostics support newer scope formats with profile context

    • Exporter

    • Export modal adds Profile selector

    • Export endpoints support optional provider_instance (export per profile where supported)

    • Editor

    • Current State: load/save per Default and profiles

    • State Import (debug): can target a specific profile

    • Pair Cache editor supports modern scopes (no legacy pair_ dependency)

    • State & Insights Accuracy

    • Orchestrator tags synced items with source profile in state.json

    • Enables correct per-profile totals and prevents blending

    • UI & Visibility

    • Configured Providers - Counts configured profiles (including Default), with compact display

    • Whitelisting - Whitelists include profiles and show profile names

    🔧 Fixes and Improvements

    • Plex Home user picker - Managed users marked as Home Prevents wrong selection / bad account_id
    • Plex Watchlist (Discover)- Fixes unauthorized errors after switching Plex Home users
    • Emby/Jellyfin - Allow empty password setups (issue #74)
    Original source Report a problem

Related products