v1.4.23 (2026-06) — by Zeus768
- TRAKT: PAGINATION, WATCHED HISTORY, RATINGS + DEDICATED RECOMMENDATIONS
  |- Trakt My Lists menu overhauled with 6 new/upgraded entries:
  ||
  ||  [NEW] Recommended for You — Movies / TV Shows (at top of menu)
  ||    * Pulls Trakt's personalised recommendations based on your watch
  ||      history, ratings, and collection
  ||    * Full TMDB poster, fanart, overview, community rating
  ||    * Context menu: Mark watched (Trakt), Add to list, Remove from list
  ||    * Paginated — 100/page with Next/Prev navigation
  ||    * Shows helpful notice if not enough Trakt history yet
  ||
  ||  [NEW] My Watched History — Movies / TV Shows
  ||    * Pulls /users/me/history from Trakt, most recently watched first
  ||    * Deduplicates entries (Trakt logs every play; shows each title once)
  ||    * Paginated — 500/page with Next/Prev navigation
  ||
  ||  [NEW] My Ratings — Movies / TV Shows
  ||    * All titles you have rated on Trakt with TMDB metadata
  ||    * Paginated — 500/page with Next/Prev navigation
  ||
  ||  [IMPROVED] Watchlist / Collection / Favorites — Movies & Shows
  ||    * Now paginated — 500/page (up to any depth)
  ||    * "<< Previous Page (Page N)" item at top when on page 2+
  ||    * "Next page (X/Y) »" item at bottom when more pages exist
  ||
  |- default.py: added action handlers for trakt_history,
  ||  trakt_my_ratings, and page param for trakt_list
  |- mylists.py: _render() now propagates next_action/next_params
  ||  through to L.list_movies / L.list_tv for seamless TMDB-style paging

