# Changelog All notable changes to Dragon-ISO are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [1.2.0-beta.1] — 2026-07-06 Beta pre-release for the framerate and reliability work since 1.1.0. ### Engine - **Exact rational framerate end-to-end** — the configured target framerate now flows from settings to every NDI sender as an exact rational (e.g. 59.94 = 60000/1001), and each outgoing video frame is stamped with it. Previously every output advertised 59.94 regardless of configuration; advertising the wrong rational causes drift and A/V desync downstream. - **Audio FourCC fix** — corrected the PCMs16 FourCC constant; audio FourCCs are now pinned by tests to their ASCII packing. - **Finder rebuild hardening** — a failed NDI finder rebuild no longer leaves a disposed finder behind (the self-heal path can retry cleanly). - **Scaler zero-dimension guard** — a source frame with a zero dimension is dropped instead of crashing the pipeline. ### Installer - **MSI ProductVersion now tracks the build version** — it was hardcoded to 1.0.0.0, so in-place upgrades (MajorUpgrade) never saw a newer version. Upgrading from an earlier install may require a manual uninstall once. - **CAB embedded in the MSI** — the installer is a single self-contained file again; distributing only the MSI no longer fails with error 1302. ## [1.1.0] — 2026-05-31 Rebrand release: TeamsISO becomes **Dragon-ISO** across source paths, installer metadata, and documentation. No functional engine changes. ## [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 `Dragon-ISO-input` group while Dragon-ISO 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 `Dragon-ISO_{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%\Dragon-ISO\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%\Dragon-ISO\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. [1.2.0-beta.1]: https://forge.wilddragon.net/WildDragonLLC/dragon-iso/releases/tag/v1.2.0-beta.1 [1.1.0]: https://forge.wilddragon.net/WildDragonLLC/dragon-iso/releases/tag/v1.1.0 [1.0.0]: https://forge.wilddragon.net/WildDragonLLC/dragon-iso/releases/tag/v1.0.0