Work / Chess / Wiki / Synthesis
current-app-vs-new-design
Synthesiscanonicalverified 2026-10-04
SYNTHESIS.CURRENT-APP-VS-NEW-DESIGNSummary
What the app does today, read from src/, against what the new design set asks for. Each row that differs is work for the rebuild, and names the feature page that owns it.
Built from
Body
Platform
| Today | New design asks | Feature | |
|---|---|---|---|
| Expo SDK | 54 | the latest SDK, from a fresh create-expo-app |
FEAT-0001 |
| Styling | NativeWind 4 + gluestack-ui | UniWind, tokens mirroring the design tailwind.config.js |
FEAT-0002 |
| Storage | AsyncStorage, mode and level only | the whole game and the settings | FEAT-0005, FEAT-0009 |
| Package manager | yarn, legacy-peer-deps=true |
not decided | FEAT-0001 |
| Tests | none | not a design question; the house rule is tests first | FEAT-0001 |
Screens
| Today | New design asks | Feature | |
|---|---|---|---|
| Home | four mode cards, How to Play, Privacy Policy | Resume card, New game, How to play, Settings | FEAT-0005, FEAT-0006 |
| Setup | none — a card starts the game | opponent, level, colour, clock; friend seating | FEAT-0006, FEAT-0003, FEAT-0011 |
| Colour | the human is always White | White, Black or Random | FEAT-0003 |
| Board | bordered container, no last-move mark, no coordinates | 368pt board, last move tinted, coordinates in the squares | FEAT-0006 |
| Legal moves | every target square green | dot for a move, ring for a capture; can be switched off | FEAT-0009 |
| Player strips | a header with mode and level | a strip per player: side, captures, clock | FEAT-0006, FEAT-0011 |
| Check | orange "Check!" text with an emoji | the king's square in red, and a line of words | FEAT-0006 |
| Promotion | always a queen | a picker, every time | FEAT-0004 |
| Move list | none shown | a sheet in algebraic notation, with captures | FEAT-0007 |
| Leaving a game | Back resets it | a pause sheet that saves | FEAT-0007, FEAT-0005 |
| Resign | none | pause sheet, then a confirmation | FEAT-0007 |
| Results | one modal over the board; draws say "Game Over!" | five screens, each naming how the game ended | FEAT-0008 |
| Settings | none | theme, board colours, legal moves, sound, haptics | FEAT-0009 |
| Theme | one dark gradient | light and dark, following the system | FEAT-0009 |
| Pieces | lucide icons, filled | twelve files from designs/brand/pieces/ |
FEAT-0002 |
| Friend game | the same board, both sides | face to face, or pass the phone | FEAT-0006 |
| Clock | none | optional | FEAT-0011 |
| Ad consent | none | Ad choices screen opening Google's form | FEAT-0010 |
| Interstitial | 1.2 s after the game ends, over the result | after Rematch only | FEAT-0010 |
| Privacy policy | linked from Home | under Settings | FEAT-0009 |
Kept as it is
- The rules engine in
src/lib/game.ts: castling, en passant, check, checkmate, stalemate, the fifty-move rule, insufficient material. - The three levels in
src/lib/ai.ts. Only the words describing them change. - Undo, and what it takes back.
- Non-personalised ads only, and the banner format.
- No account, no analytics, no purchase.
Not decided
- Threefold repetition: not in the engine, not in the design.
- What a game lost on time looks like. The clock is drawn; that result is not.
- How often the full-screen ad shows.
- The clock choices and the three board colours are proposals.
Last refresh
2026-10-04 — refresh when any "Built from" page changes, or when a feature ships.
Sources
- (synthesis pages cite wiki pages, not raw files)