Amends the tool installation to use game install directory and correctly populate actions. Tools previously used an undocumented/unpopulated/inaccessible global install directory. This has been changed to use the game's install directory. Uninstall scripts are also now executed for tools when the game is uninstalled.
Fixes#414
- Game importing happens on a separate thread to avoid UI blocking
- Server requests per-game are done in parallel to cut down on import times
- Media downloading is done in parallel
- Library import progress shown in title bar
- Enabled WAL mode for SQLite for better performance
- Fix potential issues with deferred imports causing infinite loops or lockups
Tasks are broken down into major and minor tasks. Major tasks are like install game, redistributable, or tool. These are reported as individual tasks in the download queue. Minor tasks are running of a script, downloading saves, extracting/downloading, etc.
- Create ScriptConsoleControl for displaying script output and interactive input
- Create PowerShellConsoleWindow to host the script console
- Wire up ScriptDebugger events to console control for real-time output
- Add debug scripts menu to GameActionBarView (visible when EnableScriptDebugging=true)
- Scripts run via SDK's ScriptClient and stay interactive after completion
- Fix MediaImporter.ExistsAsync to check database record instead of file existence
- Remove Iciclecreek.Avalonia.Terminal dependency, revert Avalonia to 11.2.3
ImportContext wasn't being set on the importers which caused problems during the import process. Fixed that and added a bunch more logging around the place so we can get better tracing into what's happening through the import pipeline
- Removed WindowService.cs which was just a thin wrapper around PhotinoBlazor
- Removed WindowOptions, WindowType, and WindowRef models (unused or part of incomplete window tracking)
- Updated Program.cs to directly use PhotinoBlazorAppBuilder
- Service registration now done through direct extension method calls
- Window configuration uses existing extension methods in Startup/Window.cs
- Simplified initialization flow with clearer code structure
- All functionality preserved, just more transparent and maintainable