# elyprismlauncher/launcher architecture

> Architecture diagram of the GitHub repository elyprismlauncher/launcher, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/elyprismlauncher/launcher
- Repository: https://github.com/elyprismlauncher/launcher

## Overview

PineconeMC is a desktop Minecraft launcher fork of Prism Launcher, distinguished by Ely.by OAuth login and Ely’s official Authlib patches; Microsoft accounts remain supported. The main user journey is selecting an instance, choosing an account, authenticating, preparing the game and launching it. The repository also contains instance management, metadata and Java handling, mod-platform integrations, resource management, and configurable themes. Edges are limited to relationships visible in excerpts, SOURCE INDEX references, or the README; unsampled subsystem links are omitted or marked unverified.

Main entry points: [`launcher/LaunchController.cpp`](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/LaunchController.cpp) (Launch controller), [`launcher/Application.cpp`](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/Application.cpp) (Application), [`launcher/minecraft/auth/steps/MSAStep.cpp`](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/minecraft/auth/steps/MSAStep.cpp) (Auth steps), [`launcher/launch/LaunchTask.cpp`](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/launch/LaunchTask.cpp) (Launch task)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Launcher application"]
  node_application["Application<br/>[Application.cpp]"]
  node_main_ui["Launcher UI<br/>[MainWindow.cpp]"]
  node_theme["Themes<br/>[ThemeManager.cpp]"]
  node_settings["Settings<br/>[SettingsObject.cpp]"]
end

subgraph group_identity["Accounts and identity"]
  node_account_ui["Account UI"]
  node_accounts["Account models<br/>[AccountList.cpp]"]
  node_auth_flow["Authentication flow<br/>[AuthFlow.cpp]"]
  node_auth_steps["Auth steps<br/>[MSAStep.cpp]"]
end

subgraph group_game["Instances and launch"]
  node_instance_ui["Instance window<br/>[InstanceWindow.h]"]
  node_instances["Instance management<br/>[InstanceList.cpp]"]
  node_launch_controller["Launch controller"]
  node_launch_task["Launch task<br/>[LaunchTask.cpp]"]
  node_launch_steps["Game preparation"]
  node_java["Java management"]
end

subgraph group_content["Game content"]
  node_metadata["Version metadata<br/>[Index.cpp]"]
  node_minecraft_profile["Minecraft profiles<br/>[LaunchProfile.cpp]"]
  node_mods["Mods and resources<br/>[ModFolderModel.cpp]"]
  node_pack_services["Mod platform packs<br/>[ResourceAPI.cpp]"]
end

subgraph group_platform["Platform services"]
  node_network["Network transfers<br/>[NetRequest.cpp]"]
  node_tasks["Task framework<br/>[Task.h]"]
  node_filesystem["Filesystem<br/>[FileSystem.h]"]
  node_progress["Progress dialog<br/>[ProgressDialog.h]"]
end

node_user(("Player"))
node_ely{{"Ely.by"}}
node_microsoft{{"Microsoft identity"}}

node_user -.->|"uses"| node_main_ui
node_application -->|"shows"| node_main_ui
node_application -->|"configures"| node_settings
node_application -->|"owns"| node_theme
node_theme -->|"reads"| node_settings
node_main_ui -.->|"opens"| node_instance_ui
node_instance_ui -->|"uses"| node_launch_controller
node_launch_controller -->|"selects"| node_accounts
node_launch_controller -->|"creates"| node_launch_task
node_launch_controller -->|"updates"| node_instance_ui
node_launch_task -.->|"dispatches"| node_launch_steps
node_launch_steps -.->|"checks"| node_java
node_account_ui -.->|"manages"| node_accounts
node_auth_flow -.->|"dispatches"| node_auth_steps
node_auth_steps -->|"authenticates"| node_microsoft
node_auth_steps -.->|"OAuth login"| node_ely
node_launch_controller -->|"loads"| node_metadata
node_metadata -->|"downloads"| node_network
node_pack_services -.->|"uses"| node_network
node_pack_services -.->|"installs into"| node_instances
node_instances -.->|"stores"| node_filesystem
node_mods -.->|"reads"| node_filesystem
node_tasks -->|"reports progress"| node_progress
node_launch_task -->|"runs as"| node_tasks

