Repository navigation
Releases: CybotTM/wow-quickroute
Release list
v1.21.1
QuickRoute v1.21.1
This release declares WoW 12.1.5, so the client no longer lists QuickRoute as out of date, and applies what the addon's zone survey recorded on a live 12.1.5 client.
Ready for WoW 12.1.5
The addon now declares interface 120105 (#109). Live retail moved to 12.1.5 on 2026-10-16. None of the game functions or events removed between 12.1.0 and 12.1.5 is used by QuickRoute.
The Arcantina key lands in the Arcantina
@CybotTM read the zone survey and found three arrivals, from Azj-Kahet, Silithus and Moonglade, that all landed on the same point in the Arcantina (#110). QuickRoute had the Personal Key to the Arcantina landing in Silvermoon City instead, so a route by the key started in the city and left out the way out. The key now lands in the Arcantina, and the route continues through the Arcantina exit to Silvermoon City.
Four more places to walk from
The survey also recorded walks without a loading screen into four places QuickRoute did not know. They are now connected on foot to the zones around them:
- Northshire and Elwynn Forest
- Atal'Aman, with Zul'Aman and Eversong Woods
- City of Threads - Lower and Azj-Kahet
- The Grudge Pit and Harandar
The travel times are estimates, like the other overland times in QuickRoute.
Verify your download
The zip attached here carries a build attestation. To check that this workflow, at this commit, produced the exact bytes you downloaded:
gh attestation verify QuickRoute-1.21.1.zip --repo CybotTM/wow-quickroute
CurseForge and Wago carry no attestation of their own, so this covers the GitHub download only.
Installation
- Download
QuickRoute-1.21.1.zip - Extract to
World of Warcraft/_retail_/Interface/AddOns/ - Restart WoW or
/reload
v1.21.0
QuickRoute v1.21.0
This release fixes what an external review of 1.20.0 found in how routes arrive over several frames: a closed window that opened again, a dungeon quest that sent you back out, and a pasted waypoint read the wrong way without a word. For addon authors, QuickRouteAPI moves to contract version 2.
A closed window stays closed
A route that is calculated over several frames used to open the QuickRoute window when it arrived, even if you had closed it in the meantime. @CybotTM traced that through every place a route arrives late: a map click, /qrwp, the next stop of a trip and the currency vendor search. The window now stays closed; the destination is kept, and the window routes there the next time you open it. A window that was already closed when you asked for the route still opens, and a window you closed and opened again shows the new route.
Inside a dungeon quest's instance, you stay there
QuickRoute checked whether you were already inside a quest's dungeon with the wrong kind of map id, so the answer was often "no" and you were routed back to the entrance. It now asks the client with the instance's own map id.
A waypoint with two readings asks which one you mean
/way #2393 50,57 56 Treasure is either 50.57, 56 with the label "Treasure" or 50, 57 with the label "56 Treasure". The trip window used to pick the second without telling you. It now shows both readings with a button for each and imports nothing until you choose. A coordinate is also read as one whole token, so a decimal comma is no longer split into a number and a label, and a pair that mixes a decimal point with a decimal comma is refused as ambiguous.
Map clicks no longer freeze a frame
The route panel, a map click and /qrwp now calculate in budgeted slices across frames, like the dungeon group offer already did. The window opens when the route is ready. Requests from different places queue instead of cancelling each other.
For addon authors: QuickRouteAPI contract version 2
QuickRouteAPI:GetVersion() returns 2. One addon's request no longer replaces another addon's:
- A request can name an
owner. A new request replaces only the same owner's earlier one, including an answer that was calculated but not yet delivered, which is toldsuperseded. - Without an
owner, requests run independently and end only with their answer or withCancel. An addon that relied on its second request replacing its first passes the sameowneron both, or cancels the first. - At most eight requests wait at once. Past that, the request still gets a handle and its callback receives the retryable failure
busyon the next frame. - The undocumented
QuickRouteAPI:NotifySuperseded()is removed.
The README section "For addon authors" has the details.
Smaller changes
A dungeon route whose group offer has already ended is no longer shown, and the offered dungeon is resolved from its group finder activity correctly. The retail acceptance checklist now requires a real dungeon offer as the positive case and measures whole-frame times.
Verify your download
The zip attached here carries a build attestation. To check that this workflow, at this commit, produced the exact bytes you downloaded:
gh attestation verify QuickRoute-1.21.0.zip --repo CybotTM/wow-quickroute
CurseForge and Wago carry no attestation of their own, so this covers the GitHub download only.
Installation
- Download
QuickRoute-1.21.0.zip - Extract to
World of Warcraft/_retail_/Interface/AddOns/ - Restart WoW or
/reload
v1.20.0
QuickRoute v1.20.0
QuickRoute answers one question: how does this character get to that place? This release makes it say more about the answer — why a route could not be produced, which landing points are guesses, and what a destination actually is — and adds a contract other addons can call.
Your hearthstone is on the map before you use it
An existing hearthstone binding used to be invisible to routing until QuickRoute watched you use it. @CybotTM sourced and audited the catalogue behind this. The bound inn is now resolved from the client's localized bind name against a sourced catalogue of 59 destinations on 44 maps, audited against the retail 12.1.0 area table in all eleven supported locales. An observed binding always wins over the catalogue, and a catalogue position is labelled as approximate in the tooltip rather than presented as exact.
A failed route says what went wrong
CalculatePath returned nothing whether your position was not available yet, the route needed something this character does not have, the only known way was one you refused, or nothing connects the two points at all. Those need different responses from you, so they are no longer one blank answer.
"Cannot use" on a step
A step you cannot take gets a button. QuickRoute keeps the destination, drops that one connection for this route and looks for another way. Right-clicking Refresh takes your refusals back. Nothing is written to disk and nothing is treated as unlock data.
One search can no longer own a frame
A long calculation now continues across frames on a measured budget instead of holding the client until it finishes.
The trip you chose is not thrown away
A destination you pick can be locked. An interruption — an accepted dungeon invitation, an alert — suspends it and gives it back afterwards, still locked. Accepting a group invitation offers the route to that dungeon's entrance rather than silently replacing where you were going.
Other addons can ask for a route
QuickRouteAPI is a versioned contract: ask for a route, get a detached result or a named failure, cancel what you asked for. It states what the estimate assumes, including which legs land on a catalogue guess rather than an observed position, and it never sets a waypoint or starts travel. The README has a worked example.
Smaller changes
Destination search is ordered by what you typed — exact name, then prefix, then word start, then substring. Silvermoon is offered to both factions; it was marked Horde, so Alliance characters never saw it. A leg on a map you are not standing on is priced from what that zone allows. The trip window accepts the waypoint forms players actually paste, including several /way lines on one line and decimal commas. A destination now carries a role — objective, hand-in, reference, service, entrance — so a quest that is not in your log is not presented as an active objective.
Verify your download
The zip attached here carries a build attestation. To check that this workflow, at this commit, produced the exact bytes you downloaded:
gh attestation verify QuickRoute-1.20.0.zip --repo CybotTM/wow-quickroute
CurseForge and Wago carry no attestation of their own, so this covers the GitHub download only.
Installation
- Download
QuickRoute-1.20.0.zip - Extract to
World of Warcraft/_retail_/Interface/AddOns/ - Restart WoW or
/reload
v1.19.0
QuickRoute 1.19.0 improves travel selection, quest updates and the reliability of collected route data. The changes by @CybotTM incorporate the flight-network and doorway-survey work from #82 and #83, with the reviewed integration in #84 and release preparation in #85.
Your character's actual travel options. A successful observed hearthstone arrival now teaches QuickRoute an existing binding. Ready Stormwind cloaks participate correctly in route comparisons, and Death Gate uses confirmed class-hall state instead of an assumed Eastern Plaguelands landing. Quest buttons update when personal cooldowns expire, after combat, and when a binding changes between queued updates. Teleport and portal estimates count loading time once.
Less repeated quest work. Following the stutter reports from @Playnot in #66 and r0s0j on CurseForge, cold quest refreshes now share map-wide results while still detecting newly available objectives. The controlled workload performs 96% fewer map reads and allocates about 59% less temporary Lua memory. Repeated route workloads stabilize retained memory; these are standalone measurements rather than live-client FPS figures.
More reliable route data. Flight networks respect taxi direction and faction. Across 6,156 modeled scenarios, the isolated network improvement makes 262 route estimates faster and none slower. Outdoor garrisons connect to their host zones; return flights still require discovered flight points. The survey freezes departure and first-arrival observations, validates saved data, and limits total origins and endpoints to 6,000 each. Observations remain candidates for verification.
Verification passed 16,977 Lua assertions in each test order, all 56 Python tests, and lint with no warnings or errors. See the review and reproducible measurements for evidence and model limits. Travel times remain estimates among known available options.
Installation
- Download
QuickRoute-1.19.0.zip. - Extract it to
World of Warcraft/_retail_/Interface/AddOns/. - Restart WoW or use
/reload.
For an existing hearthstone binding that QuickRoute has not observed, use that hearthstone once or bind at an inn; its tooltip explains this step.
v1.18.5
QuickRoute v1.18.5
Two more sources of the movement stutter, both found from a description of when it happens rather than from profiling.
Pressing any ability no longer reconsiders every quest
Items and toys share the global cooldown, so using any ability at all makes every item and toy teleport briefly unavailable. The addon read that as "your teleports changed", emptied the routes it had worked out for your tracked quests, and computed them again — 13.8 ms on every keypress with 52 teleports and 25 quests tracked. Now 0.02 ms, and no route work at all.
A teleport that is one global cooldown away from usable counts as available when deciding whether to re-plan, because no route can change over a window that closes before you could act on the answer. A real teleport cooldown still re-plans, and what you are shown about a cooldown is unchanged.
Moving around one spot no longer re-routes
Whether a computed route still applied was decided by which cell of an invisible grid you stood in. Grids have edges, and players work along them — circling an objective, strafing in a fight, blinking back and forth. Each crossing recomputed every tracked quest: 80 route calculations for ten small steps back and forth across one edge, against none for the same steps a few yards away.
It is now a matter of how far you have moved from where the route was worked out, which has no edges to cross. The repository's movement benchmark halves as a side effect — 50 route calculations over ten simulated seconds become 25.
Both were located by @Playnot in #66, who noticed the spikes tracked ability use and distance rather than time. That is what made them findable; neither showed up in the profiling I could do here — @CybotTM in #77 and #78.
Still open
Resolving where a quest points happens on every cache read and is cold about once a second while moving (#71), and the cooldown reuse gives some of itself back when a global cooldown lands mid-refresh (#72).
Installation
- Download
QuickRoute-1.18.5.zip - Extract to
World of Warcraft/_retail_/Interface/AddOns/ - Restart WoW or
/reload
v1.18.4
QuickRoute v1.18.4
The rest of the movement stutter, and a quest button that keeps up with its quest.
The graph is no longer rebuilt because a spell changed
Every event the inventory watcher heard, except a bag update, marked the whole travel graph for rebuilding — on the grounds that it might have changed something the addon could not otherwise see. SPELLS_CHANGED fires constantly for reasons that have nothing to do with travel, and each firing cost a full rebuild of the graph plus a route for every tracked quest: 44 ms in a single frame, measured with 51 teleports and 25 quests tracked. That is a visible stutter at any frame rate, and it is what remained after 1.18.3 moved the reported cadence from every second to every five to ten seconds.
What the blanket rebuild protected is now stated rather than assumed. The teleport set is compared entry by entry, and a four-value signature — faction, class, race, Engineering — covers the rest of what decides which teleports exist for a character. A rebuild happens when one of those actually moved. Same fixture after: 0.29 ms, no rebuild, no routes.
This is also the last of the "it got worse as I added addons" behaviour: the expensive path hung off an event any addon can provoke — @CybotTM in #74, reported by @Playnot in #66.
A quest button keeps up with its quest
1.18.3 started comparing where a quest points, so a button stops offering a teleport for where the quest used to be. It compared the destination map, which missed an objective advancing to another part of the same zone — a destination is wired into the route graph by its coordinates, so two points in one zone can genuinely call for different teleports. The destination is now compared at the same resolution as the player's own position: far enough to notice a real move, coarse enough to ignore a multi-step quest walking its waypoint along a path — #75.
Known limits
Unchanged from 1.18.3 and still open: resolving where a quest points happens on every cache read and is cold about once a second while moving (#71), and the cooldown reuse gives some of itself back when a global cooldown lands mid-refresh (#72).
Installation
- Download
QuickRoute-1.18.4.zip - Extract to
World of Warcraft/_retail_/Interface/AddOns/ - Restart WoW or
/reload
v1.18.3
QuickRoute v1.18.3
Follow-up to 1.18.2, from three reviews of what the addon does while you play — how much it recomputes, what it allocates, and how often it asks the client questions it has already asked.
Routes are kept until something can actually change them
1.18.2 stopped re-routing every tracked quest once a second while moving. Two more cases were doing the same thing for no result: the quest arrow moving to another quest, and a quest being added to or removed from the tracker. Neither changes any other quest's route — the arrow decides which quest is highlighted, not where any of them goes — and with 25 quests tracked each firing cost about 18 ms and recomputed 25 routes that came back identical. The arrow one fires on every quest turn-in and accept, on tracker and map clicks, and whenever another addon changes what you are tracking. Both now leave the cached routes alone, and the cache is kept across a fight rather than emptied, which used to move a full recomputation to the moment combat ended — @CybotTM in #69.
Reviewing that turned up something older: what a quest route was cached against did not include where the quest points. Completing an objective can advance a quest to one in another zone without you moving a step, and the button would go on offering the teleport for the previous destination. That is now part of what the cache is keyed on, so it is caught for every tracked quest rather than for whichever one happens to carry the arrow.
Fewer questions to the client
A route prices every teleport you own against its cooldown, and a refresh computes one route per tracked quest, so the same question reached the client once per quest — 188 cooldown queries for a single refresh of 25 quests, and 2300 on a character with a full collection. Those are answered once per refresh now. Zone names, quest titles and spell cast times are no longer re-read either; they cannot change between one route and the next. Counted over ten refreshes: 11,667 client calls before, 10,766 after.
The quest teleport buttons also stopped allocating two tables and two closures five times a second while they are on screen, and are repositioned only when their tracker block actually moves.
Known limits
Three things this work left open, recorded rather than quietly shipped: a quest objective that moves within one zone can still be served the previous teleport for up to 30 seconds (#70); resolving where a quest points now happens on every cache read and is cold about once a second while moving (#71); and the cooldown reuse gives some of itself back when a global cooldown lands mid-refresh (#72).
If you reported the movement stutter, this and 1.18.2 together are the fix — a note on whether it is gone would be welcome.
Installation
- Download
QuickRoute-1.18.3.zip - Extract to
World of Warcraft/_retail_/Interface/AddOns/ - Restart WoW or
/reload
v1.18.2
QuickRoute v1.18.2
A movement fix and a combat one. Both are about work the addon was doing that nobody asked for.
Moving no longer stutters
QuickRoute picks the teleport for each tracked quest out of a computed route, and caches that per quest. The cache was emptied on every event the module listens to — QUEST_LOG_UPDATE among them, which the client fires about once a second while you move. Every one of those firings therefore routed every tracked quest again from scratch, each route a search over the whole travel graph. The position bucket in the cache key was a thousandth of the map besides, a few yards, so what survived the wipe was invalidated by walking anyway.
Routes are now kept until something that can change them does: a real change of position, a new zone, a change to which quests you track, or a teleport coming off cooldown — @CybotTM in #67.
Measured with the repository's own scripts/benchmark_movement.lua — 25 tracked quests, window closed, ten simulated seconds. Moving: 226 route calculations and 228 ms of Lua before, 50 and 54 ms after, worst frame down from 3.70 ms to 1.66 ms. Standing still with one quest event per second: 249 calculations and 200 ms before, none and 0.74 ms after.
This is also why the cost grew with the number of addons installed: the expensive path hung off events any addon can provoke by asking the client about quests, spells or bags. Reported by @Playnot in #66, with a video that made the pattern legible — stationary quiet, stuttering while walking.
Nothing happens during a fight
Routes, inventory scans and zone survey records were all computed mid-fight. They are now postponed and run once the fight ends: a super-track change cost 40 ms and a graph rebuild during combat, a bag or spell event walked every bag slot, and a zone crossing was written to disk. The quest route cache also survived a fight rather than being emptied by it, which used to move a full recompute of every tracked quest to the moment the fight ended.
One exception is dropped rather than postponed: a zone crossing recorded after the fight would describe wherever you ended up, not the border you crossed.
Installation
- Download
QuickRoute-1.18.2.zip - Extract to
World of Warcraft/_retail_/Interface/AddOns/ - Restart WoW or
/reload
v1.18.1
Highlights
QuickRoute 1.18.1 fixes the Settings banner gaps, clipped teleport cards and repeated destination names identified in the visual review. The changes by @CybotTM are in #64.
- The Settings banner now reaches the top and left edges of its header region, with the existing controls in their original positions.
- Grouped teleports fit inside the visible scroll area, keeping the last column's borders and status indicators visible.
- A destination such as
Isle of Dornappears once in the route subtitle instead ofIsle of Dorn (Isle of Dorn).
The 23 gallery images were regenerated with corrected simulator corners and the measured native Settings background color. The trip example shows an active second stop; the Uldum pair demonstrates when speaking to Zidormi is part of the route. Capture versions, fixtures and limitations are documented in the visual review.
Installation
Download QuickRoute-1.18.1.zip, extract its QuickRoute folder into World of Warcraft/_retail_/Interface/AddOns/, and use /reload if WoW is already running. Existing saved settings are retained.
v1.18.0
Highlights
QuickRoute 1.18.0 adds optional ALL THE THINGS searches for items and NPCs. Search by a cached name, item link or numeric ID, then route to a verified recorded source. For example, searching for the Broker Translocation Matrix finds Vilo in Zereth Mortis. His purchase reputation is shown separately, so players can travel to him before meeting the buying requirement. Missing teleports are marked currently unobtainable only when all recorded ATT alternatives establish that status; owned unlocks and unknown or mixed sources retain their existing state. These changes were contributed by @CybotTM in #62.
Background routing uses less CPU and temporary memory, releases obsolete cached graphs and avoids rebuilding the graph for ordinary loot when travel options are unchanged. Quest-tracker buttons preserve surviving recommendations across asynchronous refreshes, briefly retain inactive icons while data recovers and confirm changing recommendations during flight. Spell readiness now excludes the global cooldown while preserving actual personal cooldowns. @CybotTM contributed these fixes in #61 following local flight/memory reports and the movement/camera FPS report from r0s0j on CurseForge.
Compatibility and verification
Targets WoW Retail 12.1.0. TomTom and ALL THE THINGS remain optional. ATT name searches use already loaded names and bounded scans; an item link or ID can be used when a name is unavailable. A result identifies a verified source, not the fastest vendor among every ATT alternative. Routes minimize estimated travel time through QuickRoute's recorded connections.
Existing routing-data tickets remain open: return connections from Pandaria/Draenor (#21), flight-network modeling (#33), asymmetric Oribos travel estimates (#40) and faction-capital node filtering (#57). They predate this release and are not claimed as resolved here.
Both Lua test orders passed 15,962 assertions, lint passed across 120 files, and all 47 generator/packaging tests passed. Six simulator views cover the ATT controls. Standalone benchmarks support the CPU/allocation changes; they do not establish native FPS improvements or complete live-client acceptance. See the performance evidence and ATT evidence and limits.
Full changelog: v1.17.0...v1.18.0
Installation
- Download
QuickRoute-1.18.0.zip - Extract to
World of Warcraft/_retail_/Interface/AddOns/ - Restart WoW or
/reload