• v0.7.0 73e0b261ae

    v0.7.0
    All checks were successful
    CI / gate (push) Successful in 35s
    CI / image (push) Successful in 14s
    Stable

    joeyr released this 2026-07-30 23:40:15 -05:00 | 241 commits to main since this release

    Added

    • champion-runes-classic.json is published. v0.6.0 shipped the extractor
      with nothing wired to it; the classic pass now crawls rune pages alongside
      counters and publishes them.

      Its own schema, not the modern one with a flag. Classic Rift restores the
      pre-2017 rune system, which is a different data model rather than a variant:
      no keystone, no primary/secondary path, no shard rows, no selectedPerkIds
      the things champion-runes.schema.ts is built around. A page is a flat
      multiset of four rune kinds held in quantities. Forcing it into the modern
      shape would mean inventing empty paths or making half that schema optional,
      which would weaken the validation currently catching drift on the ranked file.

      No perk dictionary either. The modern artifact hoists display strings because
      inlining measured 1.9 MB against 212 KB across ~271 pairs of ~36-option
      boards; classic is ~81 pairs carrying four runes each, so inlining costs a few
      KB and removes a rehydration step from the consumer.

    Fixed

    • The classic artifacts no longer claim a rank band they do not have.
      op.gg accepts the tier parameter for classic pages and discards it —
      iron_plus, challenger and a deliberately invalid value all return
      byte-identical rows. Recording the band the crawl asked for would be a false
      provenance claim, and anything comparing classic to ranked figures would
      silently compare a gold+ population against an everyone population. The files
      now record all.

    Notes

    Champion ids are re-keyed on the way out, and this is the subtle one. op.gg
    indexes classic CHAMPION pages by BASE id — the tier list returns 24 for Jax and
    the page lives at /champions/jax, while jade_jax 307-redirects — but champ
    select and the live client both report 60xxx, and the consumer looks entries up
    by the id it is holding. So the crawl takes base ids in and publishes classic ids
    out. A file keyed by base ids would validate, read correctly in review, and never
    match a single lookup. Rune ids need no such treatment: op.gg already publishes
    those in the 775xxx classic block, as it does items in 77xxxx. Champions are
    the exception.

    Downloads