# zyl6932/hypermusiccover architecture

> Architecture diagram of the GitHub repository zyl6932/hypermusiccover, 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/zyl6932/hypermusiccover
- Repository: https://github.com/zyl6932/hypermusiccover

## Overview

HyperMusicCover is an Android companion app and SystemUI module for customizing lock-screen music presentation. The user-facing flow is to configure appearance and features in the app, send supported settings to the module, and have the module affect lock-screen surfaces; the source tree also exposes distinct lyrics, cover-animation, shade, and mini-player areas. MainActivity loads and persists app preferences, while MiniPlayerActivity queries module status and sends mini-player configuration. Source excerpts are partial and the README is empty, so wiring among unsampled runtime subsystems is intentionally not inferred.

Main entry points: [`app/src/main/java/com/os4/musiccover/MiniPlayerActivity.kt`](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/MiniPlayerActivity.kt) (Island settings), [`app/src/main/java/com/os4/musiccover/ui/screen/about/UpdateUi.kt`](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/ui/screen/about/UpdateUi.kt) (Update controller), [`app/src/main/java/com/os4/musiccover/AppSettings.kt`](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/AppSettings.kt) (App preferences), [`app/src/main/java/com/os4/musiccover/CoverActivity.kt`](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/CoverActivity.kt) (Cover controls)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App and settings"]
  node_main["Main navigation<br/>[MainActivity.kt]"]
  node_settings[("App preferences<br/>[AppSettings.kt]")]
  node_theme["Theme settings<br/>[ThemeActivity.kt]"]
  node_mini_config_ui["Island settings"]
end

subgraph group_lock["Lock-screen features"]
  node_module_bridge["Module bridge<br/>[ModuleBridge.kt]"]
  node_module_entry["SystemUI module entry<br/>[Main.java]"]
  node_lock_lyrics["Lock-screen lyrics<br/>[LockLyrics.java]"]
  node_lock_islands["Lock-screen islands<br/>[LockIslands.kt]"]
  node_cover_activity["Cover controls<br/>[CoverActivity.kt]"]
  node_shade["Shade surface<br/>[ShadeActivity.kt]"]
  node_mini_runtime["Mini-player runtime"]
  node_mini_scene["Mini-player scene<br/>[MiniPlayerScene.kt]"]
end

subgraph group_lyrics["Lyrics and media"]
  node_lyrics_sources["Lyrics providers<br/>[OnlineLyrics.java]"]
  node_lyrics_parse["Lyrics parsing<br/>[LyricParse.kt]"]
  node_lyrics_view["Lyrics display<br/>[LyricView.java]"]
end

subgraph group_visuals["Rendering and motion"]
  node_cover_render["Cover rendering"]
  node_cover_motion["Cover transitions"]
  node_video_export["Cover video export"]
end

subgraph group_updates["About and updates"]
  node_about["About and update UI<br/>[AboutPage.kt]"]
  node_update_ui["Update controller<br/>[UpdateUi.kt]"]
  node_update_api["Release checking<br/>[UpdateApi.kt]"]
  node_update_check["Update coordination<br/>[UpdateCheck.kt]"]
  node_installer["APK installation<br/>[UpdateInstaller.kt]"]
end

node_user(("App user"))
node_systemui["Android SystemUI"]
node_release_service["GitHub releases"]

node_user -->|"opens"| node_main
node_main -->|"loads and saves"| node_settings
node_user -->|"opens"| node_theme
node_theme -->|"loads and saves"| node_settings
node_user -->|"configures"| node_mini_config_ui
node_mini_config_ui -->|"loads"| node_settings
node_mini_config_ui -->|"queries and sets"| node_module_bridge
node_module_bridge -->|"exchanges module data"| node_systemui
node_module_entry -->|"hooks into"| node_systemui
node_cover_activity -->|"presents"| node_cover_render
node_cover_render -->|"uses transitions"| node_cover_motion
node_cover_activity -->|"exports animation"| node_video_export
node_lyrics_sources -->|"provides lyrics"| node_lyrics_parse
node_lyrics_view -->|"renders timed text"| node_lyrics_parse
node_about -->|"hosts"| node_update_ui
node_update_ui -->|"coordinates"| node_update_check
node_update_check -->|"checks releases"| node_update_api
node_update_api -.->|"fetches release data"| node_release_service
node_update_ui -->|"installs update"| node_installer
node_mini_runtime -->|"presents"| node_mini_scene

