# happy-g0ose/goosetrap architecture

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

- Interactive diagram: https://gitdiagram.com/happy-g0ose/goosetrap
- Repository: https://github.com/happy-g0ose/goosetrap

## Overview

Goosetrap is a Windows launcher and Roblox client-configuration manager, focused on performance tuning. The main user workflow is to change engine or optimization settings, translate presets into Fast Flags and Roblox settings, persist configuration, and launch or manage clients. Separate branches cover account selection, active-client monitoring, installation, and integrations. The tree and README establish these capabilities, but most implementation excerpts were not sampled; the graph therefore omits uncertain call wiring. The WPF UI library is shown as an internal presentation layer, not as a separate product.

Main entry points: [`Goosetrap/UI/Elements/Settings/Pages/FastFlagsPage.xaml.cs`](https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/UI/Elements/Settings/Pages/FastFlagsPage.xaml.cs) (Settings interface), [`Goosetrap/FastFlagManager.cs`](https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/FastFlagManager.cs) (Fast Flag manager), [`Goosetrap/LaunchHandler.cs`](https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/LaunchHandler.cs) (Launch handler), [`Goosetrap/UI/Elements/Settings/Pages/ActiveClientsPage.xaml.cs`](https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/UI/Elements/Settings/Pages/ActiveClientsPage.xaml.cs) (Active clients UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Goosetrap UI"]
  node_settings["Settings interface"]
  node_accountsui["Account interface"]
  node_clientui["Active clients UI"]
end

subgraph group_config["Client configuration"]
  node_fastflags["Fast Flag manager<br/>[FastFlagManager.cs]"]
  node_gbs["Engine settings<br/>[GBSEditor.cs]"]
  node_allowlist["Roblox allowlist<br/>[FFlagAllowlist.cs]"]
  node_appsettings["Roblox settings"]
end

subgraph group_launch["Launch and clients"]
  node_installer["Installer<br/>[Installer.cs]"]
  node_launchhandler["Launch handler<br/>[LaunchHandler.cs]"]
  node_launchsettings["Launch settings<br/>[LaunchSettings.cs]"]
  node_watcher["Client watcher<br/>[Watcher.cs]"]
  node_monitor["Activity monitor<br/>[ActivityWatcher.cs]"]
end

subgraph group_services["App services"]
  node_json["JSON persistence<br/>[JsonManager.cs]"]
  node_state[("App state files<br/>[State.cs]")]
  node_cleaner["Client cleaner<br/>[Cleaner.cs]"]
  node_discord["Discord presence"]
end

subgraph group_framework["WPF UI library"]
  node_wpf["WPF controls<br/>[NavigationView.cs]"]
end

node_user(("User"))
node_roblox(("Roblox client"))

node_user -->|"edits settings"| node_settings
node_user -->|"chooses account"| node_accountsui
node_user -->|"views clients"| node_clientui
node_settings -->|"sets flags"| node_fastflags
node_fastflags -->|"checks flags"| node_allowlist
node_settings -->|"edits engine"| node_gbs
node_gbs -->|"sets Roblox values"| node_appsettings
node_fastflags -->|"writes client flags"| node_roblox
node_appsettings -->|"sets client configuration"| node_roblox
node_json -->|"reads and writes"| node_state
node_user -->|"installs app"| node_installer
node_user -->|"starts launch"| node_launchhandler
node_launchhandler -->|"uses launch options"| node_launchsettings
node_launchhandler -->|"starts client"| node_roblox
node_watcher -->|"tracks clients"| node_roblox
node_clientui -->|"shows activity"| node_monitor
node_cleaner -->|"cleans client data"| node_roblox
node_monitor -.->|"updates presence"| node_discord
node_settings -->|"renders with"| node_wpf

click node_settings "https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/UI/Elements/Settings/Pages/FastFlagsPage.xaml.cs"
click node_accountsui "https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/UI/Elements/Settings/Pages/AccountsPage.xaml.cs"
click node_clientui "https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/UI/Elements/Settings/Pages/ActiveClientsPage.xaml.cs"
click node_fastflags "https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/FastFlagManager.cs"
click node_gbs "https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/GBSEditor.cs"
click node_allowlist "https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/RobloxInterfaces/FFlagAllowlist.cs"
click node_appsettings "https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/RobloxInterfaces/ApplicationSettings.cs"
click node_json "https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/JsonManager.cs"
click node_state "https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/Models/Persistable/State.cs"
click node_installer "https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/Installer.cs"
click node_launchhandler "https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/LaunchHandler.cs"
click node_launchsettings "https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/LaunchSettings.cs"
click node_watcher "https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/Watcher.cs"
click node_monitor "https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/Integrations/ActivityWatcher.cs"
click node_cleaner "https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/Integrations/Cleaner.cs"
click node_discord "https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/Integrations/DiscordRichPresence.cs"
click node_wpf "https://github.com/happy-g0ose/goosetrap/blob/main/wpfui/src/Wpf.Ui/Controls/NavigationView.cs"

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_settings,node_accountsui,node_clientui,node_user,node_roblox toneBlue
class node_fastflags,node_gbs,node_allowlist,node_appsettings toneAmber
class node_installer,node_launchhandler,node_launchsettings,node_watcher,node_monitor toneMint
class node_json,node_state,node_cleaner,node_discord toneRose
class node_wpf toneIndigo
```

## Components

### Goosetrap UI

- [Settings interface](https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/UI/Elements/Settings/Pages/FastFlagsPage.xaml.cs): `Goosetrap/UI/Elements/Settings/Pages/FastFlagsPage.xaml.cs`
- [Account interface](https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/UI/Elements/Settings/Pages/AccountsPage.xaml.cs): `Goosetrap/UI/Elements/Settings/Pages/AccountsPage.xaml.cs`
- [Active clients UI](https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/UI/Elements/Settings/Pages/ActiveClientsPage.xaml.cs): `Goosetrap/UI/Elements/Settings/Pages/ActiveClientsPage.xaml.cs`

### Client configuration

- [Fast Flag manager](https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/FastFlagManager.cs): `Goosetrap/FastFlagManager.cs`
- [Engine settings](https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/GBSEditor.cs): `Goosetrap/GBSEditor.cs`
- [Roblox allowlist](https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/RobloxInterfaces/FFlagAllowlist.cs): `Goosetrap/RobloxInterfaces/FFlagAllowlist.cs`
- [Roblox settings](https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/RobloxInterfaces/ApplicationSettings.cs): `Goosetrap/RobloxInterfaces/ApplicationSettings.cs`

### Launch and clients

- [Installer](https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/Installer.cs): `Goosetrap/Installer.cs`
- [Launch handler](https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/LaunchHandler.cs): `Goosetrap/LaunchHandler.cs`
- [Launch settings](https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/LaunchSettings.cs): `Goosetrap/LaunchSettings.cs`
- [Client watcher](https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/Watcher.cs): `Goosetrap/Watcher.cs`
- [Activity monitor](https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/Integrations/ActivityWatcher.cs): `Goosetrap/Integrations/ActivityWatcher.cs`

### App services

- [JSON persistence](https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/JsonManager.cs): `Goosetrap/JsonManager.cs`
- [App state files](https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/Models/Persistable/State.cs): `Goosetrap/Models/Persistable/State.cs`
- [Client cleaner](https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/Integrations/Cleaner.cs): `Goosetrap/Integrations/Cleaner.cs`
- [Discord presence](https://github.com/happy-g0ose/goosetrap/blob/main/Goosetrap/Integrations/DiscordRichPresence.cs): `Goosetrap/Integrations/DiscordRichPresence.cs`

### WPF UI library

- [WPF controls](https://github.com/happy-g0ose/goosetrap/blob/main/wpfui/src/Wpf.Ui/Controls/NavigationView.cs): `wpfui/src/Wpf.Ui/Controls/NavigationView.cs`

### Other components

- **User**
- **Roblox client**

## Connections

- User → Settings interface: edits settings
- User → Account interface: chooses account
- User → Active clients UI: views clients
- Settings interface → Fast Flag manager: sets flags
- Fast Flag manager → Roblox allowlist: checks flags
- Settings interface → Engine settings: edits engine
- Engine settings → Roblox settings: sets Roblox values
- Fast Flag manager → Roblox client: writes client flags
- Roblox settings → Roblox client: sets client configuration
- JSON persistence → App state files: reads and writes
- User → Installer: installs app
- User → Launch handler: starts launch
- Launch handler → Launch settings: uses launch options
- Launch handler → Roblox client: starts client
- Client watcher → Roblox client: tracks clients
- Active clients UI → Activity monitor: shows activity
- Client cleaner → Roblox client: cleans client data
- Activity monitor → Discord presence: updates presence
- Settings interface → WPF controls: renders with
