diff --git a/docs/ISSUES.md b/docs/ISSUES.md index a63d3e9f..c098e5de 100644 --- a/docs/ISSUES.md +++ b/docs/ISSUES.md @@ -1933,7 +1933,7 @@ its open/closed sprites when picked up. ## #147 — Inventory item-grid scrolling polish -**Status:** IMPLEMENTED 2026-07-11 — live visual gate pending +**Status:** DONE 2026-07-11 — live visual gate passed **Severity:** LOW **Filed:** 2026-06-22 @@ -1942,7 +1942,7 @@ whole-row clip via `UiScrollable`) works but needs visual/UX polish — smoothne wheel step, row-clip edges. Confirm the exact symptoms with the user when picked up. Filed from the D.2b inventory visual gate. -**2026-07-11 implementation:** retained list rebuilds now defer layout until all cells are restored, preserving the exact `ScrollY` across inventory changes. Whole-row visibility clipping is replaced by intersecting-row visibility plus a nested child viewport clip; sprite geometry and UVs are cropped together, so thumb dragging shows clean partially visible rows instead of black gaps. Named retail confirms the position itself is an integer pixel coordinate (`ScrollToY`/`SetScrollableXY`), while wheel/arrow line steps remain one row (`InqScrollDelta = scrollableHeight / rowCount`). The inventory's old 560 px maximum-height cap was also the reason a persisted 560 px window could not expand further; its maximum now uses available screen height (AP-54 remains for exact keystone bounds). Automated tests cover partial top/bottom rows, UV crop, scroll preservation through refresh, and resize geometry; warning-free App Release plus all 4,702 tests pass. Research: `docs/research/2026-07-11-retail-inventory-scroll-pseudocode.md`. +**2026-07-11 resolution:** retained list rebuilds now defer layout until all cells are restored, preserving the exact `ScrollY` across inventory changes. Whole-row visibility clipping is replaced by intersecting-row visibility plus a nested child viewport clip; sprite geometry and UVs are cropped together, so thumb dragging shows clean partially visible rows instead of black gaps. Named retail confirms the position itself is an integer pixel coordinate (`ScrollToY`/`SetScrollableXY`), while wheel/arrow line steps remain one row (`InqScrollDelta = scrollableHeight / rowCount`). The inventory's old 560 px maximum-height cap was also the reason a persisted 560 px window could not expand further; its maximum now uses available screen height (AP-54 remains for exact keystone bounds). Automated tests cover partial top/bottom rows, UV crop, scroll preservation through refresh, and resize geometry; warning-free App Release plus all 4,702 tests pass. User confirmed vertical resizing, partial-row scrolling, and offset preservation in the live Release client. Research: `docs/research/2026-07-11-retail-inventory-scroll-pseudocode.md`. ---