Add three new contracts:
* Compression I: RLE Encoding
* Compression II: LZ Decoding
* Compression III: LZ Encoding
as well as associated utility functions
Adds a lot of metadata to be able to easily compare the new save to the
current player.
- Adds lastSaved & identifier to the PlayerObject
- Includes a hash method used to generate an identifier
Adds error & environment information to the recovery page when
available. The info will be displayed when the error boundary catches an error only.
Otherwise, does a few minor tweaks to the UI of the page.
- Add DevPage button to throw an uncaught error to go into recovery
- Add "Delete Save" button in recovery from Game Options (refactored into its own
component)
- Use "Soft Reset" button from Game Options (refactored into its own
component)
- The "Soft Reset" & "Delete Save" buttons now have confirmations
- Add tooltip on "Disable Recovery Mode" button
- Add timestamp to the RECOVERY.json filename
- Add textarea containing markdown with the current error details, if
available
- Error
- Page
- Version
- Environment
- Platform
- UserAgent
- Features
- Source
- Stack Trace
- Change GitHub new issue link to contain default body & title, if possible
- Change links to not take the full width (they were clickable by mistake)
- Fix "Disable Recovery Mode" not resetting the ErrorBoundary's state,
making going back to terminal impossible
static property validationData on classes
PoC/example implemented with HacknetNode:
validates cores is a number in the range between 1 and HacknetNodeConstants.MaxCores
validates level is a number in range between 1 and HacknetNodeConstants.MaxLevel
validates ram is a number in range between 1 and HacknetNodeConstants.MaxRam
validates onlineTimeSeconds in non negative number
validates totalMoneyGenerated is a non negative number