click node_application "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/Application.cpp"
click node_main_ui "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/ui/MainWindow.cpp"
click node_theme "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/ui/themes/ThemeManager.cpp"
click node_settings "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/settings/SettingsObject.cpp"
click node_account_ui "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/ui/pages/global/AccountListPage.cpp"
click node_accounts "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/minecraft/auth/AccountList.cpp"
click node_auth_flow "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/minecraft/auth/AuthFlow.cpp"
click node_auth_steps "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/minecraft/auth/steps/MSAStep.cpp"
click node_instance_ui "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/ui/InstanceWindow.h"
click node_instances "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/InstanceList.cpp"
click node_launch_controller "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/LaunchController.cpp"
click node_launch_task "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/launch/LaunchTask.cpp"
click node_launch_steps "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/minecraft/launch/LauncherPartLaunch.cpp"
click node_java "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/java/JavaInstallList.cpp"
click node_metadata "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/meta/Index.cpp"
click node_minecraft_profile "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/minecraft/LaunchProfile.cpp"
click node_mods "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/minecraft/mod/ModFolderModel.cpp"
click node_pack_services "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/modplatform/ResourceAPI.cpp"
click node_network "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/net/NetRequest.cpp"
click node_tasks "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/tasks/Task.h"
click node_filesystem "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/FileSystem.h"
click node_progress "https://github.com/elyprismlauncher/launcher/blob/develop/launcher/ui/dialogs/ProgressDialog.h"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_application,node_main_ui,node_theme,node_settings toneBlue
class node_account_ui,node_accounts,node_auth_flow,node_auth_steps toneAmber
class node_instance_ui,node_instances,node_launch_controller,node_launch_task,node_launch_steps,node_java toneMint
class node_metadata,node_minecraft_profile,node_mods,node_pack_services toneRose
class node_network,node_tasks,node_filesystem,node_progress,node_user,node_ely,node_microsoft toneIndigo
```

## Components

### Launcher application

- [Application](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/Application.cpp): `launcher/Application.cpp`
- [Launcher UI](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/ui/MainWindow.cpp): `launcher/ui/MainWindow.cpp`
- [Themes](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/ui/themes/ThemeManager.cpp): `launcher/ui/themes/ThemeManager.cpp`
- [Settings](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/settings/SettingsObject.cpp): `launcher/settings/SettingsObject.cpp`

### Accounts and identity

- [Account UI](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/ui/pages/global/AccountListPage.cpp): `launcher/ui/pages/global/AccountListPage.cpp`
- [Account models](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/minecraft/auth/AccountList.cpp): `launcher/minecraft/auth/AccountList.cpp`
- [Authentication flow](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/minecraft/auth/AuthFlow.cpp): `launcher/minecraft/auth/AuthFlow.cpp`
- [Auth steps](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/minecraft/auth/steps/MSAStep.cpp): `launcher/minecraft/auth/steps/MSAStep.cpp`

### Instances and launch

- [Instance window](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/ui/InstanceWindow.h): `launcher/ui/InstanceWindow.h`
- [Instance management](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/InstanceList.cpp): `launcher/InstanceList.cpp`
- [Launch controller](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/LaunchController.cpp): `launcher/LaunchController.cpp`
- [Launch task](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/launch/LaunchTask.cpp): `launcher/launch/LaunchTask.cpp`
- [Game preparation](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/minecraft/launch/LauncherPartLaunch.cpp): `launcher/minecraft/launch/LauncherPartLaunch.cpp`
- [Java management](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/java/JavaInstallList.cpp): `launcher/java/JavaInstallList.cpp`

### Game content

- [Version metadata](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/meta/Index.cpp): `launcher/meta/Index.cpp`
- [Minecraft profiles](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/minecraft/LaunchProfile.cpp): `launcher/minecraft/LaunchProfile.cpp`
- [Mods and resources](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/minecraft/mod/ModFolderModel.cpp): `launcher/minecraft/mod/ModFolderModel.cpp`
- [Mod platform packs](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/modplatform/ResourceAPI.cpp): `launcher/modplatform/ResourceAPI.cpp`

### Platform services

- [Network transfers](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/net/NetRequest.cpp): `launcher/net/NetRequest.cpp`
- [Task framework](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/tasks/Task.h): `launcher/tasks/Task.h`
- [Filesystem](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/FileSystem.h): `launcher/FileSystem.h`
- [Progress dialog](https://github.com/elyprismlauncher/launcher/blob/develop/launcher/ui/dialogs/ProgressDialog.h): `launcher/ui/dialogs/ProgressDialog.h`

### Other components

- **Player**
- **Ely.by**
- **Microsoft identity**

## Connections

- Player → Launcher UI: uses
- Application → Launcher UI: shows (evidence: `launcher/Application.cpp`)
- Application → Settings: configures (evidence: `launcher/Application.cpp`)
- Application → Themes: owns
- Themes → Settings: reads (evidence: `launcher/ui/themes/ThemeManager.cpp`)
- Launcher UI → Instance window: opens
- Instance window → Launch controller: uses (evidence: `launcher/ui/InstanceWindow.h`)
- Launch controller → Account models: selects (evidence: `launcher/LaunchController.cpp`)
- Launch controller → Launch task: creates (evidence: `launcher/LaunchController.cpp`)
- Launch controller → Instance window: updates (evidence: `launcher/LaunchController.cpp`)
- Launch task → Game preparation: dispatches
- Game preparation → Java management: checks
- Account UI → Account models: manages
- Authentication flow → Auth steps: dispatches
- Auth steps → Microsoft identity: authenticates
- Auth steps → Ely.by: OAuth login (evidence: `README.md`)
- Launch controller → Version metadata: loads (evidence: `launcher/LaunchController.cpp`)
- Version metadata → Network transfers: downloads (evidence: `launcher/meta/Index.cpp`)
- Mod platform packs → Network transfers: uses
- Mod platform packs → Instance management: installs into
- Instance management → Filesystem: stores
- Mods and resources → Filesystem: reads
- Task framework → Progress dialog: reports progress (evidence: `launcher/ui/dialogs/ProgressDialog.h`)
- Launch task → Task framework: runs as
