# nunreasonable/ii-windows architecture

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

- Interactive diagram: https://gitdiagram.com/nunreasonable/ii-windows
- Repository: https://github.com/nunreasonable/ii-windows

## Overview

This tree contains the Windows setup application and its core installation engine, plus a standalone Windows SongRec helper. The main installer workflow is user-driven setup through the app, with core operations handling package acquisition and Windows installation state. The README describes setup choices and the broader desktop product, but this tree does not include that desktop shell’s implementation; unsampled app-to-core wiring is therefore marked unverified.

Main entry points: [`installer/core/src/ops.rs`](https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/ops.rs) (Install operations), [`installer/core/src/win.rs`](https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/win.rs) (Windows integration), [`installer/core/src/release.rs`](https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/release.rs) (Release lookup), [`installer/core/src/arch.rs`](https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/arch.rs) (Architecture detection)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Setup interface"]
  node_setup_app["Setup app<br/>[main.rs]"]
  node_setup_ui["Setup UI<br/>[app.js]"]
  node_translations["Translations<br/>[i18n.js]"]
  node_request_coord["Request coordination"]
end

subgraph group_engine["Install engine"]
  node_operations["Install operations<br/>[ops.rs]"]
  node_manifest["Install manifest<br/>[manifest.rs]"]
  node_progress["Progress reporting<br/>[progress.rs]"]
  node_startup["Startup configuration<br/>[startup.rs]"]
end

subgraph group_artifacts["Release and package"]
  node_release["Release lookup<br/>[release.rs]"]
  node_package["Package inspection<br/>[package.rs]"]
  node_appinstaller["App dependencies<br/>[appinstaller.rs]"]
  node_version["Version parsing<br/>[version.rs]"]
  node_architecture["Architecture detection<br/>[arch.rs]"]
end

subgraph group_windows["Windows state"]
  node_filesystem["File operations<br/>[fsops.rs]"]
  node_known_folders["Known folders<br/>[knownfolders.rs]"]
  node_windows_api["Windows integration<br/>[win.rs]"]
  node_paths["Install paths<br/>[paths.rs]"]
  node_restart_manager["Process management<br/>[restartmgr.rs]"]
end

subgraph group_recognition["Song recognition"]
  node_songrec_cli["SongRec CLI<br/>[main.rs]"]
  node_songrec_listen["Audio listening<br/>[listen.rs]"]
  node_songrec_comm["Recognition service<br/>[communication.rs]"]
end

node_user(("Windows user"))

node_user -->|"runs setup"| node_setup_app
node_setup_app -.->|"dispatches operations"| node_operations
node_setup_ui -.->|"coordinates requests"| node_request_coord
node_operations -->|"reads and writes"| node_manifest
node_operations -->|"reports progress"| node_progress
node_operations -->|"fetches releases"| node_release
node_operations -->|"inspects packages"| node_package
node_operations -->|"extracts dependencies"| node_appinstaller
node_operations -->|"uses file operations"| node_filesystem
node_operations -->|"resolves folders"| node_known_folders
node_operations -->|"configures startup"| node_startup
node_operations -->|"changes Windows state"| node_windows_api
node_operations -->|"checks processes"| node_restart_manager
node_operations -->|"uses install paths"| node_paths
node_release -->|"parses versions"| node_version
node_release -->|"selects architecture"| node_architecture
node_package -->|"parses package names"| node_version
node_package -->|"checks compatibility"| node_architecture
node_appinstaller -->|"uses release data"| node_release
node_appinstaller -->|"selects dependencies"| node_architecture
node_manifest -->|"stores architecture"| node_architecture
node_manifest -->|"stores startup choice"| node_startup
node_windows_api -->|"uses install paths"| node_paths
node_windows_api -->|"resolves folders"| node_known_folders
node_windows_api -->|"manages startup"| node_startup
node_songrec_cli -->|"starts listening"| node_songrec_listen
node_songrec_cli -->|"requests recognition"| node_songrec_comm
node_songrec_listen -.->|"submits signatures"| node_songrec_comm

