Skip to content

Releases: doughknee/queuePop

queuePop v1.4.5

Choose a tag to compare

@github-actions github-actions released this 15 Jul 17:46
ed95d7f

We deleted 83,000 lines from queuePop and it does… exactly the same thing. That's the whole release, and we're weirdly proud of it.

Every project quietly hoards things it doesn't need — API docs frozen in 2018, finished experiments, two copies of the same logic wearing different hats. This release took out the trash, so every future fix and feature lands in a smaller, sharper codebase. If you notice anything behaving differently, that's a bug — tell us.

🔧 Under the hood

  • Pick-order swaps and role swaps now share one battle-tested brain instead of two identical twins — same behavior in champ select, half the code to maintain, plus a new automated check that proves it (requests the best spot, falls down your priority line on a decline, cancels stale asks, never accepts a downgrade).
  • The phone companion listens on its live event stream only. The dial-up-era fallback for browsers without server-sent events (last spotted in the wild circa 2012) is gone.
  • ~79,000 lines of stale League client API docs are out. They dated to client 8.24 and had already lied to us once — queuePop verifies endpoints against your live client instead, which is how it survives Riot's renames.
  • The marketing site went on a diet: its heavyweight web framework is replaced by plain Vite + React with the same prerendered result — 44 packages where there were hundreds.
  • Retired the counter-engine tuning experiments (their winning numbers are baked in), deduplicated 3.4 MB of screenshots, and swept out dead code.

Nothing new. Nothing fixed. Nothing broken. Sometimes the best feature is 83,000 fewer lines that could go wrong. o7

queuePop v1.4.4

Choose a tag to compare

@github-actions github-actions released this 12 Jul 21:59
d329391

Some releases add features. Some fix bugs. And then — once in a generation — a release corrects the very geometry of your desktop. This is that release.

For too long, Windows 11 has been quietly rounding queuePop's corners behind your back. Soft. Curved. Wrong. The League client would never. One man saw it. One man spoke up.