click node_main "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/MainActivity.kt"
click node_settings "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/AppSettings.kt"
click node_theme "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/ThemeActivity.kt"
click node_mini_config_ui "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/MiniPlayerActivity.kt"
click node_module_bridge "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/ModuleBridge.kt"
click node_module_entry "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/Main.java"
click node_lock_lyrics "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/LockLyrics.java"
click node_lock_islands "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/LockIslands.kt"
click node_cover_activity "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/CoverActivity.kt"
click node_cover_motion "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/CoverMorphRoute.java"
click node_video_export "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/CoverVideoEncoder.java"
click node_shade "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/ShadeActivity.kt"
click node_mini_runtime "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/MiniPlayerRuntime.kt"
click node_mini_scene "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/MiniPlayerScene.kt"
click node_lyrics_sources "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/OnlineLyrics.java"
click node_lyrics_parse "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/LyricParse.kt"
click node_lyrics_view "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/LyricView.java"
click node_about "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/ui/screen/about/AboutPage.kt"
click node_update_ui "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/ui/screen/about/UpdateUi.kt"
click node_update_api "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/updater/UpdateApi.kt"
click node_update_check "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/updater/UpdateCheck.kt"
click node_installer "https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/updater/UpdateInstaller.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_main,node_settings,node_theme,node_mini_config_ui,node_user,node_systemui toneBlue
class node_module_bridge,node_module_entry,node_lock_lyrics,node_lock_islands,node_cover_activity,node_shade,node_mini_runtime,node_mini_scene toneAmber
class node_lyrics_sources,node_lyrics_parse,node_lyrics_view toneMint
class node_cover_render,node_cover_motion,node_video_export toneRose
class node_about,node_update_ui,node_update_api,node_update_check,node_installer,node_release_service toneIndigo
```

## Components

### App and settings

- [Main navigation](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/MainActivity.kt): `app/src/main/java/com/os4/musiccover/MainActivity.kt`
- [App preferences](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/AppSettings.kt): `app/src/main/java/com/os4/musiccover/AppSettings.kt`
- [Theme settings](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/ThemeActivity.kt): `app/src/main/java/com/os4/musiccover/ThemeActivity.kt`
- [Island settings](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/MiniPlayerActivity.kt): `app/src/main/java/com/os4/musiccover/MiniPlayerActivity.kt`

### Lock-screen features

- [Module bridge](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/ModuleBridge.kt): `app/src/main/java/com/os4/musiccover/ModuleBridge.kt`
- [SystemUI module entry](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/Main.java): `app/src/main/java/com/os4/musiccover/Main.java`
- [Lock-screen lyrics](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/LockLyrics.java): `app/src/main/java/com/os4/musiccover/LockLyrics.java`
- [Lock-screen islands](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/LockIslands.kt): `app/src/main/java/com/os4/musiccover/LockIslands.kt`
- [Cover controls](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/CoverActivity.kt): `app/src/main/java/com/os4/musiccover/CoverActivity.kt`
- [Shade surface](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/ShadeActivity.kt): `app/src/main/java/com/os4/musiccover/ShadeActivity.kt`
- [Mini-player runtime](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/MiniPlayerRuntime.kt): `app/src/main/java/com/os4/musiccover/MiniPlayerRuntime.kt`
- [Mini-player scene](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/MiniPlayerScene.kt): `app/src/main/java/com/os4/musiccover/MiniPlayerScene.kt`

### Lyrics and media

- [Lyrics providers](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/OnlineLyrics.java): `app/src/main/java/com/os4/musiccover/OnlineLyrics.java`
- [Lyrics parsing](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/LyricParse.kt): `app/src/main/java/com/os4/musiccover/LyricParse.kt`
- [Lyrics display](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/LyricView.java): `app/src/main/java/com/os4/musiccover/LyricView.java`

### Rendering and motion

- **Cover rendering**
- [Cover transitions](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/CoverMorphRoute.java): `app/src/main/java/com/os4/musiccover/CoverMorphRoute.java`
- [Cover video export](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/CoverVideoEncoder.java): `app/src/main/java/com/os4/musiccover/CoverVideoEncoder.java`

### About and updates

- [About and update UI](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/ui/screen/about/AboutPage.kt): `app/src/main/java/com/os4/musiccover/ui/screen/about/AboutPage.kt`
- [Update controller](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/ui/screen/about/UpdateUi.kt): `app/src/main/java/com/os4/musiccover/ui/screen/about/UpdateUi.kt`
- [Release checking](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/updater/UpdateApi.kt): `app/src/main/java/com/os4/musiccover/updater/UpdateApi.kt`
- [Update coordination](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/updater/UpdateCheck.kt): `app/src/main/java/com/os4/musiccover/updater/UpdateCheck.kt`
- [APK installation](https://github.com/zyl6932/hypermusiccover/blob/main/app/src/main/java/com/os4/musiccover/updater/UpdateInstaller.kt): `app/src/main/java/com/os4/musiccover/updater/UpdateInstaller.kt`

### Other components

- **App user**
- **Android SystemUI**
- **GitHub releases**

## Connections

- App user → Main navigation: opens
- Main navigation → App preferences: loads and saves
- App user → Theme settings: opens
- Theme settings → App preferences: loads and saves
- App user → Island settings: configures
- Island settings → App preferences: loads
- Island settings → Module bridge: queries and sets
- Module bridge → Android SystemUI: exchanges module data
- SystemUI module entry → Android SystemUI: hooks into
- Cover controls → Cover rendering: presents
- Cover rendering → Cover transitions: uses transitions
- Cover controls → Cover video export: exports animation
- Lyrics providers → Lyrics parsing: provides lyrics
- Lyrics display → Lyrics parsing: renders timed text
- About and update UI → Update controller: hosts
- Update controller → Update coordination: coordinates
- Update coordination → Release checking: checks releases
- Release checking → GitHub releases: fetches release data
- Update controller → APK installation: installs update
- Mini-player runtime → Mini-player scene: presents
