Release Microbot 2.6.24: promote development updates - #1870
Merged
Merged
Conversation
…ation [codex] unify walker planning with pinned upstream core
[codex] revert walker upstream sync from development
Add the Rs2Death utility, Death's Office locations, event wiring, documentation, and client-thread guardrail entries. Preserve recovery state when grave or office collection is incomplete so callers can retry safely.\n\nRepository Build and the full local unit suite passed; all review threads are resolved.
Scripts now emit through an input layer that gives way to real input. Moving the mouse or pressing a key on the game canvas pauses scripts, aborts the gesture in flight, releases anything held down, and resumes after an idle window. Threshold, delay and an off switch are configurable. What the bot emits now matches the shape of real input: the click triad without the spurious ENTERED/EXITED pair, position read from actual events instead of a bot-only field that human motion could never update, and canvas boundary crossings in both directions, so leaving and returning looks like a pointer that exists. Crossing outward also fixes the moveMouseOffScreen antiban setting, which never left the canvas. MouseMotion clamps its destination to the canvas, so the cursor walked to the edge and stopped there while the client went on believing a pointer was over it. Fixes found along the way: - a takeover mid-typeString sprayed the rest of the string into the widget - a key held when the window lost focus stayed down forever - the cursor overlay drew beneath the right-click menu
All three referenced a module that does not exist. The Gradle project is named runelite with a client subproject, so IntelliJ's module is runelite.client.main, where the files asked for client.main and, in the proxy one, plain client. With no module to resolve, the generated command line carried no classpath and every run died before reaching main(). Shorten the classpath through an args file, since the full one exceeds what Windows accepts on a command line. Drop the JDK pin from the two configs that carried one. It was an SDK name from one person's IntelliJ, and the project compiles to Java 11 bytecode and builds on Java 11 in CI, so the project SDK is already the right answer.
Refreshed transport data from several weeks of live walking, delivered as data only — every file parses with the loader already on development (unknown header columns are ignored; no code changes). - agility_shortcuts, canoes, minecarts, quetzals, ships, transports, teleportation_items/spells/minigames: coverage and coordinate corrections found by live walks. - DURATION CORRECTIONS: spirit tree rows had a blank Duration column and non-teleport transports get no minimum, so every spirit tree edge cost the planner exactly ZERO — it picked them even when a short walk was faster. Spirit trees blank -> 10, gnome gliders 8 -> 12, magic mushtrees blank -> 6, proportionate to the existing convention (fairy ring 5, quetzal 6, charter 6, boats 9, ships 10). - blocked_edges/restrictions: entries for doors that never open and edges the live game refuses. - collision-map.zip regenerated (newer map areas). Part 1 of splitting #1838 into reviewable PRs. Full suite (:client:runUnitTests) green on this branch. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add optional long and mega breaks to Break Handler V2
feat(input): yield input to the user and clean up what the bot emits
Fix Quest Helper minimap arrows and sync quest list
fix(shortestpath): refresh transport data and reopen Al Kharid Palace
Part 2 of splitting #1838 into reviewable PRs. Vendors the upstream (Skretzo) shortest-path planner core under runelite-client/src/upstreamPlanner as a pinned, self-contained source set (zero imports from the microbot tree — verified), with the minimal gradle wiring: the main source set includes the pinned tree, processResources copies the existing collision archive to the root path the upstream core loads from, and checkstyle/PMD exclude the vendored package so upstream code style stays untouched. Nothing on this branch invokes the vendored planner: no runtime behavior changes and no entry points. It exists so convergence work can run both planners in one JVM for side-by-side route comparison; the comparison harness tasks arrive with part 4, where their entry points (walker test tree) live. Full suite (:client:runUnitTests) green on this branch. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
build(walker): vendor upstream planner core as a pinned source set
… collision, honest costs Part 3 of splitting #1838 into reviewable PRs (opens after part 1). The planning engine as it runs on the fork today: - Sealed-target reverse probe: a bounded reverse flood proves an unreachable destination SEALED in ~1ms and substitutes its walkable rim, replacing the 1.1M-node full-world floods an unreachable tile used to cost (measured 37 times in one evening); the search also remembers a REACHED rim substitute so the executor can retarget once. - Live collision: capture of the loaded scene's collision into a persisted per-region overlay (doors and runtime-cleared obstacles get full-footprint deferral to the static map — a closed door's corner diagonals must never persist as walls), with conflict telemetry, a live route validator, and versioned stores that self-discard when capture semantics change. - Transport planning: config-state cache keyed by inventory/varbit fingerprint (refresh dropped from ~500ms to single-digit ms on cache hits), TransportExecutionRegistry + planning-policy seam so the planner only admits transports the executor can actually perform, item requirement resolution (staff/tome/rune providers), and PathEdge/PathTerminationReason for honest terminations. - Session-scoped learned blocked edges replace the persisted store (blocked_edges.tsv is the durable authority). Seam notes for review: dev's ShortestPathPlugin gains ONE verbatim overload (override(String, PlannerSelectionMode)) and Rs2PathApi ONE facade method (invalidateTransportRefreshCache) — the full plugin and walker wiring arrive in part 4, so the live-collision refresh loop and planner-selection machinery are compiled and unit-tested here but not yet driven at runtime. Rs2Staff/Rs2Tome/Rs2LeaguesTransport travel as the engine's item/league providers. Full suite (:client:runUnitTests) green, including the route corpus against part 1's data. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ause-loop Fix Break Handler V2 pause break completion
Fix world hopper TCP ping fallback
Fix POH Web Config detection for unknown Nexus destinations
…etries fix(grandexchange): bound quantity entry retries
…rols feat(webwalker): add manual walking controls and status notices
…scene-camera Improve webwalker camera and route continuity
Rs2Bank.emptyContainers() clicked widget 786471, which decodes to (12,39) - a non-interactable LINE decoration in the bank interface, not a button. The call failed silently rather than loudly: getWidget() returned non-null so the null guard passed, clickWidget() dispatched against a widget with no actions, and the method still returned true. Callers saw success and no containers were ever emptied. Use InterfaceID.Bankmain.DEPOSITCONTAINERS = (12,45) instead. Verified against a live client at the Grand Exchange: (12,45) is the GRAPHIC carrying the "Empty containers" action with interactable: true, while (12,39) reports type LINE with an empty action list. emptyContainers() has no in-tree callers but is public API surface, so every external script calling it has been a no-op. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…cution fix(walker): complete runtime execution and recovery integration
Fix bank cache persistence and refresh
…get-id Fix/bank empty containers widget
Contributor
|
Important Review skippedToo many files! This PR contains 313 files, which is 213 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. Usage-priced reviews support at most 300 files. ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (15)
📒 Files selected for processing (313)
You can disable this status message by setting the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Promote the reviewed development changes to stable and release Microbot 2.6.24, preserving the RuneLite 1.12.39 update and interaction-highlight fix already on main.
Includes the newly merged bank-cache persistence/refresh (#1868), bank container widget correction (#1866), and walker execution/recovery integration (#1856), plus the previously merged development updates for walker planning/transports, continuous navigation and controls, Break Handler V2, death recovery, Grand Exchange retries, world hopping, POH detection, and Quest Helper.
The release commit merges development
59e44f465573c017e58f2b9da8d4c0785aaed77ainto stable18956bfe8aand increments only microbot.version from 2.6.23 to 2.6.24. There were no merge conflicts. The automatic client Gradle integration preserves stable build configuration and includes the pinned planner source/resources and comparison tasks. No blocked or draft PRs were added.Validation: client compilation and reflection metadata generation passed; generated reflection keys are unchanged (timestamp-only churn discarded). Full CI-equivalent build/unit tests and shaded artifact validation are recorded below before merge. Existing transport TSV trailing tabs are preserved as empty fields.
Completed local validation:
./ci/build.shpassed (full buildAll plus 1855 unit tests, 1 skipped, no failures/errors);:client:assemblepassed. The shaded release JAR identifies Microbot 2.6.24 / RuneLite 1.12.39 and includes the pinned planner and both collision-resource namespaces.