dragon-iso/README.md
ZGaetano b2e22a1186
All checks were successful
CI / build-and-test (push) Successful in 29s
docs: rename TeamsISO -> Dragon-ISO in README and fix links/paths
The project was renamed to Dragon-ISO (matching the CHANGELOG, the
solution, and the namespaces) but the README still said "TeamsISO"
throughout, including:
  - the H1 + prose name
  - the Releases link (pointed at the old zgaetano/teamsiso repo path)
  - every install path and %APPDATA%/%LOCALAPPDATA% config location
  - the build/publish commands (TeamsISO.Windows.slnf, TeamsISO.App, MSI)

These all now match the real repo (WildDragonLLC/dragon-iso), the actual
solution filter (Dragon-ISO.Windows.slnf), and the on-disk app folders
(%APPDATA%\Dragon-ISO). No functional change.
2026-06-13 00:26:17 -04:00

128 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Dragon-ISO
**Per-participant NDI ISO controller for Microsoft Teams.**
Dragon-ISO sits between Microsoft Teams' raw NDI broadcast output and a
live-production environment. It receives each participant's NDI stream,
normalizes framerate / resolution / aspect / audio per a configured target,
and re-emits clean, individually-addressable NDI sources for ingestion by a
switcher — vMix, OBS, Ross, hardware capture.
> **Status:** **v1.0.0** — first general release. Windows only. Requires
> Microsoft Teams (with NDI broadcast enabled) and the NDI 6 runtime.
---
## What it does
- **Discovers participants** as Teams broadcasts each one over NDI. Cleans
the Teams-prefixed source name down to a readable display name.
- **Normalizes feeds** to a consistent framerate, resolution, aspect mode,
and audio routing — so the downstream switcher gets predictable inputs
regardless of what each participant's webcam is doing.
- **Routes per-participant** as separate NDI sources with a configurable
per-row output name. Default is the speaker's display name; override
inline in the participants table.
- **Records each ISO to disk** simultaneously — raw BGRA + `manifest.json`
+ FFmpeg `convert.cmd` — so post-production gets a clean per-guest archive.
- **Embeds Teams orchestration**: launch / stop Teams, hide its UI windows
during a show, drive in-call controls (mute, camera, share, leave,
raise hand) without leaving the operator console.
- **Operator presets** save the current per-participant ISO assignment and
custom output names, applicable on next launch automatically.
- **Live preview thumbnails** in the participants table, plus pop-out
floating preview windows for multi-monitor monitoring.
- **External control surface** — REST + WebSocket on `127.0.0.1:9755` and
OSC on UDP `127.0.0.1:9000` for Bitfocus Companion / Stream Deck /
TouchOSC. Self-contained HTML panel at `/ui` for phone-as-controller.
- **Theme-aware** — dark and light palettes, system-following or pinned.
The Wild Dragon mark and watermark flip to match.
## Install
Grab the latest MSI from the
[Releases page](https://forge.wilddragon.net/WildDragonLLC/dragon-iso/releases),
double-click, and accept the install prompts. Per-machine install under
`C:\Program Files\Wild Dragon\Dragon-ISO`.
**Prerequisites:**
- Windows 10 / 11, 64-bit
- [.NET 8 Desktop Runtime](https://dotnet.microsoft.com/download/dotnet/8.0)
- [NDI 6 Runtime](https://www.ndi.video/tools/) (the installer warns if
missing but does not block — operators can stage the app before NDI is
rolled out)
- Microsoft Teams (NDI broadcast enabled in admin policy)
## Configure
First-run defaults work for most setups. If your downstream switcher needs
a particular framerate / resolution / NDI group routing, open the **gear
icon** in the header to access the settings drawer:
- **Output** — framerate, resolution, aspect mode, audio routing
- **Network** — NDI discovery and output group names
- **App** — recording paths, startup behavior, theme
Per-participant overrides — click the **CFG** column gear on any row to
override framerate / resolution / aspect / audio for just that participant.
## Keyboard shortcuts
| Key | Action |
| --- | --- |
| `F1` | Open help / cheat sheet |
| `Ctrl + K` (or `Ctrl + P`) | Open the command palette |
| `Ctrl + T` | Toggle theme (dark ↔ light) |
| `Ctrl + M` | Drop a timestamped marker into every active recording |
| `Ctrl + Shift + S` | Stop every running ISO (emergency) |
| `Ctrl + R` | Refresh NDI discovery (rebuild finder) |
| `1``9` / `NumPad 1``9` | Toggle the Nth visible participant's ISO |
## File locations
| Path | Contents |
| --- | --- |
| `%APPDATA%\Dragon-ISO\config.json` | Engine settings (framerate, NDI groups, etc.) |
| `%LOCALAPPDATA%\Dragon-ISO\presets.json` | Saved operator presets + auto-apply preference |
| `%LOCALAPPDATA%\Dragon-ISO\logs\` | Rolling daily diagnostic logs |
| `%LOCALAPPDATA%\Dragon-ISO\Notes\` | Per-day show-notes markdown files |
| `%USERPROFILE%\Videos\Dragon-ISO\<date>\` | Default recording output |
| `%APPDATA%\NDI\ndi-config.v1.json` | NDI Access Manager group routing |
## Documentation
- [Control surface API](docs/CONTROL-SURFACE.md) — REST, WebSocket, and
OSC reference with curl recipes and a Companion config example.
- [Real-time recording](docs/REAL-TIME-RECORDING.md) — recorder format,
manifest schema, and the FFmpeg conversion path.
- [Releasing](docs/RELEASING.md) — tag-push workflow and MSI signing.
## Build from source
Requires the .NET 8 SDK on Windows. WPF is the only host.
```powershell
dotnet restore Dragon-ISO.Windows.slnf
dotnet build Dragon-ISO.Windows.slnf -c Release
dotnet test Dragon-ISO.Windows.slnf --filter "Category!=ndi&requires!=ndi"
```
Or use the included helper:
```powershell
pwsh -File .\build-and-test.ps1
```
To produce a fresh MSI:
```powershell
dotnet publish src\Dragon-ISO.App\Dragon-ISO.App.csproj `
-c Release -r win-x64 --self-contained false `
-o publish\Dragon-ISO
dotnet build installer\Dragon-ISO.Installer.wixproj -c Release
# Output: installer\bin\x64\Release\Dragon-ISO-Setup-<version>.msi
```
## License
Proprietary, © Wild Dragon LLC 2026. All rights reserved.