diff --git a/mlb-the-show/release-2026.3.31.md b/mlb-the-show/release-2026.3.31.md new file mode 100644 index 0000000..1f13e24 --- /dev/null +++ b/mlb-the-show/release-2026.3.31.md @@ -0,0 +1,45 @@ +--- +title: "MLB The Show Companion Automation — 2026.3.31" +description: "Fix gold exchange navigation, add grind harness for automated buy→exchange loops, CLI cleanup." +type: reference +domain: gaming +tags: [release-notes, deployment, mlb-the-show, python, automation] +--- + +# MLB The Show Companion Automation — 2026.3.31 + +**Date:** 2026-03-31 +**Repo:** `cal/mlb-the-show-market-tracker` on Gitea +**Branch:** `main` (merge commit `ea66e2c`) +**Deploy method:** Local script — `uv run scripts/grind.py` + +## Release Summary + +Major fixes to the companion app automation (`grind.py`). The gold exchange navigation was broken — the script thought it had entered the card grid when it was still on the exchange selection list. Added a new `grind` command that orchestrates the full buy→exchange loop with multi-tier OVR rotation. + +## Changes + +### Bug Fixes +- Fixed `_is_on_exchange_grid()` to require `Exchange Value` card labels, distinguishing the card grid from the Exchange Players list page (`d4c038b`) +- Added retry loop (3 attempts, 2s apart) in `ensure_on_exchange_grid()` for variable load times +- Added `time.sleep(2)` after tapping into the Gold Exchange grid +- Removed low-OVR bail logic — the grid is sorted ascending, so bail fired on first screen before scrolling to profitable cards +- Fixed buy-orders market scroll — now tries up to 10 page-downs before giving up (was 1) (`6912a7e`) +- Restored `_has_low_ovr_cards` fix lost during PR #2 merge (`c29af78`) + +### New Features +- **`grind` command** — automated buy→exchange loop with OVR tier rotation (`6912a7e`) + - Rotates through OVR tiers in descending order (default: 79, 78, 77) + - Buys 2 tiers per round, then exchanges all available dupes + - Flags: `--ovrs`, `--rounds`, `--max-players`, `--max-price`, `--budget`, `--max-packs` + - Per-round and cumulative summary output + - Clean Ctrl+C handling with final totals + +### CLI Changes +- Renamed `grind` → `exchange` (bulk exchange command) +- Removed redundant single-exchange command (use `exchange 1` instead) +- `grind` now refers to the full buy→exchange orchestration loop + +## Known Issues +- Default price gates (`MAX_BUY_PRICES`) may be too low during market inflation periods. Current gates: 79→170, 78→140, 77→125. Use `--max-price` to override. +- No order fulfillment polling — the grind loop relies on natural timing (2 buy rounds ≈ 2-5 min gives orders time to fill)