Skip to content

Releases: maxentr/skyjo

v1.42.2

29 Jan 12:11
Compare
Choose a tag to compare

What's Changed

Improvements

  • Optimize game removal and Redis key deletion

Full Changelog: v1.42.1...v1.42.2

v1.42.1

27 Jan 20:18
Compare
Choose a tag to compare

What's Changed

Features

  • Add Discord server link to the homepage and footer

Improvements

  • Replace the feedback feature with a Discord link for better user engagement

Fixes

  • Improve game state and key management in the Redis repository:
    • Add TTL for game states (2 minutes)
    • Enhance game deletion to ensure complete key removal

Full Changelog: v1.42.0...v1.42.1

v1.42.0

26 Jan 15:09
Compare
Choose a tag to compare

What's Changed

Features

  • Implemented game state versioning and retrieval #96
  • Enhanced the first player penalty display in game rules
  • Integrated new game state versioning for better tracking of changes

Fixes

  • Resolved issue where firstPlayerFlatPenalty could exceed scoreToEndGame
  • Improved state change detection logic in state-operations
  • Fixed SonarCloud errors

Improvements

  • Simplified game round initiation logic with new helper methods
  • Updated and refined round phase and status terminology
  • Streamlined game status checks using dedicated methods
  • Updated game deserialization to use the SkyjoDbFormat type

Chores

  • Added launch configuration for debugging API in development mode
  • Updated API debug launch configuration for better local testing

Refactors

  • Moved state operations functions to the @skyjo/state-operations module
  • Typed game variable at its source in the cache layer
  • Renamed and improved methods for better clarity (e.g., haveAtLeastMinPlayersConnected to hasMinPlayersConnected)
  • Adjusted constants and logic to improve code readability and maintainability

CI

  • Added versioning step for Vercel deployment

Style

  • Fixed a French typo on the web interface
  • Increased width of the input for the first player flat penalty for better usability

Translations

  • Updated translation files with the latest changes #95

Full Changelog: v1.41.0...v1.42.0

v1.41.0

04 Jan 13:59
Compare
Choose a tag to compare

What's Changed

Features

  • Allow updating max players after settings confirmation

Improvements

  • Rename game:settings event to game:update-settings for consistency

Fixes

  • Always update admin on player disconnection
  • Display kicked player's username in kick notifications on kick success
  • Correctly apply penalty for tied scores

Tests

  • Add onWizz functionality tests for ChatService

Full Changelog: v1.40.0...v1.41.0

v1.40.0

03 Jan 20:11
Compare
Choose a tag to compare

What's Changed

Features

  • Add penalty type and flat penalty game settings #94
  • API: Implement rate limiting for feedback submissions
  • Web: Enable admin control over maximum players in games
  • Web: Prevent accidental game window closures with an alert.

Improvements

  • Web: Default username to "Ano" when using the /create command without a username
  • Web: Open rules dialog instead of redirecting to /rules
  • Web: Enhance the rules page with a logo and call-to-action button

Fixes

  • API: Remove ghost players after kicks by fixing the disconnection handling
  • API: Prevent discrepancies when comparing basic fields, including dates, in GameStateManager.ts
  • API: Ensure admin privileges are required for game settings modifications, blocking changes post-confirmation
  • Web: Establish a socket connection before creating a game
  • Web: Update the confirmation message for game settings in the lobby

Refactoring

  • API: Consolidate single settings update events into game:settings
  • API: Rename utility files for rate limiter consistency
  • Core: Use native enums for firstPlayerPenaltyType in the update settings schema
  • Core: Rename and adjust fields for penalty configuration (firstPlayerScorePenaltyMultiplier, SKYJO_DEFAULT_SETTINGS)
  • Web: Remove InactivityCheck component and related localization entries
  • Web: Improve beforeunload handling using a game status listener

Tests

  • API: Add unit tests for GameStateManager and mock updates for Redis service

Style

  • Web: Move public game creation to the search page header

Chores

  • API: Exclude socket rate limiter from test coverage

Perf

  • Web: Disable PostHog heatmaps

Full Changelog: v1.39.0...v1.40.0

v1.39.0

27 Dec 12:27
Compare
Choose a tag to compare

What's Changed

Features

  • Implemented 'wizz' feature for player interaction
  • Created dedicated game creation page
  • Enhanced PWA manifest and added service worker
  • Implemented Create and Search layouts with metadata generation, improving SEO

Improvements

  • Updated sitemap to include new search and game creation routes, enhancing SEO and navigation
  • Dynamically generated alternate languages to improve SEO

Fixes

  • Corrected conditional rendering for ReconnectGameButton.tsx in GameLobbyButtons.tsx component
  • Changed player connection status to "disconnected" in handlePlayerDisconnection function

Full Changelog: v1.38.0...v1.39.0

v1.38.0

24 Dec 11:11
Compare
Choose a tag to compare

What's Changed

Features

  • Retry fetching public games on game join error
  • Clear gameCode query param on join error from link
  • Add onError callback to JoinGameButton component for improved error handling

Improvements

  • Unify player disconnection logic from leave and kick player functions

