claude-home/gaming/release-2026.4.02.md
2026-04-02 20:48:06 -05:00

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
release-notes
deployment
mlb-the-show
automation

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-packs command — 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 verification
  • cycle command — full orchestrated flow: buy silvers for specified OVR tiers → exchange all dupes into gold packs → open all gold packs
  • DEFAULT_PACK_NAME constant"Exchange - Live Series Gold" extracted from inline strings

Bug Fixes

  • Keyboard dismiss fixKEYCODE_BACK was closing the entire buy order modal instead of just dismissing the numeric keyboard. Replaced with tap(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_cycle passed no args to open_packs() — now passes packs_exchanged count to bound the open loop
  • isinstance(result, dict) dead code removed from full_cyclegrind_exchange always returns int
  • _find_nearest_open_button — added x-column constraint (200px) and zero-width element filtering to prevent matching ghost buttons from collapsed packs

Refactoring

  • Package splitscripts/grind.py (1611 lines) → scripts/grind/ package:
    • constants.py (104 lines) — coordinates, price gates, UI element maps
    • adb_utils.py (125 lines) — ADB shell, tap, swipe, dump_ui, element finders
    • navigation.py (107 lines) — screen navigation (nav_to, nav_tab, FAB)
    • exchange.py (283 lines) — gold exchange logic
    • market.py (469 lines) — market scanning and buy order placement
    • packs.py (131 lines) — pack opening
    • __main__.py (390 lines) — CLI entry point and orchestrators (grind_loop, full_cycle)
  • scripts/grind.py retained as a thin wrapper for uv run backward compatibility
  • Invocation changed from uv run scripts/grind.py to PYTHONPATH=scripts python3 -m grind
  • Raw adb("input swipe ...") calls replaced with swipe() 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)