Stage 7 polish (round 2): layout/zoom/tab-bar/hint/check fixes
- nav bar grows ONLY in game (other screens: minimal nav, content fills); tab bar always bottom - tab bar: tighter icon/label spacing, bigger icons, hint badge on the icon corner - board zoom reworked to width-based (real native scroll, fixes Safari/Chrome) + constant cqw labels; pinch & swipe-to-history dropped (conflict), double-tap kept, history via menu - beginner bonus labels shrunk to fit cells - Draw opens exchange directly (no confirm); confirm popovers restyled like the hamburger dropdown (vertical); removed the floating direction toggle - pending tiles darker bg (no outline); last-word dark-tile highlight (static / 1s flash) - check button disabled for <2/>15 chars, already-checked, or 5s cooldown - global user-select:none (inputs exempt); docs updated; TODO-4 alphabet-on-wire
This commit is contained in:
@@ -529,8 +529,10 @@ Open details: deployment target/host; dashboards; load expectations.
|
||||
pinned to the bottom) + a one-line **announcement banner** (client-side mock
|
||||
rotation now; server-driven channel later — §10); a mobile-OS **tab bar** and a
|
||||
reusable **HoldConfirm** press-and-hold control (MakeMove 🏁 + game-action confirms);
|
||||
board **zoom reworked** to a fixed viewport with counter-scaled labels, corner-letter
|
||||
tiles, contrasting grid lines, and a Settings **bonus-label style** (beginner/
|
||||
board **zoom reworked** to a width-based zoom in a fixed viewport (real native
|
||||
scroll, double-tap; pinch/swipe dropped) with constant `cqw` labels, corner-letter
|
||||
tiles, contrasting grid lines, last-word dark-tile highlight, and a Settings
|
||||
**bonus-label style** (beginner/
|
||||
classic/none); **hint lays its tiles on the board** (no spend when no move — a new
|
||||
`no_hint_available` result code); the history opens as an in-place **slide-down**
|
||||
(not a modal); word-check is alphabet/length-limited, cached and throttled. Design
|
||||
@@ -561,3 +563,10 @@ Open details: deployment target/host; dashboards; load expectations.
|
||||
row behind. Add a periodic reaper (or a finished-and-idle sweep) that deletes
|
||||
guest accounts with no active games once their last session is gone; the
|
||||
`ON DELETE CASCADE` foreign keys clean up the dependent rows.
|
||||
- **TODO-4 — put the per-game alphabet on the wire (owner's idea, Stage 7).** Today the
|
||||
client hardcodes each variant's letters/values (ported into `ui/src/lib/premiums.ts`
|
||||
from `scrabble-solver/rules/rules.go`) and the edge exchanges plays/hints by concrete
|
||||
letters. Consider extending `game.state` to carry the variant's `(letter, index,
|
||||
value)` table so the UI stops duplicating it, and optionally moving tile exchange to
|
||||
letter **indices** end-to-end. Caveat (as for the dictionaries, TODO-2): the wire table
|
||||
must stay pinned to the same `rules.Alphabet` the engine uses, or indices drift.
|
||||
|
||||
Reference in New Issue
Block a user