# leminlimez/cowabungalite architecture

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

- Interactive diagram: https://gitdiagram.com/leminlimez/cowabungalite
- Repository: https://github.com/leminlimez/cowabungalite

## Overview

Cowabunga Lite is a macOS toolbox for customizing jailed iOS devices. Users connect and select a device, configure one or more tweaks in the feature views, then apply them; the documented apply mechanism creates a partial backup/restore containing only changed files. The product also includes icon theming, location simulation, custom operations, status-bar controls, and system-option pages. The graph uses README capabilities and the supplied excerpts; several feature implementations and their precise dispatch paths were not sampled, so uncertain internal links are omitted.

Main entry points: [`Cowabunga Lite/Controllers/MainUtils.swift`](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Controllers/MainUtils.swift) (Apply workflow), [`Cowabunga Lite/Views/Main/ApplyView.swift`](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/Main/ApplyView.swift) (Home and apply), [`Cowabunga Lite/DeviceManagement/DeviceManager.swift`](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/DeviceManagement/DeviceManager.swift) (Device manager), [`Cowabunga Lite/Views/RootView.swift`](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/RootView.swift) (App interface)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App workflow"]
  node_app_ui["App interface<br/>[RootView.swift]"]
  node_home["Home and apply<br/>[ApplyView.swift]"]
  node_prefs["Device state"]
end

subgraph group_customize["Customization"]
  node_theming_ui["Icon themes"]
  node_theming["Theme generation"]
  node_status_ui["Status bar"]
  node_status_api["Status controls<br/>[StatusManager.h]"]
  node_control_ui["Control Center"]
  node_spring_ui["Springboard options"]
  node_internal_ui["Internal options"]
  node_setup_ui["Setup options"]
  node_custom_ui["Custom operations"]
  node_operations["Operation manager"]
  node_location_ui["Location changer<br/>[LocSimView.swift]"]
  node_location["Location manager"]
end

subgraph group_device["Device operations"]
  node_device_manager["Device manager"]
  node_main_utils["Apply workflow<br/>[MainUtils.swift]"]
  node_plist["Plist utilities<br/>[PlistManager.swift]"]
end

subgraph group_integrations["Device integrations"]
  node_device(("iOS device"))
  node_libimobile["libimobiledevice tools"]
  node_locsim["Location utility<br/>[locsimUtils.c]"]
end

node_user(("User"))

node_user -->|"uses"| node_app_ui
node_app_ui -->|"opens"| node_home
node_home -->|"selects device"| node_prefs
node_device_manager -->|"queries device"| node_libimobile
node_libimobile -->|"reads device info"| node_device
node_home -->|"applies tweaks"| node_main_utils
node_main_utils -->|"prepares restore"| node_device_manager
node_device_manager -->|"backs up and restores"| node_device
node_theming_ui -->|"configures themes"| node_theming
node_status_ui -->|"sets status options"| node_status_api
node_custom_ui -->|"manages operations"| node_operations
node_location_ui -->|"sets location"| node_location
node_location -->|"executes"| node_locsim
node_locsim -->|"changes location"| node_device
node_control_ui -->|"enables tweaks"| node_main_utils
node_spring_ui -->|"enables tweaks"| node_main_utils
node_internal_ui -->|"enables tweaks"| node_main_utils
node_setup_ui -->|"enables tweaks"| node_main_utils
node_theming -->|"edits plist data"| node_plist

