# goldensfire/si-hyx architecture

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

- Interactive diagram: https://gitdiagram.com/goldensfire/si-hyx
- Repository: https://github.com/goldensfire/si-hyx

## Overview

SI-HYX is a Windows desktop media toolbox with experimental anime-quiz and Shikimori features. The main workflow is selecting a task in the tabbed application, supplying media or a link, configuring the operation, and receiving a downloaded, converted, edited, or exported file. The graph preserves the README’s major feature branches, including the separate SiQuester package editor and anime-pack generator. Source excerpts are partial, so links between unsampled feature modules and the host are limited to documented product structure rather than detailed internal call chains.

Main entry points: [`main.py`](https://github.com/goldensfire/si-hyx/blob/main/main.py) (Tabbed desktop app), [`siquester/main_window.py`](https://github.com/goldensfire/si-hyx/blob/main/siquester/main_window.py) (SiQuester workspace), [`workers.py`](https://github.com/goldensfire/si-hyx/blob/main/workers.py) (Link downloader), [`edit_tab_workers.py`](https://github.com/goldensfire/si-hyx/blob/main/edit_tab_workers.py) (Edit workers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_host["Application"]
  node_app["Tabbed desktop app<br/>[main.py]"]
  node_settings["Configuration<br/>[config.py]"]
end

subgraph group_media["Media workflows"]
  node_download["Link downloader<br/>[workers.py]"]
  node_process["Media processing<br/>[tabs.py]"]
  node_media_utils["Media utilities<br/>[utils.py]"]
end

subgraph group_editor["Visual editing"]
  node_editor_ui["Video editor UI<br/>[edit_tab.py]"]
  node_editor_workers["Edit workers"]
  node_lama["LaMa inpainting<br/>[lama_inpaint.py]"]
  node_tracker["DyHiT tracking<br/>[dyhit_tracker.py]"]
  node_photo["Photo editor<br/>[photo_tab.py]"]
  node_background["Background removal<br/>[rmbg_bg.py]"]
end

subgraph group_siq["SiQuester"]
  node_siq_ui["SiQuester workspace<br/>[main_window.py]"]
  node_siq_package["SIQ package model<br/>[siq_package.py]"]
  node_siq_result["Question board<br/>[result_page.py]"]
  node_siq_storage[("Workspace persistence<br/>[persistence.py]")]
end

subgraph group_anime["Anime features"]
  node_shiki["Shikimori search<br/>[shikimori_tab.py]"]
  node_shiki_api["Shikimori API<br/>[shikimori_api.py]"]
  node_pack["Anime-pack generator<br/>[animepack.py]"]
  node_pack_api["Pack data APIs<br/>[animepack_api.py]"]
  node_upgrade["Pack upgrade"]
  node_poster_cache[("Poster cache<br/>[poster_cache.py]")]
end

node_user(("User"))
node_yt_dlp["yt-dlp"]
node_external_media["Media sites"]
node_anime_services["Anime data services"]

node_user -->|"selects task"| node_app
node_app -->|"offers download"| node_download
node_app -->|"offers conversion"| node_process
node_app -->|"opens editor"| node_editor_ui
node_app -->|"opens photo tools"| node_photo
node_app -->|"opens workspace"| node_siq_ui
node_app -->|"opens search"| node_shiki
node_app -->|"opens generator"| node_pack
node_download -->|"downloads media"| node_yt_dlp
node_download -->|"fetches from"| node_external_media
node_process -->|"uses utilities"| node_media_utils
node_editor_ui -->|"dispatches edits"| node_editor_workers
node_editor_workers -->|"inpaints frames"| node_lama
node_editor_workers -->|"tracks objects"| node_tracker
node_photo -->|"removes objects"| node_lama
node_photo -->|"removes background"| node_background
node_siq_ui -->|"loads and edits"| node_siq_package
node_siq_ui -->|"displays questions"| node_siq_result
node_siq_ui -->|"persists workspace"| node_siq_storage
node_shiki -->|"searches titles"| node_shiki_api
node_shiki_api -->|"queries"| node_anime_services
node_pack -->|"fetches pack data"| node_pack_api
node_pack_api -->|"queries catalogs"| node_anime_services
node_pack -->|"reuses artwork"| node_poster_cache
node_upgrade -->|"shares artwork cache"| node_poster_cache
node_app -->|"reads settings"| node_settings

click node_app "https://github.com/goldensfire/si-hyx/blob/main/main.py"
click node_settings "https://github.com/goldensfire/si-hyx/blob/main/config.py"
click node_download "https://github.com/goldensfire/si-hyx/blob/main/workers.py"
click node_process "https://github.com/goldensfire/si-hyx/blob/main/tabs.py"
click node_media_utils "https://github.com/goldensfire/si-hyx/blob/main/utils.py"
click node_editor_ui "https://github.com/goldensfire/si-hyx/blob/main/edit_tab.py"
click node_editor_workers "https://github.com/goldensfire/si-hyx/blob/main/edit_tab_workers.py"
click node_lama "https://github.com/goldensfire/si-hyx/blob/main/lama_inpaint.py"
click node_tracker "https://github.com/goldensfire/si-hyx/blob/main/dyhit_tracker.py"
click node_photo "https://github.com/goldensfire/si-hyx/blob/main/photo_tab.py"
click node_background "https://github.com/goldensfire/si-hyx/blob/main/rmbg_bg.py"
click node_siq_ui "https://github.com/goldensfire/si-hyx/blob/main/siquester/main_window.py"
click node_siq_package "https://github.com/goldensfire/si-hyx/blob/main/siquester/siq_package.py"
click node_siq_result "https://github.com/goldensfire/si-hyx/blob/main/siquester/result_page.py"
click node_siq_storage "https://github.com/goldensfire/si-hyx/blob/main/siquester/persistence.py"
click node_shiki "https://github.com/goldensfire/si-hyx/blob/main/shikimori_tab.py"
click node_shiki_api "https://github.com/goldensfire/si-hyx/blob/main/shikimori_api.py"
click node_pack "https://github.com/goldensfire/si-hyx/blob/main/animepack.py"
click node_pack_api "https://github.com/goldensfire/si-hyx/blob/main/animepack_api.py"
click node_upgrade "https://github.com/goldensfire/si-hyx/blob/main/animepack_upgrade.py"
click node_poster_cache "https://github.com/goldensfire/si-hyx/blob/main/poster_cache.py"

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,node_settings,node_user toneBlue
class node_download,node_process,node_media_utils toneAmber
class node_editor_ui,node_editor_workers,node_lama,node_tracker,node_photo,node_background toneMint
class node_siq_ui,node_siq_package,node_siq_result,node_siq_storage toneRose
class node_shiki,node_shiki_api,node_pack,node_pack_api,node_upgrade,node_poster_cache,node_yt_dlp,node_external_media,node_anime_services toneIndigo
```

## Components

### Application

- [Tabbed desktop app](https://github.com/goldensfire/si-hyx/blob/main/main.py): `main.py`
- [Configuration](https://github.com/goldensfire/si-hyx/blob/main/config.py): `config.py`

### Media workflows

- [Link downloader](https://github.com/goldensfire/si-hyx/blob/main/workers.py): `workers.py`
- [Media processing](https://github.com/goldensfire/si-hyx/blob/main/tabs.py): `tabs.py`
- [Media utilities](https://github.com/goldensfire/si-hyx/blob/main/utils.py): `utils.py`

### Visual editing

- [Video editor UI](https://github.com/goldensfire/si-hyx/blob/main/edit_tab.py): `edit_tab.py`
- [Edit workers](https://github.com/goldensfire/si-hyx/blob/main/edit_tab_workers.py): `edit_tab_workers.py`
- [LaMa inpainting](https://github.com/goldensfire/si-hyx/blob/main/lama_inpaint.py): `lama_inpaint.py`
- [DyHiT tracking](https://github.com/goldensfire/si-hyx/blob/main/dyhit_tracker.py): `dyhit_tracker.py`
- [Photo editor](https://github.com/goldensfire/si-hyx/blob/main/photo_tab.py): `photo_tab.py`
- [Background removal](https://github.com/goldensfire/si-hyx/blob/main/rmbg_bg.py): `rmbg_bg.py`

### SiQuester

- [SiQuester workspace](https://github.com/goldensfire/si-hyx/blob/main/siquester/main_window.py): `siquester/main_window.py`
- [SIQ package model](https://github.com/goldensfire/si-hyx/blob/main/siquester/siq_package.py): `siquester/siq_package.py`
- [Question board](https://github.com/goldensfire/si-hyx/blob/main/siquester/result_page.py): `siquester/result_page.py`
- [Workspace persistence](https://github.com/goldensfire/si-hyx/blob/main/siquester/persistence.py): `siquester/persistence.py`

### Anime features

- [Shikimori search](https://github.com/goldensfire/si-hyx/blob/main/shikimori_tab.py): `shikimori_tab.py`
- [Shikimori API](https://github.com/goldensfire/si-hyx/blob/main/shikimori_api.py): `shikimori_api.py`
- [Anime-pack generator](https://github.com/goldensfire/si-hyx/blob/main/animepack.py): `animepack.py`
- [Pack data APIs](https://github.com/goldensfire/si-hyx/blob/main/animepack_api.py): `animepack_api.py`
- [Pack upgrade](https://github.com/goldensfire/si-hyx/blob/main/animepack_upgrade.py): `animepack_upgrade.py`
- [Poster cache](https://github.com/goldensfire/si-hyx/blob/main/poster_cache.py): `poster_cache.py`

### Other components

- **User**
- **yt-dlp**
- **Media sites**
- **Anime data services**

## Connections

- User → Tabbed desktop app: selects task
- Tabbed desktop app → Link downloader: offers download
- Tabbed desktop app → Media processing: offers conversion
- Tabbed desktop app → Video editor UI: opens editor
- Tabbed desktop app → Photo editor: opens photo tools
- Tabbed desktop app → SiQuester workspace: opens workspace
- Tabbed desktop app → Shikimori search: opens search
- Tabbed desktop app → Anime-pack generator: opens generator
- Link downloader → yt-dlp: downloads media
- Link downloader → Media sites: fetches from
- Media processing → Media utilities: uses utilities
- Video editor UI → Edit workers: dispatches edits
- Edit workers → LaMa inpainting: inpaints frames
- Edit workers → DyHiT tracking: tracks objects
- Photo editor → LaMa inpainting: removes objects
- Photo editor → Background removal: removes background
- SiQuester workspace → SIQ package model: loads and edits
- SiQuester workspace → Question board: displays questions
- SiQuester workspace → Workspace persistence: persists workspace
- Shikimori search → Shikimori API: searches titles
- Shikimori API → Anime data services: queries
- Anime-pack generator → Pack data APIs: fetches pack data
- Pack data APIs → Anime data services: queries catalogs
- Anime-pack generator → Poster cache: reuses artwork
- Pack upgrade → Poster cache: shares artwork cache
- Tabbed desktop app → Configuration: reads settings
