• v0.4.0 b4c4d2df63

    0.4.0 — canonical-name fix and patch archiving
    All checks were successful
    CI / gate (push) Successful in 34s
    CI / image (push) Successful in 15s
    Stable

    joeyr released this 2026-07-29 09:06:04 -05:00 | 253 commits to main since this release

    Fixed

    Champion display names stopped being unique, and it took both op.gg artifacts down.
    Patch 16.15 added 60 Jade_* entries to Data Dragon (173 champions -> 233), each carrying its base champion's display name. ChampionDirectory built its name->id maps last-write-wins, so for the 18 names whose base alias sorts before the Jade_ block, the 60001+ id won. That id picks the op.gg slug, and jade_annie is not a page: 31 of 272 (champion, role) pairs failed, coverage fell to 88.6%, and the 90% floor correctly withheld both counters and runes on the night of 2026-07-28.

    Name lookups now keep the lowest id. The id->slug direction never needed a fix.

    Added

    A patch's final artifacts are archived instead of overwritten. The four canonical paths still hold whatever patch is live — lol-companion fetches one fixed URL forever, unchanged. On the first run of a new patch the outgoing file is copied to ARCHIVE_DIR/<old patch>/<same basename>, e.g. data/archive/16.14/champion-runes.json.

    The trigger is the committed file's own generatedFrom.patch differing from the one being published, so no schedule or stored state is involved and a failed copy retries the next night. The bytes come from the read the no-op check already performs. Existing archives are never rewritten, and an archiving failure is logged rather than costing the publish.

    Kept indefinitely: ~3 MB per patch across the four files.

    Upgrade notes

    No consumer change. ARCHIVE_DIR defaults to data/archive; the deployed stack sets it explicitly.

    Downloads