v0.1.4
Crosswatch v0.1.4
Tag:
v0.1.4Published:
2025-09-25T01:34:24ZGitHub: https://github.com/cenodude/CrossWatch/releases/tag/v0.1.4
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
UserDatacaused us to missLastPlayedDate.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:
viewedAtJellyfin:
UserData.LastPlayedDate(fallbackDateLastPlayed)
Normalize to UTC; no more silent “now” backfills when a timestamp is missing (we flag instead).
History query (Jellyfin) uses
Fields=UserData,ProductionYear+EnableUserData=trueand sorts byDatePlayed.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 doesn’t have any native 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}/UserDatawhen needed.Ratings write/unrate coerces to Trakt-style 10-scale (with 5-star inputs doubled).
DX & Ops
Lightweight HTTP stats (status, bytes, latency).
Runtime
debugtoggles 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).
Last updated