This refactor splits the import and export functionality out of the ImportContext and adds an ExportContext. This also introduced separate importer and exporter implementations.
Additionally, adding archive, save, scripts, and server files to the final export archive has been implemented at the exporter implementation for each instead of handling it in the context. This should be a good pattern if other files need to be added down the road.
Had to remove the responsibility of providing the current version of the application from UpdateService. A new IVersionProvider can be used to get the version. This also allows for this to be mocked in tests.
Client has been renamed to launcher, and thus namespaces and artifact names had to change. The server project has also had some artifacts renamed in order to create a more clear separation of builds. This will break auto-updates before v0.9.0.
PowerShell scripts now execute correctly with the client. The built in PowerShell API's serializer will always return null on .NET 8 for some reason. The serializer/deserializer was switched to YAML, mostly due to convenience of already having a package for it.
Added a new settings for enabling script debugging mode. This ensures that when a script is executed, the PowerShell terminal window is not closed. This allows power users to get the same environment that the script executes in. It also allows for some scroll back to see what potentially went wrong in their script.
Photino brings some benefits:
- The initial memory usage seems to be lower than MAUI
- Build times are reduced
- Potential support for Linux
- The Photino.Blazor.CustomWindow package allows us to have a custom window frame
The project has been converted to use Photino. If it needs to be moved back at some point, it probably wouldn't be very difficult. The window chrome in this verison has been heavily customized for stylistic purposes.
Implemented a basic way to queue games using DownloadService. Games will download and extract without blocking UI, but more needs to be done to reflect the game in UI and database.