games/kaintuck: single-screen market for buy/sell cargo
#39 in Riparion/riparion-retro — merged 2026-06-12
Why
The kaintuck buy/sell cargo flow was a three-screen drill-down that bounced the player back to the hub after every transaction, with buying and selling split into separate modes. Trading several goods meant repeatedly: enter trade mode → pick a good (separate list screen) → enter a quantity (separate number-pad screen) → confirm → dumped at the landing → start over. "Too much clicking back and forth."
What
Collapse the three screens into one touch-first, actionable market table. Tap a good's row to reveal an inline quantity entry plus All/Buy/Sell; transact in place, stay on the table, and trade as many goods as you like before one Done returns to the hub.
Mode::Trade { buying: bool }→{ can_buy, can_sell }so the single screen serves all three trading spots: Pittsburgh boatyard (buy only), river towns (buy + sell), Natchez (sell only).ui/screens/trade.rsrewritten as the market table: column headers (CARGO/BUY/SELL/ABRD), tappable rows, inline qty with live cost, disabled states for can't-afford / nothing-aboard, sticky Done.- Call-site updates in
town.rs(two SELL/BUY buttons → one TRADE ⇄),pittsburgh.rs,natchez.rs,app.rs. - Engine
buy/sell/pricing unchanged — golden trace stays stable. - Regenerated
assets/tailwind.cssfor new width utilities; patch bump to 0.1.13.
Verification
cargo test -p kaintuck— 43 pass,golden_trace_is_stablegreen.- Browser-driven (playwright): Pittsburgh BUY CARGO hides Sell and updates hold 0→4 with correct
Buy $8; Done returns to LOAD THE BOAT. Injected town save → THE MARKET shows both price columns + Buy and Sell; selling drops a good's hold 4→0.
🤖 Generated with Claude Code
Last updated 2026-06-13
Links to this note
Merged pull requests, newest first.