# 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.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.0.0]: https://forge.wilddragon.net/zgaetano/Dragon-ISO/releases/tag/v1.0.0
