::::: Server Side :::::
[NEW] Jetty-based support for websocket, with full support for binary and json (legacy) protocols.
[NEW] Support for server-side JavaScript Extensions via the high performance Nashorn JS engine.
[NEW] Added new methods to BaseSFSExtension for conveniently accessing BuddyApi, GameApi and MMOApi classes.
[NEW] Added getProperties() method to Room and User objects in order to access the properties map directly.
[NEW] Added configurable length of activation codes in the Signup Assistant component.

::::: Client Side :::::
[NEW] "Binary" JavaScript client-side API with full support for the SFS2X binary protocol.

======== Previous versions ========

VERSION 2.12.5 (patch)

[FIX] Latency issue when force-disconnecting users trying to login with the same account.

-----------------------------------

VERSION 2.12.4 (patch)

[FIX] Problem with parsing and output of IPv6 addresses in the logs.

-----------------------------------

VERSION 2.12.3 (patch)

[FIX] MMOItems not updated correctly when leaving an MMORoom and re-joining immediately after.
[FIX] MMOItems not updated correctly when moved out of the user's AOI.

-----------------------------------

VERSION 2.12.2 (patch)

[FIX] Issue when creating a new Zone using the AdminTool.

-----------------------------------

VERSION 2.12.1 (patch)

[FIX] Third party JSON library causing issues with numeric types for WebGL clients.

-----------------------------------

VERSION 2.12.0 (full installer)

