# kowx712/tricky-addon-update-target-list architecture

> Architecture diagram of the GitHub repository kowx712/tricky-addon-update-target-list, 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/kowx712/tricky-addon-update-target-list
- Repository: https://github.com/kowx712/tricky-addon-update-target-list

## Overview

Tricky Addon is an Android module with a KSU WebUI for configuring TrickyStore-compatible target lists and keyboxes. The main workflow is: discover installed apps, choose targets and per-app modes, persist settings for the installed backend, and manage or import keyboxes. The WebUI also exposes help, localization, and update actions; module scripts provide manager entry points and lifecycle hooks. Sampled excerpts establish the WebUI orchestration and several integrations; relationships for unsampled subsystems are limited to documented capabilities.

Main entry points: [`webui/src/main.ts`](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/main.ts) (WebUI entry), [`webui/src/keybox/keybox.ts`](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/keybox/keybox.ts) (Keybox manager), [`webui/src/app_list/app_list.ts`](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/app_list/app_list.ts) (App selection), [`webui/src/config.ts`](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/config.ts) (Config API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["WebUI workflow"]
  node_webui["WebUI entry<br/>[main.ts]"]
  node_app_list["App selection<br/>[app_list.ts]"]
  node_menu["Main menu<br/>[main_menu.ts]"]
  node_dialogs["Dialogs<br/>[dialog.ts]"]
  node_search["App search<br/>[search_bar.ts]"]
  node_locales["Translations<br/>[i18n.ts]"]
  node_update["Update manager<br/>[update.ts]"]
  node_snackbar["User notifications<br/>[snackbar.ts]"]
end

subgraph group_settings["Configuration"]
  node_config["Config API<br/>[config.ts]"]
  node_legacy_config["Legacy config<br/>[config_legacy.ts]"]
  node_omk_config["OhMyKeyMint config"]
  node_tee_config["TEE config"]
  node_cli["Platform CLI<br/>[cli.ts]"]
end

subgraph group_keys["Keybox management"]
  node_file_selector["File selector<br/>[file_selector.ts]"]
  node_keybox["Keybox manager<br/>[keybox.ts]"]
  node_custom_keys["Custom keyboxes<br/>[custom.ts]"]
  node_keybox_repo["Keybox repository<br/>[repo.ts]"]
end

subgraph group_module["Android module"]
  node_module_action["Action entry<br/>[action.sh]"]
  node_module_service["Service hooks<br/>[service.sh]"]
  node_module_postfs["Boot hook<br/>[post-fs-data.sh]"]
  node_module_customize["Install setup<br/>[customize.sh]"]
end

node_user(("Module user"))
node_android_apps[("Android app inventory")]
node_trickystore[("TrickyStore backend")]
node_keybox_service{{"Keybox service"}}
node_github{{"GitHub resources"}}
node_manager{{"Root manager"}}

node_user -->|"opens"| node_webui
node_webui -->|"initializes"| node_app_list
node_webui -->|"initializes"| node_menu
node_webui -->|"initializes"| node_dialogs
node_webui -->|"initializes"| node_search
node_webui -->|"creates"| node_cli
node_webui -->|"creates"| node_keybox
node_webui -->|"creates"| node_keybox_repo
node_webui -->|"uses"| node_update
node_webui -->|"uses"| node_locales
node_app_list -->|"lists apps"| node_android_apps
node_app_list -->|"queries denylist"| node_cli
node_app_list -->|"reads/writes targets"| node_config
node_search -->|"filters cards"| node_app_list
node_webui -->|"selects backend"| node_config
node_config -.->|"falls back"| node_legacy_config
node_config -.->|"selects variant"| node_omk_config
node_config -.->|"selects variant"| node_tee_config
node_cli -->|"runs commands"| node_manager
node_cli -->|"reads module info"| node_trickystore
node_menu -->|"opens dialogs"| node_dialogs
node_dialogs -->|"requests updates"| node_update
node_update -->|"fetches releases"| node_github
node_keybox -->|"uses platform access"| node_cli
node_keybox -->|"selects files"| node_file_selector
node_keybox -->|"sets keybox"| node_trickystore
node_keybox -->|"reports status"| node_snackbar
node_custom_keys -->|"selects files"| node_file_selector
node_custom_keys -->|"manages entries"| node_keybox
node_keybox_repo -->|"sets downloaded keybox"| node_keybox
node_keybox_repo -->|"embeds repository"| node_keybox_service
node_keybox_repo -->|"reports errors"| node_snackbar
node_module_action -->|"opens WebUI"| node_manager
node_module_customize -->|"integrates module"| node_manager
node_module_service -->|"supports runtime"| node_trickystore
node_module_postfs -->|"supports boot"| node_trickystore

click node_webui "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/main.ts"
click node_app_list "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/app_list/app_list.ts"
click node_menu "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/main_menu/main_menu.ts"
click node_dialogs "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/dialog/dialog.ts"
click node_search "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/search_bar/search_bar.ts"
click node_locales "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/i18n.ts"
click node_config "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/config.ts"
click node_legacy_config "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/config_legacy.ts"
click node_omk_config "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/config_ohmykeymint.ts"
click node_tee_config "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/config_teesimulator.ts"
click node_cli "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/cli.ts"
click node_file_selector "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/file_selector/file_selector.ts"
click node_keybox "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/keybox/keybox.ts"
click node_custom_keys "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/keybox/custom.ts"
click node_keybox_repo "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/keybox/repo/repo.ts"
click node_update "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/update.ts"
click node_module_action "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/module/action.sh"
click node_module_service "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/module/service.sh"
click node_module_postfs "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/module/post-fs-data.sh"
click node_module_customize "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/module/customize.sh"
click node_snackbar "https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/snackbar/snackbar.ts"

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_webui,node_app_list,node_menu,node_dialogs,node_search,node_locales,node_update,node_snackbar,node_user toneBlue
class node_config,node_legacy_config,node_omk_config,node_tee_config,node_cli,node_android_apps,node_trickystore toneAmber
class node_file_selector,node_keybox,node_custom_keys,node_keybox_repo toneMint
class node_module_action,node_module_service,node_module_postfs,node_module_customize toneRose
class node_keybox_service,node_github,node_manager toneIndigo
```

## Components

### WebUI workflow

- [WebUI entry](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/main.ts): `webui/src/main.ts`
- [App selection](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/app_list/app_list.ts): `webui/src/app_list/app_list.ts`
- [Main menu](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/main_menu/main_menu.ts): `webui/src/main_menu/main_menu.ts`
- [Dialogs](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/dialog/dialog.ts): `webui/src/dialog/dialog.ts`
- [App search](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/search_bar/search_bar.ts): `webui/src/search_bar/search_bar.ts`
- [Translations](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/i18n.ts): `webui/src/i18n.ts`
- [Update manager](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/update.ts): `webui/src/update.ts`
- [User notifications](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/snackbar/snackbar.ts): `webui/src/snackbar/snackbar.ts`

### Configuration

- [Config API](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/config.ts): `webui/src/config.ts`
- [Legacy config](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/config_legacy.ts): `webui/src/config_legacy.ts`
- [OhMyKeyMint config](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/config_ohmykeymint.ts): `webui/src/config_ohmykeymint.ts`
- [TEE config](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/config_teesimulator.ts): `webui/src/config_teesimulator.ts`
- [Platform CLI](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/cli.ts): `webui/src/cli.ts`

### Keybox management

- [File selector](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/file_selector/file_selector.ts): `webui/src/file_selector/file_selector.ts`
- [Keybox manager](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/keybox/keybox.ts): `webui/src/keybox/keybox.ts`
- [Custom keyboxes](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/keybox/custom.ts): `webui/src/keybox/custom.ts`
- [Keybox repository](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/webui/src/keybox/repo/repo.ts): `webui/src/keybox/repo/repo.ts`

### Android module

- [Action entry](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/module/action.sh): `module/action.sh`
- [Service hooks](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/module/service.sh): `module/service.sh`
- [Boot hook](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/module/post-fs-data.sh): `module/post-fs-data.sh`
- [Install setup](https://github.com/kowx712/tricky-addon-update-target-list/blob/main/module/customize.sh): `module/customize.sh`

### Other components

- **Module user**
- **Android app inventory**
- **TrickyStore backend**
- **Keybox service**
- **GitHub resources**
- **Root manager**

## Connections

- Module user → WebUI entry: opens
- WebUI entry → App selection: initializes
- WebUI entry → Main menu: initializes
- WebUI entry → Dialogs: initializes
- WebUI entry → App search: initializes
- WebUI entry → Platform CLI: creates
- WebUI entry → Keybox manager: creates
- WebUI entry → Keybox repository: creates
- WebUI entry → Update manager: uses
- WebUI entry → Translations: uses
- App selection → Android app inventory: lists apps
- App selection → Platform CLI: queries denylist
- App selection → Config API: reads/writes targets
- App search → App selection: filters cards
- WebUI entry → Config API: selects backend
- Config API → Legacy config: falls back
- Config API → OhMyKeyMint config: selects variant
- Config API → TEE config: selects variant
- Platform CLI → Root manager: runs commands
- Platform CLI → TrickyStore backend: reads module info
- Main menu → Dialogs: opens dialogs
- Dialogs → Update manager: requests updates
- Update manager → GitHub resources: fetches releases
- Keybox manager → Platform CLI: uses platform access
- Keybox manager → File selector: selects files
- Keybox manager → TrickyStore backend: sets keybox
- Keybox manager → User notifications: reports status
- Custom keyboxes → File selector: selects files
- Custom keyboxes → Keybox manager: manages entries
- Keybox repository → Keybox manager: sets downloaded keybox
- Keybox repository → Keybox service: embeds repository
- Keybox repository → User notifications: reports errors
- Action entry → Root manager: opens WebUI
- Install setup → Root manager: integrates module
- Service hooks → TrickyStore backend: supports runtime
- Boot hook → TrickyStore backend: supports boot