click node_setup_app "https://github.com/nunreasonable/ii-windows/blob/main/installer/app/src/main.rs"
click node_setup_ui "https://github.com/nunreasonable/ii-windows/blob/main/installer/ui/app.js"
click node_translations "https://github.com/nunreasonable/ii-windows/blob/main/installer/ui/i18n.js"
click node_request_coord "https://github.com/nunreasonable/ii-windows/blob/main/installer/ui/request-coordinator.js"
click node_operations "https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/ops.rs"
click node_manifest "https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/manifest.rs"
click node_progress "https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/progress.rs"
click node_startup "https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/startup.rs"
click node_release "https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/release.rs"
click node_package "https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/package.rs"
click node_appinstaller "https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/appinstaller.rs"
click node_version "https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/version.rs"
click node_architecture "https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/arch.rs"
click node_filesystem "https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/fsops.rs"
click node_known_folders "https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/knownfolders.rs"
click node_windows_api "https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/win.rs"
click node_paths "https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/paths.rs"
click node_restart_manager "https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/restartmgr.rs"
click node_songrec_cli "https://github.com/nunreasonable/ii-windows/blob/main/tools/songrec/songrec-win/src/main.rs"
click node_songrec_listen "https://github.com/nunreasonable/ii-windows/blob/main/tools/songrec/songrec-win/src/listen.rs"
click node_songrec_comm "https://github.com/nunreasonable/ii-windows/blob/main/tools/songrec/songrec-win/src/communication.rs"

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_setup_app,node_setup_ui,node_translations,node_request_coord,node_user toneBlue
class node_operations,node_manifest,node_progress,node_startup toneAmber
class node_release,node_package,node_appinstaller,node_version,node_architecture toneMint
class node_filesystem,node_known_folders,node_windows_api,node_paths,node_restart_manager toneRose
class node_songrec_cli,node_songrec_listen,node_songrec_comm toneIndigo
```

## Components

### Setup interface

- [Setup app](https://github.com/nunreasonable/ii-windows/blob/main/installer/app/src/main.rs): `installer/app/src/main.rs`
- [Setup UI](https://github.com/nunreasonable/ii-windows/blob/main/installer/ui/app.js): `installer/ui/app.js`
- [Translations](https://github.com/nunreasonable/ii-windows/blob/main/installer/ui/i18n.js): `installer/ui/i18n.js`
- [Request coordination](https://github.com/nunreasonable/ii-windows/blob/main/installer/ui/request-coordinator.js): `installer/ui/request-coordinator.js`

### Install engine

- [Install operations](https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/ops.rs): `installer/core/src/ops.rs`
- [Install manifest](https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/manifest.rs): `installer/core/src/manifest.rs`
- [Progress reporting](https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/progress.rs): `installer/core/src/progress.rs`
- [Startup configuration](https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/startup.rs): `installer/core/src/startup.rs`

### Release and package

- [Release lookup](https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/release.rs): `installer/core/src/release.rs`
- [Package inspection](https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/package.rs): `installer/core/src/package.rs`
- [App dependencies](https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/appinstaller.rs): `installer/core/src/appinstaller.rs`
- [Version parsing](https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/version.rs): `installer/core/src/version.rs`
- [Architecture detection](https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/arch.rs): `installer/core/src/arch.rs`

### Windows state

- [File operations](https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/fsops.rs): `installer/core/src/fsops.rs`
- [Known folders](https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/knownfolders.rs): `installer/core/src/knownfolders.rs`
- [Windows integration](https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/win.rs): `installer/core/src/win.rs`
- [Install paths](https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/paths.rs): `installer/core/src/paths.rs`
- [Process management](https://github.com/nunreasonable/ii-windows/blob/main/installer/core/src/restartmgr.rs): `installer/core/src/restartmgr.rs`

### Song recognition

- [SongRec CLI](https://github.com/nunreasonable/ii-windows/blob/main/tools/songrec/songrec-win/src/main.rs): `tools/songrec/songrec-win/src/main.rs`
- [Audio listening](https://github.com/nunreasonable/ii-windows/blob/main/tools/songrec/songrec-win/src/listen.rs): `tools/songrec/songrec-win/src/listen.rs`
- [Recognition service](https://github.com/nunreasonable/ii-windows/blob/main/tools/songrec/songrec-win/src/communication.rs): `tools/songrec/songrec-win/src/communication.rs`

### Other components

- **Windows user**

## Connections

- Windows user → Setup app: runs setup
- Setup app → Install operations: dispatches operations
- Setup UI → Request coordination: coordinates requests
- Install operations → Install manifest: reads and writes (evidence: `installer/core/src/ops.rs`)
- Install operations → Progress reporting: reports progress (evidence: `installer/core/src/ops.rs`)
- Install operations → Release lookup: fetches releases (evidence: `installer/core/src/ops.rs`)
- Install operations → Package inspection: inspects packages (evidence: `installer/core/src/ops.rs`)
- Install operations → App dependencies: extracts dependencies (evidence: `installer/core/src/ops.rs`)
- Install operations → File operations: uses file operations (evidence: `installer/core/src/ops.rs`)
- Install operations → Known folders: resolves folders (evidence: `installer/core/src/ops.rs`)
- Install operations → Startup configuration: configures startup (evidence: `installer/core/src/ops.rs`)
- Install operations → Windows integration: changes Windows state (evidence: `installer/core/src/ops.rs`)
- Install operations → Process management: checks processes (evidence: `installer/core/src/ops.rs`)
- Install operations → Install paths: uses install paths (evidence: `installer/core/src/ops.rs`)
- Release lookup → Version parsing: parses versions (evidence: `installer/core/src/release.rs`)
- Release lookup → Architecture detection: selects architecture (evidence: `installer/core/src/release.rs`)
- Package inspection → Version parsing: parses package names (evidence: `installer/core/src/package.rs`)
- Package inspection → Architecture detection: checks compatibility (evidence: `installer/core/src/package.rs`)
- App dependencies → Release lookup: uses release data (evidence: `installer/core/src/appinstaller.rs`)
- App dependencies → Architecture detection: selects dependencies (evidence: `installer/core/src/appinstaller.rs`)
- Install manifest → Architecture detection: stores architecture (evidence: `installer/core/src/manifest.rs`)
- Install manifest → Startup configuration: stores startup choice (evidence: `installer/core/src/manifest.rs`)
- Windows integration → Install paths: uses install paths (evidence: `installer/core/src/win.rs`)
- Windows integration → Known folders: resolves folders (evidence: `installer/core/src/win.rs`)
- Windows integration → Startup configuration: manages startup (evidence: `installer/core/src/win.rs`)
- SongRec CLI → Audio listening: starts listening (evidence: `tools/songrec/songrec-win/src/main.rs`)
- SongRec CLI → Recognition service: requests recognition (evidence: `tools/songrec/songrec-win/src/main.rs`)
- Audio listening → Recognition service: submits signatures (evidence: `tools/songrec/songrec-win/src/listen.rs`)
