🎮 Game

A Lichess client library for s&box that lets a game seek matches, stream events, make moves, and read Lichess data like puzzles, users, teams, and games. It wraps Sandbox.Http with a rate limit controller, NDJSON stream readers, and many POCO models, plus helpers for live game sessions and simple smoke tests.

🔧 Editor

An editor extension that adds a menu item under Editor > LichessNET Port. Selecting it opens a dialog via EditorUtility.DisplayDialog. It is a small helper for LichessNET tooling entry points in the editor.

🧪 Unit Test

Unit test project for the LichessNET Sbox Edition library. It validates PGN and principal variation parsing, client argument checks for cloud evaluation, and gameplay queue/session flow using fake clients and streams. It also initializes Sandbox.TestAppSystem for the test run and smoke tests a simple Scene and GameObject setup.

🐞 Possible Bugs

Code/Entities/Puzzle/PuzzleStorm/StormDay.cs
Accessing Date on a default-constructed StormDay throws NullReferenceException because Id defaults to null and the getter calls Id.Split without a null check.
Code/Entities/Social/RatingDataPoint.cs
Constructor adds 1 to the supplied month then calls new DateTime(year, month + 1, day), so normal 1-based inputs shift the month and month 12 throws ArgumentOutOfRangeException.
Code/Extensions/LongExtensions.cs
Math.Abs(long.MinValue) overflows to a negative value so Math.Log10 returns NaN, exponent becomes 0, and the method formats long.MinValue without a prefix instead of throwing for out-of-range.
Extensions/LongExtensions.cs
For long.MinValue, Math.Abs overflows leading to NaN then exponent 0, so the method returns a no-prefix value with a trailing space instead of a scaled SI string.