click node_app_ui "https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/RootView.swift"
click node_home "https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/Main/ApplyView.swift"
click node_prefs "https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/DeviceManagement/DataSingleton.swift"
click node_device_manager "https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/DeviceManagement/DeviceManager.swift"
click node_main_utils "https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Controllers/MainUtils.swift"
click node_theming_ui "https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/Themes/IconThemingMainView.swift"
click node_theming "https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Controllers/IconTheming/ThemingManager.swift"
click node_status_ui "https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/Tools/StatusBarView.swift"
click node_status_api "https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/StatusManager/MainFunctions/StatusManager.h"
click node_control_ui "https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/Tools/ControlCenterView.swift"
click node_spring_ui "https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/Tools/SpringboardOptionsView.swift"
click node_internal_ui "https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/Tools/InternalOptionsView.swift"
click node_setup_ui "https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/Tools/SkipSetupView.swift"
click node_custom_ui "https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/Custom%20Operations/CustomOperationsView.swift"
click node_operations "https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Controllers/CustomOperations/CustomOperationsManager.swift"
click node_location_ui "https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/Special%20Tools/LocSim/LocSimView.swift"
click node_location "https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Controllers/LocSim/LocationManager.swift"
click node_locsim "https://github.com/leminlimez/cowabungalite/blob/main/C/locsimUtils.c"
click node_plist "https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Controllers/PlistManager.swift"

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_app_ui,node_home,node_prefs,node_user toneBlue
class node_theming_ui,node_theming,node_status_ui,node_status_api,node_control_ui,node_spring_ui,node_internal_ui,node_setup_ui,node_custom_ui,node_operations,node_location_ui,node_location toneAmber
class node_device_manager,node_main_utils,node_plist toneMint
class node_device,node_libimobile,node_locsim toneRose
```

## Components

### App workflow

- [App interface](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/RootView.swift): `Cowabunga Lite/Views/RootView.swift`
- [Home and apply](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/Main/ApplyView.swift): `Cowabunga Lite/Views/Main/ApplyView.swift`
- [Device state](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/DeviceManagement/DataSingleton.swift): `Cowabunga Lite/DeviceManagement/DataSingleton.swift`

### Customization

- [Icon themes](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/Themes/IconThemingMainView.swift): `Cowabunga Lite/Views/Themes/IconThemingMainView.swift`
- [Theme generation](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Controllers/IconTheming/ThemingManager.swift): `Cowabunga Lite/Controllers/IconTheming/ThemingManager.swift`
- [Status bar](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/Tools/StatusBarView.swift): `Cowabunga Lite/Views/Tools/StatusBarView.swift`
- [Status controls](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/StatusManager/MainFunctions/StatusManager.h): `Cowabunga Lite/StatusManager/MainFunctions/StatusManager.h`
- [Control Center](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/Tools/ControlCenterView.swift): `Cowabunga Lite/Views/Tools/ControlCenterView.swift`
- [Springboard options](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/Tools/SpringboardOptionsView.swift): `Cowabunga Lite/Views/Tools/SpringboardOptionsView.swift`
- [Internal options](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/Tools/InternalOptionsView.swift): `Cowabunga Lite/Views/Tools/InternalOptionsView.swift`
- [Setup options](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/Tools/SkipSetupView.swift): `Cowabunga Lite/Views/Tools/SkipSetupView.swift`
- [Custom operations](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/Custom%20Operations/CustomOperationsView.swift): `Cowabunga Lite/Views/Custom Operations/CustomOperationsView.swift`
- [Operation manager](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Controllers/CustomOperations/CustomOperationsManager.swift): `Cowabunga Lite/Controllers/CustomOperations/CustomOperationsManager.swift`
- [Location changer](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Views/Special%20Tools/LocSim/LocSimView.swift): `Cowabunga Lite/Views/Special Tools/LocSim/LocSimView.swift`
- [Location manager](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Controllers/LocSim/LocationManager.swift): `Cowabunga Lite/Controllers/LocSim/LocationManager.swift`

### Device operations

- [Device manager](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/DeviceManagement/DeviceManager.swift): `Cowabunga Lite/DeviceManagement/DeviceManager.swift`
- [Apply workflow](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Controllers/MainUtils.swift): `Cowabunga Lite/Controllers/MainUtils.swift`
- [Plist utilities](https://github.com/leminlimez/cowabungalite/blob/main/Cowabunga%20Lite/Controllers/PlistManager.swift): `Cowabunga Lite/Controllers/PlistManager.swift`

### Device integrations

- **iOS device**
- **libimobiledevice tools**
- [Location utility](https://github.com/leminlimez/cowabungalite/blob/main/C/locsimUtils.c): `C/locsimUtils.c`

### Other components

- **User**

## Connections

- User → App interface: uses
- App interface → Home and apply: opens
- Home and apply → Device state: selects device
- Device manager → libimobiledevice tools: queries device
- libimobiledevice tools → iOS device: reads device info
- Home and apply → Apply workflow: applies tweaks
- Apply workflow → Device manager: prepares restore
- Device manager → iOS device: backs up and restores
- Icon themes → Theme generation: configures themes
- Status bar → Status controls: sets status options
- Custom operations → Operation manager: manages operations
- Location changer → Location manager: sets location
- Location manager → Location utility: executes
- Location utility → iOS device: changes location
- Control Center → Apply workflow: enables tweaks
- Springboard options → Apply workflow: enables tweaks
- Internal options → Apply workflow: enables tweaks
- Setup options → Apply workflow: enables tweaks
- Theme generation → Plist utilities: edits plist data
