diff --git a/LOG.md b/LOG.md index 6cee799..af1b6b7 100644 --- a/LOG.md +++ b/LOG.md @@ -1,5 +1,13 @@ # Work Log +## 2026-06-24 + +- Refined the chess board visual style to match the app's glass/control surfaces instead of the previous heavy wood-and-token treatment. +- Removed the circular chip backgrounds from pieces, kept high-contrast glyphs with subtle outlines, softened square/highlight colors, and tightened coordinate labels for a cleaner chess UI. +- Rebalanced chess board sizing and layout columns so the board window, actual board, side panel, and Dock spacing feel less awkward on a 1280x720 desktop viewport. +- Validation: `npm run lint` passed and `npm run build` passed. Browser verification on `http://localhost:3124/play/chess` with a temporary local puzzle API confirmed 64 squares, 32 rendered pieces, a 350px visible board above the Dock, balanced 480px/320px board-panel windows, and no console errors. The temporary API was stopped after verification. +- Recommended next task: verify the real authenticated `/chess/play/{gameId}` board against the Maia backend at common laptop heights and tune only the board size formula if the live game info panel changes vertical rhythm. + ## 2026-06-19 - Added Maia game resign and undo API wrappers, then wired the play screen with in-progress-only "무르기" and "기권" actions plus a persistent "새 게임" link back to the setup screen. diff --git a/src/components/chess/ChessBoard.tsx b/src/components/chess/ChessBoard.tsx index 8170d03..6201a4c 100644 --- a/src/components/chess/ChessBoard.tsx +++ b/src/components/chess/ChessBoard.tsx @@ -217,8 +217,8 @@ export default function ChessBoard({ }, [fen, game, lastMoveSquares]); return ( -
-
+
+
{boardSquares.map((square) => { const piece = game.get(square); @@ -262,25 +262,25 @@ export default function ChessBoard({ }} className={clsx( 'relative min-h-0 min-w-0 overflow-hidden transition-[filter,box-shadow] duration-150', - isLight ? 'bg-[#f0dfc1]' : 'bg-[#6f8f72]', + isLight ? 'bg-[#edf2f5] dark:bg-[#c8d0d6]' : 'bg-[#7fa18b] dark:bg-[#415d52]', canDrag && 'cursor-grab active:cursor-grabbing', - !disabled && 'hover:brightness-110 focus-visible:z-20', + !disabled && 'hover:brightness-[1.04] focus-visible:z-20', disabled && 'cursor-not-allowed', )} aria-label={getSquareLabel(square, piece)} aria-pressed={isSelected} > {isLastMoveSquare && ( - + )} {isSelected && ( - + )} {file === firstFile && ( {rank} @@ -289,8 +289,8 @@ export default function ChessBoard({ {rank === lastRank && ( {file} @@ -301,8 +301,8 @@ export default function ChessBoard({ className={clsx( 'absolute z-10 rounded-full transition', piece - ? 'inset-[12%] border-[3px] border-rose-500/55 shadow-[0_0_0_1px_rgb(255_255_255_/_0.26)_inset]' - : 'left-1/2 top-1/2 h-[24%] w-[24%] -translate-x-1/2 -translate-y-1/2 bg-slate-950/35 shadow-[0_1px_3px_rgb(0_0_0_/_0.24)]', + ? 'inset-[13%] border-[2px] border-[var(--color-accent)]/70 shadow-[0_0_0_1px_rgb(255_255_255_/_0.28)_inset]' + : 'left-1/2 top-1/2 h-[22%] w-[22%] -translate-x-1/2 -translate-y-1/2 bg-[var(--color-accent)]/42 shadow-[0_1px_3px_rgb(0_0_0_/_0.18)]', )} /> )} @@ -326,13 +326,13 @@ export default function ChessBoard({ > {PIECE_SYMBOLS[piece.color][piece.type]} diff --git a/src/components/chess/ChessGamePlayClient.tsx b/src/components/chess/ChessGamePlayClient.tsx index e11b269..6de243b 100644 --- a/src/components/chess/ChessGamePlayClient.tsx +++ b/src/components/chess/ChessGamePlayClient.tsx @@ -489,14 +489,14 @@ export default function ChessGamePlayClient({ gameId }: ChessGamePlayClientProps -
+
-
+
(color === 'w' ? '백' : '흑'); @@ -83,7 +83,7 @@ function ChessPageFrame({ children }: { children: ReactNode }) { function BoardWindow({ children }: { children: ReactNode }) { return ( - +
{children}
@@ -95,7 +95,7 @@ function LoadingState() { return ( -
+
{BOARD_SQUARES.map((square, index) => ( @@ -103,8 +103,9 @@ function LoadingState() { key={square} className={clsx( 'aspect-square animate-pulse', - (index + Math.floor(index / 8)) % 2 === 0 ? 'bg-black/[0.06]' : 'bg-black/[0.12]', - 'dark:bg-white/[0.08]', + (index + Math.floor(index / 8)) % 2 === 0 + ? 'bg-[#edf2f5] dark:bg-[#c8d0d6]' + : 'bg-[#7fa18b] dark:bg-[#415d52]', )} /> ))} @@ -269,7 +270,7 @@ function ChessPuzzleBoard({ puzzle }: { puzzle: ChessPuzzle }) { -
+