# dhananjaybhosale/hilight-studio architecture

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

- Interactive diagram: https://gitdiagram.com/dhananjaybhosale/hilight-studio
- Repository: https://github.com/dhananjaybhosale/hilight-studio

## Overview

HiLight Studio is an Android app for controlling Pixel 11 Pro-family eight-LED arrays. The main flow is user configuration in the Live, Style, Apps, and Setup screens, persisted and reconciled by Store, sent through the selected privileged transport, then interpreted by the renderer engine and written to Android’s lights service. Separate rule and suppression stages cover foreground apps, notifications, privacy activity, face-down conditions, schedules, and battery/DND limits. README capabilities are included where the tree identifies their implementation; unsampled wiring is not asserted.

Main entry points: [`app/src/main/java/com/hilight/studio/Store.kt`](https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/Store.kt) (State coordinator), [`core/src/com/hilight/core/Engine.java`](https://github.com/dhananjaybhosale/hilight-studio/blob/main/core/src/com/hilight/core/Engine.java) (State engine), [`app/src/main/java/com/hilight/studio/MainActivity.kt`](https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/MainActivity.kt) (Main activity), [`app/src/main/java/com/hilight/studio/Backends.kt`](https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/Backends.kt) (Transport selection)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["App interface"]
  node_activity["Main activity<br/>[MainActivity.kt]"]
  node_live["Live controls<br/>[LiveScreen.kt]"]
  node_style["Style controls<br/>[AmbientScreen.kt]"]
  node_apps["App rules<br/>[AppRulesScreen.kt]"]
  node_setup["Access setup<br/>[SetupScreen.kt]"]
  node_updates["Update checker"]
end

subgraph group_policy["Rules and policy"]
  node_store["State coordinator<br/>[Store.kt]"]
  node_rules["Rule model<br/>[Model.kt]"]
  node_foreground["Foreground tracking"]
  node_notifications["Notification rules"]
  node_privacy["Privacy activity<br/>[AppOpsWatcher.java]"]
  node_guards["Output guards<br/>[Guards.kt]"]
end

subgraph group_transport["Privileged access"]
  node_bridge["State bridge<br/>[Bridge.kt]"]
  node_backends["Transport selection<br/>[Backends.kt]"]
  node_root["Root transport<br/>[RootBackend.kt]"]
  node_adb["ADB helper<br/>[AdbHelper.java]"]
  node_shizuku["Shizuku service"]
end

subgraph group_runtime["LED runtime"]
  node_engine["State engine<br/>[Engine.java]"]
  node_renderer["Pattern renderer<br/>[Renderer.java]"]
  node_scheduler["Privacy scheduler"]
  node_lights["Lights backend<br/>[LightsBackend.java]"]
end

node_user(("User"))
node_androidlights[("Android lights service")]
node_android(("Android system"))
node_github(("GitHub releases"))

node_user -->|"opens"| node_activity
node_activity -->|"shows"| node_live
node_activity -->|"shows"| node_style
node_activity -->|"shows"| node_apps
node_activity -->|"shows"| node_setup
node_live -->|"updates state"| node_store
node_style -->|"updates style"| node_store
node_apps -->|"edits rules"| node_store
node_setup -->|"configures access"| node_store
node_store -->|"persists"| node_rules
node_store -->|"syncs tracking"| node_foreground
node_android -.->|"app changes"| node_foreground
node_android -.->|"notification events"| node_notifications
node_store -->|"applies limits"| node_guards
node_store -->|"writes state"| node_bridge
node_store -->|"selects transport"| node_backends
node_backends -->|"dispatches"| node_root
node_backends -->|"dispatches"| node_adb
node_backends -->|"binds"| node_shizuku
node_bridge -->|"writes document"| node_adb
node_bridge -->|"sends document"| node_shizuku
node_root -->|"starts"| node_engine
node_adb -->|"starts"| node_engine
node_shizuku -->|"owns"| node_engine
node_engine -->|"renders frames"| node_renderer
node_engine -->|"updates rules"| node_scheduler
node_engine -->|"starts watcher"| node_privacy
node_engine -->|"pushes frames"| node_lights
node_lights -->|"writes LED states"| node_androidlights
node_setup -->|"checks updates"| node_updates
node_updates -.->|"checks releases"| node_github

click node_activity "https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/MainActivity.kt"
click node_live "https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/LiveScreen.kt"
click node_style "https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/AmbientScreen.kt"
click node_apps "https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/AppRulesScreen.kt"
click node_setup "https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/SetupScreen.kt"
click node_store "https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/Store.kt"
click node_rules "https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/Model.kt"
click node_foreground "https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/ForegroundWatcher.kt"
click node_notifications "https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/NotificationTrigger.kt"
click node_privacy "https://github.com/dhananjaybhosale/hilight-studio/blob/main/core/src/com/hilight/core/AppOpsWatcher.java"
click node_guards "https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/Guards.kt"
click node_bridge "https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/Bridge.kt"
click node_backends "https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/Backends.kt"
click node_root "https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/RootBackend.kt"
click node_adb "https://github.com/dhananjaybhosale/hilight-studio/blob/main/core/src/com/hilight/core/AdbHelper.java"
click node_shizuku "https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/HiLightUserService.java"
click node_engine "https://github.com/dhananjaybhosale/hilight-studio/blob/main/core/src/com/hilight/core/Engine.java"
click node_renderer "https://github.com/dhananjaybhosale/hilight-studio/blob/main/core/src/com/hilight/core/Renderer.java"
click node_scheduler "https://github.com/dhananjaybhosale/hilight-studio/blob/main/core/src/com/hilight/core/PrivacyScheduler.java"
click node_lights "https://github.com/dhananjaybhosale/hilight-studio/blob/main/core/src/com/hilight/core/LightsBackend.java"
click node_updates "https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/GitHubUpdateChecker.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_activity,node_live,node_style,node_apps,node_setup,node_updates,node_user toneBlue
class node_store,node_rules,node_foreground,node_notifications,node_privacy,node_guards,node_androidlights toneAmber
class node_bridge,node_backends,node_root,node_adb,node_shizuku toneMint
class node_engine,node_renderer,node_scheduler,node_lights toneRose
class node_android,node_github toneIndigo
```

## Components

### App interface

- [Main activity](https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/MainActivity.kt): `app/src/main/java/com/hilight/studio/MainActivity.kt`
- [Live controls](https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/LiveScreen.kt): `app/src/main/java/com/hilight/studio/LiveScreen.kt`
- [Style controls](https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/AmbientScreen.kt): `app/src/main/java/com/hilight/studio/AmbientScreen.kt`
- [App rules](https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/AppRulesScreen.kt): `app/src/main/java/com/hilight/studio/AppRulesScreen.kt`
- [Access setup](https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/SetupScreen.kt): `app/src/main/java/com/hilight/studio/SetupScreen.kt`
- [Update checker](https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/GitHubUpdateChecker.kt): `app/src/main/java/com/hilight/studio/GitHubUpdateChecker.kt`

### Rules and policy

- [State coordinator](https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/Store.kt): `app/src/main/java/com/hilight/studio/Store.kt`
- [Rule model](https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/Model.kt): `app/src/main/java/com/hilight/studio/Model.kt`
- [Foreground tracking](https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/ForegroundWatcher.kt): `app/src/main/java/com/hilight/studio/ForegroundWatcher.kt`
- [Notification rules](https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/NotificationTrigger.kt): `app/src/main/java/com/hilight/studio/NotificationTrigger.kt`
- [Privacy activity](https://github.com/dhananjaybhosale/hilight-studio/blob/main/core/src/com/hilight/core/AppOpsWatcher.java): `core/src/com/hilight/core/AppOpsWatcher.java`
- [Output guards](https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/Guards.kt): `app/src/main/java/com/hilight/studio/Guards.kt`

### Privileged access

- [State bridge](https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/Bridge.kt): `app/src/main/java/com/hilight/studio/Bridge.kt`
- [Transport selection](https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/Backends.kt): `app/src/main/java/com/hilight/studio/Backends.kt`
- [Root transport](https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/RootBackend.kt): `app/src/main/java/com/hilight/studio/RootBackend.kt`
- [ADB helper](https://github.com/dhananjaybhosale/hilight-studio/blob/main/core/src/com/hilight/core/AdbHelper.java): `core/src/com/hilight/core/AdbHelper.java`
- [Shizuku service](https://github.com/dhananjaybhosale/hilight-studio/blob/main/app/src/main/java/com/hilight/studio/HiLightUserService.java): `app/src/main/java/com/hilight/studio/HiLightUserService.java`

### LED runtime

- [State engine](https://github.com/dhananjaybhosale/hilight-studio/blob/main/core/src/com/hilight/core/Engine.java): `core/src/com/hilight/core/Engine.java`
- [Pattern renderer](https://github.com/dhananjaybhosale/hilight-studio/blob/main/core/src/com/hilight/core/Renderer.java): `core/src/com/hilight/core/Renderer.java`
- [Privacy scheduler](https://github.com/dhananjaybhosale/hilight-studio/blob/main/core/src/com/hilight/core/PrivacyScheduler.java): `core/src/com/hilight/core/PrivacyScheduler.java`
- [Lights backend](https://github.com/dhananjaybhosale/hilight-studio/blob/main/core/src/com/hilight/core/LightsBackend.java): `core/src/com/hilight/core/LightsBackend.java`

### Other components

- **User**
- **Android lights service**
- **Android system**
- **GitHub releases**

## Connections

- User → Main activity: opens
- Main activity → Live controls: shows
- Main activity → Style controls: shows
- Main activity → App rules: shows
- Main activity → Access setup: shows
- Live controls → State coordinator: updates state
- Style controls → State coordinator: updates style
- App rules → State coordinator: edits rules
- Access setup → State coordinator: configures access
- State coordinator → Rule model: persists
- State coordinator → Foreground tracking: syncs tracking
- Android system → Foreground tracking: app changes
- Android system → Notification rules: notification events
- State coordinator → Output guards: applies limits
- State coordinator → State bridge: writes state
- State coordinator → Transport selection: selects transport
- Transport selection → Root transport: dispatches
- Transport selection → ADB helper: dispatches
- Transport selection → Shizuku service: binds
- State bridge → ADB helper: writes document
- State bridge → Shizuku service: sends document
- Root transport → State engine: starts
- ADB helper → State engine: starts
- Shizuku service → State engine: owns
- State engine → Pattern renderer: renders frames
- State engine → Privacy scheduler: updates rules
- State engine → Privacy activity: starts watcher
- State engine → Lights backend: pushes frames
- Lights backend → Android lights service: writes LED states
- Access setup → Update checker: checks updates
- Update checker → GitHub releases: checks releases
