docs: sync KB — release-2026.4.02.md
This commit is contained in:
parent
51389c612a
commit
016683cc35
50
gaming/release-2026.4.02.md
Normal file
50
gaming/release-2026.4.02.md
Normal file
@ -0,0 +1,50 @@
|
||||
---
|
||||
title: "MLB The Show Grind — 2026.4.02"
|
||||
description: "Pack opening command, full cycle orchestrator, keyboard dismiss fix, package split."
|
||||
type: reference
|
||||
domain: gaming
|
||||
tags: [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 fix** — `KEYCODE_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_cycle` — `grind_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 split** — `scripts/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)
|
||||
Loading…
Reference in New Issue
Block a user