✨ The headline act

  • Perfect 90° window corners. queuePop's frame now matches the League client's razor-sharp hextech edges — all four corners, mathematically exact, no notes. Windows 11 wanted them round; we respectfully declined on your behalf. (Windows 10 users: your corners were already flat, and now they're flat on purpose.)

🏆 Hall of Fame

This entire release exists because @Beenis — visionary, patriot, first of his name, keeper of the right angle — glanced at our window and immediately clocked what the rest of us had scrolled past a thousand times: "those corners are round." Four words that shook the project to its foundation.

Scientists estimate this change affects roughly 340 pixels. Historians will argue it changed everything. Beenis, this one's for you. o7

🔧 Under the hood

  • The app now opts out of the OS-level rounded-corner treatment when the window is shown. That's it. That's the whole release. It's perfect.

queuePop v1.4.3

Choose a tag to compare

@github-actions github-actions released this 26 Jun 03:59
6ab1be5

A fast fix for a 1.4.2 hiccup: clicking Refresh champion data could make all of your champion icons disappear. That's resolved — refresh works cleanly now, and if it happened to you, updating brings your icons right back.

🐛 Fixed

Champion icons no longer vanish after you use Refresh champion data. Refreshed portraits now display correctly everywhere — the picker, your plan, live champ select, and your profile. If your icons went blank in 1.4.2, this release restores them automatically.

🔧 Under the hood

Refreshed portraits are now copied into the app's own asset folder instead of being loaded from an external path the embedded browser refuses to render, so the relative image paths that already worked keep working.

queuePop v1.4.2

Choose a tag to compare

@github-actions github-actions released this 25 Jun 19:03
246dfcf

A new champion used to mean waiting for a queuePop update before you could plan around them. Not anymore — the moment your League client knows about a champion, so does queuePop, and a new button pulls their portrait and name straight from Riot whenever you want them.

🆕 New champions show up on day one

When a champion launches, they now appear in your champ select plan and the picker the instant your League client has them — pick them, ban them, and build your priority list around them right away, no queuePop update required. Until their portrait finishes downloading they show up as their initials, but they're fully usable from the very first game.

🔄 Refresh champion data, on demand

The About page has a new Refresh champion data button. One click pulls the latest champion list and portraits from Riot's Data Dragon, so a brand-new champion's real art and proper name fill in without waiting for the next release. It shows which patch your champion data is on, and only downloads what you're missing.

🔧 For the curious

The champion catalog is now merged live from your connected client, so newly released champions surface before our bundled list catches up. The refresh downloads into a persistent folder beside your config — the packaged app's bundled assets are read-only — and the UI loads those portraits directly once they land, preferring the refreshed set only when its patch is newer than what shipped. Riot's Data Dragon can lag a launch by a day or two, so the live-client match is what covers launch day; the button backfills the official art once Riot publishes it.

queuePop v1.4.1

Choose a tag to compare

@github-actions github-actions released this 12 Jun 06:04

A focused follow-up to the 1.4.0 redesign: your champ select plan gets the draft math built in, the pick/ban trays learned to fit any window beautifully, and the app finally remembers how big you like it.

🧮 Your plan, with the math done for you

How many picks is enough? We did the worst-case arithmetic: as last pick, 10 bans and 9 picks can be gone before your turn — so 20 distinct picks guarantees one survives, and a 21st could never matter. Bans: only your four teammates' declared picks can block a target, so a 5th ban always lands clean. The planner now puts a counter on each list (hover it for the math), turns gold once you're practically covered — about 4 picks, or any fallback mode — and caps the lists at 20 and 5, because anything past that is dead weight. Try to add more and queuePop politely tells you why it won't. ARAM is exempt; its priority list isn't a draft.

🖼️ Trays that fit like they were drawn there

The picks and bans now lay themselves out as two tidy blocks that share the same row count and fill the page edge to edge at any window size. Slots scale gently to use the space, stay pixel-crisp at rest, and glide while you resize instead of jumping. No more stray gaps, overlapping sections, or lonely half-rows.

🪟 A window that remembers

Resize queuePop once and it opens at exactly that size, every launch. (Maximizing doesn't count — it remembers the real size underneath.) The minimum window is now 762×800, the smallest size where every page lays out properly.

🔧 For the curious

The list caps are enforced in the UI and again in config normalization, so oversized hand-edited configs trim themselves on load. The tray layout is solved deterministically from the container and header widths — fewest rows that fit, slot size scaled to fill, integer-quantized for crisp art — and the resize glide is a registered CSS @property transition, no per-frame JavaScript. The remembered window size is an additive window config key: old configs upgrade in place and downgrade safely.

queuePop v1.4.0

Choose a tag to compare

@github-actions github-actions released this 12 Jun 02:39
cb8f7ad

The biggest update queuePop has ever shipped: a champ select that fights for your role, a plan for every position, and a ground-up redesign of the whole app. Here's the tour.

🥇 It fights for your role now

Autofilled again? Tell queuePop your role order — Mid first, then Top, then Jungle — and the moment champ select starts, it quietly asks the right teammate to swap. If they decline, it moves down your list and asks the next one. Pick order works the same way: prefer picking last so you can counter? It trades draft spots toward the back for you. Set both once in Match settings, drag the chips into your order, and never beg in chat again.

🗺️ A real game plan, for every role

The Champ Select page is a full planner now. Build an ordered pick list per role — if your #1 is banned or taken, queuePop takes your #2, then your #3. Add bans, drag everything into order, and give any champ its own loadout. When your list runs out, a fallback of your choosing takes over: most-played, least-played, rustiest, closest to a mastery level, or pure chaos.

🔮 Locks in more than the champ

  • Auto runes — every champ you lock gets the client's recommended rune page, written to one managed page. Zero per-champ setup, your own pages untouched.
  • Default summoner spells per role — jungle always gets Smite, support always gets your comfort picks, unless a champ's loadout says otherwise.
  • Hide your pick intent until you lock, so nobody ban-snipes your hover.
  • ARAM upgrades: a courtesy delay before bench grabs (let teammates look first) and a never-play list for the champs you refuse to touch.

🎨 A whole new queuePop

The app has been rebuilt around four simple pages — Home, Champ Select, Alerts, and About. Your activity feed and queue picks live on Home with a plan summary you can click straight into; every setting sits where you'd expect and explains itself with a little ?. Same Hextech soul, none of the old settings maze.

🔔 Alerts that answer to you

The new Alerts page puts every way queuePop reaches you in one place. Choose exactly which moments ping you — queue pops, champ select starting, the game going live, or your client disconnecting. Every channel has a test button and a "last sent" receipt so you know it works. The phone companion shows its live status and how many phones are connected, and Discord tucks neatly behind a toggle.

⏱️ Accept on your terms

New on Home: Wait before accepting. Your alerts still fire the instant the queue pops, but queuePop holds the accept for a few seconds of breathing room — time to get back to the desk, or to decline by hand if you need out. If anyone else declines during the wait, it stands down.

🏆 Your Service Record

The About page now keeps score: ready checks accepted, champ selects played, picks locked, bench grabs, trades made. Watch the numbers climb, game after game.

👀 Watch it work

During champ select, the live view narrates every move as it happens — locks, bench grabs, swaps, runes — and trade chips finally speak plainly: requesting…, accepted, declined — cooldown.

✨ Also in this update

  • Release notes live right here in the app now (hi!).
  • Updates show their download progress and relaunch reliably when they finish.
  • The Home queue picker collapsed into tidy rows with live "selected" counts.
  • The window opens at a comfier size, every menu shares one style, and a hundred small things line up.

🔧 For the curious

Under the hood: the UI was rebuilt as plain-script modules, every new setting is an additive config key (old configs upgrade in place, and downgrade safely), the self-update flow was hardened against relaunch races with a diagnostic update.log, and the whole release was smoke-tested over a live debugging harness. The full story is in the commit history.

queuePop v1.3.3

Choose a tag to compare

@github-actions github-actions released this 11 Jun 18:31
8d23392

queuePop now plays your entire ARAM champ select — from the very first second to the loading screen.

✨ The headline: ARAM opening pick

Modern ARAM starts by offering you 2-3 champions for ~10 seconds; if you don't choose, the game picks randomly and dumps the rest onto a shared bench where anyone can snipe them. queuePop now picks the best of your offered champs within the first second — before a teammate can beat you to your own roll.

(For the curious: the offered champ list isn't in the champ-select session at all — it's hidden in a separate lol-lobby-team-builder endpoint, and trying to pick a champ you weren't offered silently "succeeds" while doing nothing. That's why this was never possible before. We found it by instrumenting live lobbies.)

🎯 Champ priority modes

The old "highest mastery" toggle is now a six-way Champ priority in Settings → ARAM, and it drives everything — the opening pick, bench grabs, and trades chase one consistent target:

Mode What it chases
Highest mastery Your most-played champs (the classic behavior — existing configs migrate here)
Lowest mastery Champs you've barely touched, never-played first — for learning the roster
Rusty Whatever you haven't played in the longest — old mains keep cycling back
Mastery milestone Whichever champ is closest to its next mastery level — maximum dings per game
Random One shuffled order per lobby — chaos mode
My ARAM list Your hand-sorted Champ Select → ARAM list

🔁 Smarter trading

Trades are standing offers, not one-shot actions — so queuePop now manages them like one:

  • Keeps at most one live request, always aimed at the best upgrade a teammate is holding
  • Auto-cancels the request the moment it stops being an upgrade (e.g. you just grabbed something better off the bench) — a teammate's late "accept" can never downgrade you
  • Re-checks incoming offers at the moment of acceptance, not when they arrived
  • Never re-pesters someone who declined, and rate-limits request churn

⚙️ Order of operations

Each champ-select tick now runs in strict priority order: opening pick → bench grab (instant, free) → trades (slow, consensual) → runes/spells/skins last — so the guaranteed moves always land before the cooperative ones, and cosmetics can never delay a pick.

🐛 Fixes

  • Console output is forced to UTF-8 at startup — previously, running queuePop with redirected output could crash the client-connected handler on an emoji and leave the app stuck on "Searching for League Client…"
  • Champion mastery is fetched once per champ select and shared by all features

Full changelog: v1.3.2...v1.3.3

queuePop v1.3.2

Choose a tag to compare

@github-actions github-actions released this 10 Jun 23:27
97e7277

What's Changed

  • v1.3.2: Fix auto-trades (LCU champion-swaps rename) + champ-select docs refresh by @doughknee in #4

Full Changelog: v1.3.1...v1.3.2

queuePop v1.3.1

Choose a tag to compare

@github-actions github-actions released this 06 Jun 17:02
b3de052

What's Changed

  • Fix: self-update download progress + stale UI after relaunch by @doughknee in #3

Full Changelog: v1.3.0...v1.3.1

queuePop v1.3.0

Choose a tag to compare

@github-actions github-actions released this 06 Jun 16:35
f32a86a

What's Changed

  • Feat: ARAM auto-pick highest-mastery champ; drop legacy Tkinter GUI by @doughknee in #2

Full Changelog: v1.2.6...v1.3.0