v1.4.22 (2026-05) — by Zeus768
- FIX (Trakt / SIMKL / Bingebase scrobbling — "not tracking anything being
  watched, not ticking anything"):
  Three independent bugs silently disabled all tracking on Kodi 21+:
    1. Single-stream playback bypassed the VidscrPlayer monitor entirely.
       _pick_and_play() only attached the monitor when len(chain) > 1 AND
       auto_fallback was enabled — so titles that resolved to only one
       candidate (common case) used the plain setResolvedUrl() path, which
       fires no scrobble events, no watched ticks, no Continue Watching
       progress and no resume points. Now every playback routes through the
       monitor, with a new skip_first_play=True flag so Kodi's
       setResolvedUrl() still drives the initial play (no double-start).
    2. SIMKL scrobble_start was never wired into the monitor — only Trakt
       and Bingebase fired on play start. SIMKL now fires alongside them
       (matching stop / pause / resume which were already correct).
    3. KDB.record_progress() was nested inside the Trakt try-block, so a
       network blip on Trakt's /scrobble/stop skipped the local watched
       tick too. Each tracker is now an isolated try-block and KDB always
       runs.
- FIX (Context-menu "Failed to add to list" / "Failed to remove from list"
  on every click):
  Trakt and SIMKL _post() returned an empty dict {} (falsy) for endpoints
  that respond with 200/204 No Content. bool(add_to_list(...)) therefore
  always evaluated to False even when the API call succeeded. _post() now
  returns True on successful empty bodies. Failure notifications now point
  the user at Settings -> Trakt / SIMKL -> "Show token status" so root-
  cause is one click away.
- FIX (silent auth failure):
  Trakt _post / _get now detect 401 Unauthorised, wipe the stale token,
  flip the "trakt_status" setting back to "Session expired -
  re-authenticate" and surface a notification — instead of silently
  returning None on every subsequent scrobble / list call forever.
  _refresh_token also wipes the token on 400/401/403 so a revoked
  refresh_token doesn't keep failing forever.
- Diagnostic upgrade: every non-2xx response from Trakt and SIMKL now
  logs the response body (truncated to 300 chars) in vidscr_debug.log,
  making it obvious whether the failure is auth, rate-limit, payload
  validation or a TLS issue.


v1.4.17 (2026-01) — by Zeus768
- NEW SOURCE: Vidnest multi-backend (vidnest.fun) — seven providers in
  parallel, live per-source progress dialog.



v1.4.7 (2026-02) — by Zeus768
- NEW (Debug): In-depth diagnostic report. Settings → Debug → "Run deep
  diagnostic report" performs:
    * Host audit  — Kodi build/version, platform, Python version,
                    arch / Android detection.
    * Dependency audit — requests / resolveurl / urllib3 / certifi
                    versions + script.module.* addon versions +
                    inputstream.adaptive presence.
    * Path audit  — profile writability, resolved Downloads folder,
                    Downloads writability, Kodi temp dir.
    * Settings dump — every Vidscr setting with TMDB key / Trakt /
                    SIMKL / Bingebase secrets auto-redacted.
    * Network probe — HEAD/GET of TMDB, vidsrcme.ru, vidsrc.xyz / to /
                    net / cc, 2embed, embed.su, multiembed, autoembed,
                    moviesapi, smashy, cloudnestra, Trakt, SIMKL,
                    gofile (status codes + round-trip ms).
    * Log tail   — last 200 lines of the addon-local debug log.
  Whole report shown inside a Kodi textviewer and can also be written
  to disk or emailed / uploaded for support.
- NEW: "Probe all stream hosts" — fast network reachability check on
  demand.
- NEW: "Export debug bundle (.zip)" — saves
        diagnostic_report.txt
        vidscr_debug.log
        settings_redacted.json
        environment.json
  into the device's Downloads folder. Offer to upload to gofile.io
  at end.
- NEW (Device bundle): "Download addon zip to Downloads folder" —
  packages the currently-installed Vidscr folder into
  plugin.video.vidscr-1.4.7.zip and saves it to the device's real
  Downloads folder. Works everywhere:
    * Android  /  Fire TV  /  Nvidia Shield
        → /storage/emulated/0/Download, /sdcard/Download,
          /storage/self/primary/Download, Android/data sandbox.
    * Windows   → %USERPROFILE%\Downloads
    * macOS     → ~/Downloads
    * Linux desktop / LibreELEC / CoreELEC
        → ~/Downloads, /storage/downloads, /var/media/Downloads
    * iOS / tvOS / unknown
        → special://home/Downloads (Kodi-managed, always available)
  The resolver probes every candidate and falls back through them
  until it finds a writable path. A "Custom Downloads folder" setting
  is available for locked-down devices.
- NEW: "Upload addon zip to gofile.io and show share link" — single
  click sideload helper. Builds the zip if needed, uploads to
  gofile.io and displays the share URL in a copyable textviewer.
- NEW: "Show resolved Downloads folder" — prints exactly which path
  the addon is using on this device.
- SECURITY: every diagnostic output (textviewer, zip, upload) runs
  through a redactor that masks the TMDB API key and any Trakt /
  SIMKL / Bingebase auth tokens so support logs can be shared safely.
- No behavioural changes to browsing, resolving or playback.


v1.4.6 (2026-01-?) — by Zeus768
- FIX: "No streams available" caused by cloudnestra page format changes
  combined with ResolveURL-only secondary chain.
- Cloudnestra resolver now recognises ~10 next-hop patterns (data-h XOR
  cipher, JS-set iframe.src, atob-decoded prorcp, document.write iframes,
  location.replace, /prosrc/, /rcp2/, /pe/, /nrcp/) instead of 4.
- Extracts m3u8 / mp4 URLs directly from BOTH the rcp page AND the next-hop
  body — a missing `file:` key no longer kills playback.
- Retries Cloudflare-challenged rcp pages with mobile UA + Sec-Fetch headers.
- Secondary providers (vidsrc.xyz / to / cc / net, 2embed, embed.su,
  multiembed, autoembed, moviesapi, smashy) now scrape iframes directly for
  m3u8 / mp4 — ResolveURL is only a backup, so the addon works even when
  ResolveURL is missing or its plugins are broken.
- Cap servers per title to 5 to avoid wasted timeouts on dead mirrors.
- Stream candidates now de-duplicated across all servers/providers.



v1.4.3 (2026-01-??) — by Zeus768
- NEW: Context-menu "+ Add to list…" / "− Remove from list…" now also
  appears on season rows and episode rows (operates at the parent-show
  level, which is how Trakt / SIMKL store watchlist / collection /
  favorites / plan-to-watch items).
- NEW: Episode rows now also include "Mark watched (Trakt / Bingebase /
  SIMKL)" quick actions — matching the movie-row context menu.


