[
  {
    "guid": "cea40e65-c04f-4854-b6c4-3428360087fe",
    "name": "KoalaPaw Server Companion",
    "description": "Skip intros and even out video loudness for KoalaPaw (and any Jellyfin client).",
    "overview": "Skip intros, even out video loudness, and cut TV theme extras from detected intros for KoalaPaw (and any Jellyfin client).",
    "owner": "koalapaw",
    "category": "General",
    "versions": [
      {
        "version": "0.0.15.0",
        "changelog": "Jellyfin 12. Requires 12.0 or newer (targetAbi 12.0.0.0, .NET 10). 10.11 keeps 0.0.14.0.",
        "targetAbi": "12.0.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.15.0/koalapaw-server-companion_0.0.15.0.zip",
        "checksum": "df1bd6944d8a537070ec11ed52eb577f",
        "timestamp": "2026-09-22T12:05:06Z"
      },
      {
        "version": "0.0.14.0",
        "changelog": "Watch together: presence and party endpoints under /KoalaPaw/WatchParty so KoalaPaw TVs on the same server (any network) can see who is watching, join them, and keep start/pause/seek/next-item in step. Identity is per device, so two TVs on one profile work.",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.14.0/koalapaw-server-companion_0.0.14.0.zip",
        "checksum": "ca6b2d8529eee346251d351c12785d6e",
        "timestamp": "2026-09-13T19:17:32Z"
      },
      {
        "version": "0.0.13.1",
        "changelog": "TV theme extras from detected intros: after a confident intro, the scan cuts a short sting (up to 20s) from that opening into theme.mp3 on the series folder so KoalaPaw TV can loop it. Existing intros are backfilled. Skips folders that already have theme.* or theme-music/. Films are unchanged. Supersedes 0.0.13.0.",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.13.1/koalapaw-server-companion_0.0.13.1.zip",
        "checksum": "94d9ae469e5a12ca0b93961b0dcae910",
        "timestamp": "2026-08-30T19:39:18Z"
      },
      {
        "version": "0.0.12.1",
        "changelog": "Listed users now carry the admin's kid/grown-up designation and avatar pick (per-user dropdowns on the config page), so the TV adds them with the right profile mode and icon.",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.12.1/koalapaw-server-companion_0.0.12.1.zip",
        "checksum": "f8dcbca7d10fae5fd74f082972beb7fa",
        "timestamp": "2026-08-18T10:45:57Z"
      },
      {
        "version": "0.0.12.0",
        "changelog": "Skip intros and even out video loudness for KoalaPaw (and any Jellyfin client).",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.12.0/koalapaw-server-companion_0.0.12.0.zip",
        "checksum": "77a6062613d00c2b8e57aae8497a9257",
        "timestamp": "2026-08-18T10:27:52Z"
      },
      {
        "version": "0.0.11.5",
        "changelog": "Rescan analysis is no longer tied to the HTTP request: closing the tab mid-scan no longer aborts it half-staged; the outcome is always recorded.",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.11.5/koalapaw-server-companion_0.0.11.5.zip",
        "checksum": "09f172fb358521ceaf9203bc1181f8a7",
        "timestamp": "2026-08-14T22:53:01Z"
      },
      {
        "version": "0.0.11.4",
        "changelog": "Fix rescan result not rendering: the page now parses the POST response as JSON (was read as text, showing \"Unknown / 0 episodes sampled\").",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.11.4/koalapaw-server-companion_0.0.11.4.zip",
        "checksum": "8d7edf2c24b79686a7b59538fa328b3e",
        "timestamp": "2026-08-14T22:02:52Z"
      },
      {
        "version": "0.0.11.3",
        "changelog": "Rescan now analyses the clicked season immediately and returns its result (no queue, no batch cap); the max-seasons-per-run cap is removed entirely; season rows surface the failure reason when analysis fails.",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.11.3/koalapaw-server-companion_0.0.11.3.zip",
        "checksum": "92a328ce147916665fdc69af2ab80aa1",
        "timestamp": "2026-08-14T21:58:53Z"
      },
      {
        "version": "0.0.11.2",
        "changelog": "Fix season/series drill-down and retry buttons: the webcomponents polyfill's createElement shim throws on the { is: \"emby-button\" } options object, so buttons are now created via innerHTML; load failures now log to the browser console instead of failing silently.",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.11.2/koalapaw-server-companion_0.0.11.2.zip",
        "checksum": "52ffa09cd889fad787297456e255b9d7",
        "timestamp": "2026-08-14T21:39:19Z"
      },
      {
        "version": "0.0.11.1",
        "changelog": "Fix dashboard pages: move inline scripts inside the page div. Jellyfin's view loader extracts only the data-role=\"page\" element, so scripts outside it were silently dropped and every button (save, scan now, retry) was dead since 0.0.8.0.",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.11.1/koalapaw-server-companion_0.0.11.1.zip",
        "checksum": "b6c7c4fbe214eb3c27dd305414783a82",
        "timestamp": "2026-08-14T20:00:35Z"
      },
      {
        "version": "0.0.11.0",
        "changelog": "Intro & Outro dashboard page: trigger the scan and watch live progress, then drill Library \u2192 Series \u2192 Season \u2192 Episode to see per-item intro/outro placement, season-level detection confidence, and failure state. Per-season scan records persist across runs; successful analysis now clears an item's earlier failure record. New admin endpoints under /KoalaPaw/Segments (Overview/Series/Seasons/Episodes + per-season Rescan).",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.11.0/koalapaw-server-companion_0.0.11.0.zip",
        "checksum": "c13ef9424909d8bd2f0464cfabf6fb5f",
        "timestamp": "2026-08-14T19:44:35Z"
      },
      {
        "version": "0.0.10.0",
        "changelog": "Intro/credits scan reports its outcome: episodes scanned, intros/outros found, and mean correlation confidence, exposed at GET /KoalaPaw/Segments/Report (admin) so the TV's scan page can show why a show came back empty.",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.10.0/koalapaw-server-companion_0.0.10.0.zip",
        "checksum": "3d0fe05464eff60775880d3e2b2a0476",
        "timestamp": "2026-08-14T14:32:35Z"
      },
      {
        "version": "0.0.9.1",
        "changelog": "Fix dashboard JS field casing (Jellyfin serializes PascalCase) so the failure count, list, and retry buttons actually populate.",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.9.1/koalapaw-server-companion_0.0.9.1.zip",
        "checksum": "c15fbbb81cff2536903e66e7eac0dc0a",
        "timestamp": "2026-08-12T10:57:23Z"
      },
      {
        "version": "0.0.9.0",
        "changelog": "Dashboard: per-failure retry (clears the record and queues the scan), loudness/segments \"scan now\" buttons, failure list with item names; API endpoints now require admin elevation.",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.9.0/koalapaw-server-companion_0.0.9.0.zip",
        "checksum": "bcbccd545ed0c7f4530f8faa5314f799",
        "timestamp": "2026-08-12T10:53:00Z"
      },
      {
        "version": "0.0.8.0",
        "changelog": "Failure tracking (AnalysisStore) so undetectable items aren't retried forever; library-scan and startup triggers; plugin configuration (toggles, LUFS target, batch caps, fingerprint windows); dashboard web page with settings and failure log; HeartbeatTask repurposed as health check.",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.8.0/koalapaw-server-companion_0.0.8.0.zip",
        "checksum": "b483572d8cb826dd1be2a379c6a8bc2d",
        "timestamp": "2026-07-29T14:32:50Z"
      },
      {
        "version": "0.0.7.0",
        "changelog": "Fix loudnorm stderr race, segment staging leak, DI registration, changelog packaging; reduce chromaprint head window 600\u2192200s; TreatWarningsAsErrors; new tests.",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.7.0/koalapaw-server-companion_0.0.7.0.zip",
        "checksum": "5b8e9e078f49f2aeb272fad70a76af13",
        "timestamp": "2026-07-21T20:40:16Z"
      },
      {
        "version": "0.0.6.0",
        "changelog": "Credits/Outro: chromaprint tail correlation; stage Intro+Outro together; drop spike-2 fixture.",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.6.0/koalapaw-server-companion_0.0.6.0.zip",
        "checksum": "5b7a0b65c3b287c44d1fac14e5379b2e",
        "timestamp": "2026-07-21T20:38:11Z"
      },
      {
        "version": "0.0.5.2",
        "changelog": "Intro scan: IncludeItemTypes Episode (fix unknown-type deserialize crash).",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.5.2/koalapaw-server-companion_0.0.5.2.zip",
        "checksum": "eecafb6f027759677dba4d8f39a58a28",
        "timestamp": "2026-07-18T13:39:23Z"
      },
      {
        "version": "0.0.5.1",
        "changelog": "Intro MediaSegments: chromaprint season scan + manual spike-2 fixture.",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.5.1/koalapaw-server-companion_0.0.5.1.zip",
        "checksum": "c428b64b485fa8e03fa32f6e9996552e",
        "timestamp": "2026-07-18T13:37:33Z"
      },
      {
        "version": "0.0.5.0",
        "changelog": "Intro MediaSegments: chromaprint season scan + manual spike-2 fixture.",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.5.0/koalapaw-server-companion_0.0.5.0.zip",
        "checksum": "99b727c93bc30ee5ed6e6141254c0f51",
        "timestamp": "2026-07-18T13:23:14Z"
      },
      {
        "version": "0.0.4.0",
        "changelog": "Remove spike 1 DEV task; loudness scan is the production path.",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.4.0/koalapaw-server-companion_0.0.4.0.zip",
        "checksum": "fda4fca6a7e22b7825fec4f5552fdd37",
        "timestamp": "2026-07-17T21:07:40Z"
      },
      {
        "version": "0.0.3.1",
        "changelog": "Loudness scan: IncludeItemTypes Episode/Movie (fix unknown-type deserialize crash).",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.3.1/koalapaw-server-companion_0.0.3.1.zip",
        "checksum": "e214e711a23f49cdded4a8e6b4258c5e",
        "timestamp": "2026-07-17T19:25:37Z"
      },
      {
        "version": "0.0.3.0",
        "changelog": "Video loudness scan: ffmpeg loudnorm \u2192 NormalizationGain (daily/interval).",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.3.0/koalapaw-server-companion_0.0.3.0.zip",
        "checksum": "310b5b5cd9d374e778266951e031cab7",
        "timestamp": "2026-07-17T19:22:46Z"
      },
      {
        "version": "0.0.2.0",
        "changelog": "Skeleton: registers and logs a heartbeat scheduled task.",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.2.0/koalapaw-server-companion_0.0.2.0.zip",
        "checksum": "921eee56bba315baeafd243d5e01afa0",
        "timestamp": "2026-07-17T19:10:37Z"
      },
      {
        "version": "0.0.1.0",
        "changelog": "Skeleton: registers and logs a heartbeat scheduled task.",
        "targetAbi": "10.11.0.0",
        "sourceUrl": "https://jellyfin.kswapps.com/koalapaw-repo/0.0.1.0/koalapaw-server-companion_0.0.1.0.zip",
        "checksum": "31c0477b760bd30b587bb844ff1e80d9",
        "timestamp": "2026-07-17T17:06:36Z"
      }
    ]
  }
]
