Releases: heroiclabs/nakama
v3.19.0
Notable changes
Added
- Add IAP purchase validation support for Facebook Instant Games.
- Add Lua runtime function to clear all localcache data.
- Add JavaScript runtime function to clear all localcache data.
- Add support for per-key TTL in Lua runtime localcache.
- Add support for per-key TTL in JavaScript runtime localcache.
- Add support for optional client IP address passthrough to runtime Satori client.
Changed
- Remove unused config 'matchmaker.batch_pool_size'.
- RPC now allows omitting the
unwrap
parameter for requests with empty payloads. - Upgrade GRPC dependency.
- Writing tournament scores now updates number of scores even if submitted score is not an improvement.
- Move internal queries with variable number of args to a fixed number of args syntax.
- Better handling of
num_score
andmax_num_score
in tournament score updates. - Remove unnecessary
curl
,git
,unzip
,rsync
, andschroot
tools from Docker images. - Build with Go 1.21.4 and use Debian bookworm-slim for base docker images.
Fixed
- Correctly handle empty email field when authenticating via Apple Sign In.
- Fix issue where rank cache may store duplicate ranks for some score inputs.
- Fix issue related to accepting party members.
- Fix HTTP request timeout usage in JavaScript runtime.
NOTE: For developers who use the Go server runtime support. The nakama-common package at v1.30.0 must be used with this release.
env GO111MODULE=on go get "github.com/heroiclabs/nakama-common/[email protected]"
v3.18.0
Notable changes
Added
- Allow HTTP key to be read from an HTTP request's Basic auth header if present.
- Add prefix search for storage keys in console (
key%
). - Runtime functions to build a leaderboardList cursor to start listing from a given rank.
- Improved support for TypeScript/JavaScript runtime profiling.
Changed
- Session cache model switched from whitelist to blacklist for improved usability.
- Use Steam partner API instead of public API for Steam profiles and friends requests.
- Add create_time and update_time to returned storage engine writes acks.
- Add storage index create flag to read only from the index.
- Add caller ID param to storage listing and storage index listing runtime APIs.
- Update Facebook Graph API usage from v11 to v18.
- Add support for refresh token rotation.
- Allow JS runtime storage write operation version inputs to be undefined.
- Build with Go 1.21.3.
Fixed
- Fixed multiple issues found by linter.
- Fix storage index listing results sometimes being returned with incorrect order.
- Fixes calculation of leaderboard and tournament times for rare types of CRON expressions that don't execute at a fixed interval.
- Improved how start and end times are calculated for tournaments occurring in the future.
- Fix users receiving friend request notifications when added by users who have blocked them.
- Fix Go runtime registration of matchmaker custom override hook function.
- Fully remove corresponding matchmaker tickets after custom matchmaker process completes.
- Fix incorrectly documented default value for matchmaker flag.
NOTE: For developers who use the Go server runtime support. The nakama-common package at v1.29.0 must be used with this release.
env GO111MODULE=on go get "github.com/heroiclabs/nakama-common/[email protected]"
v3.17.1
Notable changes
Added
- Add Satori
recompute
optional input parameter to relevant operations.
Changed
- Prefix storage index values with
value.
for query input namespacing purposes.
Fixed
- Ensure graceful log handling during Lua runtime check operation.
- Fix Satori client response body resource handling.
NOTE: For developers who use the Go server runtime support. The nakama-common package at v1.28.1 must be used with this release.
env GO111MODULE=on go get "github.com/heroiclabs/nakama-common/[email protected]"
v3.17.0
Notable changes
Added
- Introduce pagination for console API leaderboard and tournament listing endpoint.
- Introduce pagination for devconsole leaderboard view.
- Add storage object indexing support and related runtime functions.
- Return rank count from leaderboard score listings, if available for the given leaderboard.
- Return rank count from tournament score listings, if available for the given tournament.
Changed
- Better formatting for graphed values in devconsole status view.
- Better handling of large numbers of configured leaderboards and tournaments.
- Improved delivery of non-persistent SendAll notifications to large numbers of users.
- Truncate stats reported to devconsole status view to 2 decimal digits for improved readability.
- Memory usage and population time improvements in leaderboard rank cache.
- Better handling of internal transaction retries.
- Better handling of party membership when interacting with matchmaking.
- Improve leaderboard cache reporting of idempotent operations.
- Build with Go 1.20.6.
Fixed
- Correct cursor usage in group listings using only open/closed group state filter.
- Fix issue delivering persistent SendAll notifications to large numbers of users.
- Remove incorrect category start and category end parameters from runtime leaderboard list functions.
- Graceful handling of idempotent tournament creation operations.
- Correct sorting of batched storage write and delete operations.
- Fix indexing of channel message list responses in Lua runtime.
- Better handling of parameters submitted from the devconsole UI.
- Remap original Google IDs to "next generation player IDs"
- Return ordered owner records in leaderboard/tournament records listings.
NOTE: For developers who use the Go server runtime support. The nakama-common package at v1.28.0 must be used with this release.
env GO111MODULE=on go get "github.com/heroiclabs/nakama-common/[email protected]"
v3.16.0
Notable changes
Added
- Add "tournamentRecordDelete" function to server frameworks.
- Add "insecure" flag to runtime http functions to optionally skip TLS checks.
- Satori API available to Nakama server in all server frameworks.
- New "MatchmakerOverride" hook to provide custom matching behaviour.
Changed
- Improve graceful shutdown of Google IAP receipt processor.
- If In-App Purchase validation contain mismatching user IDs, do not return an error.
- Better handling of matchmaker operations while the interval process is in execution.
- Add user ID param to Go runtime GroupUpdate function.
- Build with Go 1.20.3 and use Debian bullseye-slim for base docker images.
Fixed
- Consistent validation of override operator in runtime leaderboard record writes.
- Correctly filter open/closed groups in the listing API.
- Ensure direct message channel message list is correctly scoped to participants only.
- Make next and previous cursor of leaderboard and tournament records around owner operations consistent with record listings.
- Make next and previous cursor of leaderboard and tournament records haystack operations consistent with record listings.
NOTE: For developers who use the Go server runtime support. The nakama-common package at v1.27.0 must be used with this release.
env GO111MODULE=on go get "github.com/heroiclabs/nakama-common/[email protected]"
v3.15.0
Notable changes
Happy New Year to everyone! 🎉
For the full release notes have a look at our release notes documentation.
Added
- Allow the socket acceptor to read session tokens from request headers.
- Add support for custom response headers set in server configuration.
- Add missing fields to tournament end and reset JavaScript server framework hooks.
- Add support for removing channel messages to all server runtimes.
- Allow Console group UI view to add new members.
- Allow "DELETE" and "HEAD" methods in server framework HTTP request functions.
- Add In-App Purchase notification callback functions to all server runtimes.
- Add "DeleteAccount" client API function.
- Add "DeleteAccount" before and after hook functions to all server runtimes.
Changed
- Use stricter validation of limit param in server framework storage list operations.
- Allow newer subdomain variant in Facebook Limited Login token issuer field.
- Rename "groupsGetRandom" to "groups_get_random" in the Lua server framework for consistency.
- Accept Google IAP receipts with or without Unity wrapper structures.
- Update Nakama logos.
- Use stricter validation of method param in Lua server framework HTTP request function.
- Disable SQL statement cache mode describe by default. This reverts to the same behaviour as before 3.14.0 release.
- Build with Go 1.19.4 release.
Fixed
- Fix response structure in purchase lookups by identifier.
- Ensure corresponding leaderboard rank cache entries are removed when a user is deleted.
- Update scheduler when leaderboards and tournaments are deleted from the Console.
- Fix matchmaker tracking of eligible matches when downsizing for count multiples.
- Handle context cancellation in "httpRequest" calls in the JavaScript server framework.
- Handle context cancellation in "httpRequest" calls in the Lua server framework.
- Fix logic on users who attempt to leave groups they're banned from.
- Fix logic in optional params in JavaScript server framework token generate function.
- Validate group member count so it does not update when failing to add a member.
- Handle Google IAP validation token caching when using credential overrides.
- More graceful handling of no-op authoritative storage delete operations.
- Ensure rank cache is correctly updated when joining tournaments.
- Ensure default parameters for tournament listings are consistent between API and runtimes.
- Fix Console groups view incorrect visual removal of last group member.
- Fix In-App Purchase subscription notification handling.
- Fix handling of party leader transition if previous leader and other members leave concurrently.
- Fix exact enforcement of maximum party size.
NOTE: For developers who use the Go server runtime support. The nakama-common package at v1.26.0 must be used with this release.
env GO111MODULE=on go get "github.com/heroiclabs/nakama-common/[email protected]"
v3.14.0
Notable changes
For the full release notes have a look at our release notes documentation.
Added
- Add new GroupsGetRandom function to the runtimes.
Changed
- More consistent signature and handling between JavaScript runtime Base64 encode functions.
- Improve group list cursor handling for messages with close timestamps.
- Improve handling of database connections going through proxies.
- Improve extraction of purchases and subscriptions from Apple receipts.
- Improve signature of JavaScript runtime Base64 decode functions.
- Improve signature of JavaScript runtime Base16 encode and decode functions.
- Token and credentials as inputs on unlink operations are now optional.
- Improve runtime IAP operation errors to include provider payload in error message.
- Build with Go 1.19.2 release.
Fixed
- Observe the error if returned in storage list errors in JavaScript runtime.
- More exact usage of limit parameter in leaderboard record listings.
- Include subscriptions in all data deletion from the developer console.
- Fix the return format of JavaScript runtime account export function.
- Add user ID to JS runtime wallet operations returned results.
- Fix a bug which would prevent subscriptions to be stored when validating with persist set to true.
- If server shutdown is started before the rank cache is populated observe the context cancellation.
NOTE: For developers who use the Go server runtime support. The nakama-common package at v1.25.0 must be used with this release.
env GO111MODULE=on go get "github.com/heroiclabs/nakama-common/[email protected]"
v3.13.1
Notable changes
For the full release notes have a look at our release notes documentation.
Fixed
- Push new tag for fix to Docker image releases.
Added
- Add subscription validation APIs and runtime functions for Google and Apple.
- New Chat Messages view in the Nakama Console.
- New Chat Messages listing and delete endpoints in the Nakama Console API.
- Add extended filtering options to Nakama Console Matches view.
- Add additional filter handling to Nakama Console Accounts view.
- Add "NotificationsDelete" function to all runtimes.
Changed
- Improve runtime handling of non-persisted purchases and subscriptions.
- Improve validation of count multiple matchmaker parameter.
- Use stricter validation of user email inputs in the Nakama Console.
- Add next and previous cursor to results of leaderboard and tournament records around owner client operations.
- Add next and previous cursor to results of leaderboard and tournament records haystack runtime operations.
- Build with Go 1.19.0 release.
- Improve signature of JavaScript runtime HMAC SHA256 hash function.
- Improve signature of JavaScript runtime Base64 encode functions.
- Improve handling of JavaScript runtime context cancellation.
- Allow runtime group updates to increase max count beyond 100.
NOTE: For developers who use the Go server runtime support. The nakama-common package at v1.24.0 must be used with this release.
env GO111MODULE=on go get "github.com/heroiclabs/nakama-common/[email protected]"
v3.12.0
Notable changes
For the full release notes have a look at our release notes documentation.
Added
- Add "FriendsBlock" function to all runtimes.
- Add "ChannelMessagesList" function to all runtimes.
Changed
- Ensure storage write ops return acks in the same order as inputs.
- Update console path for delete all data operation.
- Check HTTP key before Authorization header in RPC function invocations.
- Expose error message from Apple authentication JWT verification failures.
- Improve user online status lookups.
- Build with Go 1.18.2 release.
- Update naming of delete notifications before/after hook registration functions.
- Improve clarity of Nakama Console status view graph headers.
- Improve log messages from failed social provider requests.
- Improve concurrency with Lua runtime function registrations.
- Ensure authoritative match loggers correctly include only their own match identifier.
- Improve handling of large tournament max size values.
- Improve handling of channel removal on group leave/kick/ban.
- Small UI adjustments to the group membership view in the Nakama Console.
Fixed
- Fix data returned by "StreamUserList" in JavaScript runtime.
- Allow passing lists of presences as match init parameters to Go runtime matches.
- Fix Nakama Console object counts when database statistics are not available.
- Must generate username field in the token generator if not specified when called by the server runtimes.
- Improve JavaScript runtime authoritative match filtered broadcasts to large sets of users.
- Align optional parameters in JavaScript runtime bindings.
- Fix JavaScript registered match handlers not being available within the "InitModule" function.
- Use unique notification ID handling for persistent notifications sent to all users.
- Ensure concurrent leaderboard creation requests are handled idempotently.
- Fix regression with matchmaker optimization used when only two opponents are matched.
NOTE: For developers who use the Go server runtime support. The nakama-common package at v1.23.0 must be used with this release.
env GO111MODULE=on go get "github.com/heroiclabs/nakama-common/[email protected]"
v3.11.0
Notable changes
Added
- Add "GroupUsersBan" function to all runtimes.
- Add "LeaderboardRecordsHaystack" to all runtimes.
- Add Groups page and API endpoints to the developer console.
- Add "NotificationSendAll" function to the runtimes, for sending a notification to all users.
- Log a warning when client IP address cannot be resolved.
- Add matchmaker option to enforce a multiple of resulting matched count.
- Add tagged Prometheus stats containing RPC function identifiers.
Changed
- Improve Stackdriver log format timestamp and message field formats.
- Use crypto random to seed global random instance if possible.
- Allow migrate subcommand to use database names that contain dashes.
- Add senderID param to "channelIdBuild" function.
- Improve leaderboard rank cache population at startup.
- JavaScript global variables are made immutable by default after the "InitModule" function is invoked.
- Return system user UUID string in "StorageWrite" acks for all runtimes.
- Realtime after hooks now include both the outgoing and incoming payload.
- Realtime after hooks do not run when the operation fails.
- Build with Go 1.18.0 release.
Fixed
- Fix the registered function name for "nk.channelIdBuild" in the JavaScript runtime.
- Better input validation for Steam link operations.
- Fix incorrect link device behaviour in JavaScript runtime.
- Fix JavaScript runtime multi-update execution consistency when part of the operation fails.
- Fix handling of wallet ledger lookups with no limit during account exports.
- Ensure maximum count is accounted for in matchmaker mutual match checks.
- Ensure the matchmaker always correctly prefers matches closer to the maximum count.
NOTE: For developers who use the Go server runtime support. The nakama-common package at v1.22.0 must be used with this release.
env GO111MODULE=on go get "github.com/heroiclabs/nakama-common/[email protected]"