• v4.0.2 8ed5b79f68

    v4.0.2
    All checks were successful
    CI / build-and-test (push) Successful in 2m51s
    Stable

    joeyr released this 2026-08-10 22:01:45 -05:00 | 0 commits to main since this release

    Fixed

    • "Your Pool This Patch" was quoting an ally pairing from the wrong lane. The
      champion-synergies artifact splits every pairing by the ally's role — Hwei mid
      and Hwei bottom are separate rows — but the row rendered beside a pool entry
      reads "50.0% with Hwei · 62 games" and says nothing about which lane Hwei
      played. The consumer matched on champion id alone, so whichever single lane
      happened to clear the 50-game floor was shown beside a teammate hovering that
      champion in a different lane. In a real champ select, Briar's Hwei row was a
      62-game mid-Hwei sample displayed next to a bot-lane Hwei; the pairing that
      actually applied was 27 games at 29.6%.

      The indexer now sums each ally's rows across the roles it was played at and
      applies the floor to the total, so a row means what its label says: games with
      that champion anywhere on the team. Summing is exact rather than an
      approximation — the artifact carries wins per row, so the combined rate is
      Σwins / Σgames, not an average of rates.

      Splitting by ally lane was also the wrong statistical call for this section.
      The same file carries no measurable pairing effect at any sample floor (see
      src/shared/champion-synergies/schema.ts), so subdividing a pairing by lane
      subdivides noise, and the thin slices read louder: Nocturne beside a bottom
      Hwei is 66.7% over 18 games, while Nocturne beside Hwei anywhere is 59.1% over
      71. Against the patch-16.15 file (26,698 matches, 119,760 pair rows) the change
      lifts qualifying pairings from 3,980 to 5,331 — about a third more evidence at
      the same floor, not a lowered bar.

    Changed

    • SynergyAllyRow no longer carries allyRole, and indexChampionSynergies
      emits one row per ally champion rather than per (champion, role). This also
      retires a latent duplicate-React-key case in PoolStrengthSection, which keys
      ally lines on the champion id.
    • MAX_ALLY_EVIDENCE_PER_ENTRY stays at 2, and is now what usually limits the
      rows on screen rather than the game floor: a full team of hovering allies
      routinely puts three or four pairings over the floor, and the two best-sampled
      win. A qualifying pairing can be computed and not shown — intended, and now
      documented at the constant.
    Downloads