Skip to main content

Hyprism.Core

Core owns launcher behavior that can operate without a UI toolkit. Interfaces live beside their implementations; host capabilities live under Application/Ports

Subsystems

DirectoryResponsibility
Application/CompositionDependency registration and optional asynchronous bootstrap
Application/ProgressInstance-scoped progress, stage changes, completion, and errors
Application/PortsHost-provided Discord presence and GPU discovery
Accounts/AuthenticationOfficial OAuth, session refresh, token storage, callback-page contract
Accounts/ProfilesIdentity selection, profile lifecycle, ordering, migrations, play time
Accounts/Identity and Accounts/SkinsProfile identity and character data
Game/Versions and Game/SourcesVersion catalogs, official source, mirror discovery and selection
Game/Download and Game/PatchingResumable transfers, differential updates, Butler execution
Game/InstancesInstance registry, paths, import, metadata, deletion, migrations
Game/LaunchRuntime setup, authentication selection, client patching, JVM and GPU options, process tracking
Game/ModsCurseForge API, compatibility, imports, enabled state, updates
Game/AssetsAvatar lookup and backup
InfrastructureJSON storage, application directories, caches, logging, shared HTTP identity
Integrations/HytaleOfficial launcher protocol headers

Orchestration

GameLaunchCoordinator guards installed-instance launches. GameInstallationWorkflow handles the selected branch and numeric version during installation or an explicit update, then calls GameLauncher after preparation. The launch workflow describes their ordering and cancellation boundaries

The repository services raise InstancesChanged and ProfilesChanged after mutations. Consumers subscribe to these events instead of polling disk or assuming their own action was the only writer

Host boundary

Core accepts an AuthUriPresenter callback for interactive OAuth. The host opens the browser and may supply IOAuthCallbackPageRenderer for the loopback callback response

Core resolves profile and instance paths, but Desktop opens their folders. GPU selection consumes IGpuProvider; presence consumes IDiscordPresence; autonomous launch consumes ILocalNodeServiceFactory

News parsing and GitHub metadata belong to Desktop because they support presentation rather than game or account rules

Mod storage and compatibility

ModManager stores files under the target instance's UserData/Mods. Disabling a file adds the .disabled suffix, and enabling it restores the normal filename. Managed metadata connects installed files to CurseForge project and file identifiers

CurseForge file relations are normalized into the instance manifest. Required relations are resolved as a depth-first graph before installation; cycles and unresolved required nodes fail the operation, optional relations are recorded but not installed automatically, and incompatible relations are checked against the current installed set. JAR and ZIP archives are also inspected for a root manifest.json; its plugin identifier, version, and dependency ranges are persisted for validation and removal protection

ModCompatibilityEvaluator reads the installed server version and compares it with the game versions attached to catalog files. The UI disables files classified as incompatible, while an unknown version remains a distinct state

See Core contracts for integration examples and Data and cache for persistence rules

Source: Core source

Edit this page on GitHub