v1.4.2 (2026-01-??) — by Zeus768
- NEW: Context-menu on every movie / show row:
    • "+ Add to list…"   → picker with Trakt (Watchlist / Collection /
      Favorites) and SIMKL (Plan to Watch / Completed / On Hold / Dropped)
      options. Only authenticated services appear.
    • "− Remove from list…" → same picker for removal (Trakt remove, SIMKL
      /sync/remove-from-list or /sync/history/remove).
- Entries are hidden entirely when no tracker is enabled + authenticated.


v1.4.1 (2026-01-??) — by Zeus768
- NEW: "My Lists" root menu item — only shown when at least one tracking
  service (Trakt / SIMKL / Bingebase) is enabled in settings.
- NEW: Trakt — Watchlist, Collection, Favorites, Recommendations (Movies
  + Shows) and your user-created Personal Lists (with per-list item view,
  mixed movie/show lists handled).
- NEW: SIMKL — Plan to Watch, Completed, On Hold, Dropped (Movies, Shows
  and Anime variants).
- NOTE: Bingebase has no public list endpoints — an info notice is shown.
- Items in every list render with full TMDB art/metadata and use the
  existing playback pipeline, so play / mark-watched / resume behave
  identically to the rest of the addon.


v1.4.0 (2026-01-??) — by Zeus768
- NEW: "Movie Franchises" row inside Movies. 200 franchises listed
  alphabetically, paginated 40 per page (5 pages). Well-known franchises
  (MCU, Bond, Star Wars, Harry Potter, Fast & Furious, John Wick, etc.)
  use seeded TMDB collection IDs for instant load; the rest resolve via
  TMDB /search/collection and are cached.
- NEW: Movies > Trending (Today) and Trending (This Week).
- NEW: Movies > Decades — browse 1960s through 2020s.
- NEW: Movies > Themes & Keywords — Based on True Story, Time Travel,
  Heist, Christmas, Zombie, Vampire, Supernatural and 18 more.
- NEW: Movies > Directors — Spielberg, Nolan, Tarantino, Scorsese,
  Villeneuve, del Toro and 25+ more acclaimed directors, each listing
  every film they directed (combined credits, job=Director).
- NEW: TV Shows > Trending (Today) and Trending (This Week).
- NEW: TV Shows > Airing Today (TMDB /tv/airing_today).
- NEW: TV Shows > TV Collections & Universes — curated groups of shows
  that share a universe: Star Trek, Star Wars (TV), Marvel D+/Netflix,
  DC Arrowverse, Law & Order, CSI, NCIS, One Chicago, FBI, Doctor Who,
  Walking Dead, Yellowstone/Dutton, Breaking Bad/Saul, Game of Thrones/
  House of the Dragon, The Office (US+UK), 9-1-1, Grey's Anatomy,
  Criminal Minds, Supernatural, Power, Vampire Diaries.
- Added TMDB client helpers: search_collection, collection_details,
  trending_movies, trending_tv.


v1.3.3 (2026-05-01) — by Zeus768
- NEW: "On Deck" row inside TV Shows. Lists every show where a new
  episode has aired since your last watched episode. Driven by TMDB's
  last_episode_to_air vs your local watched store; future-dated air
  dates are excluded.
- NEW: Auto-rotating seasonal row inside Movies AND TV Shows:
    Oct 1-31       -> Halloween Horror
    Nov 15-Dec 31  -> Christmas (TMDB keyword 207317)
    Feb 1-14       -> Valentine's Romance
  The row is only added to the menu when a holiday window is active,
  so the rest of the year it stays out of the way.
