Single-project WinExe targeting net48 with WPF. Entry point is `App.xaml.cs` which bootstraps Exceptionless telemetry, parses CLI args via CommandLineParser into a static `Options` object, auto-detects the current version from `ClassicAssist.dll`, and resolves defaults (`Path`, `CurrentVersion`). The UI layer is a thin `MainWindow` bound to `MainViewModel`; all business logic lives in `MainViewModel`: it runs a background `Task` that calls `CheckForUpdate`, which uses Octokit's `GitHubClient` to list releases from `Settings.Default.RepositoryOwner/RepositoryName`, compares tag versions against `CurrentVersion` (or honors `--force`), kills an optional parent process (`--pid`), downloads the first `.zip` asset via `HttpClient`, verifies size, extracts to `%TEMP%\CAUpdate-{version}` using `System.IO.Compression.ZipFile`, then either recursively copies files into `--path` or relaunches itself with `--stage Install --updatepath ...` to perform a two-phase install when the package contains another updater. `Misc/` holds reusable WPF behaviors (`AutoScrollBehaviour`, `CloseBehaviour`) and an `InverseBooleanConverter`; `Properties/` stores multi-culture resources and user settings; `Annotations.cs` provides `[NotifyPropertyChangedInvocator]`. Dependency direction: App → Options + MainWindow → MainViewModel → Octokit/Exceptionless/CommandLineParser/System.Net.Http/System.IO.Compression; no cross-project references inside this scope.