• v3.4.3 d50e24e733

    v3.4.3 — full Chromium sandbox + navigation hardening
    All checks were successful
    CI / build-and-test (push) Successful in 2m3s
    Stable

    joeyr released this 2026-07-19 10:32:13 -05:00 | 46 commits to main since this release

    Changed

    • All three windows now run with the full Chromium sandbox (sandbox: true). The preload script is bundled by Vite (vite.preload.config.mts) into a single self-contained CJS file whose only runtime require is 'electron', which is what a sandboxed preload permits — previously it was tsc-compiled with an on-disk require of the shared IPC contract, forcing sandbox: false. No behavior change; renderer + preload now run fully sandboxed as defense-in-depth on top of the existing contextIsolation/CSP boundary.
    • In-window navigation is now blocked (will-navigate hardening). The renderer never legitimately navigates, so any attempt is denied and logged; opening the update notice in the browser is unaffected. Dev-server reloads under npm run dev stay allowed.
    • BRIDGE_VERSION no longer needs a manual bump on release — the Vite preload bundle inlines it from package.json the same way the renderer's version badge is inlined.
    Downloads
  • v3.4.2 e541de673e

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

    joeyr released this 2026-07-19 09:46:12 -05:00 | 47 commits to main since this release

    Fixed

    • Rune Import now highlights the board you actually imported, not always the first one. The accent edge used to sit permanently on the top (most-picked) row, so after importing a different combo nothing showed which page had landed. The board you import now gets a ✓ Imported marker and a success-coloured edge, its Import button becomes Re-import, and the top row keeps its "recommended fast path" styling. The marker clears when a new champ-select lock-in fetches a fresh list, and a failed import (error / pages-full) leaves it off.
    Downloads
  • v3.4.1 84ce2fb234

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

    joeyr released this 2026-07-18 19:48:47 -05:00 | 48 commits to main since this release

    Changed

    • Rune "pick" now means the share of all your games, not op.gg's within-group number. Each rune row's pick rate used to be op.gg's per-page figure — measured only against other pages with the same keystone — so the rows on one champion routinely summed well past 100% (e.g. Amumu jungle showing 89% + 80% + 82% + …). Each combo's pick rate is now its share of all of that champion and role's games, backed out of op.gg's own totals, so the rows read intuitively and never exceed 100%. The "games" count and win rate shown alongside are now the combo's rollup too (so all three share one denominator), while the page the Import button writes is still the combo's most-played variant.
    Downloads
  • v3.4.0 681d74fda3

    v3.4.0
    All checks were successful
    CI / build-and-test (push) Successful in 1m28s
    Stable

    joeyr released this 2026-07-18 19:28:22 -05:00 | 49 commits to main since this release

    Added

    • Enemy lanes are now guessed automatically. Locked enemies no longer pile up under "Unassigned" with a "LANE?" prompt — the board places each one into its most likely lane using the op.gg per-position tier lists (e.g. Kindred → Jungle, Nautilus → Support, Senna → Bottom when Nautilus holds Support), and the lane dropdown shows the guess as its default (e.g. "Guess · Jungle"). Picking a lane by hand still overrides any guess, manual/LCU-known lanes are never guessed over, and a champion with no tier data is only placed when it's the last one left. The guessed lanes also feed counter-pick targeting, so "VS YOU" and Suggested Picks lock onto your likely lane opponent without any clicking.
    Downloads
  • v3.3.0 0e7e70c923

    v3.3.0
    All checks were successful
    CI / build-and-test (push) Successful in 1m25s
    Stable

    joeyr released this 2026-07-18 15:11:16 -05:00 | 50 commits to main since this release

    Added

    • Rune tooltips now say what each rune does. Hovering any perk on a rune board (runes and stat shards alike, plus the header keystone icon) shows its description under the name — e.g. "Triumph — Takedowns restore 10% of your missing health…". The text comes from the running League client's own perk catalog (GET /lol-perks/v1/perks, a read-only localhost call), so it always matches the client's exact patch and language; if the catalog hasn't resolved yet, tooltips fall back to the name alone.
    Downloads
  • v3.2.2 27f3468597

    v3.2.2
    All checks were successful
    CI / build-and-test (push) Successful in 1m25s
    Stable

    joeyr released this 2026-07-18 14:51:20 -05:00 | 51 commits to main since this release

    Changed

    • Internal maintenance — no user-facing changes. The op.gg scrapers now share one common module (position slugs, URL scheme, embedded-JSON extraction, error mapping), the main-process startup was decomposed into focused wiring functions, and the renderer store gained a single bridge accessor with this-free action types.
    • Tooling: type-checked ESLint now gates CI (typecheck → lint → tests → build), and the repo declares engines.node >=22.19, an .nvmrc, and an .editorconfig. A handful of latent nits the new lint surfaced were fixed (dead stores, untyped JSON parses, a non-Error promise rejection, a zero-width space in a comment).
    Downloads
  • v3.2.1 5609f97b44

    v3.2.1
    All checks were successful
    CI / build-and-test (push) Successful in 1m8s
    Stable

    joeyr released this 2026-07-18 10:52:43 -05:00 | 58 commits to main since this release

    Changed

    • Rune boards now sit two per row (2x2 for the usual four combos). Each full-width card in v3.2.0 left the right half of the window empty; the combo cards now share rows in a two-column grid, falling back to one per row in narrow windows so the perk rows never crush.

    Installers (Windows x64): LoL-Companion-3.2.1-setup.exe (NSIS) and LoL-Companion-3.2.1-portable.exe attached below.

    Downloads
  • v3.2.0 1469cb4fba

    v3.2.0
    All checks were successful
    CI / build-and-test (push) Successful in 1m16s
    Stable

    joeyr released this 2026-07-17 18:09:33 -05:00 | 59 commits to main since this release

    Added

    • Full rune boards in the Rune Import section. Every recommended combo now renders the complete rune page the way the League client shows it — all four primary-tree rows, the secondary-tree rows, and the three stat-shard rows, with every rune icon on the board and the page's actual picks highlighted (the rest dimmed). Previously each combo was a single compact row showing only the keystone icon and text stats.

    Changed

    • Suggested Picks disappears once you lock in. Counter suggestions exist to help choose your pick, so after your own champion is locked they're dead weight — the section is now dropped at that point and the freed space goes to the full rune boards (which appear only after lock-in).
    Downloads
  • v3.1.3 603386467d

    v3.1.3
    All checks were successful
    CI / build-and-test (push) Successful in 1m45s
    Stable

    joeyr released this 2026-07-15 22:09:50 -05:00 | 60 commits to main since this release

    Fixed: the imported rune combo now shows up in the League client itself, not just the app's toast.

    v3.1.1/v3.1.2 only reworded the companion's own success message. The real rune page name written into the client (visible in its rune-page dropdown) still read just "LoLC: Lux Support" with no way to tell which combo had landed. The page name now carries an abbreviated combo suffix too, e.g. "LoLC: Lux Supp Sorc+Dom", truncated to fit the LCU's ~25-char page-name cap.

    Downloads
  • v3.1.2 1a647df9e3

    v3.1.2
    All checks were successful
    CI / build-and-test (push) Successful in 1m4s
    Stable

    joeyr released this 2026-07-15 21:02:16 -05:00 | 61 commits to main since this release

    Fixed

    • Rune import success message now leads with the page name. v3.1.1 led with the combo (Imported "Sorcery + Domination" as "LoLC: Lux Support"), but the "LoLC: ..." page name is what you actually see in the client'''s own rune-page dropdown, so the message now leads with that and puts the combo in parentheses: Imported "LoLC: Lux Support" (Sorcery + Domination) — applied in your client.
    Downloads