2.8 KiB
2.8 KiB
| title | description | type | domain | tags | ||||
|---|---|---|---|---|---|---|---|---|
| MLB The Show Grind — 2026.4.02 | Pack opening command, full cycle orchestrator, keyboard dismiss fix, package split. | reference | gaming |
|
MLB The Show Grind — 2026.4.02
Date: 2026-04-02
Project: mlb-the-show (/mnt/NV2/Development/mlb-the-show)
Release Summary
Added pack opening automation and a full buy→exchange→open cycle command. Fixed a critical bug where KEYCODE_BACK was closing the buy order modal instead of dismissing the keyboard, preventing all order placement. Split the 1600-line single-file script into a proper Python package.
Changes
New Features
open-packscommand — navigates to My Packs, finds the target pack by name (default: Exchange - Live Series Gold), rapid-taps Open Next at ~0.3s/pack with periodic verificationcyclecommand — full orchestrated flow: buy silvers for specified OVR tiers → exchange all dupes into gold packs → open all gold packsDEFAULT_PACK_NAMEconstant —"Exchange - Live Series Gold"extracted from inline strings
Bug Fixes
- Keyboard dismiss fix —
KEYCODE_BACKwas closing the entire buy order modal instead of just dismissing the numeric keyboard. Replaced withtap(540, 900)to tap a neutral area. This was the root cause of all buy orders silently failing (0 orders placed despite cards having room). full_cyclepassed no args toopen_packs()— now passespacks_exchangedcount to bound the open loopisinstance(result, dict)dead code removed fromfull_cycle—grind_exchangealways returnsint_find_nearest_open_button— added x-column constraint (200px) and zero-width element filtering to prevent matching ghost buttons from collapsed packs
Refactoring
- Package split —
scripts/grind.py(1611 lines) →scripts/grind/package:constants.py(104 lines) — coordinates, price gates, UI element mapsadb_utils.py(125 lines) — ADB shell, tap, swipe, dump_ui, element findersnavigation.py(107 lines) — screen navigation (nav_to, nav_tab, FAB)exchange.py(283 lines) — gold exchange logicmarket.py(469 lines) — market scanning and buy order placementpacks.py(131 lines) — pack opening__main__.py(390 lines) — CLI entry point and orchestrators (grind_loop, full_cycle)
scripts/grind.pyretained as a thin wrapper foruv runbackward compatibility- Invocation changed from
uv run scripts/grind.pytoPYTHONPATH=scripts python3 -m grind - Raw
adb("input swipe ...")calls replaced withswipe()helper
Session Stats
- Buy orders placed: 532 orders across two runs (474 + 58)
- Stubs spent: ~63,655
- Gold packs exchanged: 155 (94 + 61)
- Gold packs opened: 275
- OVR tiers worked: 77 (primary), 78 (all above max price)