::::: Server Side :::::
[NEW] JoinRoomInvite request, allows players to invite other clients in a game Room to play, available also from client side.
[NEW] Private User Variables, allow to create User Variables that are local to the player, and not broadcast to other clients. They can be mixed with standard User Variables.
[NEW] SFSObject type TEXT allows to transmit vare large strings > 32 KBytes and up 2 GBytes. See SFSObject.putText/getText() methods.
[NEW] Updated Jetty to version 9.3 for web services (BlueBox, uploads, encryption initialization).
[NEW] Support for IP ranges for black/white lists in IP Filter.
[NEW] Zone maxFailedLogin config property, allows a limited number of wrong login attempts per session before kicking the user out.
[NEW] Updated MaxMind’s IP geolocation database and API to latest version.
[NEW] Zone geoLocationEnabled config property, allows to geolocate users and expose it via User.getCountry() method.
[NEW] Embedded Java 8 Runtime.
[NEW] Options for SignUpAssistant Password Recovery, allows to specify which field to match as the ID for password recovery (e.g. default = user name, can be changed to match email, nickname or any other available field).
[NEW] Signed installer for macOS.
[FIX] CreateMMORoom from Javascript / Unity WebGL client causes server side error.
[FIX] BlueBox / Jetty exception (AsyncContext#dispath s=ASYNCWAIT i=false a=DISPATCH).
[FIX] Jetty upload limits.
[FIX] Manual disconnection after having logged out causes server side NPE.
[FIX] Incorrect handling of custom permissions codes on the client side.

::::: AdminTool :::::
[NEW] AdminTool now supports TLS connection.
[NEW] Upgraded interface and Flash Player compatibility. Will allow for future expansions that are in development. Among other things will allow the AdminTool to be delivered as a native application, when the Flash Player will be phased out from certain browsers.
[NEW] Setting in the "Remote admin" tab of the Server Configurator module makes it possible to encrypt the Admin Tool's connection to the server.
[NEW] A custom name can be assigned to the server in the "General" tab of the Server Configurator module, for easier identification in case of environments running multiple SmartFoxServer instances.
[NEW] Updated Log Analysis application for the Analytics module, now compatible with IPv6 addresses and new IP geolocation API.

-----------------------------------

VERSION 2.11.1 (patch)

[FIX] Fixed potential NPE with offline BuddyVariables cache.

-----------------------------------

VERSION 2.11.0 (patch)

[NEW] Added support for the new Elastic License system.
[NEW] The AdminTool's License Manager module now allows to reload the changes applied to a license without restart. This is useful for both elastic and perpetual licenses after an upgrade.
[FIX] Fixed NumberFormatException in Analytics module's log analysis routine.

-----------------------------------

VERSION 2.10.0 (patch)

::::: Server Side :::::
[NEW] Support for TLS encryption for both TCP and UDP protocol.
[NEW] Added SQL aliasing support to DBManager.
[NEW] LoginAssistant now supports non-default login password which can be used in conjunction with the encrypted protocol (see updated LoginAssistant documentation).
[NEW] AdminTool: CPU monitor now shows both system and process usages.
[NEW] Completed support for Java 8 runtime (SFS2X still only requires Java 7 to run).
[FIX] Synchronization issue during a soft-restart might cause the operation to fail with a address bind error.
[FIX] AdminTool: removed Handshake, Login, Logout requests from Flood Filter, as these requests aren't filterable.
[FIX] SpectatorToPlayer and PlayerToSpectator now work correctly with SFSGame Rooms, auto-updating the gameStarted RoomVariable.
[FIX] Sec-WebSocket-Protocol header no longer causes an exception for websocket clients (sub protocols are not supported, simply ignored).

[NEW] Added flag for DBRoomStorage to specify text-based serialization (default = binary) for Room storage.
[FIX] BlueBox issue that could shorten the connection time under specific circumstances.
[FIX] Additional check during packet decompression to avoid exceedingly large packet taking extra resources.
[FIX] Added proper conversion from Int to Long in SFSObject/Array, using JSON serializer.
[FIX] The RoomStorage storeRoomVariables is now working correctly when set to false.

-----------------------------------

VERSION 2.9.1 (patch)

[FIX] Incorrect Buddy Online state when storing BuddyList after the user has left the server.

-----------------------------------

VERSION 2.9.0 (full installer)

::::: Server Side :::::
[NEW] Improved thread management and scalability via AutoScaling-ThreadPools. The new system renders obsolete the previous manual configuration of System and Extension Controller threads. The AutoScaling-ThreadPool automatically detects higher loads and balances the number of threads and the queue size to handle increasing amounts of workload. The new thread pool are fully configurable in each and every detail although the default settings should cover a large number of scenarios.
[NEW] Jetty 9.x replaces old Jetty 6.x offering improved performance, support for servlet api 3.0 and HTTPS support out of the box.
[NEW] BlueBox v3.0: revamped and improved edition compatible with the latest Jetty 9.
[NEW] HTTP Uploads API with new server side event to manage the uploaded files.
[NEW] Added support for websockets over SSL (WSS).
[NEW] Added support for Scala 2.10.
[NEW] Added VARIABLES_MAP key for server side events such as USER_VARIABLES_UPDATE, ROOM_VARIABLES_UPDATE, BUDDY_VARIABLES_UPDATE. The value from this key is a Map of Variables.
[NEW] SignUp component now allows re-sending of activation email in a later session and activation of the account in a later session.
[NEW] a few updated libraries (SLF4J, HttpClient).

::::: AdminTool :::::
[NEW] Extension Manager module, allows to manage, upload and deploy extensions directly from the Admin GUI.
[NEW] "Thread pools" tab added to the Server Configurator module to configure the new threading system introduced in SmartFoxServer 2X v2.9.
[NEW] Administration permissions can now be assigned in the "Remote admin" tab of the Server Configurator module. Administrators can now be given access to some modules only and server halting/restarting capability can be inhibited.
[NEW] New settings added to the "Web server" tab in Server Configurator module to activate HTTP and HTTPS support separately in the internal web server. Also, HTTP and HTTPS ports can now be configured from within the Admin Tool itself (no need to edit the Jetty configuration manually anymore).
[NEW] New settings added to the "HTML5 WebSockets" tab in Server Configurator module, now supporting SSL encryption activation.
[NEW] The "new version" alert in the Admin Tool's header now indicates the minimum required version in case the update is provided as a patch.
[NEW] New button to reset realtime charts added to Dashboard module.
[NEW] In the Zone Configurator module a new flag allows to explicitly declare that values entered in the Area of Interest and map limits settings of an MMORoom should be treated as floating point numbers.
[NEW] All passwords in Server Configurator module are now displayed as asterisks.
[NEW] Zone Monitor module now shows if the bad words filter is active on the monitored Room.
[NEW] All tables showing configuration parameters in Server Configurator, Zone Configurator and Zone Monitor modules now retain the column width if resized.
[FIX] Negative numbers couldn't be entered as map limits in the "MMO settings" tab of the Zone Configurator module.
[FIX] Fixed problem with new Zones created at runtime causing an index out of bounds error in the Zone Monitor module.

-----------------------------------

VERSION 2.8.5 (patch)

[FIX] Removed exception in MMORoom update cycle that would prevent some users to receive their AOI updates.

-----------------------------------

VERSION 2.8.4 (patch)

[FIX] Issue with private SFSGame invitation for 2 people.
[FIX] Issue when leaving and joining MMORooms which would cause a previous update to get to the client while in the new Room.
[FIX] Reset of the buddy "status" property upon disconnection, otherwise it would show as online when disconnected.

-----------------------------------

VERSION 2.8.2 (patch)

[FIX] Malformed compressed packets can cause socket thread to take up to 100% CPU.

[NEW] MMO API, providing several new classes and functionalities for large and extra large virtual worlds and games.
- MMORoom: uses Area-Of-Interest based updates to minimize traffic in MMORooms with thousands of players interacting together
- MMOItem: non player entity that can be used to represent bonuses, triggers, bullets, etc, in an MMORoom
- MMOItemVariable: dynamic custom properties for MMOItems
[NEW] Room Persistence API, providing a set of simple API to store Room data to any storage system, including out of the box support for File and Database storage.
[NEW] SFSEventType.USER_VARIABLES_UPDATE is now also dispatched at Room level.
[NEW] Added CreateRoomSettings.setRoomProperties(...) allows to add custom properties to the Room that will be available in the Room Extension.
[NEW] Updated Admin Tool.
[FIX] Fixed problems with SFSGame creation. leaveLastJoinedRoom would always result as true.
[FIX] Invitation system might end up inviting the Room creator when a private SFSGame is launched with a certain configuration.
[FIX] User now receives a USER_EXIT when leaving a Room that is being destroyed.
[FIX] Added more SystemRequests to the SystemControllerFilter system: SetUserPosition, AddBuddy, BlockBuddy, RemoveBuddy, SetBuddyVariables, BuddyMessage, InviteUser, InvitationReply, CreateSFSGame, QuickJoinGame.
[FIX] Runtime string format error in PlayerToSpectator request.
[FIX] Issue with Bluebox queue internal limit, now set to 120 messages max.