Migrate HyPrism desktop launcher from Electron to Avalonia 12 - #405
Draft
freakdaniel wants to merge 142 commits into
Draft
freakdaniel wants to merge 142 commits into
freakdaniel wants to merge 142 commits into
Conversation
Hytale accounts with multiple profiles
- Move all source files from root to Sources/HyPrism.Launcher/ - Separate HyPrism.IpcGen and HyPrism.Tests into distinct projects - Update CI workflows for new project structure - Update documentation to reflect Sources/ layout - Update all path references in build scripts - Update FrontendGuide tech stack versions - Add HyPrism.IpcGen as Roslyn-based IPC code generator - Consolidate projects under Sources solution folder in HyPrism.sln
- Add pre-launch validation in LaunchGameAsync to check if instance has game client installed before attempting launch - Create InstanceStatusResponse model with Playable flag and Reason field for instance status queries - Add GetInstanceStatus IPC method (hyprism:instance:status) to expose instance playability to frontend - Define specific error exit codes - Add DetermineExitCodeForError helper method to map error messages to specific exit codes - Auto-generate IPC TypeScript bindings for InstanceStatusResponse interface and instance status method - Replace generic error code 1 with context-aware error codes for better debugging and user feedback
- Remove unused RosettaService - Remove unused ButlerVersion variable and arch conversion for macOS - Fix entire TS errors from emitter - Update TS types
Deleted left overs of electron on the source code
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This Draft PR migrates HyPrism from Electron.NET and React to a native Avalonia 12 desktop application on .NET 10
Electron required a separate frontend, an IPC bridge, duplicated contracts, and additional packaging logic
Avalonia replaces that boundary with direct C# service calls, native desktop integrations, one dependency graph, and headless UI testing
The new structure separates the launcher into three parts:
HyPrism.Corecontains UI-independent launcher logicHyPrism.Desktopcontains the Avalonia application, views, styles, localization, and platform integrationsHyPrism.LocalNodeprovides autonomous local authentication and game servicesType of Change
Changes
Avalonia desktop application
.resxresources for all supported languagesUser-facing functionality
Core architecture
HyPrism.Coreprojectlspciwith a sysfs fallback for sandboxed Linux launches, and virtual/software adapter filteringDRI_PRIME=pci:<id>on Linux and the matching DXGI preference class on Windows, with legacy type-based preferences kept compatibleLocal Node
HyPrism.LocalNodeas a dedicated process for autonomous authenticationh.localhostPackaging and CI
4.0.0Tests
Documentation
Removed legacy components
Remaining parity work
Testing
Local validation results
PAGES_BASE_PATH=/HyPrismChecklist
Documentation checklist
/HyPrismbase pathScreenshots / Recordings