- NEW: "Ambient Mode" item inside Movies. Downloads fanart from the
  last ~30 titles you've been watching (movies + shows), caches them in
  the addon profile folder, then launches Kodi's built-in slideshow so
  you get a slow Ken Burns-style ambient loop. Exit with Back or Stop.
- NEW: "Smart Next-Up" for TV. A non-blocking prompt appears ~90s
  before the end of an episode with a countdown; doing nothing (or
  picking "Play now") auto-plays the next episode. Picking "Cancel"
  skips it. Toggle + lead-time slider in Settings -> Playback.
  (This is the realistic in-plugin equivalent of a chromaprint end-
  credits detector — Kodi's Python API does not expose raw audio to
  addons so true fingerprinting isn't possible without bundling native
  binaries per platform.)


v1.3.2 (2026-05-01) — by Zeus768
- FIX: "Open Settings" from the root menu no longer pops up
  "Playback Failed — one or more items failed to play" after you close
  the settings window. The menu entry was marked as a playable list item
  but the handler only opened the settings dialog without resolving a
  URL, so Kodi's playlist player treated it as an unplayable file. It is
  now a normal folder-style action that opens the settings dialog and
  quietly cancels the navigation afterwards (you stay on the menu you
  were on).
- FIX: "Next page »" now actually advances to page 2, 3, ... on every
  Movies / TV / People list. Previously the button routed to the actions
  `movies_page`, `tv_page`, `people_page` — none of which are handled by
  the router, so Kodi silently dropped back to the root menu. Each list
  now carries its own next-page action plus any context it needs
  (genre_id, studio_id, network_id, target), so pagination works on
  Popular, Top Rated, Upcoming, Now Playing, Oscar Nominated, Genres,
  Studios/Networks and Actors.


v1.3.1 (2026-05-01) — by Zeus768
- FIX: Playback ("no stream available" on every title). Cloudnestra's rcp
  page layout changed again — the resolver now accepts any next-hop
  iframe/window.location, not just the old /prorcp/ path (also handles
  /prosrc/, /rcp2/, /source/ and inline m3u8/mp4 URLs).
- FIX: When cloudnestra serves a Cloudflare challenge page (short HTML,
  no player iframe), vidscr now detects it and hands the rcp URL to
  ResolveURL's cloudnestra plugin as a per-server fallback before giving up.
- Improved diagnostic logging: we now log a 220-char preview of the rcp /
  next-hop body when extraction fails, making it much easier to spot when
  cloudnestra changes their page format again.


