-
v3.16.0 — Classic Rift item builds
StableAll checks were successfulCI / build-and-test (push) Successful in 1m55sreleased this
2026-08-07 23:11:03 -05:00 | 11 commits to main since this releaseFixed
-
Classic Rift shows item builds again. Deleting the op.gg items scraper in
3.15.0 took classic's item list with it: every request routed to
champion-builds.json, which is keyed by live ids and built from queue 420
only, so a classic lock-in asked for champion60051, found no key, and
rendered "No item builds for this champion and role in the latest data."The list now comes from
champion-items-classic.json, which the sibling
crawler has been publishing nightly since data v0.9.0 — 88 champion-roles and
1,132 builds, already laid out in the four sections the panel renders.
Added
-
A second item artifact, routed on the champion id block. Ranked and
classic cannot share one file.champion-builds.jsonis counted from Riot's
own match timelines and Riot's match-v5 does not cover Classic Rift, so op.gg's
aggregation is the only measurement that exists for the mode. They cannot share
champion ids either — op.gg keys classic pages by BASE id, so id 24 exists in
both naming two different kits, and a classic Jax resolved against the ranked
file would return ranked Jax's build: correctly shaped, plausibly ranged, and
confidently wrong.ItemOptionsProviderroutes on the60xxxblock and never
merges the two lists.The file may legitimately 404 — the producer's classic pass is opt-in and the
mode is limited-time — and a miss is an empty panel, since the scraper this
replaced is gone. -
Builds op.gg recommends are shown as recommendations, not as zeroes. op.gg
pads every classic page with editorial item orders carrying no play, win or
pick figures — 557 of the 1,132 published rows, and a typical champion-role has
one measured core against two recommended ones. The old scraper dropped every
row without statistics, which is most of what these pages contain and why the
panel was close to empty even before it was deleted.ItemBuildOptionis now a discriminated union onbasis, with the stat fields
absent rather than zeroed on a recommended row. A zero would sort and filter
alongside real rows and read as "measured, nobody played it" — a stronger claim
than op.gg is making. The card shows "Recommended by op.gg" where it shows the
stat line, and the type is what enforces it: nothing can readwinRatewithout
first narrowing onbasis.
Changed
- Classic core sequences carry their boots inside the order, unlike ranked
ones — op.gg publishes them that way — socoreItemIdsnow accepts up to six
items and an item may appear in both the Core and Boots strips. The strips
carry no rates, so nothing is double-counted. - Classic item rows carry their names inline and no icons, so the panel renders
text nameplates there. Adding icons is a producer-side follow-up. - Nothing about the write path changed: classic builds remain display-only, with
the Import buttons hidden in the renderer and the write refused at the IPC
boundary on the same60xxxid block.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-