game-mechanics

  1. The number was never the decision

    A PvP host can now pick a turn time limit from 30 seconds to 3 minutes, for accessibility. Almost everywhere the old fixed 60 seconds showed up, the actual design underneath it never depended on that number at all.

  2. The opposite tradeoff

    The AI never volunteering a profanity was a free filter. Filtering what a player types into their own initials is the same list applied to the opposite tradeoff.

  3. Eight strings, one function

    A five-level nested ternary picked the caption for how a PvP game ended. The only way to exercise all eight of its outcomes was rendering the whole page.

  4. Load-bearing in one mode

    Both duel pages held their own copy of the same reveal-timing math. One input to the shared version looks redundant for AI duel and is anything but for PvP.

  5. Descriptors, not strings

    The PvP lives-teaching hints get their own pure reducer. Four candidate designs, decided on two separate axes, one of them a rule the sync-engine round had already settled.

  6. The image that repaints itself

    The daily share image gets real fruit icons, an OG-ratio canvas, and a gold rank line that fills in the moment a leaderboard submission lands.

  7. The game never volunteers that

    The Norwegian AI opponent played a profanity as its move. The fix keeps every word valid for players and just stops the game from choosing one on its own.

  8. The same trap, a third time

    A word input overflowing the screen at 320px turned out to be two unrelated bugs, and fixing the second one surfaced a third case of a CSS trap this codebase keeps hitting.

  9. One tooltip, anywhere on the page

    Detail tooltips reach the fruit on the board itself, and the "only one open at a time" rule stops being a property of the game log and becomes a property of the page.

  10. The log that remembers both players

    The shared game log learns to show two players at once, PvP gets a live panel of its own, and a scoring bug that only hurt guests surfaces along the way.