v1.3.0 (2026-01) — by Zeus768
- NEW: SIMKL integration (https://simkl.com) alongside Trakt + Bingebase.
  Track movies, TV shows and anime watch history with the same scrobble
  semantics as Trakt — enable any one, two, or all three trackers
  simultaneously and they all stay in sync.
- PIN device-code auth: Settings -> SIMKL -> Authenticate, enter the
  code shown at simkl.com/pin in any browser, done. Token is stored
  locally in the addon profile (simkl_token.json) and never leaves
  the device.
- Scrobbling: start / pause / stop fire to api.simkl.com /scrobble/*
  with progress %, IMDb + TMDB ids, season + episode (for shows/anime).
  Stop with >=80% auto-marks the item watched (SIMKL default).
- Mark-watched context menu calls /sync/history (movies + episodes).
- "Sync watched history now": pulls /sync/all-items (movies + shows +
  anime) and /sync/playback/{movie,episode} into the addon-local
  watched / continue-watching store.
- Bring your own client_id (free, takes 30s):
    1. Sign up at simkl.com
    2. Open simkl.com/settings/developer/new/
    3. Create an app (redirect URI: urn:ietf:wg:oauth:2.0:oob)
    4. Paste the API key (client_id) into Vidscr -> SIMKL settings.


v1.2.0 (2026-04-30) — by Zeus768
- NEW: Bingebase integration (https://bingebase.com) alongside Trakt. Track
  digital releases, watchlist progress and watched history without giving up
  Trakt — enable one, the other, or both.
- Device-code authorization: Settings -> Bingebase -> Authenticate, enter
  the code shown at bingebase.com/activate, done. Tokens are stored locally
  in the addon profile (bingebase_token.json) and never leave the device.
- Scrobbling: start / pause / stop events fire to your personal
  https://bingebase.com/webhooks/kodi/<token> webhook, with full media
  metadata (title, year, season/episode, IMDb + TMDB ids, progress %).
- Mark Watched (Bingebase) context-menu entry on every movie tile.
- Two-way sync (Settings -> Bingebase -> Sync watched history now) — push
  the addon-local watched store to Bingebase via /api/v1/kodi/import and
  pull Bingebase history back via /api/v1/kodi/export so ✓ markers light
  up everywhere.
- Player monitor now fans scrobbles out to both Trakt and Bingebase in
  parallel — no extra latency on playback start/pause/stop.


v1.1.1 (2026-02-XX) — by Zeus768
- NEW: Trakt client_id / client_secret preconfigured — just open
  Settings -> Trakt -> Authenticate, enter the code at trakt.tv/activate
  and you're done. (You can still override with a custom client in the
  settings if you ever want your own app.)
- NEW: "Continue Watching" row at the top of both Movies and TV Shows
  submenus. Shows everything with a resume position (locally and via
  Trakt's /sync/playback once you've authenticated and synced). For TV
  it picks the next episode to watch — the in-progress one if any,
  otherwise the one immediately after your last watched episode.
- Trakt sync now also pulls /sync/playback/movies and
  /sync/playback/episodes so Continue Watching populates from your Trakt
  account on first sync.

v1.1.0 (2026-02-XX) — by Zeus768
- NEW: Secondary source (vidsrc.xyz / vidsrc.to / 2embed mirrors) behind a
  Settings -> Sources toggle. When enabled and "Show source picker" is on,
  you'll be asked which source to try; otherwise primary (vidsrcme.ru) is
  tried first and the secondary is silently appended to the fallback chain.
- NEW: Server sub-picker — if the embed page exposes multiple Cloudnestra
  mirrors, you can pick a specific one (or "All — auto"). Toggle in
  Settings -> Sources -> "Show server sub-picker".
- NEW: Per-show quality memory. The last quality you picked for each show /
  movie is remembered (Settings -> Playback -> "Remember last picked
  quality per show"), so episode 2 onward auto-plays at the quality you
  chose for episode 1 — no re-pick needed.
- NEW: Trakt scrobbling + watch history (device-code OAuth at
  trakt.tv/activate). Watching anything in Vidscr now sends start/pause/
  stop scrobbles to Trakt. Use Settings -> Trakt -> "Sync watched history
  now" to pull your existing Trakt history into the addon-local store so
  Watched / Resume markers light up across the whole addon.
- NEW: Resume / Watched indicators on lists. ✓ for watched, ▶ N% for
  in-progress. Reads Kodi's MyVideos.db (if the item happens to be in your
  library) and an addon-local SQLite store (used to record progress on
  every Vidscr playback).
- NEW: 10-second stall auto-fallback. If the picked stream doesn't start
  within 10 s (configurable), the addon silently switches to the next
  candidate in the chain. Toggle / threshold in Settings -> Playback.
- Internal: providers split into resources/lib/sources.py with vidsrc.py
  (primary) and vidsrc2.py (secondary).

v1.0.2 (2026-04-30)
- NEW: Per-item Source/Quality picker (4K / 1440p / 1080p / 720p / 480p / 360p / AUTO with HLS/MP4 tags).
- NEW: Master HLS playlists are now parsed and exploded into their individual quality variants.
- FIX: Resolver finds the prorcp link in many more cloudnestra page variants.
- FIX: HLS playback — proper application/vnd.apple.mpegurl MIME type.
- NEW: Branding refreshed (icon.png / fanart.jpg) by Zeus768.

v1.0.1 (2026-01-30)
- FIX: Playback — resolver now correctly handles cloudnestra prorcp
  templates with {v1}..{vN} CDN placeholders.
- Added in-addon debug log + Settings -> Debug tools.

v1.0.0 (2026-01-30)
- Initial release.