Chores

  • Adjust PostHog configuration to exclude card events from tracking

Translations

  • Translations update from Hosted Weblate by @weblate in #93

Full Changelog: v1.37.0...v1.38.0

v1.37.0

16 Dec 11:53
Compare
Choose a tag to compare

What's Changed

Features

  • Added FindPublicGameButton component for initiating public game search
  • Added SearchPage component for public game search functionality
  • Enhanced public game search functionality with tags filtering
  • Added settings validation for public games
  • Implemented rate limiter middleware for API requests
  • Added rate limiting to public games endpoint
  • Implemented socket rate limiting across chat, game, and lobby routers
  • Added retry delay for fetching public games in SearchPage component

Improvements

  • Simplified GameLobbyButtons by splitting each button into separate components
  • Consolidated game creation and game privacy settings logic:
    • Removed find game routes
    • Updated private game creation to use a private boolean parameter
    • Disabled game privacy updates after creation
  • Separated Socket.IO API into a dedicated folder for better organization of HTTP REST and Socket.IO endpoints
  • Improved GameRepository for safe retrieval of public games:
    • Excluded non-existent games from the public games sorted set
    • Filtered out null games in the results
    • Suppressed Seq logging for not found game in getGameSafe
  • Enhanced create, find, and join game button components to accept className
  • Enhanced dark mode support for SearchPage and Tooltip components

Fixes

  • Disabled FindPublicGameButton when the socket is not connected
  • Disabled FindPublicGameButton if no username is provided and saved the username in local storage on click
  • Fixed display of setting validation warnings in the lobby, visible only to admins
  • Prevented logging for first-time retrieval of a game with stateVersion as null

Performance

  • Limited socketContext usage to root and game pages
  • Reduced the size of .png, .svg, and .ico assets
  • Reduced time-to-live of public games in the lobby to 4 minutes

Style

  • Updated lobby title to "username's game"
  • Enhanced dark mode support for SearchPage and Tooltip components

Chores

  • Added @tanstack/react-query dependency
  • Added rate-limiter-flexible dependency
  • Fixed SonarQube issues

CI

  • Fixed issues raised by SonarQube

Full Changelog: v1.36.0...v1.37.0

v1.36.0

09 Dec 12:55
Compare
Choose a tag to compare

What's Changed

Features

  • web: Add tabs component to improve settings dialog organization (#85)
  • web: Add game board size option in display settings (#88)
  • web: Allow users to view game settings during a game (#89)
  • web: Add tooltip with description for the multiplier-for-first-player setting
  • web: Add toggle for card preview in opponents list for mobile view

Improvements

  • web: Improve opponent selection UI visibility (#84)
  • web: Add cards preview in opponents list (#84)
  • web: Support light and dark color schemes in themeColor for viewport
  • web: Replace next-pwa with Next.js's built-in PWA support

Fixes

  • web: Fix opponent selection index mismatch due to incorrect array reference (#84)
  • web: Add default settings if not set in local storage during loading
  • web: Fix translation string for waiting opponents to turn cards
  • api: Handle null client state version in GameService by throwing an error with detailed context

Refactors

  • web: Use tabs in settings dialog for better organization (#85)
  • web: Add missing key prop in OpponentItem cards preview iterator
  • api: Rename socketErrorHandlerWrapper to socketErrorWrapper
  • api: Rename isprotectedGame to isPrivateGame in createGame method for clarity

Styles

  • web: Adjust top positioning for GameInfo component to improve layout responsiveness
  • web: Enhance opponents list display
    • Highlight the currently selected opponent
    • Indicate whose turn it is to play (#84)

Chores

  • Update dependencies:
    • web: next-intl, Next.js 15, React 19
    • api: Remove unused dayjs dependency
  • web: Update Node.js to 22.10.0 and pnpm to 9.14.4 in README and CI workflows
  • ci: Update pull request coverage workflow to exclude Weblate branch pattern

CI

  • ci: Update Node.js and pnpm versions in workflows

Full Changelog: v1.35.0...v1.36.0

v1.35.0

21 Nov 17:17
Compare
Choose a tag to compare

What's Changed

Features

  • Add link to the latest release on the home page
  • Add stateVersion in Skyjo to manage users with outdated or corrupt game versions
  • Add owl avatar

Fixes

  • Bug on results page when a player quits at the end of the game
  • Add second Redis update after finishTurn in onReplaceCard and onTurnCard functions in game.service.ts

Improvements

  • Increase socket server ping interval and decrease ping timeout
  • Improve error handling in SeqTransport
  • Add randomization for tie-breaking the first player to start in the Skyjo.ts class
  • Enhanced Zod error handling
  • Redirect user if timeout occurs in the lobby

Refactoring

  • Update socket configuration
  • Change reconnectPlayer error if game or player is not found
  • Allow external connection to Redis container in Docker Compose

Style

  • Fix long chat message overflow for medium+ screen sizes
  • Show the latest message if the mobile chat container is scrollable
  • Correct French translation of chat notification size in settings

Translations

  • Update translations from Hosted Weblate

Chores

  • Refactor API and logging for better performance and reliability

Full Changelog: v1.34.0...v1.35.0