• v3.12.0 1e2ea09731

    v3.12.0
    All checks were successful
    CI / build-and-test (push) Successful in 2m26s
    Stable

    joeyr released this 2026-07-31 08:54:22 -05:00 | 23 commits to main since this release

    Added

    • Classic Rift champ select reads the published counters artifact instead of
      scraping op.gg.
      3.11.0 made the live path work for the mode; this puts the
      nightly file in front of it, the same short-circuit ranked has had — a map
      lookup instead of one page fetch per enemy champion against a draft timer.

      It is a second file, not a second key in the existing one. op.gg indexes
      classic pages by base champion id, so id 24 exists in both queues meaning two
      different kits, and one map holding both would answer a classic Jax with
      ranked Jax's matchups: correctly shaped, plausibly ranged, confidently wrong,
      and undetectable by anything downstream. countersArtifactRouter picks the
      file from the id block and has its own tests for exactly that reason.

      A missing classic file is an expected state rather than an outage — the
      producer's classic pass is opt-in and the mode is limited-time — so the router
      reports nothing and the request falls through to op.gg, behaving exactly as it
      did before the file existed. It never substitutes the other queue's
      artifact
      .

    • rosterForChampionId, for the places a champion arrives as a bare number with
      no alias or map beside it.

    Changed

    • CountersArtifactAdapter now takes the champion id when asking for its
      artifact, since which file answers depends on which queue the champion is
      from.
    Downloads