github cenodude/CrossWatch v0.1.4
Crosswatch v0.1.4

8 hours ago

Version v0.1.4

🐞 Short summary of issues users hit

  • History timestamps: first sync didn’t carry original watched_at → Trakt saw plays as “today”, creating same-day duplicates.
  • Jellyfin fields: not always requesting UserData caused us to miss LastPlayedDate.
  • Watcher: some improvements when re-watching the same movie/show/episode
  • Watchlist noise: unresolved items (esp. episodes) could keep suppressing diffs indefinitely.

🔧 Fixes & Improvements

  • History / Timestamps

    • Always read and propagate source play time:
      • Plex: viewedAt
      • Jellyfin: UserData.LastPlayedDate (fallback DateLastPlayed)
    • Normalize to UTC; no more silent “now” backfills when a timestamp is missing (we flag instead).
    • History query (Jellyfin) uses Fields=UserData,ProductionYear + EnableUserData=true and sorts by DatePlayed.
      -We’ve temporarily disabled the History feature for SIMKL because it isn’t working correctly.
  • Jellyfin connector

    • All features enabled (except playlists) - Watchlists, Ratings, History
    • Watchlist:
      • “Favorites” (Movies/Series) or named Playlist. as Jellyfin doesnt have any Watchlist
      • Ignore items without cross IDs to avoid churn.
  • Unresolved/backoff system

    • Track failures with exponential backoff (default base 6h, cap 30d) or virtual policy.
    • TTL purge (default 90d) + stats by reason/type.
    • Auto-reset a slice on large library growth to retry fresh matches.
  • State & Shadows

    • Rolling ratings and history shadows to stabilize snapshots and quick re-runs.
    • Cursor fingerprints guard against noisy reindexes.
  • Apply paths

    • Favorites add/remove uses dedicated endpoints; verified via UserData.IsFavorite, falls back to /Items/{id}/UserData when needed.
    • Ratings write/unrate coerces to Trakt-style 10-scale (with 5-star inputs doubled).
  • DX & Ops

    • Lightweight HTTP stats (status, bytes, latency).
    • Runtime debug toggles structured debug logs.
    • Manifest + config schema updated (watchlist modes, unresolved policy).

⚠️ Status & Safety

  • This project is in very early development and not ready for production.
  • Always make backups/exports of your history before running a real sync.
  • Prefer dry runs first to inspect plans (especially timestamps).

Don't miss a new CrossWatch release

NewReleases is sending notifications on new releases.