Per-Participant NDI ISO Controller for Microsoft Teams. Receives Teams NDI streams, normalizes framerate/resolution, and re-emits clean ISO outputs for live production switchers (vMix, OBS, Ross). Wild Dragon LLC.
Find a file
Zac Gaetano 1d85396a90 feat(logging): rolling file sink under %LOCALAPPDATA%\\TeamsISO\\Logs
Adds Serilog.Sinks.File to TeamsISO.Engine and a new EngineLogging.CreateDefault() factory that writes to BOTH the existing console sink and a rolling daily file at %LOCALAPPDATA%\\TeamsISO\\Logs\\teamsiso<date>.log. The WPF host (TeamsISO.exe is a WinExe with no console attached at runtime) now uses CreateDefault so support has something to ask for when users file an issue. The Console build keeps using CreateConsole — stdout is the right surface there and shell redirection beats a competing on-disk sink.

Files roll daily, cap at 10 MB before mid-day rollover, and only the most recent 14 are retained. Disk flush interval is 250 ms so a tail -f from another tool sees lines promptly. Path is announced via the first log line on every startup.

Two unit tests gate the wiring: AllLoggers_WriteToFile (verifies both typed and named CreateLogger() reach the file) and LogsAtBelowMinimumLevel_AreSuppressed (regression guard for level filtering). 74/74 unit tests pass (was 72).

Also adds a startup breadcrumb log line in App.OnStartup carrying the build version + PID so we can correlate a user's log file with a specific commit.
2026-05-08 00:47:25 -04:00
.forgejo/workflows ci(forgejo): pin actions/upload-artifact to v3 2026-05-08 00:36:58 -04:00
docs feat(ui): wire DI bootstrap in App.xaml.cs and add Windows solution filter 2026-05-07 15:41:58 +00:00
installer feat(installer): WiX v5 MSI scaffold for Wild Dragon TeamsISO 2026-05-08 00:16:26 -04:00
src feat(logging): rolling file sink under %LOCALAPPDATA%\\TeamsISO\\Logs 2026-05-08 00:47:25 -04:00
.editorconfig chore: scaffold repo conventions and global build props 2026-05-07 15:07:53 +00:00
.gitignore chore: scaffold repo conventions and global build props 2026-05-07 15:07:53 +00:00
coverlet.runsettings ci: enforce 80% line coverage gate on TeamsISO.Engine 2026-05-07 15:16:11 +00:00
Directory.Build.props chore: scaffold repo conventions and global build props 2026-05-07 15:07:53 +00:00
README.md chore: scaffold repo conventions and global build props 2026-05-07 15:07:53 +00:00
TeamsISO.Linux.slnf feat(console): add TeamsISO.Console headless smoke runner 2026-05-07 15:37:44 +00:00
TeamsISO.sln fix(build): use forward-slash paths in TeamsISO.sln so Windows .slnf resolves 2026-05-07 15:14:42 -04:00
TeamsISO.Windows.slnf feat(ui): wire DI bootstrap in App.xaml.cs and add Windows solution filter 2026-05-07 15:41:58 +00:00

TeamsISO

Per-Participant NDI ISO Controller for Microsoft Teams.

TeamsISO sits between Microsoft Teams' raw NDI broadcast output and a live-production environment. It receives each participant's NDI stream, normalizes framerate and resolution per a configured target, and re-emits clean, individually-addressable NDI sources for ingestion into a switcher (vMix, OBS, Ross, hardware capture).

Status

Pre-1.0. See docs/superpowers/specs/ for the active spec and docs/superpowers/plans/ for in-flight implementation plans.

Build

Requires .NET 8 SDK.

dotnet build
dotnet test

License

Proprietary, © Wild Dragon LLC 2026.