teamsiso/CHANGELOG.md
Zac Gaetano ab47cccd42
Some checks failed
CI / build-and-test (push) Failing after 31s
Release / build-msi (push) Failing after 5s
release: cut v1.0.0 — trim internal docs, polish README/CHANGELOG/MSI metadata
2026-05-17 19:03:33 -04:00

3.6 KiB

Changelog

All notable changes to TeamsISO are documented here. The format follows Keep a Changelog and this project adheres to Semantic Versioning.

1.0.0 — 2026-05-17

First general release. Windows-only, .NET 8 WPF, NDI 6.

Engine

  • Participant discovery over NDI with name cleanup — strips the "MS Teams - " / "(Teams) " prefixes and surfaces the operator-friendly display name.
  • Per-participant ISO outputs with normalized framerate, resolution, aspect mode, and audio routing. Each ISO is an individually-addressable NDI source.
  • NDI Groups support — discovery and sender. One-click "Apply transcoder topology" pins Teams' raw broadcasts to a private teamsiso-input group while TeamsISO re-emits on Public.
  • Self-healing finder — if the NDI runtime stalls (zero discovered sources past a startup grace period, or sources go from present to empty and stay that way), the engine rebuilds the finder automatically.
  • Real-time recording — per-output raw BGRA stream + manifest.json
    • an FFmpeg convert.cmd script for post-production conversion to H.264 MKV. Recording is opt-in globally and per-participant.

UI — "Studio Terminal"

  • Dark and light themes with a runtime swap and a system-follow mode. The Wild Dragon mark, the participants-grid watermark, and every accent brush respond to the active theme.
  • Header: brand mark, theme toggle, settings gear.
  • Transport strip: session timer, participant count, live ISO count, control-surface URL — at-a-glance status.
  • Participants table: 24px state LED, 106px live thumbnail preview, name + caption, 5-bar audio meter, inline-editable output name, CFG button (per-row override editor), ISO enable pill.
  • Settings drawer — slide-over from the right with OUTPUT / NETWORK / APP tabs.
  • Ctrl+K command palette — fuzzy search across Quick / Teams / Presets / Output / Network / App categories.
  • Live preview thumbnails in the participants table; right-click → Open preview… spawns a non-modal floating window suitable for a secondary monitor.

Output name template

  • New default: the speaker's display name ({name}). Per-participant overrides are inline-editable in the table. Empty-name fallback to TEAMSISO_{guid} keeps the NDI sender uniquely identifiable while a participant's display name resolves upstream.
  • Available tokens: {name}, {guid}, {machine}, {timestamp}.

Operator presets

  • Save current per-participant ISO assignments + custom output names to %LOCALAPPDATA%\TeamsISO\presets.json. Optional auto-apply on next launch.

Teams orchestration

  • Launch / stop Teams from the app.
  • Hide Teams' UI windows during a show.
  • Drive in-call controls (mute, camera, share, leave, raise hand) via UIAutomation.

External control surface

  • REST + WebSocket on 127.0.0.1:9755 for Bitfocus Companion / Stream Deck / custom controllers.
  • OSC on UDP 127.0.0.1:9000 for TouchOSC.
  • Self-contained HTML control panel at /ui — open from any phone on the LAN.

Diagnostics & installer

  • Rolling daily Serilog logs under %LOCALAPPDATA%\TeamsISO\logs\.
  • Diagnostic bundle export — zips logs + config + presets for bug reports.
  • Forgejo-backed update check (manual or silent-on-launch, throttled to 24h).
  • WiX MSI installer with proper Add/Remove Programs metadata, Start Menu
    • Desktop shortcuts, and in-place upgrade.