Skip to content

2.5.9 League walker + walker changes#1769

Merged
chsami merged 11 commits into
mainfrom
development
May 11, 2026
Merged

2.5.9 League walker + walker changes#1769
chsami merged 11 commits into
mainfrom
development

Conversation

@chsami
Copy link
Copy Markdown
Owner

@chsami chsami commented May 11, 2026

2.5.9 League walker + walker changes

TheHaliax and others added 11 commits May 11, 2026 09:00
Unify edge injection and blocked-edge loading so pathfinder builds stable transport graph.
Split walker internals into focused runtime modules for await, door, stall, lifecycle, and banking flow.
Add leagues lock/chat transport stack and wire seasonal transport handlers into runtime flow.
Harden bank mirror sync and inventory setup retain flow so banking state stays trustworthy.
Tighten post-transport door handling and bank-vs-direct compare so walker picks stable routes.
Update walker regression coverage and regenerate client-thread guardrail baseline.
Force immediate reroute after locked-region blacklist/catalog updates so nearest flows do not loop.
Invalidate bank mirror when world-type profile class changes, while treating members/free and normal combat-variant tags as same profile.
## Feature Comparison (New vs Baseline)

### 1) Leagues Transport Engine (New Platform Capability)

**New in this branch**
- Dedicated Leagues transport subsystem under `util/leaguetransport`.
- Region unlock awareness (`LeaguesRegion`, lock catalog, unlock parsing).
- Structured transport execution + result model (`LeaguesTeleportResult`, failure reasons).
- Transport injection, persistence, chat/widget integration, and Map of Alacrity support.
- Public API documentation via `docs/api/Rs2LeaguesTransport.md`.

**Baseline**
- No equivalent end-to-end Leagues transport platform with lock-aware modeling and typed outcomes.

**Why this outperforms baseline**
- Avoids invalid Leagues travel attempts by gating against unlock state.
- Provides deterministic transport outcomes instead of opaque failure handling.
- Improves route execution quality in seasonal worlds through explicit Leagues-aware transport logic.

### 2) Walker Runtime Decomposition (New Execution Architecture)

**New in this branch**
- Walker logic split into focused runtime modules:
  - await/runtime coordination
  - banking planner
  - lifecycle runtime
  - stall policy
  - transport awaits
  - door resolution models + handlers
  - shared progress primitives

**Baseline**
- Heavier concentration of control flow in core walker paths.

**Why this outperforms baseline**
- Lower coupling between movement subsystems enables faster, safer hot-path tuning.
- More predictable behavior under chained interactions (door/transport/settle) due to explicit runtime stages.
- Better operational maintainability for future performance tuning without broad regressions.

### 3) Door + Transport Traversal Hardening (New Reliability Behavior)

**New in this branch**
- Expanded walker/shortest-path flow control in:
  - `Rs2Walker`
  - `ShortestPathScript`
  - `ShortestPathPlugin`
  - `TransportRouteAnalysis`
  - `WebWalkLog`
- Route-clear reasons and stronger stop semantics (`clearWalkingRoute(...)` usage across scripts/panel/quest helpers).
- EXIT retry logic with bounded retries and user-stop/death guards.

**Baseline**
- Weaker attribution of stop/clear causes and less structured recovery behavior for transient EXIT states.

**Why this outperforms baseline**
- Faster continuation after transient failures.
- Better protection against false terminal exits.
- Cleaner stop semantics reduce accidental route loss from unrelated interactions.

### 4) Transport Definition and Refresh Pipeline (New Hot-Reload Capability)

**New in this branch**
- Developer config toggle `reloadTransportDefinitions`.
- Runtime path to reload transport TSV definitions from packaged resources.
- Refresh cache invalidation + path restart integration for immediate effect.
- One-shot auto-reset behavior for the reload toggle.

**Baseline**
- No practical one-shot transport-definition hot reload path from config.

**Why this outperforms baseline**
- Faster iteration loop for transport-table updates in dev builds.
- Eliminates restart-only workflows for validating transport data changes.
- Keeps pathfinder state consistent after definition refresh by forcing synchronized refresh/restart.

### 5) Pathfinder Transport Policy Improvements (New Selection Quality)

**New in this branch**
- Transport policy layer (`TransportRequirementPolicy`) and pathfinder transport handling updates.
- Additional transport parsing robustness in `Transport` (defensive parsing, malformed token handling, resource checks).
- Updated teleport/transport datasets and filtering logic.

**Baseline**
- Less robust handling for malformed transport rows and fewer explicit policy boundaries.

