• v1.9.0 83d3360e08

    v1.9.0 Stable

    joeyr released this 2026-06-30 10:24:36 -05:00 | 102 commits to main since this release

    Added

    • Your champion pool is now pre-harvested. Adding champions to your pool in the settings panel queues a background benchmark harvest for each one at your own rank tier (the same data the in-game overlay compares against), and the saved pool is also backfilled at startup. Harvests run one at a time and skip any champion whose data is already fresh, so editing the pool is cheap.

    Fixed

    • The scouting report's "on champ" and "role" rows no longer come back blank during a harvest. The benchmark harvester and the scouting report each had their own rate limiter but shared one Riot API key, so when a harvest was running as a game went live their combined traffic blew past the key's 100-requests-per-2-minutes cap — and the scout's deep tier (recent-match stats) was the casualty, leaving those rows as "—". The harvester now runs in-process behind the same rate limiter as the scout, and pauses entirely while a game is live so the scouting report gets the full budget; it resumes from a checkpoint when the game ends.

    Internal

    • The benchmark harvester moved from a spawned scripts/harvest-benchmarks.mjs child process to an in-process module (src/main/live/harvester.ts) sharing the scout's RiotClient. The script remains as a thin CLI shim for manual npm run harvest:benchmarks runs (now requires npm run build:main first).
    Downloads
  • v1.8.0 fbeb36c044

    v1.8.0 Stable

    joeyr released this 2026-06-29 23:18:07 -05:00 | 103 commits to main since this release

    Added

    • The scouting report now shows whether each player was found. A small indicator next to every riot ID pulses as a dot while the row-1 identity lookup (account → puuid) is in flight, then resolves to a green ✓ when the player is found or a red ✕ when they can't be (no tag exposed, or Riot has no such account). This makes the first pull visibly populate, and — more usefully — tells a genuinely not-found player apart from a found one who is merely unranked or has no recent games, which until now both showed "—" across the board.
    Downloads
  • v1.7.2 1cc1a4323b

    v1.7.2 Stable

    joeyr released this 2026-06-29 22:47:10 -05:00 | 104 commits to main since this release

    Internal

    • Integration tests no longer make real loopback patch GETs. The test harness now stubs the patch resolver's fetch in-memory by default (resolving the mock server's game version without a socket); the single test that exercises the real LCU patch wiring opts in explicitly. This removes the per-test network churn and the ECONNRESET log noise at teardown, and with it a source of rare waitFor timeouts under parallel test forks. Harness wait budgets were also raised to 10 s, and the patch resolver no longer logs a warning for a fetch that fails after it has been stopped (an expected shutdown-time connection reset).
    Downloads
  • v1.7.1 79cab74ff9

    v1.7.1 Stable

    joeyr released this 2026-06-29 22:24:05 -05:00 | 105 commits to main since this release

    Fixed

    • The scouting report no longer flashes when you first open it. Pressing the hotkey before the first snapshot existed showed an empty, see-through window for a beat and then popped the report in — a visible flicker on the first open of a session. The panel now paints its frame immediately with a "Gathering report…" line, and the team columns fill into that frame in place, so there is no empty-window-then-pop-in jump.
    • Opening the report with no live game now gives feedback. Previously the hotkey showed a blank, invisible overlay with no sign it had worked; it now shows the report frame and the gathering message, so you always get confirmation the hotkey fired and a reminder of how to close it.
    Downloads
  • v1.7.0 e7f05a33d3

    v1.7.0 Stable

    joeyr released this 2026-06-29 22:14:46 -05:00 | 106 commits to main since this release

    Added

    • The scouting report now gathers in the background automatically. As soon as a game goes live, enrichment starts on its own (the overlay stays hidden), so by the time you press the scout hotkey the report is already populated, or well on its way. Opening the overlay no longer kicks off the run, and closing it no longer aborts one: gathering is tied to the game, not to whether the panel is visible.

    Changed

    • Strict row-by-row enrichment order — identity, then rank, then mastery, then recent-match lists, then match details, every player finishing a row before the next begins. Front-loads the cheap, high-value rows so a spent rate budget leaves only the deep (on-champ / role) tier unfilled, never rank or mastery.
    • Riot API pacing lowered to 0.75 requests/second (~90 per 2 min), just under a personal key's 100-per-2-minute cap, so a full report completes without 429 fallbacks. The token-bucket limiter now supports sub-1 rates.
    • Recent-match sample reduced 15 → 10 games, cutting a full 10-player run from ~190 to ~140 Riot API calls.

    Fixed

    • Deep scout sections (ON CHAMP / ROLE) that hit a rate limit or were interrupted now resolve to "—" instead of spinning on the loading skeleton forever.
    Downloads
  • v1.6.1 4d6d82c08b

    v1.6.1 Stable

    joeyr released this 2026-06-29 21:42:17 -05:00 | 107 commits to main since this release

    Fixed

    • The scout hotkey now fires in-game. Previously the configurable scouting-report toggle (Ctrl+Shift+X by default) worked on the desktop but did nothing once League held the foreground. Electron's globalShortcut registers via Windows' RegisterHotKey, whose WM_HOTKEY message the game (with Vanguard) swallows before it reaches the app. The hotkey is now detected by polling live key state with GetAsyncKeyState — a passive, focus-independent read (the same approach overlays and push-to-talk tools use), so the toggle works whether the desktop or the game is focused. No input is injected. Rebinding the combo from the settings panel works as before.

    Internal

    • New src/main/hotkey/key-poller.ts (koffi FFI over user32!GetAsyncKeyState) replaces globalShortcut for the scout toggle; parseHotkey was added to the shared hotkey helpers to map an accelerator to modifier flags + a Win32 virtual-key code. A scout.toggle log line now records each press and the overlay's isVisible() state for diagnostics.
    Downloads
  • v1.6.0 e88656fbd0

    v1.6.0 Stable

    joeyr released this 2026-06-29 17:01:46 -05:00 | 109 commits to main since this release

    Added

    • In-game overlay "Compare against winners only" option (Settings -> "In-game overlay"). When enabled, the live stat panel compares you against the benchmark from won games at your rank instead of the all-games average -- a "play like a winner" target. The overlay label reads vs GOLD wins rather than vs GOLD avg. Champions harvested before this option lack the winners-only data and fall back to the all-games average until you play them again (which re-harvests it), so the line is never blank.

    Changed

    • Benchmarks now refresh during a patch instead of freezing on day-1 data. Previously, once a champion hit its sample target early in a patch it was never re-harvested until the patch number changed -- so a benchmark could be 2-3 weeks stale. The harvest now treats a same-patch bucket older than a rolling window (default 3 days) as stale for the champion you pick, re-harvesting a fresh recent snapshot. The refreshed snapshot replaces the prior same-patch data for that champion (a clean recent window, no double-counting of overlapping re-harvests); incidental "bycatch" data for other champions still accumulates as before.

    Internal

    • Benchmark schema gains an optional wins sub-aggregate per bucket; existing harvested files remain valid (no schema-version bump). Harvester gains --maxAgeDays and --requireWins; its pure merge/freshness helpers were extracted to scripts/harvest-merge.mjs and unit-tested.
    Downloads
  • v1.5.0 3b6763df24

    v1.5.0 Stable

    joeyr released this 2026-06-29 16:20:12 -05:00 | 110 commits to main since this release

    Added

    • Rebindable scouting-report hotkey: the toggle hotkey is now configurable from Settings -> "Scouting report" instead of being hard-coded to Ctrl+Shift+X. Click Change and press a combo — the app registers it immediately and shows registered or in use — pick another, so a system-wide conflict (the default combo already owned by another app, which silently left the scout unbound) can be worked around without guesswork. Combos require a Ctrl/Alt/Win anchor, and common Windows/clipboard shortcuts (Ctrl+C/V/X, Alt+F4, Win+L, …) are rejected so they can not be hijacked. The chosen combo persists across launches, and the overlay's "… to close" hint reflects it.

    Fixed

    • The scouting-report overlay never appeared when its hotkey failed to register (another app already owned Ctrl+Shift+X system-wide); registration failures were only logged, with no way to recover from the UI. The hotkey is now rebindable with live registration feedback (see above).
    Downloads
  • v1.4.0 a6fbc5868d

    v1.4.0 Stable

    joeyr released this 2026-06-28 20:48:42 -05:00 | 111 commits to main since this release

    Added

    • In-game overlay Transparency setting: a new dropdown in Settings -> "In-game overlay" fades the live stat panel so more of the game shows through. Choose from None (fully opaque, the default) down to 70% transparent (the panel stays floored at 30% opacity so it can never be dialed to invisible). Like the other overlay controls it applies live mid-game and persists across launches.
    Downloads
  • v1.3.0 227694859e

    v1.3.0 Stable

    joeyr released this 2026-06-28 20:37:03 -05:00 | 112 commits to main since this release

    Added

    • In-game overlay Position setting: a new dropdown in Settings -> "In-game overlay" anchors the live stat panel to any screen corner -- Top-left, Top-right, Bottom-left, or Bottom-right (default) -- so it can sit clear of the game's HUD. Like the other overlay controls it applies live mid-game and persists across launches. The overlay window itself still spans the display and stays click-through; only the panel's corner changes.
    Downloads