# RCWeb Stack Snap Controller

The **Stack Snap Controller** app (`app/stack-snap-c`) is the phone companion for the Stack Snap display. Each player joins from the QR code, keeps a private hand, and sends legal card actions back to the main screen.

![icon](pwa-512x512.png "Stack Snap Controller Icon")

## What it does

- **Private hand view**: Shows each player's personal cards, highlights playable options, and keeps the draw/keep flow clear.
- **Wild color choice**: Wild and wild draw four cards expose a large color picker before the move is sent.
- **Fast resync**: The controller stores only a player id and name locally; the display pushes fresh snapshots whenever the room state changes.

## How it works

- **Display-driven snapshots**: `stack-snap` sends `receiveSnapshot` updates containing the current public table state and this player's hand.
- **Simple action calls**: The phone sends back `playCard`, `drawCard`, and `keepDrawnCard` requests using `rc.sendFunctionCall`.
- **Programmatic SVG hand**: The phone renders the same generated card faces as the display so both apps stay visually aligned without static card image files.