**Why this outperforms baseline**
- Higher resilience to noisy/partial transport data.
- More consistent transport eligibility decisions.
- Better route quality stability when transport metadata is imperfect.

### 6) Bank + Inventory Setup Reliability (New Consistency Improvements)

**New in this branch**
- Bank mirror/cache and inventory setup behavior hardened in:
  - `Rs2Bank`
  - `Rs2InventorySetup`
- Added regression guidance and gotchas in `docs/entity-guides/items.md`.
- Added focused test coverage (`Rs2BankSetupDepositRetainTest`).

**Baseline**
- Less explicit guardrails around bank mirror readiness and setup retain/deposit semantics.

**Why this outperforms baseline**
- Fewer false-negative bank availability states.
- More stable setup loading behavior.
- Improved consistency for scripts relying on bank-backed requirements.

### 7) Text Parsing and Utility Robustness (New Data Hygiene Layer)

**New in this branch**
- Added `Rs2TextSanitizer` utility and integrated it into quest helper text parsing paths.
- New tests for text sanitizer behavior.

**Baseline**
- More direct widget text parsing with less normalization.

**Why this outperforms baseline**
- Better parsing reliability under formatting/tag variation.
- Reduces parsing drift in quest-helper UI flows.

### 8) Validation Surface Expansion (New Confidence Envelope)

**New in this branch**
- New/updated tests across:
  - pathfinder hash refresh
  - transport typing
  - walker awaits/door handling
  - leagues transport
  - bank setup retention
  - text sanitization
- Updated thread-safety guardrail baseline.

**Baseline**
- Narrower coverage of new transport/walker/Leagues edge cases.

**Why this outperforms baseline**
- Greater change confidence for movement-critical code.
- Earlier detection of regressions in route selection and transport handling.

## Net Feature Outcome

Compared to development baseline, this branch delivers a materially stronger travel stack:

- richer transport capability (especially Leagues),
- better route-execution reliability,
- faster developer iteration on transport definitions,
- and higher confidence through expanded targeted test coverage.

In practical terms: more valid routes selected, fewer avoidable traversal failures, and faster recovery when movement state becomes transient or contested.


<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

# Release Notes

* **New Features**
  * Added Leagues seasonal transport system with region-based teleportation and auto-calibration
  * Implemented bidirectional pathfinding for faster route discovery
  * Added door traversal detection with smart edge handling
  * Integrated Map of Alacrity seasonal transport support

* **Improvements**
  * Enhanced bank synchronization with live-epoch tracking for safer queries
  * Improved inventory setup loading with item retention and validation
  * Better quest helper text parsing for improved region detection

