anvilsign in

collin/mahjong

BoardRenderedSource

1# TODO
2
3Ordered by how much they'd matter at a real table.
4
5## 1. Undo across a hand boundary
6
7`undo()` is cleared by `startHand`, so a 下一局 tapped by mistake — and that
8button sits right under someone's thumb — cannot be taken back. The deal is
9already reshuffled by then. Would need the snapshot from before `nextHand` kept,
10and the seed recorded, so the same wall could be rebuilt.
11
12## 2. Settings mid-game
13
14設定 is reachable from the lobby and the game-over panel, but not during a 將, so
15a player who wants to fix a typo'd name has to wait it out. The `?` panel is
16already anchored per-seat and rotated to face its own edge; settings could share
17that treatment.
18
19## 3. 花槓 and other flower house rules
20
21Flowers score, but some tables pay 花槓 out the moment it completes rather than
22at settlement, and some deal 補花 differently at the start. Both are `Rules`
23flags plus a payment hook.
24## Online (new)
25
26- [ ] put it on a real domain: `npm run serve` behind a TLS reverse proxy
27 (phones only get camera and fullscreen on https) — anvil, a VPS, a
28 tailscale funnel, anything that terminates TLS
29- [ ] undo on a device that is not the table: only the table screen has it, and
30 only while it is the room's host. A phone holding one hand has none
31- [ ] full-size clients holding one hand throw with the local gesture but
32 others see the default seat-launch animation — could send the NetThrow
33 for those too
34- [ ] cheat-resistance: room state carries the wall and every hand; the relay
35 is ours now, so the engine could move into `server/rooms.ts` and keep
36 secrets server-side
37- [ ] voice/sfx settings on the phone controller (it inherits defaults, has no
38 toggle of its own)
39
40- [ ] make the scar bgger
41- [ ] fgure out the br nao
42- [ ] computer shouldn't be able to take the pung before the throw animation completes
43- [ ] weirdness around throwing the tiles in the center, it's like attracted to the center, even gets stopped by wall it keeps going
44- [ ] put the tumble back on a thrown tile — `TUMBLE` in `src/table/pool.ts`
45- [ ] fake 3d for the tiles (centered around controllign players pov)
46- [ ] consider switching physics engine to real 3d engine