Files
octo-updater/ARCHITECTURE.md
T
2026-09-19 12:34:33 -04:00

26 lines
1.5 KiB
Markdown

# Architecture
The updater is split by responsibility rather than by framework or class hierarchy.
- `octo_updater.py` — executable entry point only.
- `ui.py` — Tk presentation and user interaction.
- `config.py` — application paths and atomic configuration persistence.
- `net.py` — HTTPS validation and secure URL opening.
- `torrent.py` — torrent parsing, selection, verification, aria2 synchronization, and update workers.
- `client.py` — WoW client inspection, locale/config patching, tweaks, and client-specific transformations.
- `mods.py` — mod and addon catalogs, release lookup, installation, and removal.
- `platform_ops.py` — operating-system operations such as directory links, folder opening, DPI, Defender, process launching, and display APIs.
- `app_log.py` — the small thread-safe application log channel shared by workers and the UI.
## Dependency rules
`ui.py` may depend on the domain modules. Domain modules must not import `ui.py`.
`platform_ops.py` contains OS-specific process/API behavior and must not depend on Tk.
`net.py` contains generic network policy and must not contain WoW, torrent, mod, or UI policy.
`client.py`, `torrent.py`, and `mods.py` expose ordinary functions/data and do not require the Tk application to be running.
No platform class hierarchy, factories, dependency-injection container, repository layer, or plugin framework is used. New abstractions should only be introduced when a concrete requirement requires them.