- Introduced `scale` property across components for responsive design.
- Adjusted dimensions and positions dynamically based on scale.
- Enhanced flexibility for varying display resolutions.
- Added spdlog dependency to `CMakeLists.txt`.
- Implemented a centralized `Logger` with file rotation and console output support.
- Added detailed logging across server, client, and game modules for improved traceability.
- Split `uno-client` and `uno-server` as separate executables.
- Adjusted `uno-game-lib` linking and updated runtime output directory.
- Enabled post-build DLL copying for Windows compatibility.
- Introduced `AFTER_GAME` state to handle post-game logic.
- Updated `GameUI` to show restart prompt when the game ends.
- Modified `StartPage` and `MainWindow` to support restart behavior.
- Adjusted `endGame` method to transition to `AFTER_GAME`.
- Integrated `GamePage` into `MainWindow` for active game state.
- Added player actions: play card, draw card, and call UNO.
- Implemented discard pile, game direction, and current color indicators.
- Designed player hand and opponent details with interactive components.
- Added callbacks for playing and drawing cards.
- Integrated hand card and player list updates during active game stages.
- Implemented discard pile, current color, and game direction display.
- Added validation for wild card types and ensured proper color assignment.
- Updated `PlayerPlayCardPayload` to use ID and color instead of card object.
- Implemented `ConnectPage` to handle server connection input and initiation.
- Added `StartPage` to manage player readiness before starting the game.
- Created `MainWindow` to manage page transitions and callbacks.
- Implemented `GameUI` for managing game state transitions and player interactions.
- Integrated Slint `MainWindow` for UI rendering and event handling.
- Added Slint as a required dependency in the CMake configuration.
- Integrated Slint sources into `uno-game-lib`.
- Modified Windows debug build to create a GUI executable.
- Added `UnoClient` class to handle network, UI, and player actions.
- Implemented methods for processing network and player events.
- Created entry point in `main.cpp` for client execution.
- Added `setPlayerName` and `getPlayerName` to `ClientGameState`.
- Introduced `setName` method for `Player`.
- Updated constructors for `Player` and `ClientGameState` to support name management.
- Introduced `PlayerAction` to encapsulate player actions, including type and payload.
- Added specific payload structures for connect, start game, play card, and draw card actions.
- Updated `InitGamePayload` to include an empty `players` array.
- Adjusted related serialization and deserialization test cases in `MessageSerializerTest`.
- Added `ServerGameStage` check in turn validation logic.
- Switched to `ClientPlayerState` in `handleStartGame` for player initialization.
- Integrated `endGame` in `handleEndGame` and removed redundant `reset` call.
- Added `clear` methods to `PlayerState`, `ServerPlayerState`, and `HandCard`.
- Introduced `endGame` methods to `GameState`, `ClientGameState`, and `ServerGameState`.
- Improved `init` and `nextPlayer` logic in `ClientGameState`.
- Added `getClientGameStage` and `getServerGameStage` methods to retrieve game stages.
- Updated `InitGamePayload` to use `ClientPlayerState` instead of `PlayerPublicState`.
- Adjusted serialization and deserialization methods in `MessageSerializer` accordingly.
- Replaced iterator-based `play` methods with a single card-based method.
- Streamlined logic in `ServerPlayerState`, `ClientGameState`, and `HandCard`.