# heval99/heval-morphe-patches architecture

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

- Interactive diagram: https://gitdiagram.com/heval99/heval-morphe-patches
- Repository: https://github.com/heval99/heval-morphe-patches

## Overview

Heval Morphe Patches is a catalog of app-specific patches selected and applied through Morphe Manager. The documented workflow is to add this repository as a patch source, choose an app and desired patches, then patch the app. Its patch definitions span ad and telemetry removal, premium or license changes, prompts, layout, and app-specific behavior; companion Android extensions provide runtime features and controls. The graph groups these broad patch families rather than enumerating every app. Some internal links are limited to relationships visible in the supplied source index or excerpts.

Main entry points: [`patches/src/main/kotlin/app/template/patches`](https://github.com/heval99/heval-morphe-patches/tree/main/patches/src/main/kotlin/app/template/patches) (Patch definitions), [`extensions/hevalcontrols/core/src/main/java/app/template/extension/hevalcontrols/HevalSettings.java`](https://github.com/heval99/heval-morphe-patches/blob/main/extensions/hevalcontrols/core/src/main/java/app/template/extension/hevalcontrols/HevalSettings.java) (Feature settings), [`extensions/hevalcontrols/src/main/java/app/template/extension/hevalcontrols/ui/HevalControlsActivity.java`](https://github.com/heval99/heval-morphe-patches/blob/main/extensions/hevalcontrols/src/main/java/app/template/extension/hevalcontrols/ui/HevalControlsActivity.java) (Controls screen), [`extensions/firefoxfocus/src/main/java/app/template/extension/firefoxfocus/AddonsManager.java`](https://github.com/heval99/heval-morphe-patches/blob/main/extensions/firefoxfocus/src/main/java/app/template/extension/firefoxfocus/AddonsManager.java) (Add-on manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_catalog["Patch Catalog"]
  node_source["Patch source<br/>[README.md]"]
  node_patchdefs["Patch definitions"]
  node_sharedpatch["Shared patch support"]
  node_hevalfeature["Patch feature bridge<br/>[HevalFeature.kt]"]
end

subgraph group_domains["App Patch Families"]
  node_adprivacy["Ads and telemetry"]
  node_premium["Premium and licenses"]
  node_appfeatures["App behavior"]
end

subgraph group_runtime["Runtime Extensions"]
  node_focusaddons["Focus add-ons<br/>[FocusAddons.java]"]
  node_addonmanager["Add-on manager<br/>[AddonsManager.java]"]
  node_geckoview["GeckoView API stubs"]
  node_fotmobfilters["FotMob filters<br/>[CountryFilter.java]"]
  node_countrydata["Country data<br/>[CountryData.java]"]
end

subgraph group_controls["Feature Controls"]
  node_controlsinit["Controls initialization<br/>[InitProvider.java]"]
  node_settings["Feature settings<br/>[HevalSettings.java]"]
  node_registry["Feature registry<br/>[Registry.java]"]
  node_store[("Settings storage<br/>[Store.java]")]
  node_controlsui["Controls screen"]
end

node_user(("Morphe user"))
node_manager["Morphe Manager"]

node_user -->|"chooses patches"| node_manager
node_manager -->|"adds source"| node_source
node_manager -->|"selects and patches"| node_patchdefs
node_patchdefs -.->|"includes"| node_adprivacy
node_patchdefs -.->|"includes"| node_premium
node_patchdefs -.->|"includes"| node_appfeatures
node_focusaddons -->|"opens manager"| node_addonmanager
node_addonmanager -->|"uses API"| node_geckoview
node_controlsinit -->|"initializes"| node_settings
node_settings -->|"reads feature definitions"| node_registry
node_settings -->|"persists choices"| node_store
node_controlsui -->|"reads and updates"| node_settings
node_controlsui -->|"lists features"| node_registry
node_fotmobfilters -->|"reads favourites"| node_countrydata
node_hevalfeature -.->|"supports feature patches"| node_patchdefs

click node_source "https://github.com/heval99/heval-morphe-patches/blob/main/README.md"
click node_patchdefs "https://github.com/heval99/heval-morphe-patches/tree/main/patches/src/main/kotlin/app/template/patches"
click node_adprivacy "https://github.com/heval99/heval-morphe-patches/tree/main/patches/src/main/kotlin/app/template/patches"
click node_premium "https://github.com/heval99/heval-morphe-patches/tree/main/patches/src/main/kotlin/app/template/patches"
click node_appfeatures "https://github.com/heval99/heval-morphe-patches/tree/main/patches/src/main/kotlin/app/template/patches"
click node_sharedpatch "https://github.com/heval99/heval-morphe-patches/tree/main/patches/src/main/kotlin/app/template/patches/shared"
click node_focusaddons "https://github.com/heval99/heval-morphe-patches/blob/main/extensions/firefoxfocus/src/main/java/app/template/extension/firefoxfocus/FocusAddons.java"
click node_addonmanager "https://github.com/heval99/heval-morphe-patches/blob/main/extensions/firefoxfocus/src/main/java/app/template/extension/firefoxfocus/AddonsManager.java"
click node_geckoview "https://github.com/heval99/heval-morphe-patches/tree/main/extensions/firefoxfocus/stub/src/main/java/org/mozilla/geckoview"
click node_controlsinit "https://github.com/heval99/heval-morphe-patches/blob/main/extensions/hevalcontrols/src/main/java/app/template/extension/hevalcontrols/InitProvider.java"
click node_settings "https://github.com/heval99/heval-morphe-patches/blob/main/extensions/hevalcontrols/core/src/main/java/app/template/extension/hevalcontrols/HevalSettings.java"
click node_registry "https://github.com/heval99/heval-morphe-patches/blob/main/extensions/hevalcontrols/core/src/main/java/app/template/extension/hevalcontrols/Registry.java"
click node_store "https://github.com/heval99/heval-morphe-patches/blob/main/extensions/hevalcontrols/core/src/main/java/app/template/extension/hevalcontrols/Store.java"
click node_controlsui "https://github.com/heval99/heval-morphe-patches/blob/main/extensions/hevalcontrols/src/main/java/app/template/extension/hevalcontrols/ui/HevalControlsActivity.java"
click node_fotmobfilters "https://github.com/heval99/heval-morphe-patches/blob/main/extensions/fotmob/src/main/java/app/template/extension/fotmob/CountryFilter.java"
click node_countrydata "https://github.com/heval99/heval-morphe-patches/blob/main/extensions/fotmob/src/main/java/app/template/extension/fotmob/CountryData.java"
click node_hevalfeature "https://github.com/heval99/heval-morphe-patches/blob/main/patches/src/main/kotlin/app/template/patches/shared/hevalcontrols/HevalFeature.kt"

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_source,node_patchdefs,node_sharedpatch,node_hevalfeature,node_user toneBlue
class node_adprivacy,node_premium,node_appfeatures toneAmber
class node_focusaddons,node_addonmanager,node_geckoview,node_fotmobfilters,node_countrydata toneMint
class node_controlsinit,node_settings,node_registry,node_store,node_controlsui toneRose
class node_manager toneIndigo
```

## Components

### Patch Catalog

- [Patch source](https://github.com/heval99/heval-morphe-patches/blob/main/README.md): `README.md`
- [Patch definitions](https://github.com/heval99/heval-morphe-patches/tree/main/patches/src/main/kotlin/app/template/patches): `patches/src/main/kotlin/app/template/patches`
- [Shared patch support](https://github.com/heval99/heval-morphe-patches/tree/main/patches/src/main/kotlin/app/template/patches/shared): `patches/src/main/kotlin/app/template/patches/shared`
- [Patch feature bridge](https://github.com/heval99/heval-morphe-patches/blob/main/patches/src/main/kotlin/app/template/patches/shared/hevalcontrols/HevalFeature.kt): `patches/src/main/kotlin/app/template/patches/shared/hevalcontrols/HevalFeature.kt`

### App Patch Families

- [Ads and telemetry](https://github.com/heval99/heval-morphe-patches/tree/main/patches/src/main/kotlin/app/template/patches): `patches/src/main/kotlin/app/template/patches`
- [Premium and licenses](https://github.com/heval99/heval-morphe-patches/tree/main/patches/src/main/kotlin/app/template/patches): `patches/src/main/kotlin/app/template/patches`
- [App behavior](https://github.com/heval99/heval-morphe-patches/tree/main/patches/src/main/kotlin/app/template/patches): `patches/src/main/kotlin/app/template/patches`

### Runtime Extensions

- [Focus add-ons](https://github.com/heval99/heval-morphe-patches/blob/main/extensions/firefoxfocus/src/main/java/app/template/extension/firefoxfocus/FocusAddons.java): `extensions/firefoxfocus/src/main/java/app/template/extension/firefoxfocus/FocusAddons.java`
- [Add-on manager](https://github.com/heval99/heval-morphe-patches/blob/main/extensions/firefoxfocus/src/main/java/app/template/extension/firefoxfocus/AddonsManager.java): `extensions/firefoxfocus/src/main/java/app/template/extension/firefoxfocus/AddonsManager.java`
- [GeckoView API stubs](https://github.com/heval99/heval-morphe-patches/tree/main/extensions/firefoxfocus/stub/src/main/java/org/mozilla/geckoview): `extensions/firefoxfocus/stub/src/main/java/org/mozilla/geckoview`
- [FotMob filters](https://github.com/heval99/heval-morphe-patches/blob/main/extensions/fotmob/src/main/java/app/template/extension/fotmob/CountryFilter.java): `extensions/fotmob/src/main/java/app/template/extension/fotmob/CountryFilter.java`
- [Country data](https://github.com/heval99/heval-morphe-patches/blob/main/extensions/fotmob/src/main/java/app/template/extension/fotmob/CountryData.java): `extensions/fotmob/src/main/java/app/template/extension/fotmob/CountryData.java`

### Feature Controls

- [Controls initialization](https://github.com/heval99/heval-morphe-patches/blob/main/extensions/hevalcontrols/src/main/java/app/template/extension/hevalcontrols/InitProvider.java): `extensions/hevalcontrols/src/main/java/app/template/extension/hevalcontrols/InitProvider.java`
- [Feature settings](https://github.com/heval99/heval-morphe-patches/blob/main/extensions/hevalcontrols/core/src/main/java/app/template/extension/hevalcontrols/HevalSettings.java): `extensions/hevalcontrols/core/src/main/java/app/template/extension/hevalcontrols/HevalSettings.java`
- [Feature registry](https://github.com/heval99/heval-morphe-patches/blob/main/extensions/hevalcontrols/core/src/main/java/app/template/extension/hevalcontrols/Registry.java): `extensions/hevalcontrols/core/src/main/java/app/template/extension/hevalcontrols/Registry.java`
- [Settings storage](https://github.com/heval99/heval-morphe-patches/blob/main/extensions/hevalcontrols/core/src/main/java/app/template/extension/hevalcontrols/Store.java): `extensions/hevalcontrols/core/src/main/java/app/template/extension/hevalcontrols/Store.java`
- [Controls screen](https://github.com/heval99/heval-morphe-patches/blob/main/extensions/hevalcontrols/src/main/java/app/template/extension/hevalcontrols/ui/HevalControlsActivity.java): `extensions/hevalcontrols/src/main/java/app/template/extension/hevalcontrols/ui/HevalControlsActivity.java`

### Other components

- **Morphe user**
- **Morphe Manager**

## Connections

- Morphe user → Morphe Manager: chooses patches (evidence: `README.md`)
- Morphe Manager → Patch source: adds source (evidence: `README.md`)
- Morphe Manager → Patch definitions: selects and patches (evidence: `README.md`)
- Patch definitions → Ads and telemetry: includes
- Patch definitions → Premium and licenses: includes
- Patch definitions → App behavior: includes
- Focus add-ons → Add-on manager: opens manager (evidence: `extensions/firefoxfocus/src/main/java/app/template/extension/firefoxfocus/AddonsManager.java`)
- Add-on manager → GeckoView API stubs: uses API (evidence: `extensions/firefoxfocus/src/main/java/app/template/extension/firefoxfocus/AddonsManager.java`)
- Controls initialization → Feature settings: initializes (evidence: `extensions/hevalcontrols/src/main/java/app/template/extension/hevalcontrols/InitProvider.java`)
- Feature settings → Feature registry: reads feature definitions (evidence: `extensions/hevalcontrols/core/src/main/java/app/template/extension/hevalcontrols/HevalSettings.java`)
- Feature settings → Settings storage: persists choices (evidence: `extensions/hevalcontrols/core/src/main/java/app/template/extension/hevalcontrols/HevalSettings.java`)
- Controls screen → Feature settings: reads and updates (evidence: `extensions/hevalcontrols/src/main/java/app/template/extension/hevalcontrols/ui/HevalControlsActivity.java`)
- Controls screen → Feature registry: lists features (evidence: `extensions/hevalcontrols/src/main/java/app/template/extension/hevalcontrols/ui/HevalControlsActivity.java`)
- FotMob filters → Country data: reads favourites (evidence: `extensions/fotmob/src/main/java/app/template/extension/fotmob/CountryFilter.java`)
- Patch feature bridge → Patch definitions: supports feature patches (evidence: `patches/src/main/kotlin/app/template/patches/truecaller/misc/t9/FixT9ContactSearchPatch.kt`)