[![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/TheHaliax/Microbot/pull/1)

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
- fix null path in game msg leagues hook
- keep dye parse fallback alive when line parse fail
- use exact bank name fallback, avoid wrong stack bind
- gate reroute spam, block impossible distance math
- sync deposit path hard fail; tolerance per item only
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 11, 2026

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 63fa691d-5a6b-49ab-95ce-462c8171b7d8

📥 Commits

Reviewing files that changed from the base of the PR and between a3a77fc and fc51965.

⛔ Files ignored due to path filters (1)
  • runelite-client/src/main/resources/net/runelite/client/plugins/microbot/shortestpath/teleportation_items.tsv is excluded by !**/*.tsv
📒 Files selected for processing (78)
  • docs/api/Rs2LeaguesTransport.md
  • docs/entity-guides/items.md
  • gradle.properties
  • runelite-client/build.gradle.kts
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/MicrobotPlugin.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/Script.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/breakhandler/BreakHandlerScript.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/questhelper/QuestScript.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/questhelper/helpers/quests/ghostsahoy/DyeShipSteps.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/questhelper/helpers/quests/theforsakentower/JugPuzzle.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/questhelper/logic/PiratesTreasure.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/shortestpath/ShortestPathConfig.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/shortestpath/ShortestPathPanel.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/shortestpath/ShortestPathPlugin.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/shortestpath/ShortestPathScript.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/shortestpath/Transport.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/shortestpath/TransportType.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/shortestpath/pathfinder/CollisionMap.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/shortestpath/pathfinder/Pathfinder.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/shortestpath/pathfinder/PathfinderConfig.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/shortestpath/pathfinder/policy/TransportRequirementPolicy.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/Rs2InventorySetup.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/bank/Rs2Bank.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/events/WelcomeScreenEvent.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/inventory/Rs2Gembag.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/inventory/Rs2LogBasket.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/leaguetransport/LeagueTransportWidgets.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/leaguetransport/LeaguesRegion.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/leaguetransport/LeaguesTeleportFailureReason.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/leaguetransport/LeaguesTeleportResult.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/leaguetransport/LeaguesTransportAttemptSnapshot.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/leaguetransport/LeaguesTransportAttempts.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/leaguetransport/LeaguesTransportChat.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/leaguetransport/LeaguesTransportInjection.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/leaguetransport/LeaguesTransportLockCatalogue.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/leaguetransport/LeaguesTransportObservations.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/leaguetransport/LeaguesTransportPersistence.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/leaguetransport/LeaguesTransportRegions.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/leaguetransport/LeaguesTransportTeleport.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/leaguetransport/Rs2LeaguesTransport.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/leaguetransport/SeasonalTransportHandler.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/leaguetransport/SeasonalTransportHandlers.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/logging/Rs2LogRateLimit.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/misc/Rs2UiHelper.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/text/Rs2TextSanitizer.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/tile/Rs2Tile.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/walker/Rs2Walker.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/walker/TransportRouteAnalysis.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/walker/WebWalkLog.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/walker/awaits/Rs2WalkerRuntimeAwaits.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/walker/banking/Rs2WalkerBankingPlanner.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/walker/door/Rs2DoorAheadResolver.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/walker/door/Rs2DoorHandler.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/walker/door/Rs2WalkerAwaits.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/walker/door/model/AwaitTicket.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/walker/door/model/DoorCandidate.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/walker/door/model/DoorEdge.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/walker/door/model/DoorFailureReason.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/walker/door/model/DoorResolution.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/walker/lifecycle/Rs2WalkerLifecycleRuntime.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/walker/shared/Rs2WalkerProgress.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/walker/stall/Rs2WalkerStallPolicy.java
  • runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/walker/transport/Rs2WalkerTransportAwaits.java
  • runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java
  • runelite-client/src/test/java/net/runelite/client/plugins/microbot/shortestpath/ShortestPathTier1RegressionTest.java
  • runelite-client/src/test/java/net/runelite/client/plugins/microbot/shortestpath/TransportTypeTest.java
  • runelite-client/src/test/java/net/runelite/client/plugins/microbot/shortestpath/pathfinder/PathfinderConfigTransportRefreshHashTest.java
  • runelite-client/src/test/java/net/runelite/client/plugins/microbot/util/bank/Rs2BankSetupDepositRetainTest.java
  • runelite-client/src/test/java/net/runelite/client/plugins/microbot/util/leaguetransport/LeaguesTransportChatTest.java
  • runelite-client/src/test/java/net/runelite/client/plugins/microbot/util/leaguetransport/LeaguesTransportLockCatalogueTest.java
  • runelite-client/src/test/java/net/runelite/client/plugins/microbot/util/leaguetransport/Rs2LeaguesTransportRegionParseTest.java
  • runelite-client/src/test/java/net/runelite/client/plugins/microbot/util/leaguetransport/Rs2LeaguesTransportShouldRecalculatePathAfterLockTest.java
  • runelite-client/src/test/java/net/runelite/client/plugins/microbot/util/leaguetransport/SeasonalTransportHandlersTest.java
  • runelite-client/src/test/java/net/runelite/client/plugins/microbot/util/text/Rs2TextSanitizerTest.java
  • runelite-client/src/test/java/net/runelite/client/plugins/microbot/util/walker/Rs2WalkerIntegrationTest.java
  • runelite-client/src/test/java/net/runelite/client/plugins/microbot/util/walker/Rs2WalkerUnitTest.java
  • runelite-client/src/test/java/net/runelite/client/plugins/microbot/util/walker/door/Rs2WalkerAwaitsTest.java
  • runelite-client/src/test/resources/threadsafety/client-thread-guardrail-baseline.txt

Walkthrough

Adds a full Leagues “area” teleport subsystem (UI automation, calibration, persistence, chat correlation), seasonal transport handler wiring, pathfinder refactor with bidirectional A*, transport parsing/loading hardening, bank mirror epoch synchronization and APIs, richer inventory/equipment setup logic, walker/door/banking utilities, UI tweaks, config/controls, docs, and extensive unit/integration tests. Also updates gradle properties and test exclusions.

Possibly related PRs

  • chsami/Microbot#1750: Also changes TransportType/CollisionMap and seasonal transport handling in the pathfinding stack.
  • chsami/Microbot#1765: Touches CollisionMap/PathfinderConfig transport logic similar to this PR’s teleport/origin updates.
  • chsami/Microbot#1666: Modifies Rs2Bank; directly related to this PR’s Rs2Bank epoching and query changes.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

@chsami chsami merged commit 6b2c340 into main May 11, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants