Architecture overview
Hyprism contains three .NET 10 projects and a separate Docusaurus documentation application
Sources/
Hyprism.Core/ game, accounts, persistence, contracts
Hyprism.Desktop/ Avalonia application and platform adapters
Hyprism.LocalNode/ loopback HTTPS service and process controller
Tests/
Hyprism.Core.Tests/
Hyprism.Desktop.Tests/
Hyprism.LocalNode.Tests/
Docs/ bilingual documentation site
Packaging/ platform publishers and installer assets
Project dependencies
Desktop references Core and Local Node. Local Node references Core. Core has no dependency on Avalonia and exposes the contracts used by both hosts
Release packaging produces the Hyprism Launcher apphost and a separate Hyprism.LocalNode apphost from the same publish
| Boundary | Owner | Details |
|---|---|---|
| Domain services and persisted state | Core | Core responsibilities |
| Views, commands, native dialogs, browser links | Desktop | Desktop composition |
| Autonomous authentication and local compatibility API | Local Node | Protocol and lifecycle |
| Installation and game processes | Core with host capabilities | Launch workflow |
| Storage, migrations, and diagnostics | Each owning service | Data and cache |
There is no Electron host, web frontend, IPC bridge, or generated TypeScript API in the launcher. Desktop calls C# interfaces directly
Startup and shutdown
- Desktop configures rendering, launcher version, and the shared HTTP user agent
Bootstrapper.Initializecreates Core services and applies host registrationsAppcreates the window, localizer, native file picker, URI launcher, and view models- Asynchronous initialization prepares optional remote data while the loading screen is visible
- On a new installation without profiles or instances, Desktop reveals the setup wizard after loading. The wizard uses the settings and profile services and records completion after a profile is ready.
- Window shutdown cancels bootstrap work, disposes view models and services, and closes the launcher log.
A Local Node already attached to a game has a separate lifetime and continues until that game exits
Where to add behavior
Put game, account, download, or persistence rules in Core. Put presentation state and operating-system UI in Desktop. Extend Local Node only for its loopback service or companion process lifecycle
Use the contract reference before adding another service, and cover changes with the matching test suite
Source: Bootstrapper, Desktop startup, Local Node host