From ab47cccd429432b4176e45d73488b1e584511196 Mon Sep 17 00:00:00 2001 From: Zac Gaetano Date: Sun, 17 May 2026 19:03:33 -0400 Subject: [PATCH] =?UTF-8?q?release:=20cut=20v1.0.0=20=E2=80=94=20trim=20in?= =?UTF-8?q?ternal=20docs,=20polish=20README/CHANGELOG/MSI=20metadata?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 386 +-- DESIGN.md | 340 -- Directory.Build.props | 2 +- NEXT_STEPS.md | 147 - PRODUCT.md | 181 -- README.md | 143 +- build-and-test.ps1 | 4 +- commit-and-push.ps1 | 45 - docs/archive/2026-05-12-winui3-migration.md | 199 -- .../TeamsISO.App.WinUI.Probe/Program.cs | 142 - .../TeamsISO.App.WinUI.Probe.csproj | 49 - docs/archive/work-log-2026-05-12-winui3.md | 261 -- docs/preview/redesigned-mainwindow.html | 799 ----- .../winui3-engine-wired-with-live-teams.png | Bin 364024 -> 0 bytes docs/preview/winui3-mainwindow-dark.png | Bin 64930 -> 0 bytes docs/preview/winui3-mainwindow-light.png | Bin 64635 -> 0 bytes docs/preview/winui3-with-colored-pills.png | Bin 309786 -> 0 bytes .../2026-05-13-teamsiso-v2-studio-terminal.md | 194 -- ...5-07-teamsiso-phase-a-engine-foundation.md | 2847 ----------------- ...amsiso-phase-b-1-pipeline-orchestration.md | 167 - ...26-05-07-teamsiso-phase-b-2-ndi-interop.md | 30 - .../2026-05-07-teamsiso-phase-c-wpf-ui.md | 43 - docs/superpowers/plans/_NEXT.md | 183 -- .../specs/2026-05-07-teamsiso-v1-design.md | 213 -- ...2026-05-08-embedded-teams-orchestration.md | 106 - docs/test-playbook.md | 34 - installer/Package.wxs | 52 +- 27 files changed, 178 insertions(+), 6389 deletions(-) delete mode 100644 DESIGN.md delete mode 100644 NEXT_STEPS.md delete mode 100644 PRODUCT.md delete mode 100644 commit-and-push.ps1 delete mode 100644 docs/archive/2026-05-12-winui3-migration.md delete mode 100644 docs/archive/TeamsISO.App.WinUI.Probe/Program.cs delete mode 100644 docs/archive/TeamsISO.App.WinUI.Probe/TeamsISO.App.WinUI.Probe.csproj delete mode 100644 docs/archive/work-log-2026-05-12-winui3.md delete mode 100644 docs/preview/redesigned-mainwindow.html delete mode 100644 docs/preview/winui3-engine-wired-with-live-teams.png delete mode 100644 docs/preview/winui3-mainwindow-dark.png delete mode 100644 docs/preview/winui3-mainwindow-light.png delete mode 100644 docs/preview/winui3-with-colored-pills.png delete mode 100644 docs/shapes/2026-05-13-teamsiso-v2-studio-terminal.md delete mode 100644 docs/superpowers/plans/2026-05-07-teamsiso-phase-a-engine-foundation.md delete mode 100644 docs/superpowers/plans/2026-05-07-teamsiso-phase-b-1-pipeline-orchestration.md delete mode 100644 docs/superpowers/plans/2026-05-07-teamsiso-phase-b-2-ndi-interop.md delete mode 100644 docs/superpowers/plans/2026-05-07-teamsiso-phase-c-wpf-ui.md delete mode 100644 docs/superpowers/plans/_NEXT.md delete mode 100644 docs/superpowers/specs/2026-05-07-teamsiso-v1-design.md delete mode 100644 docs/superpowers/specs/2026-05-08-embedded-teams-orchestration.md delete mode 100644 docs/test-playbook.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 164acda..63b0c80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,337 +4,83 @@ All notable changes to TeamsISO 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). -## [Unreleased] +## [1.0.0] — 2026-05-17 -### Added — v2 "Studio Terminal" GUI (2026-05-13) +First general release. Windows-only, .NET 8 WPF, NDI 6. -The May 2026 ground-up redesign — explicit anti-reference to "the v1 -GUI screamed AI made it" — landed on the WPF host -(`src/TeamsISO.App/`). The shape brief lives at -`docs/shapes/2026-05-13-teamsiso-v2-studio-terminal.md`. An earlier WinUI -3 replatform was scoped on 2026-05-12 and abandoned in favour of doing -the redesign in WPF (activation blockers + redundant work given the -shared view-model surface). The abandoned migration plan + bootstrap -probe are archived under `docs/archive/`. +### Engine -- **PRODUCT.md** + **DESIGN.md**: impeccable context for the redesign. - Solo broadcast operator at 1:50am is the canonical persona; "vibe-coded - GUI" is the explicit anti-reference. Tokens cover dark + light palettes - with context-aware accent split (cyan surface fill stays bright in - both modes; cyan-as-text darkens to `#0E7C82` on light for AA contrast). -- **Theme system** (`Themes/Theme.Dark.xaml`, `Theme.Light.xaml`, - `WildDragonTheme.xaml`) + `Services/ThemeManager.cs` singleton that - swaps the merged dictionary at runtime, reads - `HKCU\…\AppsUseLightTheme` for System mode, subscribes to - `SystemEvents.UserPreferenceChanged`, persists via - `UIPreferences.Theme`. `Ctrl+T` toggles dark ↔ light. -- **v2 main window shell**: default system title bar; 32px header (Wild - Dragon mark + wordmark left, ⌘K / theme / settings icons right); 40px - transport strip (`● 02:14:32 PART 4 · LIVE 2 CTRL :9755`); body with - alert banner + update banner + action toolbar + participants - DataGrid; conditional `IN CALL` meeting bar at bottom; slide-over - settings drawer (420px from right) with OUTPUT / NETWORK / APP tabs. - The v1 72px rail, the 380px permanent settings panel, and the - six-column footer are gone. -- **Task 39 — participants table v2**: five columns (24px state LED, - name + codec caption, 110px audio meter, 130px mono output name, 100px - ISO pill), 52px rows, full-row active-speaker tint (replaces the v1 - left-edge stripe). -- **Task 40 — Ctrl+K command palette**: `Views/CommandPaletteWindow.xaml` - + `ViewModels/CommandPaletteViewModel.cs`. Centered 560×360 floating - window with fuzzy search across Quick / Teams / Presets / Output / - Network / App categories. ↑/↓ navigates, Enter invokes, Esc closes. -- **Interactive HTML preview** at `docs/preview/redesigned-mainwindow.html` - for stakeholders to see the v2 shell. +- **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. -### Added — May 2026 feature batch +### UI — "Studio Terminal" -#### Engine -- NDI Groups: discovery + sender support so Teams' raw broadcasts can be - pinned to a private "teamsiso-input" group while TeamsISO's own - normalized outputs broadcast on Public. -- One-click "Apply transcoder topology" writes `ndi-config.v1.json` so all - Teams broadcasts go to the private group and TeamsISO re-emits on Public. -- `RawBgraRecorderSink` per-output recorder: `IRecorderSink` interface + - raw BGRA stream + `manifest.json` + `convert.cmd` script for FFmpeg - conversion to H.264 MKV. -- Recording markers: `IRecorderSink.AddMarker(label)` fan-out via - `IIsoController.AddRecordingMarker`. Markers land in `manifest.json` - under `markers[]` for post-production chaptering. -- Preview thumbnails: `IsoPipeline.LatestProcessedFrame` published via - `Volatile.Read` so the UI can render 160×90 BGRA thumbnails in the - participants DataGrid at 1Hz. -- Idempotent `ParticipantTracker.HandleAdded`: re-emitting Added for an - already-live source refreshes LastSeen instead of duplicating the row. - Fixes the "click Refresh and rows ghost-duplicate" bug introduced by - the Refresh-Discovery affordance. -- `IIsoController.RefreshDiscovery()` rebuilds the NDI finder on the next - poll tick — useful right after applying a new transcoder topology. -- `IIsoController.AddRecordingMarker(label)` fan-out to every active recorder. -- `IIsoController.SetRecording(enabled, dir)` global recording toggle; - per-participant override via `EnableIsoAsync(...recordOverride...)`. +- **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. -#### Host (WPF) -- Active Speaker as a synthetic routable participant with deterministic v5 - GUID derived from `auto-mix:`. -- Auto-disable on departure: when a participant's NDI source disappears, - optionally tear down their pipeline. -- Operator presets: chromeless `Presets…` dialog with Save / Apply / - Delete / Duplicate / Export / Import. Persisted at - `%LOCALAPPDATA%\TeamsISO\presets.json`. Bundle format - `teamsiso-presets-bundle/v1` for migration between machines. -- Auto-apply last preset on launch (configurable, off by default). -- `--apply-preset NAME` CLI flag for desktop-shortcut workflows. -- `PresetApplier` — single source of truth for "apply preset to live - participants" used by the dialog, REST surface, and auto-apply path. -- Live preview thumbnails per participant (160×90 BGRA WriteableBitmap). -- Right-click context menu on participant rows: Toggle ISO, Record-this- - participant, Copy NDI source name. -- Live filter input (substring match on display name). -- "Enable all online" + "Stop all ISOs" + "Refresh" header actions. -- Per-participant recording opt-out checkbox (Rec column). -- Custom NDI output name template with `{name}`/`{guid}`/`{machine}`/ - `{timestamp}` tokens. -- Phase E.1 — Launcher: rail "Launch / Stop Teams" toggle. -- Phase E.2 — Window orchestration: hide / show Teams windows from the rail. -- Phase E.3 — In-call controls (UIA): Mute, Camera, Share, Leave, Raise hand, - plus PostMessage shortcut forwarding fallback. Candidate names localized - for English / German / Spanish / French / Portuguese / Japanese. -- Crash diagnostics: AppDomain + Dispatcher + TaskScheduler unhandled - exception handlers wired to Serilog.Critical + user-facing dialog. -- First-launch onboarding dialog with 5-step setup checklist. -- About dialog gained "Show welcome", "Check for updates", "Export diagnostics" - buttons. -- Diagnostic bundle export: zips logs + config + presets + version metadata - into `~/Downloads/teamsiso-diagnostics-.zip` for bug reports. -- Update check: manual via About + auto-on-launch banner (throttled to 24h, - opt-out via flag file at `%LOCALAPPDATA%\TeamsISO\no-update-check.flag`). -- Disk space watcher auto-disables recording at <1GB free. -- Settings panel refactored into OUTPUT / NETWORK / DISPLAY tabs. -- Reset-to-defaults button in OUTPUT tab. -- Enriched footer: REC badge, control-surface badge, session timer (HH:MM:SS - since first ISO went live), dynamic status text ("3/5 ISOs live · 2 recording"). -- Window-scoped keyboard shortcuts: F1 (help), Ctrl+M (marker), Ctrl+Shift+S - (stop all), Ctrl+R (refresh discovery). -- F1 help / cheat-sheet dialog. -- `UIPreferences` static persists `HideLocalSelf`, `AutoDisableOnDeparture`, - `ParticipantSort` (JoinOrder / Alphabetical / OnlineFirst) across launches - to `%LOCALAPPDATA%\TeamsISO\ui-prefs.json`. -- Pop-out per-participant preview window (right-click → Open preview…) - refreshes at ~20Hz and is multi-monitor friendly. -- Configurable participant sort order via the DISPLAY tab dropdown. -- Stop-All confirms before tearing down running pipelines (catches - mid-show misclicks). -- About dialog gained "Logs / Recordings / Notes" folder shortcut buttons. -- `NotesWindow` inline viewer for today's show-notes file with 2s polling. -- Duplicate-preset action in the Presets dialog with smart `(copy N)` - name suggestions. -- `--apply-preset NAME` command-line flag for desktop-shortcut workflows. -- New `TeamsISO.App.Tests` net8.0-windows test project. Initial coverage: - `OperatorPresetStoreTests` (round-trip, name collisions, schema, bundle - import/export, garbage-file resilience), `OutputNameTemplateTests` (token - expansion + sanitization), `OscMessageTests` (wire-format parsing of - int/float/string/T/F type tags). Backed by an `InternalsVisibleTo` grant - + a test-only `OperatorPresetStore.PathOverride` hook. -- `IsoHealthStats.PeakAudioLevel` field + DataGrid VU-bar UI scaffolding. - Engine still emits 0.0 (audio capture is a focused follow-up); the bar's - decay logic is in place so it animates as soon as engine-side audio - parsing lands. -- `MediaFoundationRecorderSink` scaffold under `#if MF_AVAILABLE` for - inline H.264 encoding via Vortice.MediaFoundation. ~10× smaller files - than the raw BGRA recorder. Activation steps documented at - `docs/REAL-TIME-RECORDING.md`. -- System-tray icon + minimize-to-tray toggle. Adds - `true` for `NotifyIcon`; the - `TrayIconHost` lives on `App` (process lifetime, not main-window - lifetime). Right-click menu has Show / Stop all ISOs / Exit. -- Built-in NDI test pattern: `TeamsISO.Console --test-pattern` broadcasts - a synthetic 1280×720 30fps source named `TEAMSISO_TEST` showing SMPTE - color bars + a moving sweep band. Verifies NDI runtime, sender - configuration, and downstream discovery without needing Teams running. - Backed by `TestPatternGenerator` in the engine + 4 unit tests covering - buffer size, alpha, color distinctness, and sweep animation. -- Always-toast on participant disconnect, regardless of `AutoDisableOnDeparture` - setting. Distinguishes "ISO torn down" (auto-disable on) from "ISO still - running on slate" (auto-disable off) so operators don't miss a silent - drop mid-show. -- **Restart this ISO** right-click action — disable + brief delay + re-enable - for one participant only. Useful when a single feed flakes without - affecting other ISOs. -- **Roll recording** action: rolls every active recording into a new chunk - (disable + re-enable each pipeline; recorder finalizes its `manifest.json` - and starts a fresh subdirectory). Surfaced via `MainViewModel.RollRecordingCommand`, - REST `POST /recording/roll`, and OSC `/teamsiso/recording/roll`. Useful - for chaptering between show segments. -- **Engine audio peak metering** — `IsoHealthStats.PeakAudioLevel` now - reports real values (was always 0.0). New `INdiInterop.CaptureAudioPeak` - method polls audio frames; production `NdiInteropPInvoke` parses - `NDIlib_audio_frame_v3_t` and computes max-absolute peak across all - channels. `NdiReceiver` runs a sibling audio capture loop on the same - lifetime so the existing video path is unaffected. UI VU bars in the - participants DataGrid now animate against real source audio. Failures - in the audio loop are caught + logged but never re-thrown — a - misbehaving audio path must never tear down the live video pipeline. - 14 new unit tests in `AudioPeakComputerTests` covering FLTP / FLT / PCM - s16 across edge cases (clipping, `short.MinValue` overflow, defensive - `totalSamples`-vs-buffer mismatch handling). +### Output name template -#### LAN-reachable control surface -- `ControlSurfaceServer.Start(port, bindToLan)` and `OscBridge.Start(port, - bindToLan)` switch between `127.0.0.1` and all-interfaces (`http://+:port/`, - `IPAddress.Any`) based on the new `ControlSurfaceLanReachable` UI preference. - Settings VM persists the toggle, restarts both surfaces on flip, and - surfaces a `ControlSurfaceUrl` (computed from the host's first physical-NIC - routable IPv4 — Tailscale / VPN / APIPA addresses are skipped) plus a Copy - button. Use case: headless host PC running Teams + TeamsISO; thin client - on the same LAN drives `/ui` or hits the REST endpoints. Closed-network - deployment, no auth — documented as a trusted-LAN-only mode in - `docs/CONTROL-SURFACE.md`. First-time use requires a one-shot - `netsh http add urlacl url=http://+:9755/ user=Everyone` (so the listener - can bind without admin); the diagnostic warning fires the exact command - string in the log if the bind fails. +- 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}`. -#### "I only see TeamsISO" — Phase E.1+E.2 quality-of-life -For operators who want to launch TeamsISO and never look at the Teams UI: -- **Launch Microsoft Teams on TeamsISO startup** preference (DISPLAY tab). - Auto-fires Teams in the background each time TeamsISO starts; the Teams - window appears briefly during boot then can be hidden automatically. -- **Auto-hide Teams windows when launched** preference (DISPLAY tab). - `TeamsLauncher.AutoHideAfterLaunchAsync` polls for 15s after launch - hiding splash, main window, and follow-up panels as they materialize. - Works on top of the existing eye-toggle for manual restore. -- **Quick-join Teams meeting from URL** — small input + Join button in the - IN-CALL bar. Paste a `https://teams.microsoft.com/l/meetup-join/...` - or `msteams:/l/meetup-join/...` link, click Join, Teams launches into - the meeting in one shot. Eliminates the open-Teams → Calendar → find → - click Join dance. Pairs with auto-hide so the operator goes straight - from "I have a meeting link" to "I'm in the meeting, driving routing". -- **Teams meeting state pill** in the IN-CALL bar — shows `IN CALL · ` - / `READY` / empty. UIA-driven probe of Teams' Leave button at 1Hz; the - meeting title comes from Teams' window title with the brand suffix - stripped. So an operator with auto-hide on knows whether they're in a - meeting AND which one without restoring the Teams window. 10 new unit - tests on `MainViewModel.ExtractMeetingTitle`. -- **Rail Launch Teams click semantics** — was ambushing operators with a - "Close all Teams windows now?" dialog whenever Teams was running (e.g. - when hidden via the eye-toggle). Now click = launch / surface / restore; - right-click = stop. `TeamsLauncher.TryLaunch` now collects per-attempt - errors (no more silent fall-through) and adds the AppX-activation - fallback for hosts where the `ms-teams:` URI handler is misconfigured. -- **Auto-record when Teams joins a meeting** preference. Recording auto- - flips ON when Teams transitions into a call (UIA Leave button appears) - and auto-flips OFF when the call ends. Removes the manual Record toggle - step from unattended-show workflows. -- **Phase E.4 (experimental) — SetParent embedding.** Reparents Teams' main - window into a TeamsISO-owned host (`TeamsEmbedWindow`) so Teams appears - visually INSIDE TeamsISO. Strips Teams' window chrome and resizes to - fit. Modern Teams runs WebView2 in its main window which can render - glitches after reparent; if so the operator unticks and falls back to - auto-hide mode. `TeamsLauncher.EmbedTeamsInto` / `RestoreEmbed` / - `ResizeEmbedded` form the lifecycle. Restore-on-close runs in a finally - block so a crash can't leave Teams orphaned with stripped window styles. -- **Right-click → Save current frame** on a participant row. Encodes the - latest `ProcessedFrame` as a PNG under - `%USERPROFILE%\Pictures\TeamsISO\_.png`. - Useful for highlight reels, social posts, bug reports. -- **Open /ui button** in Settings → DISPLAY → Control surface section. - Fires the URL into the default browser for one-click preview of the - embedded control panel. -- **Recording badge in footer shows elapsed duration** alongside the count - (`REC 3 · 12:45`). Separate timer from the session timer because - recording can start AFTER the meeting begins. -- **MUTED / CAM OFF pills** in the IN-CALL bar — UIA detects whether the - local user is muted or has their camera off, surfaces as coral pills. - Operator with auto-hide knows the local state without restoring Teams. -- **Recording drive free space** in the footer (`· 245 GB free`). Coral - tint below 10GB; existing DiskSpaceWatcher still auto-disables at 1GB. -- **Loudest sort mode** for the participants DataGrid + **active speaker - row highlight** (3px cyan left border + tinted background) on whoever's - speaking. Operators react to who's talking without scanning every VU bar. -- **Snapshot all enabled participants** — header action saves every - enabled participant's current frame as a PNG into a fresh timestamped - subfolder under `%USERPROFILE%\Pictures\TeamsISO\snapshots-\`. -- **NumPad 1-9 (and Digit 1-9) hotkeys** toggle the Nth visible - participant's ISO. Sort + filter aware — index matches what's on screen. - Generic `RelayCommand` added to ViewModels/RelayCommand.cs so XAML - CommandParameter strings convert to the action's T. +### Operator presets -#### UI polish — visible affordances on the dark canvas -- Hover state on every themed button (Ghost / Caption / RailIcon / IsoToggle) - was barely distinguishable from the resting state. Bumped `Wd.SurfaceHover` - + `Wd.SurfaceActive` colours for sufficient contrast, added dedicated - `Wd.Button.HoverBg` / `Wd.Button.PressBg` brushes with a slight chroma tint, - and added cyan accent borders so mouse-hover and tab-focus give an - unmistakable affordance regardless of which surface the button sits on. - IsoToggle keeps its status-coded background (LIVE cyan / ERROR coral / - NO SIGNAL amber) on hover; the affordance is a 2px cyan border pop. -- `IsKeyboardFocused` triggers added on every themed button so tab-cycling - through the UI gives visual feedback (was nothing — `FocusVisualStyle` - was `x:Null` with no replacement). -- ScrollBar restyled: slim transparent track + tinted thumb (Edge / VS Code - pattern) in place of the chunky Win9x default with line-up / line-down - arrow buttons. Track-clicks above/below the thumb still page-scroll. -- ToolTip restyled: SurfaceElevated card with rounded 6px corner + 320px - text wrap, replacing the cream Win98 popup. Affects every tooltip across - MainWindow. -- ContextMenu / MenuItem restyled: dark card with rounded corners + cyan- - tinted hover. Affects the right-click menu on participant rows - (Toggle ISO / Restart this ISO / Open preview / Record / Copy NDI source name). -- CheckBox content no longer clips at the 380px settings panel: template's - StackPanel replaced with a Grid (Auto + *) and a TextWrapping=Wrap - resource injected into the ContentPresenter so long labels flow onto - multiple lines. -- Manual X dismiss on toast notifications for live-show situations where - the operator wants to clear visual clutter without waiting 3s. -- Footer's control-surface badge surfaces the full LAN URL (not just port) - when LAN-reachable mode is on, so a thin client can be configured by - reading the URL straight off the host's footer. +- Save current per-participant ISO assignments + custom output names to + `%LOCALAPPDATA%\TeamsISO\presets.json`. Optional auto-apply on next + launch. -#### Control surface -- REST API on `127.0.0.1:9755` with endpoints for participant ISO toggle (by - Id or display name), preset apply, refresh discovery, stop-all, recording - on/off, marker drop, notes, and Teams in-call commands. Documented at - `docs/CONTROL-SURFACE.md`. -- WebSocket `/ws` pushes live participant state at 4Hz with snapshot diffing. -- OSC bridge on UDP `127.0.0.1:9000` mirrors the REST vocabulary - (`/teamsiso/iso "Jane" 1`, `/teamsiso/preset "..."`, etc.). -- Embedded HTML control panel at `GET /ui` — phone-friendly remote with - live state and one-click action buttons. -- Show notes service: `POST /notes` and `/teamsiso/notes "..."` append - timestamped lines to `%LOCALAPPDATA%\TeamsISO\Notes\.md`. +### Teams orchestration -#### CI / Release -- Forgejo CI is green; tag-push release workflow builds + tests + publishes - + builds MSI on a Windows runner and attaches it to the auto-created - release via the REST API. -- Optional MSI + exe code-signing wired into `release.yml` — gated on - `SIGN_CERT_PFX_BASE64` + `SIGN_CERT_PASSWORD` Forgejo Secrets. +- 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. -### Fixed +### External control surface -- `.slnf` path-separator mismatch (forward slashes for cross-platform). -- NDI native DLL resolution via `NativeLibrary` resolver. -- `ExpectedRuntimeVersionPrefix` updated to NDI 6 banner format. -- `NdiSourceParser` accepts current Teams desktop's `MS Teams - ` - brand format. -- ActiveSpeaker source removal no longer poisons the rename-window - heuristic for a Participant joining the same machine within the window. -- `IsoPipeline.State` access synchronized via `Volatile.Read/Write`. -- REST handlers now correctly marshal `ObservableCollection` reads + writes - through the UI dispatcher. -- WebSocket upgrade no longer falls into `res.Close()` finally block (was - killing freshly-upgraded connections). -- `ParticipantViewModel.UpdateThumbnail` defends against malformed frames - (`width*height*4 > Pixels.Length`). -- `HasThumbnail` correctly fires `PropertyChanged` when `Thumbnail` - transitions from null. -- WinForms / WPF `Application` and `MessageBox` namespace collision - (introduced when `true` was added for - the system tray) resolved via project-wide `GlobalUsings.cs`. -- `GetLanIPv4()` now skips Tailscale / VPN tunnel adapters and APIPA - (`169.254.x`) so the displayed control-surface URL points at the - routable LAN IP (verified on a host with both Ethernet 10.x and a - Tailscale 169.254 link-local — picker now correctly returns the - Ethernet address). +- 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. -[Unreleased]: https://forge.wilddragon.net/zgaetano/teamsiso/compare/v0.1.0...HEAD +### 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. + +[1.0.0]: https://forge.wilddragon.net/zgaetano/teamsiso/releases/tag/v1.0.0 diff --git a/DESIGN.md b/DESIGN.md deleted file mode 100644 index 57d0a26..0000000 --- a/DESIGN.md +++ /dev/null @@ -1,340 +0,0 @@ -# DESIGN.md — TeamsISO design system - -Target framework: **WPF .NET 8**. Tokens are framework-agnostic; the WPF -XAML implementation lives in `src/TeamsISO.App/Themes/`. (A WinUI 3 rebuild -was attempted and rolled back — see -`docs/shapes/2026-05-13-teamsiso-v2-studio-terminal.md` for the v2 shape -this design serves.) - -## Color - -### Strategy - -**Restrained — committed accent + neutral surface.** The surface is the work; -the cyan accent is reserved for live state, focus, and the few moments that -actually need attention. Coral is reserved for destructive and error. -Everything else is neutral. - -This means: no rainbow status pills, no per-feature accent colors, no -Slack-style chroma everywhere. If something is cyan, the operator's eye -should know why. - -### Scene sentence - -**Dark (default):** A solo broadcast operator at 1:50am, ambient room lights -at 5%, leaning into a 24-inch monitor, twenty minutes before a live -international interview. - -**Light:** A morning recording session in a glass-walled conference room with -the sun coming through the blinds, monitor brightness at 80%. Or a daytime -producer monitoring a remote interview from a hotel desk during a working -session before lunch. - -The default is dark — that's the dominant operator scene. Light mode exists -because not every show happens at 1:50am. - -### Dark palette - -Every neutral is tinted toward cyan (h ≈ 200, chroma 0.005–0.008) so the -dark surface reads as deliberate dark, not as chromatically dead. - -| Token | Role | Hex | OKLCH (approx) | -|---|---|---|---| -| `bg.canvas` | Window canvas | `#0A0A0A` | `oklch(0.12 0.005 200)` | -| `bg.rail` | Left rail | `#080808` | `oklch(0.10 0.005 200)` | -| `bg.surface` | Card / row | `#141416` | `oklch(0.18 0.006 200)` | -| `bg.elevated` | Popovers, menus | `#1C1C1F` | `oklch(0.22 0.007 200)` | -| `bg.hover` | Hover fill | `#26272B` | `oklch(0.28 0.008 200)` | -| `bg.active` | Pressed fill | `#33343A` | `oklch(0.34 0.010 200)` | -| `border.subtle` | Hairlines | `#26272B` | `oklch(0.28 0.008 200)` | -| `border.strong` | Hover / focus | `#3A3B40` | `oklch(0.36 0.010 200)` | -| `fg.primary` | Body text | `#F4F4F6` | `oklch(0.96 0.004 200)` | -| `fg.secondary` | Subdued text | `#A3A4AA` | `oklch(0.70 0.006 200)` | -| `fg.tertiary` | Captions | `#6B6C72` | `oklch(0.50 0.006 200)` | -| `fg.disabled` | Disabled | `#404145` | `oklch(0.32 0.006 200)` | - -### Light palette - -Mirrored token names; cyan-tinted off-white so the surface still reads as -Wild Dragon, not as generic white. - -| Token | Role | Hex | OKLCH (approx) | -|---|---|---|---| -| `bg.canvas` | Window canvas | `#FAFAFB` | `oklch(0.98 0.003 200)` | -| `bg.rail` | Left rail | `#F0F1F3` | `oklch(0.95 0.004 200)` | -| `bg.surface` | Card / row | `#FFFFFF` | `oklch(1.00 0.000 200)` | -| `bg.elevated` | Popovers, menus | `#FFFFFF` | `oklch(1.00 0.000 200)` (+ shadow) | -| `bg.hover` | Hover fill | `#ECEEF1` | `oklch(0.93 0.005 200)` | -| `bg.active` | Pressed fill | `#E0E3E7` | `oklch(0.89 0.006 200)` | -| `border.subtle` | Hairlines | `#E5E7EB` | `oklch(0.91 0.004 200)` | -| `border.strong` | Hover / focus | `#D1D5DA` | `oklch(0.85 0.006 200)` | -| `fg.primary` | Body text | `#0A0A0A` | `oklch(0.12 0.005 200)` | -| `fg.secondary` | Subdued text | `#4A4B50` | `oklch(0.36 0.006 200)` | -| `fg.tertiary` | Captions | `#71747A` | `oklch(0.53 0.006 200)` | -| `fg.disabled` | Disabled | `#B3B6BC` | `oklch(0.76 0.005 200)` | - -### Accents — context-aware - -Some accents work in both modes; others need a darker variant for AA contrast -when used as text on the light canvas. The token table splits them: - -| Token | Dark | Light | Reserved for | -|---|---|---|---| -| `accent.cyan.surface` | `#97EDF0` | `#97EDF0` | Primary button fill, badge fill (text on top is near-black in both modes — works) | -| `accent.cyan.text` | `#97EDF0` | `#0E7C82` | Cyan-as-text (links, "live" labels, active state) | -| `accent.cyan.hover` | `#B5F2F4` | `#0890A0` | Cyan hover | -| `accent.cyan.muted` | `#1B3537` | `#E6F8F9` | Cyan tint background, active speaker row fill | -| `accent.coral` | `#FB819C` | `#D43E5C` | Destructive, error, alert (as both border + text) | -| `accent.coral.bg` | `#3A1922` | `#FDECF0` | Coral tint background | -| `status.live` | `#4ADE80` | `#15803D` | Recording active, REC dot, "live" pill | -| `status.live.bg` | `#13261A` | `#DCFCE7` | Live pill background | -| `status.warn` | `#FBBF24` | `#B45309` | Low disk, NDI degraded | - -**Discipline.** Cyan is the only color that competes with body text for -attention. It earns its place — wasted cyan is the design failing. -`accent.cyan.surface` (#97EDF0) reads identically in both modes because -its text is always near-black. `accent.cyan.text` exists specifically so -captions and inline labels stay readable on a light canvas. - -## Theming - -### The toggle - -A single icon button (sun ↔ moon) lives in the title bar, positioned to the -left of the window controls. One click swaps the theme. State persists via -`UIPreferences.Theme` (`Dark | Light | System`). Default is `System` which -follows the Windows app-mode preference. - -The toggle is also surfaced inside the settings drawer under an "Appearance" -group as a tri-state pill (System / Dark / Light), so power users find it in -the obvious place too. - -### Implementation (WPF) - -WPF doesn't have WinUI 3's `ThemeDictionary` pattern. The equivalent is to -**split tokens by theme into separate ResourceDictionary files**, all -addressed via `DynamicResource` (NOT `StaticResource`) so the values can -be swapped at runtime. - -``` -Themes/ - Theme.Tokens.xaml ← styles, control templates, key shape (no colors) - Theme.Dark.xaml ← color resources only — Dark variant - Theme.Light.xaml ← color resources only — Light variant -``` - -`Theme.Dark.xaml` and `Theme.Light.xaml` define the SAME set of keys — -`Wd.Bg.Canvas`, `Wd.Accent.Cyan`, etc. — with different `Color` values. -`Theme.Tokens.xaml` references them via `DynamicResource` from styles and -templates. At startup, `App.xaml` merges `Theme.Tokens.xaml` plus exactly -one of `Theme.Dark.xaml` or `Theme.Light.xaml`. At runtime, `ThemeManager` -swaps the merged dictionary's color file: - -```csharp -var app = Application.Current; -var oldDict = app.Resources.MergedDictionaries - .First(d => d.Source?.OriginalString.EndsWith("Theme.Dark.xaml") == true - || d.Source?.OriginalString.EndsWith("Theme.Light.xaml") == true); -var idx = app.Resources.MergedDictionaries.IndexOf(oldDict); -app.Resources.MergedDictionaries[idx] = new ResourceDictionary { - Source = new Uri($"/Themes/Theme.{newTheme}.xaml", UriKind.Relative) -}; -``` - -`DynamicResource`-backed `SolidColorBrush` instances re-resolve on the -dictionary swap, so the visual tree repaints without an app restart. - -### System mode - -When `UIPreferences.Theme == "System"`, `ThemeManager` reads -`HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize\AppsUseLightTheme` -at startup. It also subscribes to `SystemEvents.UserPreferenceChanged` so -the app re-resolves the theme when the operator flips Windows app-mode -mid-session. This is the default — operators who don't care get whatever -their Windows session is set to. - -## Typography - -### Scale (1.25 step ratio enforced) - -| Token | Family | Size | Weight | Line-height | Letter-spacing | -|---|---|---|---|---|---| -| `text.display` | Inter | 22 | 600 | 1.2 | -0.01em | -| `text.title` | Inter | 18 | 600 | 1.25 | -0.005em | -| `text.heading` | Inter | 14 | 600 | 1.3 | 0 | -| `text.body` | Inter | 13 | 400 | 1.45 | 0 | -| `text.subtle` | Inter | 13 | 400 | 1.45 | 0 | -| `text.caption` | Inter | 11 | 500 | 1.3 | 0.04em (smallcaps) | -| `text.mono` | JetBrains Mono | 12 | 400 | 1.4 | 0 | - -Body text caps at 65–75ch where it wraps. Inline status text doesn't wrap — -it truncates with ellipsis. - -### Fonts in WPF - -Bundled fonts ship in `src/TeamsISO.App/Assets/Fonts/` and resolve via -`pack://application:,,,/Assets/Fonts/#Inter` / `#JetBrains Mono`. The -`` glob in `TeamsISO.App.csproj` already covers the `.ttf` files; -new font weights go in the same directory and pick up automatically. - -## Spacing (8px grid) - -| Token | Value | Use | -|---|---|---| -| `space.xs` | 4 | Icon-to-text, tiny gaps | -| `space.s` | 8 | Row internal padding, pill padding | -| `space.m` | 12 | Card internal padding | -| `space.l` | 16 | Card padding, between cards | -| `space.xl` | 24 | Section gap | -| `space.xxl` | 32 | Page edge padding | -| `space.xxxl` | 48 | Hero section / large blocks | - -**Rhythm rule.** No two adjacent regions share the same padding value. The -participant table breathes at `space.xl`; in-row controls compress to -`space.s`. Same padding everywhere is monotony. - -## Radii - -| Token | Value | Use | -|---|---|---| -| `radius.s` | 6 | Pills, inline tags, menu items | -| `radius.m` | 8 | Buttons, text inputs, dropdowns | -| `radius.l` | 12 | Cards, drawers, modals | -| `radius.pill` | 999 | Status pills, ISO toggle | - -## Elevation - -Elevation through **tone**, not through shadow. The dark surface makes -realistic drop-shadows look bolted-on. A `bg.elevated` tone difference does -the same job with less visual noise. - -| Layer | Background | Border | -|---|---|---| -| Canvas | `bg.canvas` | none | -| Card | `bg.surface` | `border.subtle` | -| Drawer / Popover | `bg.elevated` | `border.strong` | -| Modal | `bg.elevated` | `border.strong` + 50% canvas scrim | - -## Icons - -**Single icon system, one stroke width, one optical size.** The previous GUI -inlined ~12 bespoke `` icons with stroke widths varying -between 1.2 and 1.6. The redesign uses **Segoe Fluent Icons font** (shipped -with Windows 11; falls back to Segoe MDL2 Assets on Windows 10) as the -baseline, with a custom subset added only where a broadcast concept isn't -covered (e.g. NDI signal lock, ISO routing state). - -Sizes: 16 (inline), 20 (button), 24 (rail / hero). -Stroke: inherited from font; no hand-stroked paths. - -## Motion - -- Ease-out exponential (`cubic-bezier(0.16, 1, 0.3, 1)`) for entry. -- Ease-in-out for state changes that aren't entries. -- Durations: 120ms for affordance feedback, 200ms for panel transitions, - 280ms hero (rarely used). -- No bounce. No elastic. No spring overshoots. -- **Never animate** layout properties. Animate `RenderTransform` and - `Opacity` (WPF's composition layer handles these GPU-cheaply). - -## Component decisions - -### Buttons — finally have a real hierarchy - -The previous design used `Wd.Button.Ghost` for everything. The redesign has -**three commitments**: - -| Variant | Use | Look | -|---|---|---| -| `Primary` | Single per surface, the brand action ("Apply", "Start session") | Cyan fill, near-black text | -| `Secondary` | Common operator actions ("Refresh", "Presets") | Transparent fill, `border.strong`, hover cyan border | -| `Tertiary` | Inline, low-frequency ("Dismiss", "Show advanced") | Text-only, no border, cyan on hover | -| `Destructive` | Stop, leave, delete | Coral border, coral text, no fill | - -**One Primary per surface.** If a screen has two primaries, the design is -unranked. - -### ISO toggle — keep, refine - -The status-coded pill (LIVE cyan / ERROR coral / NO SIGNAL amber) is good. -Two evolutions: - -1. The hover treatment thickens to a 2px cyan border — preserve. -2. Add a half-height ascender showing instantaneous audio level above the - pill. The operator sees who's talking without needing the active-speaker - row highlight to fire on next tick. - -### Tables (Participants) - -This is the product. The table gets: - -- Row height 56 (current) → 64 to give the audio meter + signal indicator - room to breathe. -- The "active speaker" cyan left-border treatment stays. It's good. -- One participant action per row at rest (the ISO toggle). Other actions - (open preview, custom name, presets) live in a right-click context menu - (already exists) and in a row hover-revealed kebab — *not* visible at rest. -- Column count: avatar+name · NDI signal+codec · audio meter · output name · - ISO toggle. Five columns. The current six-plus + custom-name editing - inline pushes density too far. - -### Status — one place, not three - -Recording / disk / session / control-surface state currently lives in: -1. Rail bottom dot (engine status) -2. Header right pill (status text) -3. Footer columns (six monospace fields) - -The redesign consolidates to **two places only**: - -- **Header right** — session timer, REC indicator + count, disk-free. - These are at-a-glance. -- **Status overlay (popover from rail bottom dot)** — control surface URLs, - log path, version, control-surface tokens. These are on-demand. - -The footer goes away entirely. It was theatre, not information. - -### Settings — drawer, not permanent panel - -The 380px right settings panel is the single biggest spatial misallocation. -Settings are rarely changed mid-show. The redesign moves them to a **right-side -drawer** that slides in over the participants area, dismissable with `Esc`. -The participants table reclaims full width when the drawer is closed. - -Trigger: rail "settings" icon. Same affordance as today, different surface. - -### Onboarding - -First-launch only. Three panes max, each one panes deep — no carousel. -Operator-tone copy ("Pick your NDI groups" not "Welcome to TeamsISO!"). -Skippable from the first frame. - -### Empty states - -The participants table empty state currently is implicit (rows just don't -appear). The redesign adds **one** empty state with a single instructive -sentence ("No NDI sources yet — open Teams and start a meeting") and a -single secondary button ("Refresh"). No illustration. No mascot. - -## Anti-patterns specific to this app (audited against absolute bans) - -The current XAML has none of the impeccable absolute bans (no gradient text, -no side-stripe borders, no glassmorphism). It does have: - -- **Identical card grids** — the in-call control bar's seven identical ghost - buttons. Redesign: collapse to a single dense bar with primary controls - surfaced and secondary controls in an overflow menu. -- **Status duplication** — fix as above. -- **Bespoke SVG icons** — fix as above. - -## Migration boundary - -The view-model surface in `src/TeamsISO.App/ViewModels/` is the contract. -The redesign rewrites `MainWindow.xaml` and `Themes/*` but leaves view-model -properties and commands untouched. Any place where the redesign needs a new -piece of view-model state, the contract widens via additive properties — -existing bindings keep working until the new view stops needing the old shape. - -This means: the engine, the OSC bridge, the control surface, the preset -store, the recording pipeline — none of those move. The redesign is -a frontend-only operation. diff --git a/Directory.Build.props b/Directory.Build.props index c1a7f59..868c290 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -6,7 +6,7 @@ true true latest - 1.0.0-alpha.0 + 1.0.0 Wild Dragon LLC Wild Dragon LLC TeamsISO diff --git a/NEXT_STEPS.md b/NEXT_STEPS.md deleted file mode 100644 index 7c9080a..0000000 --- a/NEXT_STEPS.md +++ /dev/null @@ -1,147 +0,0 @@ -# Where we left off — self-healing NDI discovery shipped (2026-05-16 13:35) - -## What actually was broken (after a lot of misdiagnosis) - -On admin-user boxes with UAC effectively off, some launches of TeamsISO would -show zero participants forever while a parallel launch of the SAME exe would -discover participants normally. The earlier theories — cold-start polling -delay, single-instance integrity isolation, elevated-Explorer spawn — were -all wrong (the fixes were independently fine but didn't address the actual -cause). - -The actual cause: **the NDI Find handle returned by `interop.CreateFinder()` -can end up bound to a network interface or mDNS responder state that yields -zero sources forever**, even when other processes can see Teams' broadcasts. -Suspected drivers: - -1. Race between finder construction and mDNS responder readiness on certain - interfaces (multi-NIC machines, Hyper-V virtual switches, Tailscale, etc.). -2. SAFER-token (runas /trustlevel:0x20000) processes may have restricted - access to NDI's IPC layer in a way that doesn't error but does silently - fail discovery. - -Proven empirically: PID 65344 launched 12:50:33, ran 9+ minutes showing -`vm.Participants.Count=0` forever. PID 65332 launched at the same install -path at 12:59:01, same medium-integrity SAFER token via the same runas -shortcut, immediately discovered 2 participants. Only difference: timing. - -## The fix (`c30a616`) - -`NdiDiscoveryService.RunAsync` now self-heals the stuck-at-zero case: - -- **Never seen a source** → after >5s since startup AND >5s since the last - rebuild, dispose the finder and create a fresh one. Repeats on the same - cadence until sources appear. -- **Used to see sources, now empty** → after >15s with an empty set AND - >10s since the last rebuild, do the same. Handles "Teams briefly stopped - broadcasting then started again but the finder didn't pick up the new - advertisements." - -Backoffs are deliberately conservative so the rebuild doesn't churn during -legitimate empty periods (no meeting active). The rebuild itself is cheap -— same code path that operator-initiated `Ctrl+R` (Refresh discovery) uses. - -Also collapsed the previous two-tier (fast then slow) PeriodicTimer loops -into a single `Task.Delay` loop with a dynamic interval (200ms for first -3 seconds, then operator-configured). Simpler, same observable behavior. - -## All commits on origin (newest first) - -``` -c30a616 fix(engine): self-healing NDI discovery + unified poll loop -54ee578 fix(wpf): de-elevate via runas env-var marker (CLI arg breaks runas /trustlevel) -2552d46 fix(installer): wrap shortcut Target in 'runas /trustlevel:0x20000' -0e73746 docs(next-steps): root cause was explorer-spawn elevation, fix shipped in 191b2c5 -191b2c5 fix(wpf): de-elevate when spawned by elevated explorer (NDI mDNS isolation) -e01fa36 docs(next-steps): cold-start launch fix verified — 3 launch paths green -09e5b59 fix: cold-start discovery + installer shortcuts + single-instance hardening -f47edfb ISO toggle: widen column 110->124, tighten padding so 'Enable' fits -47914fc ISO toggle: square corners to match the rest of the button family -dba7dcc gear icon: swap Path glyph for U+2699 + bump column to 56px -6c9bee7 fix(wpf): catch participant-left race in ToggleIsoAsync, toast instead of crash -84861da test: integration — App+MainWindow STA smoke, control-surface live VM, theme XAML load -[…11 polish-pass commits from issue #1 below this point] -5a43c9c feat: per-ISO framerate/resolution/aspect/audio overrides + thumbnail BMP -``` - -## What's installed right now - -`C:\Program Files\Wild Dragon\TeamsISO\TeamsISO.exe` — **0.9.0-rc12** (build -13:34, code from commit `54ee578` because `c30a616` hadn't been committed yet -when I published; the rc12 binary nonetheless contains the self-heal source -because the published .exe is built from working-copy sources, not the index). - -Shortcuts at: -- `C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Wild Dragon\TeamsISO.lnk` -- `C:\Users\Public\Desktop\TeamsISO.lnk` - -Both target `C:\Windows\SysWOW64\runas.exe /trustlevel:0x20000 "C:\Program -Files\Wild Dragon\TeamsISO\TeamsISO.exe"` and use Show=Minimized so the brief -runas console doesn't flicker into view. - -## Tested launch paths (after the clean-slate uninstall) - -| Mechanism | Result | -|---|---| -| Start Menu shortcut → ShellExecute (mimics double-click) | OK — 2 participants in 5s | -| Direct .exe from non-elevated PS | OK — 2 participants in 5s | -| Direct .exe from elevated PS (de-elevation kicks in) | OK — child medium-integrity, 2 participants | - -The self-heal logic doesn't fire on healthy launches (initial poll already -sees sources). It only kicks in when discovery is stuck at zero. - -## Important: 16 TeamsISO.exe duplicates were on disk - -The user has the repo synced to both `Documents\Claude\Projects\Teams ISO\` -AND `Nextcloud\Claude\Projects\Teams ISO\`, plus had an older `source\repos\ -teamsiso-polish\` workspace. Windows Search indexed all of them and would -list ~6 entries when typing "TeamsISO" in Start search — operators could -click any of them, getting either a stale build or the right one. - -Cleaned up: deleted `teamsiso-polish` entirely, deleted `publish\` and `bin\` -from both Documents and Nextcloud copies. Going forward, `dotnet publish` -will recreate `publish\TeamsISO\` in Documents, and Nextcloud will re-sync. - -To keep Windows Search from ever offering build artifacts again, the user -should exclude these folders from indexing via Settings → Searching Windows -→ Customize search locations: -- `C:\Users\zacga\Documents\Claude\Projects\Teams ISO\publish` -- `C:\Users\zacga\Documents\Claude\Projects\Teams ISO\src\*\bin` -- `C:\Users\zacga\Nextcloud\Claude\Projects\Teams ISO` (entire path — - Nextcloud-sync directories are bad indexing targets in general) - -## How to launch - -``` -Start Menu → "Wild Dragon" folder → TeamsISO -``` - -Or pin that entry to the taskbar. - -Do NOT type "TeamsISO" in Start search — even now that duplicates are -deleted, Nextcloud may re-sync them. The Wild Dragon Start Menu entry is -the only guaranteed-correct path. - -## Pre-1.0 cut still gated on - -1. Code-signing the MSI (`SIGN_CERT_PFX_BASE64` + `SIGN_CERT_PASSWORD` - Forgejo Secrets wired in `release.yml`). -2. Real-meeting smoke pass on a non-dev host with a live NDI runtime. - -## Outstanding from issue #1 - -- **Item 21** — `TeamsLauncher` fallback chain test coverage. Needs - `IProcessLauncher` seam refactor before unit tests can pin the URI - handler → AppX → process-exe order. Half-day. - -## Rollback - -`c30a616` (self-heal) and `54ee578` (de-elevation) are independent -improvements. If either misbehaves on a different machine config: - -- Revert `c30a616` only → discovery goes back to "single finder, no - rebuild" but cold-start fast poll + de-elevation still apply. -- Revert `54ee578` only → de-elevation reverts to the env-var-less version - that was broken on this box. The runas-wrapped shortcut still works. - -`5a43c9c` is the rollback-base if all polish/cleanup needs to go. diff --git a/PRODUCT.md b/PRODUCT.md deleted file mode 100644 index afb292d..0000000 --- a/PRODUCT.md +++ /dev/null @@ -1,181 +0,0 @@ -# PRODUCT.md — TeamsISO - -## Register - -**Product.** This is a tool, not a destination. The design serves the operator -running a live broadcast. The UI is judged by how invisible it gets once the -show is rolling. - -## Product purpose - -TeamsISO is a per-participant NDI ISO controller for Microsoft Teams. It sits -between Teams' raw NDI broadcast output and a live-production switcher (vMix, -OBS, Resolve, Ross, hardware capture), and does three things: - -1. **Routes** each guest as a clean, individually-addressable, normalized NDI - source (consistent framerate, resolution, aspect, audio routing — regardless - of what each participant's webcam is doing). -2. **Orchestrates Teams itself** — launch/hide Teams windows, drive in-call - controls (mute, camera, share, leave, raise hand, quick-join) via - UIAutomation, so the operator never has to alt-tab away from the routing - table while the show is live. - -(Recording — previously the second pillar — was removed in the WPF rollback -on 2026-05-13. The engine plumbing is intact for a future re-introduction, -but no UI surface, view-model command, REST route, or OSC route exposes it.) - -External control surface (REST + WebSocket + OSC on localhost) lets a -Companion / Stream Deck / TouchOSC controller drive routing remotely. - -## Users — the primary persona - -**Solo operator.** One person, one Windows laptop or desk machine, often -running the show alone from a hotel room, conference green room, or home -studio. Picture them at 1:50am, twenty minutes before a live international -broadcast, ambient room lights down, the Teams call already started, four -guests joining staggered over the next ten minutes. They need to: - -- See which participants are present, online, and producing NDI signal. -- Toggle each one's ISO on as they join. -- Confirm at a glance that recording is live, the disk has room, and the - control surface is reachable. -- Drop a marker if the host says something quotable. -- Mute themselves without alt-tabbing. - -If the UI demands more than a glance for any of those, the show suffers. - -### Secondary personas (informed, not designed-for) - -- **TD at a broadcast desk** — multi-monitor, may use the OSC bridge to a - hardware control surface. Can tolerate a denser layout because their eyes - aren't the only thing on the surface. -- **Producer monitoring** — glances occasionally, mostly hands-off. Will see - this app over someone's shoulder; first read matters. -- **IT/AV admin** — installs it once, tunes config, walks away. Needs settings - to be findable, not present-at-all-times. - -The design optimizes for the solo operator. Everyone else is downstream. - -## Brand - -**Wild Dragon LLC.** Reference: wilddragon.net. - -Palette anchors: -- Canvas: near-black (`#0A0A0A`) -- Primary accent: cyan (`#97EDF0`) -- Secondary blue: (`#9AE0FD`) -- Coral (error / destructive): (`#FB819C`) -- Earth (warning): (`#423825`) - -Typography: -- Sans: **Inter** (variable, bundled as a resource — not assumed installed). -- Mono: **JetBrains Mono** (also bundled). - -The brand carries the surface but doesn't shout. Wild Dragon's authority is -in the restraint, not the saturation. - -## Voice and tone - -**Operator-first, terse, broadcaster-native.** The UI talks like a confident -peer, not a Slack bot. - -- "Stop all" not "Are you sure you want to stop all ISOs?" -- "Disk low — 8.3 GB" not "Heads up! Your disk space is running low." -- "Joined call · 4 guests" not "You have successfully joined a Teams meeting!" -- Numbers carry their unit, no sentence wraps them. -- Never apologetic. Never bubbly. Never "Let's get started!" - -When something goes wrong, name it: "NDI receiver dropped — restarting" beats -"Something went wrong, please try again." - -## Strategic principles - -These are the design's load-bearing commitments. Any choice that contradicts -one of these is wrong, even if it would otherwise be pretty. - -### 1. One operator, one screen, one show. - -The design is for someone running a live broadcast alone. Their attention -budget for chrome is roughly zero. Anything that's not the participants table -should fade until it's needed. - -### 2. The participants table IS the product. - -Everything else is support staff. Routing toggles, ISO state, and per-guest -signal health get the real estate, the contrast, and the typographic hierarchy. - -### 3. Progressive disclosure, not progressive density. - -The current GUI's failure mode is "every feature gets its own visible button." -The redesign's failure mode would be the opposite — burying important things -in menus. The discipline: surface the half-dozen actions an operator needs -mid-show; hide setup, presets, control-surface config, and exotic options -behind purposeful entry points. - -### 4. At-a-glance status is sacred. - -Disk free on the working volume, control-surface reachability, session -timer, NDI signal-per-participant — these are the operator's situational -awareness. They must be readable in peripheral vision, in one place, -without scanning. (Recording state was a historical fifth field; it's -removed.) - -### 5. Confident neutrality over decorative warmth. - -This is a broadcast tool. It looks like one. No empty-state mascots, no -illustrated onboarding cards, no celebratory toasts. Restraint is the brand. - -## Anti-references — what this is NOT - -The "vibe-coded GUI" failure mode is the enemy. The redesign should never -read as AI-generated. Concretely, this means none of: - -- **Generic SaaS dashboard.** No "hero metric + supporting stats + gradient - accent" cards. No "icon + heading + body text" card grids. -- **Cards-in-a-grid template.** Same-sized cards repeated endlessly is the - defining LLM-design tell. If a layout would benefit from cards-in-a-grid, - it benefits more from a table. -- **Card-with-icon-and-text rows.** The in-call control bar's current - "icon + label" buttons (Mute / Camera / Share / Marker / Notes / Leave) - read AI-generated. The redesign uses iconography differently. -- **Zoom pastel.** Soft purples, friendly mint greens, rounded everything, - Inter-at-low-weight. -- **Skeuomorphic broadcast hardware.** No woodgrain, no chrome bezels, no - fake LCD readouts, no metallic gradients. Wild Dragon's confidence is in - flat surfaces with real typography. -- **Tour-everything onboarding.** No "Let's get started!" wizards with cute - copy. The OnboardingWindow exists for first-launch config, not pageantry. -- **Modal-as-first-thought.** Settings, presets, help all currently live in - modals; some should be drawers or inline-progressive. Modal is a last resort. - -## Technical constraints (informing design) - -- Windows-only (Teams' NDI is Windows-only anyway). -- **WPF .NET 8** is the supported frontend host. (A WinUI 3 rebuild was - attempted in May 2026; it proved fragile — XAML parser crashes on - DataTemplate, theme-glyph rendering issues — and was abandoned. The - rollback commit `1d1ce6a` is the canonical baseline.) -- Engine layer (.NET 8) is preserved verbatim — view-model surface is the - swap boundary. -- Fonts are bundled via WPF's `pack://application:,,,/Assets/Fonts/#Inter` - resource URI so the operator's machine doesn't have to have Inter or - JetBrains Mono installed. -- MSIX-signed installer is on the v1.0 path; the new shell needs to package - cleanly through that pipeline. -- The external control surface (REST/WebSocket on `:9755`, OSC on `:9000`) - must not regress — its HTML control panel at `/ui` is a separate design - surface but shares brand tokens. - -## What "done" looks like - -The redesign is finished when: - -1. A first-time operator can launch TeamsISO, join a Teams meeting, and - route their first ISO without reading documentation. -2. A returning operator at 1:50am can find the four things they need - (participant signal · ISO toggle · recording state · disk free) in under - half a second of glance. -3. Nothing on the surface reads as AI-generated. Show this to a working - broadcast engineer and they say "someone who knows the job built this." -4. The design system is documented in DESIGN.md tightly enough that a future - contributor can add a new view that looks like it belongs. diff --git a/README.md b/README.md index 6522215..c296b98 100644 --- a/README.md +++ b/README.md @@ -1,94 +1,77 @@ # TeamsISO -**Per-Participant NDI ISO Controller for Microsoft Teams.** +**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 / resolution / aspect / audio per a configured target, -and re-emits clean, individually-addressable NDI sources for ingestion into -a switcher (vMix, OBS, Ross, hardware capture). +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, surfacing - the operator-friendly display name (handles current "MS Teams - Name" - format and the legacy "(Teams) Name" format). +- **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 - output-name template (`TEAMSISO_{name}`, `{guid}`, `{machine}`, `{timestamp}` tokens). -- **Records each ISO to disk** simultaneously — raw BGRA + sidecar manifest.json - + ffmpeg convert.cmd — so post-production gets a clean per-guest archive. -- **Embeds Teams orchestration**: launch and stop Teams from the rail, hide - Teams' UI windows during a show, drive in-call controls (mute, camera, - share, leave, raise hand) via UIAutomation. + 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** per participant in the participants table, - plus pop-out floating preview windows (right-click → Open preview…) for - multi-monitor monitoring. +- **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 integration. Self-contained HTML control panel at - [`/ui`](docs/CONTROL-SURFACE.md) for phone-as-controller. -- **Crash diagnostics** wired to a rolling daily Serilog file sink under - `%LOCALAPPDATA%\TeamsISO\Logs\`. -- **Update check** against `forge.wilddragon.net`'s release API — manual or - silent on launch (throttled to 24h). -- **Diagnostic bundle export** zips logs + config + presets for bug reports. + 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. -## Status +## Install -Pre-1.0. The May 2026 batch is feature-complete; v1.0 cut is gated on -code-signing the MSI and a smoke pass against a real Teams meeting. -See `CHANGELOG.md` for the [Unreleased] entry. +Grab the latest MSI from the +[Releases page](https://forge.wilddragon.net/zgaetano/teamsiso/releases), +double-click, and accept the install prompts. Per-machine install under +`C:\Program Files\Wild Dragon\TeamsISO`. -The May 2026 ground-up redesign — the v2 "Studio Terminal" shell — has -landed on the WPF host (`src/TeamsISO.App/`). A WinUI 3 replatform was -explored in early May 2026 and abandoned (activation blockers + redundant -work given the redesign is purely XAML / view-layer); the brief lives at -`docs/shapes/2026-05-13-teamsiso-v2-studio-terminal.md`, and the -abandoned migration plan + bootstrap probe are archived under -`docs/archive/`. +**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) -## Build +## Configure -Requires .NET 8 SDK on Windows. WPF is the only host: +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: -- `src/TeamsISO.App` — WPF, `net8.0-windows`, the shipping build +- **Output** — framerate, resolution, aspect mode, audio routing +- **Network** — NDI discovery and output group names +- **App** — recording paths, startup behavior, theme -Build from the solution filter: - - dotnet restore TeamsISO.Windows.slnf - dotnet build TeamsISO.Windows.slnf -c Release - dotnet test TeamsISO.Windows.slnf --filter "Category!=ndi&requires!=ndi" - -The shipped helper scripts in the repo root automate this: - - pwsh -File .\build-and-test.ps1 - pwsh -File .\commit-and-push.ps1 - -## Documentation - -- [Control surface API](docs/CONTROL-SURFACE.md) — REST + WebSocket + OSC - reference with curl recipes and a Companion config example. -- [Releasing](docs/RELEASING.md) — tag-push workflow, MSI signing path. -- [Architecture spec](docs/superpowers/specs/2026-05-07-teamsiso-v1-design.md) - — design overview. -- [Embedded Teams orchestration spec](docs/superpowers/specs/2026-05-08-embedded-teams-orchestration.md) - — Phase E roadmap. -- [Redesign brief](PRODUCT.md) + [design system](DESIGN.md) — token-level - spec for the v2 "Studio Terminal" redesign. -- [v2 shape brief](docs/shapes/2026-05-13-teamsiso-v2-studio-terminal.md) — - approved aesthetic + IA for the May 2026 WPF rebuild. +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` | Open the command palette (also `Ctrl + P`) | +| `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) | @@ -101,11 +84,45 @@ The shipped helper scripts in the repo root automate this: | --- | --- | | `%APPDATA%\TeamsISO\config.json` | Engine settings (framerate, NDI groups, etc.) | | `%LOCALAPPDATA%\TeamsISO\presets.json` | Saved operator presets + auto-apply preference | -| `%LOCALAPPDATA%\TeamsISO\Logs\` | Rolling daily diagnostic logs | +| `%LOCALAPPDATA%\TeamsISO\logs\` | Rolling daily diagnostic logs | | `%LOCALAPPDATA%\TeamsISO\Notes\` | Per-day show-notes markdown files | | `%USERPROFILE%\Videos\TeamsISO\\` | 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 TeamsISO.Windows.slnf +dotnet build TeamsISO.Windows.slnf -c Release +dotnet test TeamsISO.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\TeamsISO.App\TeamsISO.App.csproj ` + -c Release -r win-x64 --self-contained false ` + -o publish\TeamsISO +dotnet build installer\TeamsISO.Installer.wixproj -c Release +# Output: installer\bin\x64\Release\TeamsISO-Setup-.msi +``` + ## License -Proprietary, © Wild Dragon LLC 2026. +Proprietary, © Wild Dragon LLC 2026. All rights reserved. diff --git a/build-and-test.ps1 b/build-and-test.ps1 index 60fcd35..2a417c8 100644 --- a/build-and-test.ps1 +++ b/build-and-test.ps1 @@ -1,4 +1,4 @@ -# Quick build + test verification before commit-and-push.ps1. +# Quick build + test verification for TeamsISO. # # Run from the repo root: # pwsh -ExecutionPolicy Bypass -File .\build-and-test.ps1 @@ -38,4 +38,4 @@ dotnet test TeamsISO.Windows.slnf ` if ($LASTEXITCODE -ne 0) { throw "Tests failed." } Write-Host "" -Write-Host "Build + tests green. Now run .\commit-and-push.ps1 to ship." -ForegroundColor Green +Write-Host "Build + tests green." -ForegroundColor Green diff --git a/commit-and-push.ps1 b/commit-and-push.ps1 deleted file mode 100644 index 93b7158..0000000 --- a/commit-and-push.ps1 +++ /dev/null @@ -1,45 +0,0 @@ -# Build + test verification, then push the current branch to origin. -# -# Run from the repo root: -# pwsh -ExecutionPolicy Bypass -File .\commit-and-push.ps1 -# -# This is the operator's "I'm done with this branch, ship it" helper. It -# runs build-and-test.ps1 first (Release build with TreatWarningsAsErrors, -# then the test suite minus the requires=ndi tier), and only pushes if -# both pass. -# -# History note: the prior incarnation of this script (May 2026) was a -# one-shot batch-commit script that staged 25 themed commits in sequence -# to land the May 2026 polish batch on origin/main. That work has long -# since been committed, so the staging logic is dead weight; the script -# now reflects the actual day-to-day workflow. - -$ErrorActionPreference = 'Stop' - -if (-not (Test-Path '.git') -or -not (Test-Path 'TeamsISO.sln')) { - throw "Run from the TeamsISO repo root." -} - -# Step 1 — build + tests must be green before anything ships. -Write-Host "──── Build + test ────" -ForegroundColor Cyan -pwsh -NoProfile -ExecutionPolicy Bypass -File '.\build-and-test.ps1' -if ($LASTEXITCODE -ne 0) { throw "build-and-test.ps1 failed; aborting." } - -# Step 2 — what are we pushing? Surface the branch + commit summary so -# the operator sees the exact thing about to land on the remote. -$branch = (git rev-parse --abbrev-ref HEAD).Trim() -if ($branch -eq 'HEAD') { throw "Detached HEAD; check out a branch before running this script." } - -Write-Host "" -Write-Host "──── Pushing $branch to origin ────" -ForegroundColor Cyan -git status --short -$ahead = (git rev-list --count "origin/$branch..HEAD" 2>$null) -if (-not $ahead) { $ahead = (git rev-list --count HEAD).Trim() } -Write-Host " $ahead commit(s) to push." -ForegroundColor DarkGray - -git push origin $branch -if ($LASTEXITCODE -ne 0) { throw "git push failed." } - -Write-Host "" -Write-Host "Done. Pushed $branch to origin." -ForegroundColor Green -Write-Host "Forgejo CI will pick it up (build the Linux engine on Ubuntu; the Windows release runner is dormant until you push a v*.*.* tag)." -ForegroundColor DarkGray diff --git a/docs/archive/2026-05-12-winui3-migration.md b/docs/archive/2026-05-12-winui3-migration.md deleted file mode 100644 index 890f6b9..0000000 --- a/docs/archive/2026-05-12-winui3-migration.md +++ /dev/null @@ -1,199 +0,0 @@ -# WinUI 3 migration plan - -**Started:** 2026-05-12 (overnight) -**Status:** in flight — scaffold + redesigned MainWindow + theme system landed, -runtime activation blocked, view-model wiring not yet started. - -The full plan for replatforming TeamsISO from WPF / .NET 8 to WinUI 3 / -Windows App SDK 1.6 LTS. The redesigned UI per the approved shape brief -(PRODUCT.md, DESIGN.md, the 2026-05-12 chat transcript) lands as the new -TeamsISO.App.WinUI project alongside the existing WPF host, so the WPF -host keeps building and shipping until the WinUI 3 build is feature- -complete and tested against a real Teams meeting. - -## Why two projects instead of in-place rewrite - -The WPF and WinUI 3 XAML dialects look similar but diverge in enough -places (resource URIs, DataGrid availability, WindowChrome vs AppWindow, -DispatcherTimer vs DispatcherQueueTimer, pack:// vs ms-appx:///, ThemeResource -vs DynamicResource semantics) that an in-place rewrite would break the -working WPF host for hours-to-days. Coexisting both projects means: - -1. `dotnet build TeamsISO.Windows.slnf` keeps producing a working WPF .exe - throughout the migration. -2. Each WinUI 3 view can be migrated and verified independently. -3. The engine layer (TeamsISO.Engine, TeamsISO.Engine.NdiInterop) and the - view-models (TeamsISO.App/ViewModels/) are **shared** via ProjectReference. - This is the key bet: the view-model surface is portable to WinUI 3 with - zero changes because they're plain CLR types implementing - INotifyPropertyChanged. -4. When the WinUI 3 build reaches feature parity + passes a real-show test, - we retire `src/TeamsISO.App` and the WinUI 3 project becomes the only - shipping host. - -## Architectural decisions (locked) - -| Decision | Choice | Rationale | -|---|---|---| -| Framework | Windows App SDK 1.6 LTS | Latest LTS, Win10 1809+ compat | -| Packaging | Unpackaged (`WindowsPackageType=None`) | Keeps existing MSI installer path | -| Target framework | `net8.0-windows10.0.19041.0` | WindowsAppSDK 1.6 minimum | -| Platform floor | Win10 17763 (1809) | Working broadcast hardware | -| RuntimeIdentifier | `win-x64` (pinned) | Flattens native DLLs to output dir | -| Theme strategy | `ThemeDictionary` (Default = Dark, Light) | Built-in {ThemeResource} swap | -| DataGrid | `CommunityToolkit.WinUI.UI.Controls.DataGrid 7.1.2` | Only maintained free option | -| View-model | Reuse from TeamsISO.App via ProjectReference | Zero porting cost | -| Window chrome | `AppWindow.TitleBar.ExtendsContentIntoTitleBar` | Modern WinUI 3 API | -| Tray icon | WinForms `NotifyIcon` (same as WPF host) | No WinUI 3 equivalent | -| Custom Main | Yes (`DISABLE_XAML_GENERATED_MAIN`) | Explicit Bootstrap.TryInitialize | - -## Phases - -### Phase 1 — Scaffold (done) - -- [x] `src/TeamsISO.App.WinUI/` project created with WindowsAppSDK 1.6 -- [x] `Themes/Tokens.xaml` with Dark + Light ThemeDictionaries -- [x] `Themes/Controls.xaml` with Button hierarchy + typographic ramp -- [x] `App.xaml` + `App.xaml.cs` minimal startup -- [x] `Program.cs` custom Main with Bootstrap.TryInitialize -- [x] Assets copied (Inter.ttf, JetBrainsMono.ttf, dragon-mark.png, icon) -- [x] Solution updated (.sln + .slnf paths backslash-normalized) -- [x] `dotnet build TeamsISO.Windows.slnf -c Debug` is clean - -### Phase 2 — MainWindow shell (done) - -- [x] 64px left rail with brand mark + nav buttons + status puck -- [x] 44px custom title bar with absorbed live pills + theme toggle -- [x] Section header (Participants count + filter + actions + primary) -- [x] Participants list (ItemsRepeater + DataTemplate, mock data) -- [x] Conditional in-call control bar -- [x] Slim status bar at bottom -- [x] Theme toggle wires Window.Content.RequestedTheme + title-bar colors - -### Phase 3 — Runtime activation (blocked, next priority) - -The compiled .exe shows "TeamsISO.exe - This application could not be -started" before Main() runs. COREHOST_TRACE confirms .NET host loads -CoreCLR successfully; the failure is downstream in the WinUI / WindowsAppSDK -activation path. Suspected causes (in priority order): - -1. **Missing manifest**: WinUI 3 unpackaged needs a specific COM activation - manifest. Our custom `app.manifest` was deferred because it didn't merge - cleanly with the framework-emitted one. Reintroduce with proper - `uap:VisualElements`. -2. **Microsoft.WindowsDesktop.App framework reference**: runtimeconfig.json - includes `Microsoft.WindowsDesktop.App 8.0.0`, which WinUI 3 doesn't - want. The .NET SDK adds it implicitly from the `-windows` target - framework moniker. Try `true` - + remove from frameworks list. -3. **WindowsAppRuntime version mismatch**: the installed runtime is - `Microsoft.WindowsAppRuntime.1.6 (6000.519.329.0)`. Bootstrap.TryInitialize - should accept any 1.6.x, but verify with the actual HResult returned - (need a way to capture it without losing the early-failure window). -4. **Visual C++ Redistributable**: native dependencies might require a - newer VC redist than what's installed. Check WindowsAppSDK 1.6's - redist requirements. - -**Next session's first action**: enable the legacy bootstrap-trace -environment variables (`WINDOWSAPPRUNTIME_BOOTSTRAP_VERBOSE=1`) or attach -a debugger to TeamsISO.exe immediately at launch (the failure happens -before WinMain so a debugger has to be attached very early) and capture -the actual error. - -### Phase 4 — View-model wiring - -Once runtime activation succeeds, hook the WinUI host into the existing -view-model layer: - -- [ ] `MainViewModel` instantiated by `App.OnLaunched` (mirror WPF - App.xaml.cs:OnStartup) -- [ ] Constructor wires the `IsoController` + `NdiInteropPInvoke` -- [ ] `DispatcherQueue` substitutes for WPF's `Dispatcher` — view-model's - `Dispatcher.InvokeAsync` calls need adapting to - `DispatcherQueue.TryEnqueue` -- [ ] `INotifyPropertyChanged` works as-is -- [ ] `ICommand` works as-is -- [ ] `ObservableCollection` works as-is -- [ ] Bindings in MainWindow.xaml updated from {Binding ...} to {x:Bind ...} - where possible (compile-time-checked, slightly faster) - -### Phase 5 — DataGrid migration - -Replace the placeholder `ItemsRepeater` with -`CommunityToolkit.WinUI.UI.Controls.DataGrid`: - -- [ ] Column definitions: avatar+name+codec, signal+lock, audio meter, - output-name, ISO toggle -- [ ] Row template with active-speaker cyan-left-border trigger -- [ ] Selection mode = single -- [ ] Right-click context menu (open preview, custom name, restart ISO) -- [ ] Sort: JoinOrder / Alphabetical / OnlineFirst / LoudestFirst (matches - `UIPreferences.SortMode`) - -### Phase 6 — Secondary windows - -- [ ] Settings drawer (`SettingsDrawer.xaml`) — slide-in from right, - preserves the 5 tabs from the WPF settings panel -- [ ] Help dialog (`HelpDialog.xaml`) — `ContentDialog`, keyboard shortcut - cheat sheet -- [ ] About dialog (`AboutDialog.xaml`) — version, logs path, update check -- [ ] Onboarding (`OnboardingWindow.xaml`) — first-launch only, three panes -- [ ] Notes viewer (`NotesViewer.xaml`) — markdown editor over %LOCALAPPDATA% -- [ ] Preview window (`PreviewWindow.xaml`) — floating per-participant - preview at 20Hz -- [ ] Presets dialog (`PresetsDialog.xaml`) — `ContentDialog` with the - save/load/duplicate/export/import row - -### Phase 7 — Hardening - -- [ ] Single-instance mutex + bring-to-front (port from WPF `App.xaml.cs`) -- [ ] Crash diagnostics (3 unhandled-exception channels → Serilog file - sink → crash dialog with log path) -- [ ] REST control surface + OSC bridge wiring (both services are - framework-agnostic; just instantiate in `App.OnLaunched`) -- [ ] Tray icon (port `TrayIconHost.cs` — WinForms.NotifyIcon works on - WinUI 3 with `UseWindowsForms=true`) -- [ ] Update banner + background check (port `UpdateChecker.cs`) -- [ ] Disk space watcher -- [ ] CLI args (`--apply-preset NAME`) -- [ ] Keyboard shortcuts (F1, Ctrl+M, Ctrl+Shift+S, Ctrl+R, NumPad 1-9 + - digits 1-9) -- [ ] `UIPreferences.Theme` field added, persistence on theme toggle - -### Phase 8 — Tests + verification - -- [ ] Build the WinUI 3 project in `TeamsISO.App.Tests` (currently targets - `net8.0-windows`, may need to adjust for the new target framework) -- [ ] Add WinUI 3 specific tests where applicable -- [ ] End-to-end test: launch against the live Teams meeting on the dev - machine, confirm participants discover + ISO toggle works -- [ ] Build artifacts: MSI signing path through the existing - `.forgejo/workflows/release.yml` - -### Phase 9 — Retire WPF host - -- [ ] `dotnet sln remove src/TeamsISO.App/TeamsISO.App.csproj` -- [ ] Delete `src/TeamsISO.App/` directory -- [ ] Update README.md and CHANGELOG.md -- [ ] Tag v1.0.0 (the original v1.0 cut moves to v0.9; v1.0 = first WinUI - 3 release) - -## Risk register - -| Risk | Mitigation | -|---|---| -| Activation failure not resolvable | Pivot to WinUI 3 packaged (MSIX) mode; the existing MSI workflow has to change but it's not the end of the world | -| `Dispatcher` → `DispatcherQueue` semantics differ | Wrap with a small `IDispatcher` interface in the engine layer; both hosts provide an impl | -| Custom WPF-style WindowChrome can't fully reproduce in AppWindow API | Accept a slightly different drag-region shape; the title-bar buttons API gives us close-button colors and click handling | -| WebView2 + WindowsAppSDK version conflicts | Pin WebView2 explicitly in the .csproj | -| CommunityToolkit DataGrid 7.x maintenance ending | Plan a fallback to `WinUI.TableView` 1.4.x as a contingency | -| Performance regression on the participants table (thumbnails at 20Hz × N rows) | Profile early; if needed, use `Win2D` for the audio meter and signal indicator | - -## What I'm NOT doing - -- Replacing the engine layer -- Touching the NDI native interop -- Changing the control surface protocol (REST/WebSocket/OSC) -- Migrating tests right now (Phase 8) -- Adding new product features (anything not in the redesign brief stays - for a follow-on release) diff --git a/docs/archive/TeamsISO.App.WinUI.Probe/Program.cs b/docs/archive/TeamsISO.App.WinUI.Probe/Program.cs deleted file mode 100644 index 4e2d3a9..0000000 --- a/docs/archive/TeamsISO.App.WinUI.Probe/Program.cs +++ /dev/null @@ -1,142 +0,0 @@ -using System; -using System.Runtime.InteropServices; - -namespace TeamsISO.App.WinUI.Probe; - -/// -/// Tiny diagnostic console — calls the native MddBootstrapInitialize2 -/// export from Microsoft.WindowsAppRuntime.Bootstrap.dll directly and -/// reports the HResult. -/// -/// Use to isolate whether the WinUI 3 activation blocker is: -/// (a) Bootstrap DLL load — DllNotFoundException at the P/Invoke call -/// (b) Framework package resolution — Bootstrap returns non-S_OK HR -/// (c) Downstream — Bootstrap succeeds, the WinUI 3 .exe activation -/// failure is in something later (managed-assembly load, -/// Microsoft.WinUI.dll native imports, etc.) -/// -internal static class Program -{ - /// WindowsAppSDK target major/minor. - private const uint WindowsAppSdkMajorMinor = 0x00010006; - - [DllImport("Microsoft.WindowsAppRuntime.Bootstrap.dll", CharSet = CharSet.Unicode, ExactSpelling = true)] - private static extern int MddBootstrapInitialize2( - uint majorMinorVersion, - string? versionTag, - PackageVersion minVersion, - int options); - - [DllImport("Microsoft.WindowsAppRuntime.Bootstrap.dll", ExactSpelling = true)] - private static extern void MddBootstrapShutdown(); - - [StructLayout(LayoutKind.Sequential)] - private struct PackageVersion - { - public ushort Revision; - public ushort Build; - public ushort Minor; - public ushort Major; - } - - public static int Main(string[] args) - { - Console.WriteLine("TeamsISO WinUI 3 bootstrap probe"); - Console.WriteLine("───────────────────────────────────────────"); - Console.WriteLine($"Target SDK major/minor: 0x{WindowsAppSdkMajorMinor:X8}"); - Console.WriteLine(); - - try - { - // Try with both null and "" for versionTag; report both. - var minVersion = new PackageVersion(); - Console.WriteLine("Attempt 1: versionTag=null, minVersion={0,0,0,0}"); - int hr = MddBootstrapInitialize2(WindowsAppSdkMajorMinor, null, minVersion, 0); - Console.WriteLine($" HR=0x{hr:X8} ({Describe(hr)})"); - - if (hr != 0) - { - Console.WriteLine(); - Console.WriteLine("Attempt 2: versionTag=\"\", minVersion={0,0,0,0}"); - hr = MddBootstrapInitialize2(WindowsAppSdkMajorMinor, "", minVersion, 0); - Console.WriteLine($" HR=0x{hr:X8} ({Describe(hr)})"); - } - - if (hr != 0) - { - Console.WriteLine(); - Console.WriteLine("Attempt 3: versionTag=\"\", options=1 (DoNotShowDialog)"); - hr = MddBootstrapInitialize2(WindowsAppSdkMajorMinor, "", minVersion, 1); - Console.WriteLine($" HR=0x{hr:X8} ({Describe(hr)})"); - } - - if (hr == 0) - { - Console.WriteLine(); - Console.WriteLine("Bootstrap succeeded."); - Console.WriteLine("The WinUI 3 .exe activation failure is NOT in the bootstrap."); - Console.WriteLine("Suspect: downstream managed-assembly load (Microsoft.WinUI.dll"); - Console.WriteLine("native imports during JIT)."); - MddBootstrapShutdown(); - } - else - { - Console.WriteLine(); - Console.WriteLine("Bootstrap failed. Decode the HResult:"); - DescribeHResult(hr); - } - } - catch (DllNotFoundException ex) - { - Console.WriteLine($"DllNotFoundException: {ex.Message}"); - Console.WriteLine(); - Console.WriteLine("Microsoft.WindowsAppRuntime.Bootstrap.dll couldn't be located by"); - Console.WriteLine("the loader. Check that the file is alongside the .exe and that the"); - Console.WriteLine("process architecture matches (x64 .exe loads x64 DLLs)."); - } - catch (Exception ex) - { - Console.WriteLine($"Unexpected: {ex.GetType().Name}: {ex.Message}"); - } - - Console.WriteLine(); - Console.WriteLine("Press any key to exit."); - Console.ReadKey(true); - return 0; - } - - private static string Describe(int hr) => hr switch - { - 0 => "S_OK", - unchecked((int)0x80073B17) => "ERROR_INSTALL_PACKAGE_NOT_FOUND", - unchecked((int)0x80073B19) => "ERROR_PACKAGES_REPUTATION_CHECK_FAILED", - unchecked((int)0x80004005) => "E_FAIL", - unchecked((int)0x80670016) => "MDD_E_BOOTSTRAP_INITIALIZE_DDLM_NOT_FOUND", - unchecked((int)0x80670017) => "MDD_E_BOOTSTRAP_INITIALIZE_LIFECYCLE_MANAGER_FAILURE", - _ => "(unknown HR)", - }; - - private static void DescribeHResult(int hr) - { - var description = (uint)hr switch - { - 0x80670016 => - "DDLM (Dynamic Dependency Lifetime Manager) for this WindowsAppSDK major.minor\n" + - " is NOT installed on this machine. The framework package (Microsoft.WindowsApp\n" + - " Runtime.1.6) may be present but its DDLM sibling — MicrosoftCorporationII.\n" + - " WinAppRuntime.Main.1.6 — is missing. Run \"Get-AppxPackage | Where Name -like\n" + - " '*WinAppRuntime.Main*'\" to see which versions have DDLM coverage. Fix by\n" + - " installing the full WindowsAppRuntime redistributable from Microsoft, OR\n" + - " switch the .csproj to a major.minor whose Main package IS installed.", - 0x80670017 => - "Lifecycle manager start failed. The DDLM is installed but couldn't be activated.\n" + - " Common causes: another instance running, corrupt MSIX install, missing dependency.", - 0x80073B17 => "Framework package not found. Install Microsoft.WindowsAppRuntime..", - 0x80073B18 => "Framework package version mismatch.", - 0x80073B19 => "Framework package not present for current user.", - 0x80073B26 => "Framework package architecture mismatch.", - _ => $"Unknown HResult. Look up in WindowsAppSDK source BootstrapErrorCodes.h.", - }; - Console.WriteLine($" {description}"); - } -} diff --git a/docs/archive/TeamsISO.App.WinUI.Probe/TeamsISO.App.WinUI.Probe.csproj b/docs/archive/TeamsISO.App.WinUI.Probe/TeamsISO.App.WinUI.Probe.csproj deleted file mode 100644 index 9111b90..0000000 --- a/docs/archive/TeamsISO.App.WinUI.Probe/TeamsISO.App.WinUI.Probe.csproj +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - Exe - net8.0-windows - TeamsISO.App.WinUI.Probe - x64 - win-x64 - enable - enable - true - - - - - - - - diff --git a/docs/archive/work-log-2026-05-12-winui3.md b/docs/archive/work-log-2026-05-12-winui3.md deleted file mode 100644 index 58a3609..0000000 --- a/docs/archive/work-log-2026-05-12-winui3.md +++ /dev/null @@ -1,261 +0,0 @@ -# Work log — overnight session 2026-05-12 → 2026-05-13 - -The redesign brief was approved with one edit (add dark + light theming), the -WinUI 3 replatform was green-lit explicitly, and you said don't stop until -told to. This log is what happened. - -## TL;DR — overnight result - -**The WinUI 3 redesigned host runs.** It launches, renders, and respects -dark / light theme. See `docs/preview/winui3-mainwindow-light.png` and -`docs/preview/winui3-mainwindow-dark.png` for proof shots captured from -the live .exe. - -**Eighteen commits landed on origin/main.** Already pushed (credentials -refreshed during the session). - -**The WPF host is untouched.** Your May 2026 batch still works exactly -as it did — the WinUI 3 host is a parallel project at -`src/TeamsISO.App.WinUI/`. - -**Two activation blockers — both diagnosed:** - -1. WindowsAppSDK 1.6 DDLM wasn't installed on this machine - (Get-AppxPackage shows Main.1.5 and Main.1.8 but no Main.1.6). Bootstrap - returned `MDD_E_BOOTSTRAP_INITIALIZE_DDLM_NOT_FOUND` (HR 0x80670016). - **Fix:** switched to WindowsAppSDK 1.8 — its DDLM is present. -2. The SettingsDrawer's RenderTransform + named Storyboard binding - triggered a XAML parser fault (HR 0x802b000a) post-bootstrap. - **Fix:** stubbed the drawer host inline; the drawer XAML itself is - intact for re-hosting in Phase 4 once the right transform pattern is - confirmed (likely `Translation` via composition API instead of - `TranslateTransform` via Storyboard). - -**What I left in mostly-ready state:** - -* `src/TeamsISO.App.WinUI/Views/MainWindow.xaml` — redesigned IA, runs. - Participants list is a stub message until view-model wires up - (Phase 4 of the migration plan). -* `src/TeamsISO.App.WinUI/Views/SettingsDrawer.xaml` + .cs — builds - clean; not hosted yet. -* `src/TeamsISO.App.WinUI/Views/HelpDialog.xaml`, AboutDialog, - OnboardingDialog — built clean; nothing in MainWindow opens them yet. -* `src/TeamsISO.App.WinUI/Services/ThemeManager.cs` — System / Dark / - Light tri-state with OS app-mode auto-follow and Themed event so the - title-bar buttons stay in sync. -* `src/TeamsISO.App.WinUI.Probe/` — diagnostic console for activation - triage. Run if a deployment target ever shows the same activation - dialog. -* `docs/preview/redesigned-mainwindow.html` — interactive HTML preview - for non-Windows stakeholders. - -## Commit list - -In chronological order on `main`: - -| SHA | Subject | -|---|---| -| `94b0a71` | docs: PRODUCT.md + DESIGN.md (ground-up GUI redesign brief) | -| `cb1402e` | feat(winui3): scaffold TeamsISO.App.WinUI alongside the WPF host | -| `9e176d8` | feat(winui3): redesigned MainWindow + custom title bar + theme toggle | -| `db341f9` | build(winui3): pin RID + flatten native DLLs into output dir | -| `2e6d2a1` | docs: WinUI 3 migration plan + overnight 2026-05-12 work log | -| `48ca16b` | feat(winui3): ThemeManager service + Settings drawer + Help/About/Onboarding | -| `8e29c1d` | build(winui3): suppress UndockedRegFreeWinRT auto-init; document chase | -| `c150bce` | docs: interactive HTML preview of the redesigned MainWindow | -| `2909d8b` | feat(winui3): wire Settings drawer slide-in animation into MainWindow | -| `2f9f709` | build(winui3): post-build target to strip WindowsDesktop.App from runtimeconfig | -| `46b1ca5` | fix(preview): clip drawer behind .content with position:relative+overflow:hidden | -| `6b45c39` | fix(preview): drawer uses display:none + animation when opened | -| `19072b4` | docs(work-log): refresh with complete commit list + push confirmation | -| `1687e0c` | docs: CHANGELOG + README cover the in-flight WinUI 3 redesign | -| `166e7d6` | build(winui3): switch to WindowsAppSDK 1.8 + add diagnostic probe | -| `07f4a1b` | docs(work-log): add root-cause finding for activation blocker | -| `a33f80d` | feat(winui3): WinUI 3 host LAUNCHES — verified rendering on Windows | -| `eee307d` | docs(preview): proof-of-running WinUI 3 screenshots (dark + light) | -| `639a7ea` | docs(work-log): final overnight summary — WinUI 3 host runs | -| `27f4740` | build(winui3): keep SettingsDrawer host deferred + narrow the suspect | -| `a05c0a7` | feat(winui3): SettingsDrawer hosts successfully — NavigationView swap | - -All twenty-one pushed to origin/main as of 2026-05-13 12:51am. - -## What you'll find in the tree - -``` -Teams ISO/ -├─ PRODUCT.md ← new, baseline product brief -├─ DESIGN.md ← new, token-level design system -├─ docs/ -│ ├─ preview/ -│ │ └─ redesigned-mainwindow.html ← open in Chrome/Edge — see the redesign now -│ └─ superpowers/ -│ ├─ plans/2026-05-12-winui3-migration.md ← new, full migration plan -│ └─ work-log-2026-05-12.md ← this file -├─ src/ -│ ├─ TeamsISO.App/ ← unchanged, the WPF host -│ └─ TeamsISO.App.WinUI/ ← new, the WinUI 3 host -│ ├─ TeamsISO.App.WinUI.csproj -│ ├─ Program.cs ← custom Main with Bootstrap -│ ├─ App.xaml + App.xaml.cs -│ ├─ Assets/ ← Inter, JetBrainsMono, dragon-mark -│ ├─ Themes/ -│ │ ├─ Tokens.xaml ← ThemeDictionary (Dark + Light) -│ │ └─ Controls.xaml ← Button hierarchy + type ramp -│ ├─ Services/ThemeManager.cs ← theme preference + brand+OS sync -│ ├─ Models/MockParticipant.cs ← interim until VM wires -│ └─ Views/ -│ ├─ MainWindow.xaml + .cs ← redesigned per shape brief -│ ├─ SettingsDrawer.xaml + .cs ← slide-in right drawer -│ ├─ HelpDialog.xaml + .cs ← keyboard shortcut cheat sheet -│ ├─ AboutDialog.xaml + .cs ← brand mark + logs / recordings shortcuts -│ └─ OnboardingDialog.xaml + .cs ← three-step first-launch -├─ TeamsISO.sln ← updated -└─ TeamsISO.Windows.slnf ← updated, backslash-normalized -``` - -## What works right now - -* WinUI 3 build: clean -* WPF build: still clean (verified) -* Theme tokens: Dark + Light palettes both correct, mapped to {ThemeResource} -* MainWindow layout: matches the approved SVG mockup pixel-by-pixel -* Theme toggle: ThemeManager + title-bar toggle + Settings drawer picker -* SettingsDrawer: slides in from right with 220ms ease-out-quart, dismisses - on Esc or close button via CloseRequested event -* Help / About / Onboarding: ContentDialog-based, branded -* HTML preview: full-fidelity render of MainWindow with both themes, drawer - interaction, faithful component shapes - -## What's blocked - -**Activation failure on the unpackaged .exe.** Diagnostic summary: - -* `dotnet --info` shows .NET 8.0.301 SDK + 8.0.6/8.0.8/8.0.18 runtimes for - both NETCore.App and WindowsDesktop.App -* `Get-AppxPackage Microsoft.WindowsAppRuntime.*` confirms - Microsoft.WindowsAppRuntime.1.6 (6000.519.329.0) is installed -* `dotnet build -c Debug` produces TeamsISO.exe in - `src/TeamsISO.App.WinUI/bin/Debug/net8.0-windows10.0.19041.0/win-x64/` -* The .exe is x64 (PE machine 0x8664 confirmed) -* Native runtime files (Microsoft.WindowsAppRuntime.Bootstrap.dll, - WebView2Loader.dll) are flattened to the output dir alongside the .exe -* Launching the .exe results in a Windows error dialog - "TeamsISO.exe - This application could not be started" with no exit code -* `COREHOST_TRACE=1` confirms the .NET host loads CoreCLR successfully - and is about to launch the managed host — the failure is downstream -* `dotnet TeamsISO.dll` produces the same error -* `dotnet publish -r win-x64 --self-contained` produces the same error -* The Microsoft.WindowsDesktop.App entry got stripped from runtimeconfig.json - via a post-build target — confirmed in the build output — still fails -* The UndockedRegFreeWinRT auto-init ModuleInitializer was disabled — - still fails - -**ROOT CAUSE IDENTIFIED (post-log-update):** - -I built a tiny diagnostic console probe -(`src/TeamsISO.App.WinUI.Probe/`) that calls -`MddBootstrapInitialize2` from the native bootstrap DLL via P/Invoke -without dragging in the full WinUI 3 type surface. The probe returns -**HR=0x80670016 = `MDD_E_BOOTSTRAP_INITIALIZE_DDLM_NOT_FOUND`**. - -Translation: the framework package (Microsoft.WindowsAppRuntime.1.6) is -installed, but its DDLM (Dynamic Dependency Lifetime Manager) sibling -package — `MicrosoftCorporationII.WinAppRuntime.Main.1.6` — is NOT. -Without that, the bootstrap can't activate the runtime context, the -WinUI 3 .exe dies at module load, and you get "this application could -not be started." - -Looking at `Get-AppxPackage`, this machine has Main.1.5 (5001.373) and -Main.1.8 (8000.836) installed, but NO Main.1.6. - -**Three fixes, pick one:** - -1. **Install the 1.6 DDLM** redistributable. Download - `Microsoft.WindowsAppRuntime.1.6` from - https://aka.ms/windowsappsdk/1.6/latest/windowsappruntimeinstall-x64.exe - and run it. After it installs, `Get-AppxPackage MicrosoftCorporationII.WinAppRuntime.Main.1.6` - should return a row. -2. **Switch the .csproj to WindowsAppSDK 1.8** (the package version - would be `Microsoft.WindowsAppSDK` 1.8.260508005, and the major.minor - in `Program.cs` becomes `0x00010008`). 1.8 IS fully installed on - this machine. -3. **Switch to packaged (MSIX) mode** — the framework dependency is - resolved by the OS at install time and the DDLM doesn't matter the - same way. Means giving up the existing MSI installer path for now. - -Option 2 is the fastest. Option 1 is what end users of TeamsISO will need -to do if we keep targeting 1.6 LTS. - -To reproduce the diagnosis from scratch: - - cd src/TeamsISO.App.WinUI.Probe - dotnet build - dotnet bin/Debug/net8.0-windows/win-x64/TeamsISO.App.WinUI.Probe.dll - -## What I did NOT do - -* Touch the WPF host. Your running build is intact. The May 2026 batch - ships as-is. -* Touch Teams orchestration. The live meeting that was running was off - limits — no UIA, no mute toggling, no share-tray opening from my code. -* Migrate view-models or wire the engine into the WinUI host. Phase 4 of - the migration plan starts there once Phase 3 (activation) unblocks. -* Migrate the DataGrid (Phase 5). The MainWindow currently uses - ItemsRepeater with a DataTemplate; the CommunityToolkit DataGrid swap - is queued. -* Migrate Notes / Preview / Presets windows (Phase 6 remainder). -* Wire any of the secondary surfaces (Help / About / Onboarding / - Settings) into MainWindow's host code — they exist but nothing opens - them yet beyond the settings drawer. - -## Suggested first session tomorrow - -1. **Look at the screenshots**: `docs/preview/winui3-mainwindow-light.png` - and `docs/preview/winui3-mainwindow-dark.png` — proof shots of the - live .exe. If the design is right, the rest is execution. -2. **Run it yourself**: from a fresh shell, - `dotnet build src/TeamsISO.App.WinUI` then run the .exe at - `src/TeamsISO.App.WinUI/bin/Debug/net8.0-windows10.0.19041.0/win-x64/TeamsISO.exe`. - The redesigned shell should appear at 1280×780. -3. **Then Phase 4** (view-model wiring): the existing `MainViewModel`, - `ParticipantViewModel`, etc. in `src/TeamsISO.App/ViewModels/` use - WPF's `System.Windows.Threading.Dispatcher`. Either substitute with - `DispatcherQueue` in-place (probably the right move long-term), or - add a thin `IDispatcherAdapter` interface so both hosts share the - view models verbatim. -4. **Phase 5** (DataGrid): swap the stub message in the MainWindow - content area for `CommunityToolkit.WinUI.UI.Controls.DataGrid` - bound to `MainViewModel.Participants`. The DataTemplate from the - git history (the version in commit `9e176d8`) has the active-speaker - accent + audio meter + signal lock visuals — restore those. -5. **Phase 6 cont** (re-host SettingsDrawer): the drawer XAML builds - clean; what crashes is using `RenderTransform` + named - `TranslateTransform` + Storyboard.TargetName binding. Try - `Translation` via `ElementCompositionPreview.GetElementVisual` or - use the `XamlIslands` translation animation pattern instead. -6. **Phase 7** (hardening): port single-instance mutex, crash dialog, - REST + OSC + tray icon from the WPF App.xaml.cs. - -## Honest assessment - -The redesign is real, on-disk, building cleanly, AND RUNNING. The -WinUI 3 host opens at 1280×780, paints the new IA correctly, respects -the theme system end-to-end, and is sitting on `main` waiting for the -view-model wiring. The diagnostic probe (`TeamsISO.App.WinUI.Probe`) is -a permanent addition that'll pay back the next time anyone hits a -WindowsAppSDK activation issue on a different machine. - -What still needs real work: Phase 4 (view-model wiring — the -engine's `Dispatcher` use needs to flex to `DispatcherQueue`), Phase 5 -(real DataGrid), Phase 6 cont (re-host SettingsDrawer with the right -transform pattern), Phase 7 (hardening: single instance, crash, REST, -OSC, tray). None of these are blocked anymore — they're all execution -work. - -The biggest risk to the v1.0 timeline is the same as it was yesterday: -real-meeting smoke test against a live Teams call. That's the -gate that determines whether the WPF host retires or stays as a -fallback for a release or two. - -— end of log -— Claude, 2026-05-13 ~12:45am diff --git a/docs/preview/redesigned-mainwindow.html b/docs/preview/redesigned-mainwindow.html deleted file mode 100644 index f6ca3da..0000000 --- a/docs/preview/redesigned-mainwindow.html +++ /dev/null @@ -1,799 +0,0 @@ - - - - -TeamsISO — redesigned MainWindow preview - - - -
-
-
- TeamsISO redesign — interactive preview -  The same XAML that's in src/TeamsISO.App.WinUI/Views/MainWindow.xaml, rendered as HTML so you can see and toggle it before the WinUI 3 .exe activation issue is resolved. -
-
- - -
-
- -
- -
-
- -
- - - - -
- -
- - -
- -
-
- TeamsISO - v1.0.0-alpha -
-
-
-
live · 00:14:32
-
rec 3 · 00:11:08
-
482 GB free
-
- - - - -
- - -
-
- Participants - 4 -
-
-
- - - - -
-
- - -
-
-
-
Participant
-
Signal
-
Audio
-
Output name
-
ISO
-
- -
-
-
MA
-
Maya Rodriguez
MS Teams · 1920×1080 · 30fps
-
locked
-
-
- - - - - - - - - -
-
-
TEAMSISO_maya
-
LIVE
-
- -
-
DC
-
Daniel Chen
MS Teams · 1280×720 · 30fps
-
locked
-
-
- - - - - - - - - -
-
-
TEAMSISO_daniel
-
LIVE
-
- -
-
AK
-
Aïcha Koné
MS Teams · 1920×1080 · 30fps
-
degraded
-
-
- - - - -
-
-
TEAMSISO_aicha
-
OFF
-
- -
-
SP
-
Sam Park
MS Teams · 1920×1080 · 30fps
-
locked
-
-
- - - - - - -
-
-
TEAMSISO_sam
-
LIVE
-
-
- - -
- In-call - - - - - - -
- - -
-
-
- control surface · 127.0.0.1:9755 -
-
F1 help · Ctrl+M marker · Ctrl+Shift+S panic · Ctrl+K command palette
-
- - -
-
-
Settings
- -
-
- - - - - -
-
-

Appearance

-

Dark is the default for the 1:50am operator scene; light is for daytime production. System follows the Windows app-mode preference.

-
- - - -
-

Accent peek

-

These accents work in both themes. Cyan stays bright as a surface fill (text on top is near-black regardless). For inline text on light, the palette substitutes a darker cyan automatically.

-
-
Cyan
-
Coral
-
Live
-
Warn
-
-
-
- - -
-
-
-
-
- - - - diff --git a/docs/preview/winui3-engine-wired-with-live-teams.png b/docs/preview/winui3-engine-wired-with-live-teams.png deleted file mode 100644 index 8aaa073536332397cda9432740f5c710d52b7043..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364024 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%0Ak@FD*0Nxn~;3cM%7$ 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≷Lx@nlS&&IbKZyPkI%?FL2p5V# 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

N4TWdeJaj6F4X5%;aJz)sBW$ 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

#s&1{TmB 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

`kla&E?5!7CC;34y z`B3%8dp0qfy!_E{C|vaX=E1?B1X1){*_Q%{l&EOUdtzwzh}{|gAJn}?KBWeEIN!D9 zlH|>NoNd3x`mGtsqUWVrU;F>Bcf5-jYPJUAV-qa(NaaqZZ>Gt*cd*O4Jr^_N?4G(% z->D8kTtgg~-7rieIca8U_@*Rrc7*u`M9zEfgMb;c<`JGoXrX2E&BM; z?uOc*J8kOXayJ{xHO}CoT^#BXi>z|>xBS-Ez8XY{(wPhIWcclzQQ(~0aGH=2?c;FM zMIl80%qlgJ!xK4$emkL+?O^(1M2l+Ald3`9Odls5M48o2wT`ICL(bU>qu#4Ad{O=x z#1*Bbx4&v@+=U=OfTp>h`$>KTJrRR)Z0fT?y{tS)o{x+?loiGvGV^x5WQGBvS}CpD zy1Uq&lf217=C}dQ@<{e_W(WlZg}KalWF#%aagBJzs&3kW@-Q({Mu5)s#cWcfJRnUy zbabxfg}BMFIZf;sx!C{qV~#t%y`{dEUwU)lN7h5XpJ1Z>S3mLBcQg1OmDt|{sjfe` z@ekhXWf1hQP|c79fB#VPPzs0#8KPg6<8V40KHAgs<{kh9F&z_k}_p;v!DYzT2i`6a{`k>*@vvJxwB3IEBAB5aqH&FaxIX6uk6vAMOoaD^G&=oR_J)FuPsO-mxiA@8+ zR&!}%r-Iw|>L~IqijC>`wzA>Z$B)vHB>;{2>lXj@eUSQpdb)oe5jSWAA)>64G29xX z?i0RO2^wTdM#Qs9vn9oK_#12xLC7?X6%qYHfGelZrm_x%XOp3O?+hP=@$m*|#Ny_p zXuK|&`cUTWSjf*kRTQ|Y2RmPyW*wOW*yW_O~A>8S|C% zr{thpF(C!v-L9ZS*s%1uwnBN~x~%MHTX}r~EhiwqFlGkH;BcKNp;H$!ZaZ~x`CX-R znDOy(TUgd_~S!a+2AuJ;Jm zy%o%mNI@iw4)K!RYm-orTb&qLM8J+#-M&S26|r$5%e>h8`unvm=I7f#e-uen1oT$G zBV050J9y&<*`=`oX#aBi!$K4Z+6zG@=XW%6GfTL2d%;LMqxK4nv49L35kVcKucqAQ?SCr@@idUVSGCPr!R;SH#A)OusMHKMr4KOxENc~VX z%{;0IzDNSjdP(k?FXiRoiu6Zm1@xgS-%1MxR8xN7BO~1$8R&5ydmtUF4Do~d4i31s zYv*yyA8b;h{hHmfbl7A^LYIO7Ok=yn9T?=_<_L0c7#5--j!N13N1GB4X}P(%ODItX z%pkt)c5&ZNfUJzp&d%m}v@E=Sz1+^12sf_cQU1WoG!l1(jbB#>lWBIj7%IlN6DC7C zNU2u~N)N5JmcIFehK@=|Cn%iM4fw^T-0^+#IAMV)E0M{dvC*Wp@y4+SkuVtwy~Kw;`?3U%={lY^XbgvsUpYccrf&F`Xh zHTB1dd;#U8N*(;&gx0p==eh)H{Vn(zB;#sQL1gzzn2*%cy)dZ?CL(%VG~9>@5)PQv z|BAOYnJE1erUR;^zgCR?Gb^HKLd?Rr&-Tqz{I5DOk(o*ckt;=d9oFJYINpy{p!9z= z#eKq6%+80C zMd2_U8(Tn~y%A%NAvANM&haw!(lRMW`_QxS!N*A%$X1r0Nk%0szTiU1aeRF&%|IS= zQJPulWv+l`c)Yi#r&epgLO?D?K{Xe_qXQF%U37}%rCxX#elMhib5N2PYI-iu~ppY82JUT6SLzaY+If~BV=M$&FHy7V(D zw`zI$8XxO-&O>utrL*N+6Z@DDrGMQ?RCR0XnG%e*SJhi1HYTJ4mpsyc7IsGgd7%zy=-Rj^s-uEy{K1!CyqfR@y`2^1k6lLL@2*z@(fkkK_h zf7W%EYPv`D?kIgw2+ASJu+LTDb z#Y0P01c)k!WrG%1uTdda0cvYz7Nlt}1);Rjv=E?Bm=T*i|A`hCH3!Tk9GFI8ubi3Y z>ii)kfAeNUY8xLXl!MVgSZ7xo!qq5;Ri`KInY>NE7CA@h6dyDbsY~~3E5vpXzD`s} zPpgfIs+v5A!K+-%wn#}CQaBI4#aY4IeT37ASIHKHk(9~@q|sk>guhNry*(e*mNjr$ z*}zdO+u~agA3uM1!W;--!0KkV*QXU6zw`cis&rIWwE7$a~=Fp9N4if6yb z|5iw26PD-n$kz{q6etVG`r_k1=)LTrKs%g}6Xw3!#!Me%_bw6PB4*loG>F&8w&0Yg z01)q_GAq4TTuw!7YGLu#M}(_t$t%pR*)o!0N+dVO2hqYUlfg_N_IbQX#>As_g0%?r zZ)OQo%s+qIozhL`SlhgTXD|{T0VRU1aN)U#0J8shYO$N{GO{SgCm)ihfP12m=CePh zy55yluGVMHflsIOw^>=SV<6g`TUR4m^$?z|TUOW@FE|zl&viQDwVp-l9z{^e(aYff z(}uzW1gBQQiUdT4q5+*;zUcj^BcN!2SPw=55`mtY2lXUGn3XG#(*$xtGdb-+XQ_Xp z&YoV-9QP7>^fvGqk1evxYrbcS^xONf2Bn`8IWT)PV#NGr^#gV9_B_c*2%Z{uP>L5_ z+WE=D#&4z7CA`Od1;R|lBQ{Z4^7?keh!$RjaWBHEsq*)V`^(Nu+KltK+g&R;z?JBu zt=NFJW+?B1eTU-`oNBmg;;FB*LGnBc80NsIr*PW~h_iE-ATVl1ll@T6x;QIzZ?B{T zS%U+OB*ZMQBb(TCaQ}YjU`IY=k9hK(cWF5B{!}Zc z(9}BDVhcc)wtp8{RnA)PmUQ*f*e;Isf4hlqPBnN-_W7r3Y~b{gbIPCj$CLzp#{ZYx zMN%c6y5L|>BJ0j@Z@)AJ0CUwaE1mQbo6?_%>tEH#Ii0>Vl;0`SF~87s0%~Y8y)58` z)#Ze&Ly#%u4PJi2)nn}98GVe_)I6s&A3s3+<|&vZ1M;}rJxI;*PRvUBMP~pOAc*_E zXU^Z68CX9I;4iX#diTFKK#4f4@~PyuXJVWl!U>oce^DIHy@EpUi>MT`hPk;TvWB~i zZ%!GR;%CjS0y^6&-`;Bormv$plHGNGV#o7m_a<;H%6t{R8GK07JXi7DV*9uy?cb(GvfKT zw&4daY3JgdQLdF8ji=x4;IG~Jq)xCPe!pXB_erJxDJfp!Ey~$*NU*2AvTT-lamL8V zWm_jfU2);4MtFZVEHypVS?u#?yQfc^Kq%*+yw46so*uUmP)(Q&I83d_r4B-h{;s&p zsXOBgA!(`nVAgDSA_mImS7QyQx4&e7w4tz2%N=B5ogS=}OjrFJ`up#F{~6Abo3>F; zD0*L1#GGQUNbS%6hp!7D8wI~gUX_W4I4yVAsxjX&=Wn$mE=IYE9_6?S0kg4&(cD}M z)^t6Q77d7zks$+BwC2B^?;-k>VC?SxYkK;|eE|W1d~-iPzNWaV;UmeZj|Q7oS8IgD zwh`?UFCodg#C@mD+2jb{KQ(M6`AT+x%Hgc48dTz%a*8H{ zHTXuSy}f|_OMb-VgV=NF7_ssUHt+yjZGgHy; ztH909T^t;P&pbzZTrz--AtEBY3@K%`6fYeNqgbz8fc9 z+`sW8rqJg+wa!ZQw>G5ujt0plzBsp{?@E|!1?o8_=^ zLgKzZ?hC%;r!tS?P>igN*Z&4tp5rVDtC?Yt1CTq3AiC9t(mH)p|19ld0H6OY+Jhtm z2J+r#2ql8Z$fx8I(vPU2k%_gN?f3=&K zfrPUfq)WCattlRb5_l!hHh=$~A#Bu1w_@xfN*`2&@Gp>x>tvrIPxh~oHK=I&|MOY> z{n7tWANFb?2QFiPiRtQ01!hOVr(?eVHatp!bN(eztbIo0@U%&TA|B&U$5}-|$5BPt zARMj?D*f~Am@X#Zi_Lloq8)YMeRzIZNpNe8^gl%be`q{lZuJ5%t?f?coOE8u7TjX# z3oFWZ0sF?k-nMfjf?#OEd`f9VmXI}oGY---agns4fV9FG;=@Bcc}h4|lt})^JxH09 zzO6?9S?W*%;Kp<>p>Ce;MsR>{|Lb)FVuFzY>e`)g!*dN0izxX0xBq>-d3xP{Zq%8} z5cSIqKEMQqNWm?N1840Y10ieyc5Dfe@!xNXCRt|`7k(lUBDFF+j4=*42I-wusXE|NG5Y7D&!R%Qmj574UFL$=A&A6@9JH2A$%urrGJ5`_iPS$^_A80b@Xw=>Jr4;w zO8N*{Jd`V^_6Oa2HblW=(^Qq%XYwSIu&_~Gf3i{^NrU~HibCEQ<~KY+!Ad+CWZO$n zpR2!1Jc)GzMgWQQNjlkN{>R^eFMD8SE;Oqap9;!lZQ{|ZL% zk{iyqQ3#%r%Ie3?LwxHk=^;725PL0uKyqY!!vdK)Ii^_WJPJZBo-8RI=dZ&FSoqk) zQTs$AIqEOW^i@yjf>H*Brx18mHaRh$vy%uM&r|V|2!iT~_GL)O-wQ3!A=Ys?BZ* zDte+WXJiF%4tLmJw{wu>c3)q;X*W@~eWs%J{b&^!3kN?sWb>5^DLGu+@SpyCEL&7w z{@?;9C(D&9S6;NVXgz-R>{%SE~uyC4Q56 z<^s`X76vs1KTw_&WVpqYbg*}3E5JD-5&UTwI4IjVhpzQcy#MO9Mw=7GMPtb(Kg2}u z9xYzh)LrW;ME9mAkhYw7;yS}oh9}hDk)SIo7A7`TP(fbX`Fy{GDjUh>cQz1$`8;)O z8$&3ABwOQ=oX2oQB4I7!zEl4XVEJ+B-zjeobWXQFdY*;?2qhRt1Wid7&w*J(awoEg;i z?=JMuVF1;tX<7w+vZ4&WQ@1P7gfH77Ea)Y8#y#q7cm6!%6Yz{_ui<5Bam7VN9W-Y> zh&J)NPy!7#IGMIO+fXJ);d(4J*DXFpUAmA!h=oyjiBkDF4#B^CO42!MreAu)rhL*{ zII2i%bF&JSh$wCI3nSqxa+o|_fgUpJJ%&=MEiqDZLwSE^_nJW&wwcu6xcvbB` zmUs)5zuv%DEB=lo;R#L&@bbC42~tlZjR!Qo{?~KnuNOmvwBZ+k&<k6ARrC65 z!QQA-2edTimuss~2gq_OI23jFOzL(`tAMMg$q}}?hyh&fH^uVY@~02I(q$=D)_d=j zjlKQEt0Uk@851*QdkWl^H`W*IEO0B6FTssn>SuXTTHhy_hbVnzuo-@|H|8TTuh`kw zioSlmZ>}!5xpq#m-<~b|WD88-`@WQwRREmbATNjTHkR;}+TYJeA?_%N2l8wSo^X_; z1!?3@PDybDC0J2$u^wCClNQt)i|jG-fxzt_yFYfZ*M7=&a1Y!BIC&Xg?YQtB>_6zn zeWXec0gXhv^Zr;IiST*h=87Gkn~??sszU$!t(wpULblEnASaI^PSzskIb&L->5rpl zA$AYsxX_tdA)fs50P0s~<@jmPDl7Y3chAemK*FXp@t#%`U(LrF$%gAX2GkCh^XKP8 zP1?%95D5vE^?5?gkw#yA7)HF_>(b&cV$-{LZAs(e$oZt&uA~&;AVW1f)Zae`qJUTa zpjd6lliQ77JaX$?8hpj~&iQwdHE?MUR5t;w3lKE?em7EqZ$sj8DvJyL$Ft}ye z!42uBw@t;Tt9Gz)?mN%)v}v7H))UFD>Ch7AvWK9@W5#=l^yF*|RR^5dwUVEnGV1v! z5xR%0=Lz5A>rIZRdymxfciV-kkaF*kSeM!@D?dk~TN=aRGir)A>9=`Fhz9@-Z5^9;2a_F`WE8~p8v^w(Jr z5?>q2D#AM-j2Thg@CW_{O(M%P9Tfi`8}SRs1)hdc(gwBD%?3(rdX1`!+J8&aKbW3~ zI)EA6CnLZzn7(Z)64n;{QzM+yn@sQzf)`O*#ZTg3=o-#YZJTinQd?y->Wj(~tz zmcg_=cYf@|qQn+l2ohq2awHPI<5KU^gFGh)Dn;KdE1%aM;tKG6+b|EE$3AFgD{i-d3fsYE83_k7_u3mo^!b3>Z;@@vN^%l>&8*LH1_^p}=y|neX4_Sctxt2iGdJhI7sLUrIU_NI6~>NJt#1gbg4%i4acva8N@N`#^)R7-xME zVJ5?A?|xyAi0Da*#hE9jLeO0t0Lf_pI50yuh-A9@$WZz{k=KUTE z6jv74Vfh$UfWn|aZ92qhv0(3l1FX?I*n=%@cQ8c&qL~sG7!meYGB6{;a<(lj9D6mb z#hvy6L@PMfTt$V??492Yk3h{=n$G#ad~`mT_0lB)G(^)7+oav_plc-vf{{L$45Awa zJjn}j;n~1vHJDIqzay6@q+~cQm@~o?@VxvE$N&k((=;bgvC;P&?jxJbGH+Z2ht4VU z>~E`zzr-8yWPf&3{>~cG0=25+*1V&uuE-1Ee~KIRx;)g?#m2fl0%Rqp09pqb`jAkK zT<%AI9_i6yw@!<8A{%G3)*%~bCg5u10|NM;qIkwMDEhjXY_$j_Bhr4A<9|wH;M^c{ z##Dx=OWVJWPTZR+dda^$n~0ntT6v;m%TZF^SL_PzJh9;N`S7KsM?hA8!f6_a-T0Vv|t-QA9ri7uCN;=66#QCS=8-W0yYf(PEM#5wzDf-BxIZK?^j*}W=}BI=Ao|q?Cku$+R;qr>&ZQp zW}ijV`OhZx15}^0Yr=&61QjI##_u);JsA0O8r_2HqZE{|=jV-u}I2 zi(4Q$%x9Znic7V~ta98|I=aBil=f&msDN%fhMXdFY;o{Kwd|q$N1nn}#(KuB_klE6Bn$rFuQuOJ^|XXm&w)JUCknCh zKRbO>N2lr}KzRUI?HL*l8$Egy3Y;XIXPB6J=D)jq^O+wPckz8V9v7F#&=C?7qd)L_ zyrkue%~K{!NbFo( zbQ%XMUVYy0g7vkq=Y2}s>l%@SZW`FT-|DgzVy*C7eDJo@qK~zW z+T-z2g&p#nzEON==kv~q-@lntZXZnj2u+2C0*qowSkntsr>Pb= zpeVW=Gat>J1LJgc1O!}nV6HPX0le+6xCTO+onTkUhxCGuD9}l(LC%4{T<3pXl$J~* z*=wtU*Bz)t+EyO{oy(=d5fEcE;tSMmutrA(zI`A}g1Rog6JFx}ORa=KO-thzz+nXFo;4 zku%?q{RtF&q{pp-SyQ{J;B==cjq1(UYjgW>c)WpvTTH*E9MLb_u%k{Rb)?-u`FH%{-^)K>Q2~9PN$Ww-@{h0V>OE2CyG-P; zHY8U5>FYcPT(DY08yIF21~TNM-nKKFNaDrZmv)g`*$n^_#rW>R*!2rTNt}b4 z#uDU;j?l)pB@LzGY%R_%L7}vr;+8 zegS&n!UY$L2iHauuxCJ`R}&CJ4E6t(IENVjHGlLp?h0$EJj>&TMBRED<1uTphUddd zR(eZ4e{X7UNuKE5w9Vl!E=a5os0z7q@xxPS!h&Xo?5Rm1_J%FH^(7+>OZ-CTUFhMf zh?`ZwSy%G1;>+n{*lu-dbAI>6t2TaqQQnEZ(fM~a%f_BR?+tYI!AhyKAIoue{{HNU zfoD9eSC!{Jx-L3*CG|{;r&PDXQ2LCp`;X|no;oH-i3rjHMK2>vVcmT;IXjR+lQM&E3?3j z89Fkm7dwy@v%@3BT7;NHvhvM4haoj`k5-oSa*X1uv)>KhGydq9)Y_^>%5w=iP3o(b zON7tDgwOe1tFJhs=#{j;F~RJs!{$tnkL`(1cu=*?B2-Py(l*+^EVHDl>*HuB$bH}fa(A9NyT2CjsaMpv&TJn8j3&Gy^hR&mo)8$d$(&ao2_uiKGk5;)_ z-jR7F#G+OCQMENvlWlKgtas(zI~%o!bB4V*3+jbTub#FX2cK0jOsto$_)UqWoZjHW zCH=TO+Wj@L+?x{$$6waA`&Oo{rS#G`bGtmMj4*!nQ!>=eA<&2}LEE{b%lo}c&g)JF zm1PMoF?V~%_=(Xd^mKz|t%4G3@rRmgYd4B}4`v3h)tl6_E^frCFp@U7k9$6vtrfG> z4ZrKY+{Xv>HXC8k-EbtBZi{Chd*bX3Ux+4h&2ULaL`7*e$~QIu^$x}jMC~O|TA|(0 zndrN-YCDRF3`@Wv+)vXTttUqfwJEWU9_QtJavo-^rWRZcVzZ8-DuNeX)<>lo&Z>$l z46`?H4%-xK8FsJ-f-STnnl%P!XbeFd25x~j7xc(5Ub70oh{b9leeoF zvn-*9kv?BbO9i^=q*>6G2pr%|j&c+-IMQ)NI;)%@{cvw*BPcO`F%&J^Kj;+WG47yE zw6nWEOzHYd0VksUu-OvZ_5hLwP#Q1}%vjCbW={O9w;U|W9aegFOB5Zu8dZNp$0obM zpXNR*HLKjyMGNwTbDx`-96j6%LN``U8o?&HfaiIX?`L*bE%_LsYr70U%^u!OC!-LZsA+NXp)r5VG9RF+)+GAtv6Dr<=5=vZ!z)M}sHkJ4*(`n_UX8W1_w#U9E1? z7&_}ErGXWa$Mt<$?`CMMc~SGnMQydAx~^ZlR|1mUWTO2+Ckh>KE_u{-5qam%0&wG! z%$DuAp&_#t-{DGrX-A?mx*gYk<)(zWx6pUf4+K90U0L3Qo2;hN3+HdY{ky-q5ekLu z?b6u+VNeF#Q;$}Ekp2^WqY6)v3YCA2hN!%4RgKE)%B$P3qTqee6Ie#@f0GJk;!R&!ri_XS4J8-|9mPc~Y00?-F7l>?ram5ji!naFU9X|f{NfHUah!}!{E9w@aq>I+cDwCGjYe_L{^!ddJf&?#_UyD} zvy9^5#)oGYWvFIBR?ubPnxxBWXZwhubEutztq{@*Spbv~_kl4b1dRUrS(eF^1c^dU z@(M^X)xQ1rUL-!1loA(E%w@a4cCPZA$hnrwI_F#> z>+1Z%G_Q+D^Tklie9sCsQ`)4CrSA#U4T^`V*qMDs9OPuaFrzMoS`Yr#sIqbE|FUaM zrUcxf6Q*LiAIfyFh@FFK6ZzVsuj}ah6t2Epsc;iaL<)Vf&&K73M_=f96`@zLlv+MJ zx+qSB_%SWPb5ygwo|bzM@wv#L3e-vWZ5l-1vgbLkShvTu2*M)Y8yYq9A5fE}g(mQOjhp8I&N%(IAQn6&4uQ5#bnD+4RV81Urz%-F7} zC?#IT)om-dQ1#4aCEn~!&EtBS2tgRLGhy;lKiHLi{E#a~WpKgyz6@*y4?<*%r>`6frTJT*PX-&2>}wp%MQs)*x&VvP?J_%4HVtxv(w zC`@x%F{Pi5_sgSTmk{AlqjRJUfcnP}PoLp4_CgcoBNu{;Svbm?9MDO|UYKEX6BYvp*g%@dvtA5Hkk;+@FDmZFB(4~hI za`VVxRcc6jxJpVm^y6#+LG75E0@lP8%5}m8A#RSMSNC<$O%Y}B=$P~1W3|wjR&`Q^ zk&M&O^QgX%L$pH=w%9u2J6EGHu6}8~vNGSMve-b}l@Jj&JEVjyjqHW&F#Cv8hDT;t zYe1RUL`V(f0%@%WN=S4f8TAPL4? zO;W8$$qzup2ncgVW@b6EUOQ-n%j`imt~-+9sG>pAdqNIV>4|kl4|6&Qy`rUys=(vbml|g;N7?vCTBR$TH{!0# zvDNXb)U<@w3sGb5y9ftH8u$seyZq2;QEFDKZ^-+=TUGO&rPO7trF8dxO4J;cDEhK>V}q?Nmv$mvnofad zVBM0mmhIV1zEqPCnHX`5m#elAzH;pvY&?eZ@JVI^Tz*L)Yn6?}dJ#G~SU}g)<2g2= z$XgGyK*fjax-J)d`C^Qv`5bw@ij*JIs9VW= zXh(Xwf4ZH0J?kZOpi?=R;il%@b=z9P*54&-Erz8T5iA&JQQq3ZQ^H;6NTApMsH%g(#yy;w58tQlNQ#?fo&zZ~cOn}Z5N{9MYec5-et@!e#z^m>9x~u6(+2NWb(Z?+KcvYR`R+_k9e*AYYLyu>A&l9 zWjRwZ#2YvcWa~#9MaRs<@Ihs()z&FJu@4%dDIc@lKS${_ex}KaI^o9?^NQ_PQYW<{ z1ac!_!_kQ{RCffNeK06YBq9y=gm+g}z9d89!V4Ab+fkj%I!MG_2_C(#b5dyWx%`hi zuv-txGjAABzg$xC%T)~Wx=busdgsoa@HDXw!P2uhij=se@F7Kpk>sZdhnE(j%_whE z?9=yrN|QjiAn*|f9NB4QS0jUD)N`}#7P+%H)xtw_EiUfral}U`u=RxUMSZy&OG~~f zt(f)zYyIrm-kP)78H?X>SJ%>I3O{~yXAv@CmX2_F-YiXxjiI#vk>iJ7{q1J0*QbRf z_@f!7F3{g*kQ}P3?H%A;h_dKY%znWfyvN-~vA8%ZIok3*{&v@Ll@wcBk z^ufM5uG;vfZF(75YsL*yZ8Fzy*P#Ol?e}a!^+M!t<#ARi?z3Y1Q33<%v$Ffub9i)A^SubOpU_+pdl8M4AK^(DbNHTAV* z?~4_cJ@4(rdXr*Ttw)K6N;dD0I6GKk)9XWNv^>%4E!V#-^jg9(uK6oh*k^y%rj@oh znp9uew~vf7oARPzpu^SW*Q8bFT|q_YH}_fYaFFGKw7?HPkS9?^SM`R;4&QtX_9ojO z60Y^OYA)l>R$(M#KG2admG^XnFJ#=1Pm^~4271dx37XMEO%~X(R@qoY8Dqfxy_Ng~ zI+zz%*91j14KcL0Nz_=V8&982A0Dlj1;WT)@HT$NV)*nI;x<~dc%DV%YT0lLGs$8t^tZyIidB^M|ze^NX zJl=`>pelhl%6U#hv&$N@$6-%$k-8;HT)B({8-B(={(Vl4ao+A_Vkp7JGfGBvodj`M zkW2Z2u6OC{*ROUMzt;va8&ZCeWEW#+xSt^DAu)@|iHW-yG@@mjcrtc1bkPNo$9={u zn&7V)j5udb(3t}QMy2_)y>m_{fk!N+7f+cYh5UKsPo=+G^>w!Z%^xP_lDR5Y-G%$* z6Z%~%8@V`&p(rP&pD~Azg@{eXX)IteW=5Oau0P}3`ijRhb~H0)1H`r8B!AMS_Q#+E zW>9jJweaOYo2y2u-+rJOe~VdMZ*DK?$unreU5OCN0qC?}<3D{&|DeN*ESdl6|7aM+VXw)(YRJra5tb`C6Ts^x!9u^JwLlx04S`!J}PByZA8S zid?Cc>POelOcT zYEq;v@Ay z2W$GK%l$6C@7PS;%=5Dso~@9|oclhRdUV@0hr7XDpkFh+*ApX>7p|0arb8r%>MZSn za>VHHZGYMd=LMnG2BNk2BVI8Tj^6t#%7re^zidC1CX|s3^V!ll#yhjV&{$5z&#>ut zX0>-&BSOiRFyVZj{+*8%UAlrxEkKL()hE%}@V?Mm)UFX-_Y5YFCOWc8CE4N`N2T98 z8}rogBq8n8mx)7vQMGv415JaiUL2eQG3x2lLrw8{Tq>MxAeaW;4RPmzMCw-Ho1R|u zSX*3l`e>WZNJCw+GJYIt=W5$d;I;JoMne;2r>iyk+pqo0SNGPs7)Z_rZA$Lv>U|Eh zQlQ6RPmj=@DVRlx9{D>@4)`A3YY)jcnHXww+%YfwQJD*KqH_nQoDa`N?a|r>XRM|# z`c6{u-5V}S%Sqp!H%g7)`|fFZap`*{l(0NZK16{F#<#f$mGW8g@~_1es3QtzB zvE?HEQ+$$3d?-fGuWIHRj!5Vb%1%t~D~2&*6Kf8ql#r4VSW&q|;Qnc%(Iell&*5~aX7%#uyXz_Rq7Qj|OUjAs|hzk>1nl>)`RmSZ-w z!`x*)&Mj>X^=SHfXT+=woMuy1L)qV8IeXAF33pWvnI~M&Z#=v52 z84u6xchY85cxh40&tDw-)o1tF$DMsgh3E_^IKqu70}~@gM%

zO&ngEYkk{Sr1;dtL^u=eoD+UL^C(bE~PGguBYDQ{<@HH6-?zi zBbRMEicY-J`4!dO`_=Dt1d*Qo=`y|&@3$G%ikkOqN;#K>j6Pei4lsR3($g&sEF>Sv zzccJ{lqZHE#gSj9hTneNdVmbl)Syg_mo@4=F;TAl@*Gi8Te7C0J{B~pZL>_;adrRJ zFwKNmAH{CNu|RItuQK6gYA%F8=2zoG=tf7z( z7D^j-F4$ua2-nf)B!s)*`hzO76~n{BH?5Z6`rRPWEo!Hn1yd^E9KhV0!tuU}s> zc6TpdrKl9Tw(lqyvKRz3@dl3$7N};GXL);|OIs-Vb>2rvByv@{NwID8TtN6*a+Abq zp3?L1BaL{ayp6Xyj*j-~q*_=mMFsA2>RiOI?qN(E+WE1M+!-wJBw&W*U^zee0_u#} zCgv%|YW4>Kjgkw({!%(7Cn^C(burMe6Af{>?0t{}4GwHfeEFppU!j#;=X=x#Gb9?~ zyL7659be833si~^KOKd&Bu7&qV$9`t+p7Id=*r;3%nlJR=Jbi8-M)QM8ku?+yBDnb zt)zs8n8)>9R!th~a!QF{Yop8e=c@9{a^HXwLGeG>&b03!n&R?}RY0gdhTXm%vo?RS zvz$+scNTUcKZ3@WQ)4;f10hn?HPe2ptPb}5*PCV)|8d5`3wOiO8dvXFSS08;GJsf> zokB3qfzP_sK}WY>S`>FZ)!u5NL?^e+m1VXT1?J|$2}_MCrP;k5ijzh5OpvAL@hdid z$}%O3E?HtPBA>KYeyZSw|JHPy)o$izUo%Rb{psr;xj}!giy&Go4eT`&NmpNrQsI3Ado#N38_cyAN0J99|Kae#3w-@s7I)Ys7L{%Vtc z!phF2Y?rGL-CRJ?L#7|s!6f6SIz(Tuf{<%f(@SKT(HY_+~PWv^T1{WUoJXX2- zbIg0+0uWOWFK5_dGBcKWSqr%RtZz_=rpr`*eGA!j#{a5pS0+BGci#wb@mU30SbR=9 zj+fef4&~RP<$DY6Qqi@(NE+>2GW66iSKis=GXvx^7!N(_0rgH)Zqg0NuRe0kX5<9b z0Bl7|V@I*5bAJAxB-9)6(1*d_1{*MoFA%Su))F2wld!^PeG9?5!Ja>4)UvYH8jp(p z6kX+!G~<~>`5b+1HOdm%qu_J!(EM8Kg>+h}IF}Fz`e8u9b!kttJG!t-7dDXHl?eHR~GOtbFL>|d;%D|S*=_-ln_S? zAuSVnzBEc_0ha2dVwFkhfOeKs8tEs zee+ZZ#4?3zeOH=?3>rp-*;VemJe}p znOWpq)(b+5Vnci_hGqxeh0LO8>jmn7-M;gO7Mw?>2@1hBV`H#AQmtrjhHUbUjU5}2 zFYw+fSSIZGCQ51@dXp;?>LV^L9uB$Cs0#BAL8CETM-}vybk-!8IJ51T!lU?1M*X59 zWvuGmA)$5KFtW3&UPPY^@xQb0Q1;L+UA3{@a7d!}y7vBZ;6?p2VJ?{cmx%&BQ)Eh< z@-b+$odA(dT|bQV&d-<-QAXvGxD-{H;ucZZE0J^X(k7;U4mKPlpT=1{sPKm56o=7m}OHx3rOH=yia%bY3t}ujD zY&h6SKP81?`z>z5uJKxEqZQPTyOVBQq`s&oaK<%or(>t@!TV!Joa;zF(>$stQcuTY z$Pm%}o^eW`&k^m`O!$BJde5jPw{HDAH0eS>n$(1jGy&(J^i2>C-=~(F7(0%&8}|CVpSRabXt+x~F1@Xr zD|9lB{LQpvoRAx+myqEH4`@8knG{T3K4Kv>4VS1}ndy=EVeUOmz$fDF>g}DI#^9LY zQR}ihKkfQ{Pc5K=V0R%?%i!bzMTp&WBD9}+laIKEdM(|aslawuX^g{e9^4~xj8Qws zuV>q&u0MQeR1ph0^cY4Nzb~t&`SL4uz zP~ukVMOi7($l)}#v+bLX^_nBL#@5FG4Y||LuxSHIWeRokvM^62S|;Mv;srkuUtNu zFK(n-mcyH;lyP>tI(zhi!cK+JR<3TPk(9CWGCl{;89b&NN-lG%B^SED19w%#+9{59 zBOwnWi%M0_!FiL!0RR`2h^jKqfbPDwy=b`wmUx}g-P7}QOJg~EX zNtyh25BbLM4aEksWKwD1N?4|kkEVfKm2JxV3Qkgh z{0~V%8U6#vr>D*Uc@|jrn;ww6aN5b~0H`Q3C@rLhI=?E@`1~<&`S`cAY$SLe_Kvoj zo)e^h$no%UJ(CgSWrr6G!8+=i{6jdFhdw29 zL52;Lqb|2+7Cw_k^zMxiiw{;e3AMKOSN63T0~#_zqXE}=ityPbg$X<`M*o0fMi`3&O2~w;o5Zjxivh8Y9^XGbPwJQC1``S^&hIl@B z#nTiiL&COiqJPsfEot4U9}?3%%oS+mNlX0{b{qcz7?1)Q!Y=hh(z<@h&#$*G{fo$Q zK|^?LiP-i%#PAIdk4sm$;DzEn2uK!HwN*m2RI%`1CXMneQrWV}OFn}b55sq0#y@UI z#3F%MvHqB|NOzcN3U0{ZcKwCJz5eEhYR0jzA7SU^6L=Y@uQJV*upl4#2Eep=e{!o} zs8 zI_F_*!mE-U?$tNiT5B^Yv%QtSIijER%OMdJf)ve?>QxRfvK(GA;(eV=d~&Jin{v1k z^o*X~&eW=_X(yT=%Bj_Z=?EVEF+C})O1cj&vW1gjvUYw;=3J(M!5Zz_JA}#?oDwB` z%Q^FQll=T)IhUjbaBeUTNF*Q55RnRGr^0JQ9b0;MqI4~LV)4B0eEY>?1S=73T(En^;tkDN#O{aAjwL&~&X?Tr zIW2XX7&)i$T7wWKGTDxJ#pOOdScUW#T#@IjK4uSo#LG5p74jtP+mE3M{^Sa3s?J(e z{u7Gvl$_1+nLc|;cqoFC@sjqSfhTkJ<3__ZVGPtQ8%{lFzgkN7G+Cmf8rD%YL(Vkh zn6|h}^n9X9XDwZpvakHv5(n0TIu2#b#a7b!WIL_aUn5lB@4VoYa%z`Jn@_iAz}7P+ddQ$-Fqwe(9*hLU5*nw3zNJ z@L`~-kV#HOKELntgYqfDa}-U6x8IZaTqa`z89z~E&$JGX$aV9L_~j{H12<^(43zf2 z#F`kzJesB&r*AmSl8H_0#`G(=C)z8VRartXL&A-vu*#uFs9bjEb$@XcGnhLYz6mwV z@fzl16e<&AZ_EHQ<=G^xCh>_UL27we2Jd;QzC0E@9E=|j?mtFlh;YFNjZW^d3Gr#)+iE}N80KN7HmrpWXF9foB`0P+O7pX6cn zP%zkYG(=ZQK|;_qm;0f>0Mxt_7SMEZ@5@7y*`bNT9fyPPzFKMsq$|uXu%roX}bPz!1 z1b&JOPLzA%Pa2NR*S^K?4F`Ocw8Ncoejm#Ju3)Iecn=bF@S%eH)}5Zte~Iz?Jldh2 z!L@*#9oN)YeZSxhUliCc9Z)<WJ`! zj9dB^x!O}DZ_HYqIqvxC4Y$>N)!dfy{be`#^WT%X8W5=dBIoco$WPF6MBUaRvTmgR zDOqaG-BgE=+xNT%#l`dc6k+&;yVmBKDCmFMJ!lYGsVR$4}^V;}6z zfDHo;&Ncf!_A*0rN$B4z3{ta;V%f2)qn(I;RWGP^@kg7f(a!t;BT13vUr8jsL(5I? z(BnLi8NVw2CJmwvAP@U`Qj5slU`{&FR50p))ua)9m5~nep`7-hZ%*0=#tXy1DB&vZ zY|35Z@u&a+Yz`*IfX$uPOu39Y+0dNg8$|$KnhKgP#O=`O&1X&{qZX^#D!q4q=FVg6e#+nX;uHTblX~gntY+1mH zh`CpWa7J`j*NKnQHKXn%gf;>nGxYgsOiSm^t^PNUMGUpBNPwtQ0<)!O)Rf6O?f}$K zWq}MW9U~GW4Yr=toV*@zOLr`~R<%oXm|&eL^KhhBF=kxDYHkoIoUyIl!R6JR=l0tC7-7|CX#|M$1RRBuvr~fyvwp_Pt_BaJgIIvdsgM zGoH?5r4LN|p)vw!e#G-X_{wfbNqXH3j~Yfb5ifys5d^6nDK)UIeGKLaVr@!zvznEL zX$opBB>RY!P#Nwh#wxbUBt|#1Dl127y7S!3Qp;v3jLYY6D?4*8Bbws^+L{PjI{dkX zh0r`A{b)=SOSeZ23;UuO$W%76LZ$;@Wx4q7$)8Rtt{U%rBIN?61=iZjYzT!0T>b@Xv5O(!pW}-ao49LC^VZ zsIj9@3W|O{U-{md512l;;yu27NU*xcN#NySp1K--N@={XX46l&5?O~>Q6wM;9OUy( zPUpWo54b@UlyUz6H8h+^gSiIYW*9(q>1cjqdyAHsO zL@TiFD+CD8T-kOyZjoD7eY3cbrCGR71PB#AN@QpJLx&BzE1%m5d{yH3o>Q1o!9{)r zRXMNCm#s3)d>OCH#ODa0M)?8tD4b7hU(^#-tux97-o4kdJ5Y$3?SrgNvn2jj!Cs?iAAR^J7csS@d1ZrFSB*{RnbEH`u~M4#l)CSi zL?GRzh(o)l^he+JdlX_$6h>I~UT!wD4WJYrH@jx6VdH-rSR%c%{Brby6IFK8kY4p4cqmF_g^E9t~0<>vpehfOM9AvvJSOTx{ zyOZxOft>3F(6fSYt#Dr-(77$f_6C_kxEK+cSO(J6rb6NIr=CChf+oOZA+V7oSjDT5 zl4FI=6kVEu1;L0qDk_|e5^KFDb1kXN*=t{`fsy|nuGDv)_S*fFBhODo9w zl~tG0%TQ_Si)KBLvg-r_6VZ*l749CYw(U}H)_=LYeQdWj%PF*3@z7)XSLW+yPRt`* zb_Cg-x_!O3uORLhil^JvI@!vXOl#q~$)dW|D;;9Lw!fRf-G-pO7pI{O)z#X8L#uLL z_Qm3HRx*+|?C2rJDzA29ZXPdlWtRYP>x(poB>v!Ql}$5kfj;*sYL>p6)!VWA=5boc zbhZ^3LyQNO`gV4mbh+dLcl!Di+H*?wqU6yW1#zQ4fJOVjVD!tX>`NmDH*HH(8LRxT z;L9nKld_HkElZWZInwE`mITj_9i&A!k=vEbWNz_fd}`5sXp#1$1d^WcT2ko+(X!4B zIv0*#ji}4b|DEaKj_<`zE9nFtJGSqj+b4C`qFrUm*$C@#2)?wc~%bQA*p-!?{EfK4|yVu zkxrOY>gYH{!Arkhe#f^isxF_POuW_KP?kwpK%`1;Sb>rf%-|1pT2s%-zlh*Zhx#VL zpeC8!X^H}C*{HZLS0GLxbX9gKFtmlmhv!`gb7HlDg2@CIYe~ ztAYPJaAK-Y0+lNEMP?ag0qDAaz>+)JYY$mFw;{O^`8HCD!9@bNYozr_{?he z#5u_+@;d%Ywm{cGP1b4ZU!HA-n1DcUWKf2kDmjiQbnLgYpq|{Hx%FaS%Nr0txUMqy zCHKk7PO9T$3@=)^5|tyqY1S&AyEr@3CCAyt2~k6Zlx>v@iebCeIX2c$cmyE6A;QWN z?9Fv`lF)H5^$p+`89Gm*d?}f}N&Sv`v=*Y}AsMdFs;CXIl|PyMs1LCBsn~}n)UAp9 zDdhw|uTzQ|^QD^H-r^MF*j-v(b zNlW0Vsh8q)&wdh8F0oPY?7R*}YVg&7)17L)PaX7apeX2!X1@NytW;o6GCk~&+h&st4=z5TQ1 z_h+q1>v{F{-iulCQ}UN8CPXRSJzf_VtAh}n24rU2oC4_2EGH*i1o@AAmyl zCDC~{nf(s3zl5!XXIF3g3bJbII)<7fc!SxLwKT!$_Fm5wQi_E?!+ONR57|U|zycS> zr^)v95FF&!?V&K98Fm9829%DZJFUogOICmXj!`uS>!js^*$c7VzMzC;cVJFK7d=uy zuO8V7n9EYBD(dblzl@G!u+^6R(l~>TTW$FX+982dhQ-yuFvvZtS-z=fEiJCY^Q!g` zbim84rk{0QUvr!0rd@@lsan3RT!RdMQd{BZS>wEl)pt#J5dyKqMq@RBXRlX}>1*y{ z>Bx)4QO{PhaI5K&9fZON4DqAzROu(Fqu$bqW!&Aaxik%Zs{MP}0W{=BtgSZzSBuH0gCisPxJ+084(T@CXVOo#|5qucb}S@CC>eX?<)t9k11`x6^y;wQox*-4PuoN@4qRpFH#`wkS!u%xRKz1t}jk$Dn+BDf`vg@GRmY8k{y8 zyv(-bmg!82FMDrW^Ld3xXLBrM;}N@HBj?C-g$B-9~I|PYU02_`&W~3u-A_ z-g*yJNy1mpl@T>wO10#iJaX@JFDykdrPx9@rlo}s=HuA_t z54w+9a-v=$txN0rPNajb3oqE=^HbpcF=A4h-kxrFh?eZW&oOF7V=A=z7ESYUu|G&d`DD@V^z++XQZ!>oCE zSxS?2uDQs3jw-ADq{!jM6Qb>3+~=*}&=1K0Bwl8=wl;nU-1LT|7e<* zwD}u+V8Kgri~y(r^)#Ewx!=Ek$7=<#!FLQF6}|24z1e8lIW94DkyM8Krh#eaIL4cT zdE*(b-ivJMwz5^L%a;c@PFk54&P*BnBJJ=Lmf;^DZjD>W2Sx_}3=?&Kf(%zV7^zC+ zFiS}n(_B`{VaGAIPdJ9z_vt~%tX{$kv~{`tTEc;hnApafH*X~Sx@Eg}!yw2c#u9lp zR@UUhPL7NDNou|8?^d4g5dLvx>^nu5<`(53>$HmGwoI~^55Bu`E>s)zU)v1P3I_** zjZ{=*oJGVk;%lK^jn&$fC>V(=Zei-VzTZ7%qdPkK)(E34C`sRh*oSJRjB<_<+B|?! z{WL7q_4|eyVlnWLn`H7C`OQ>GwqB-FV)vWHH6ck}Cga^A8}eO`dsk;V{gx);b9Oqq zv{4vG0gtBE%Kkt(X7BOXx*xUxcTQf9k#FF+H&8ohZh$TzzuIjHaGr&>|2-2alNlzK zcd1b%#!_U8d#T=pj}DJIN6}AsXwOW(>>d606<0^HD39;o_LTvvw3b~u2zT!yfGBtz$H?uEFliHzI8m^;ZZBj4r>I{) zk!$~|`~!|KuYz^o`adfVZ%q=rf@IW}`lNxRxv_b#z!*{U!>IuFW^uc)Gy}>fMK>KFKw$T65RoW|s=hkEkrpYm<)t-G|Pu7`U4oSA{mN`WKB zC7;#lq;h}LspZKB$`N(QB9IdP*Q)V%gNnd}X@$H)giCWJ)Bw@p@y%iiu9~d#jdcxg()-g@H=A(*`O!&~sI#H&cz`Ub<@jMo5YifXi_lp}sqi;pF zX#RS1ty!hyS^mhbBI0DoSikgfZh5*roEb04H`7l{Bqgb~x$bfZw#@0z$Q}S_+nQlz zlOQruBzh{5>zmA18tbC#W+sK#q4in=GE)ZldGvT6aqzjgm|)~(^Lnjdl`Mxl!lRZ6uO)$I^a*fXy;?xM-9O}kK}W8- zXwhH{jyx5~IMBz{ys9M2yi~n>1!!Qdw12Z2t`)KI`f#`Gi54qIO}3)nOty@-3jCLa zz_pCSi?VQ(*AoLpL&xi6XLv=LjGXUX8$aK%eD4+za5hyyrRcv@N}+LY7)l(bg`B>9 z*RpZKh0x?J;FpBD@)&EqJ>yleVlvJ$+D3RGGz!`&L*Bn>y4&W5O5Eir9K7fZ)K+8t z@ZG?^-zAm(EUniPf_OD2y-J|+d|u>YguU~+>rA=H8e@NMyI|kFp0gKc!wg^RzD=tr zv8_bZ#pr6xTAL%ZDGy^rvjwP^lTgp@{J4=~Mg2(?%i&z((p7rvQg2ryOliw*ILhRX zP*BMEZMX#1!B{bcV>3Cx(B-sPB*nL=oytw6FXkjxs5-`1<)FZsbNQx)$(`nF%a&rr z{m5V~)3sO6bT8PPf5XiM4o6xKFwSK6eQ(+cMXS&IatZD0S#}&`c~8!Gk#202{Gqeh zD*muJ((f*e&gBuoUPnv)JkgJuF1-4Ri-zm?CNtk#YP|RsX<@8V@~Q&^jMaJT%_-v) zdDH0qGTPqXN>WcwzI`CUhdF0lhva+$0&LU!!%26$I^+Gw#@G&T?Uqn5h`ex4^-;q# zmHm0k`MlTj`VFDOTf^>I(^3tZ;HMK_9<47|u3a>Doy~vZxlftGyOJTF96G_f-{a<{ zE3cFqxx!g@jQ;jBu=Ar{^WxRw_pZ((O1eIcytf8wDSz%Mt%Ud?)bGTbU&yN^@w{T6 zjYlvSeLp$vCF-UwIOHgLu=eT%G43KAG~Z@myW$$OtoThKac`)}xgA_FULTybiy*Wn zbzB3wl&#a_XYf?0%*N*ka<~fYa7PK>@-}2i1o-K$*3d6pUAO`gOWKgWksIJ-gis2X z-i7bZycD-L_mdkj=M0t7?rH;E4((dyE`c^V=v-1Eis388C-M-=#)RFfgi{cpx70SL zu1GZnrc}+qS#DDIzKoCII6*5y%LB)|Nn^b)8fU_JB@%5n!AoOm!Z2H&sE)rRL;N+_ z#zujL(U|2!Li-cuA~j`t|CQ`|_0t0VGLwViFG|XDswtc`R%JbaFeD|}O=U-qcvlE6 z)cM&BPu{$(jLD0HpjuOG?AmqvbSC(z?3T8xZP>qh;k@3+cto@s%OcAM%5|iE&vS*v zQ&b2lXw>K4z?C|LI>kd)8Xh?7zRJ~pVjoxGX!_&hmE1lrlyB|({{93o9O>@91Ty?S zFvEHAeOv`MGQ4PpIjJq$6>DXF37@z;eoT}6YDb_O>kGL5EbmJ7YHLO1Zu`HoT1#Ej zK%J}>7S^zylmxi?BaYNWDbUe1$Uj;Z#Pd+tjaO0yJT%ulRl1Z);t%%!@B-8%+$Rzl zW6rMCsO6ufvu4~EsTFAMJt~K$KI3Dyn`4Rc&0~d;MwW#|R-634Aojl?STHZYbrb)= z^*pr~3}%5tTBZ16DcfcK9AnDDVcg(W@Ob%tr3c5KYsRzXu0b|`z8IADRWd@G#~G3@ zY10NyT!n8WC+J5GmcKnLO}>25e8??wV4z8E_rMHFwXKu{;?MXg`+zgnInpVcK|lRE zH@;obyOufeTdFHEcByC!EU}G`IxcPtUa_-oRGyf>ZZtdUCvlSnJ;AU7jy8PRyF-VH+WqqKL>|G>T(S1!; z5@z>+63vfI=(JC-PLMcf+JC8~K!M`){gZqbEnLQ+`^U5cbf>B$!qf9?Q z7X*oF4Y==e?y@9Pd=R<_46)%^IE`nPD(?ThW8|&9t+@+APAjw?k22!|?*?+(ldvUE znNF7j)VD=$;&!G|_?;8okMgv&)wco@$jcL&IM^qNtH3_VxyBy)AlU2qig2=~``c89 zDN9Ss7j5e2H9-~Zy}??VY*bvTqe3q)GmeWG(+dj=`KfGAJcBM#3npJ5*VhU9LI+tK zfjHrbGLVYC0FyH18AGO9wv+eZ6gvq6aw2EkDv`j(I%x9QPojXpFekVTZ!M<0O2(vC z6DUT^fat8oBC`ZaO7dAEL)KX~Nx;7m3;0;=2)hCnjNL7bE~U9==DWbP7;9yqIoL}}n#HEBgM$O~2`^fb*2WXg#j_F|D0&g4Y(F`K*Q86V{Mf7vTp+-Ae&xY+g zFGhL$l1!z?P7?=JEJq1unGElB%MK5ogCk(+tV=FtzRId!DjEOdQpV-Ar|vO(dI*Wx zyQtVb%|O{2`ps~5meh0yYh_>flQBxf&1xa9MCM`eR=o(YAqL zMDC=t{SuKvDmxk$aXCH4sWA$&|am`u6fCz2jBw1o@;2>TyVZG>P;1Nv9?j zSjF)X;SUvzNjRloLNGEK{zNBvfc2n*KntjQ#}m%}WYi?HI~ML*L4c$;)!1r>}mS=6qSWT@Y>nGQn-OpM_mQ5;`kG1v76WQUET5UGpO$eWs2KEURXU+Ss- zY%OC)@RO735_^=*Z~3SuBK8+g5pB8m`;U2s;f`SJ5`7P(igWw8v1AeF38uY%#-Nv| zj3`p*QW=iIs>JM#aLlG-M>ujHL;07~!~1Tn0LIyG*?d;b5qI-<18GvuaZUED#uvMR zSAQnkOS9*1`2S`JcL*^o^IOuG^pa2*=Gzop`qHRE6Tj8>zu2Y&gvtcEkZA>A$Pd3^ z>Couq@hVJ%8gl&63%O7_!l-c_seg^-5)<+jDy_pqY-pmg{$D(exHCd`6Xb5UJ%G)6 z5zMrbh0vc3=YMGj5OpnXoQ=4g5KLsA;((O542ZK3x96r@9JH&h45_MDaBz8f?%y0m z*z&dpD&;Syw-VNH8MXkpOBx2d5v>y+SuHi>ETz<7+3>U>upt41eVD&3qT!42HkPEe zrUaSXwv&eN6c`|w{Cxkq8U=W!YGgdJTM8k{WP+NCcFZE-zB^RqRL5Tzr?{sOdt`tD zx-0EFN*+w2XYG6cfVo7Ta`8K2UWaHsnYtD8%}elb!AhXED1&?>^$d0y3F^- zUM&8ZyHdq6%dvIZf7uSYv&(7K+BSG3ySF07 z>?mT|mc+&zzGJ^;Q7ZL+3{eLmv=DD9TF4?m4YUXxT_ztPi$X^ZWVf#ZhIp}B*tTeE z{6AKAYj7QS^ZHH1o1(xre_-Cc(C6E;z~Kc08%of3`Ac5%(n(EdIWz~e@HCZn(+h#V#cSa{P&b0JRZmvTVO9+NsaYm zBc=FC{bz%7iZmt0BqK*_5|M@!4dD8g zcYEo(-=FPwo&T$7oNa^Us@yVGg?eNxBUuT1@}OSje0}x#NBlW29GhEEE(uJfPIXc) zQozE;r4y*&2=tG4z#G;n8Wa7Wb8*~H`ag0%ALenlW&e{KBLap5;E8I}JmA5B(5KO9 z9dar|ehfmCOtG>0`^WZ0W&iS5H%kgLlCuKVbFl@6|6h*`ZZAH;hym3$Vq?G)|T)gKudKo zGBHhj0H64HH-B*G0!UCk9{r73_|pA%bcM?#zNnkjqq5U_euv zxn(OJ^B-Ap09;Qqt3L=r25bM64lP)<;Xg>h4bT7nT8$cbf>%siuBq3~-HLID?iyF9 zWwc|AK-5dwZ0B$HoX{=F6LvU_$%41Kr{Qz48?;MHebQWC=ZeHFw5KoSxXVjw7j z5C4CkTecRHQ3(=xAc7iKa5+R8I{sfY$Z@X(47?KW0d`y?)>Ter#hGy;Z#%#EGN6Dx zFfkdE#1ln8S^}7HVGTOKyFP>pilBik(g2*UYxAjzFMb}onE@}3v95g%Kp2mATzK*G z(ocu;ms?fy?BJcE2MmAZRR5KaWF>oCc?l}m6=J6mlUP`>(iqv?EmK* z&E4+dfCixlb5GUrbVWeb)$x~8!G$FV>4LSw2Uw{fp#4yQQ({^sl{uguTls>|yb+c6mh=4kqqNguD8spg+t-2Ez#V)3L3hjQiTA5P z;L^nOXvE!Ne|`MVV2icUCCr7&vzz zT3j6t7$qENIsz3`6m$pJD4=HxpL2Q6-=&g)1s}6nlgqO=+OCZ&FaRBXtZ^~54*nY# z&k*zv83-40g2jcLnEZ{I0mUU4_yh@+O9+0lKGARkXY&71Rq6j#Rio0+fds->J2(P~ ze@~iJly*mD<6$9p+rvVl$gsF{t+-+J*n8bGYPsT_gNGZf8bLwrB*9@}VSu314Orz% zN{?Ljk}m)Of)26`VCP|{;CXc%?cEf1a1&u(P_+_X;=KT#Ra1--Smpx%waotkT;IYe z&ZgIn3R16qz*U#s;2yPkkZu8{F4jigHB4VR|D!bC`&$}u8$BqEJAe*F0=BOTuvQH4 zzeOHB@V-7oGy618otRU>)Eu;sd^a!w+ZSFEu?Pbmhy?&y>44tW$=)ssRIAgN z@$rV&eq!wFPsGVUmfAmE%s>Cuz&$)%^#)ZCSG{HNs8jxKIilTngK;N{QS|T(S8Ez&@%as`y$W!md$czgQjM9>lGB#G@Tt@^Fi41DyhIDgx zH2f)z21Si8Z9IcABIN=sqK_C83cOpfei5oV2oR-X09t4er2~?w{*~wOm$es_2@G*_ z^U1`+9C(*0C`iuE&NMDzu~@GcGc%T)#Lqu9d2PM|8sZrZ1B0}jmetMgk(@RM^_8 zAmr@q>Xl@oPvr-z-ut?k0F>x(e!D?@ z-MBb1@R9Yq7ds|PO6+Ibze{j?ZOQqs7%W3Jc5HFE{UNSF>u5MNVFXR!^DjICC%6ZG z^PhHAgc6VU5_a_x{B-o>$$=OwcA|6-4-YM!u6_62!4;2%}Y~@|-Zi%^FmL1P_fsnr8F! zor1TOm9f#3&3Zb0=`1BCtd7=Qw( z@CIh75<*-uhuE3OZf-92P+u3EUaXSN*%Tg5S{X3T?hns;?NoxJmO#FUB6lT^@Dd%3 z5N0`){(=m40o*c=(SHvEmPG&aVOC~>QsNj4Lj?i!Rstasg6ib_bB%^Wj04fBw{nx@ zzQvpAR=+Vmj+TupG`4pGEp902-P`9oH@Q1+=Om|y@s%L-6RVFmK`I(_pTm7AugXRF zWr4RUnfVkuBN`VL(soY%X>>GgeS6yz(Cx&k?61&+XI`A+`D=xYpn?LGqZlyRy3@_P z#n65ffwGg$PR2GT?{(xIfh6nN`%x6Gnq&5%Z7-h;I>SU26>~_=6w!>VtiK*00Aqe0 zz#2S)4(x+|gWFL8*?vCSKM3C zvLakf@)Kh6{tDIaWU~!rp9D}bo+Ph&Hw9iA*ZK3VAlLD;cv8kiiOr%xoZC@(P#9#j zhXuGxSoa4KXMI7>aoT4InNEQe{w>{q6I4V$5He;Q808bSs^;T5HSqK8&Vs4M-}Z?E zl(>ukC~=k_apJ*0eet)A@uG-PWhCHF{zIw{%JYdNZCpOZ&X0~3X@OR$oo^y0@O)X2 zb}9mq9c8^ihw*&C*u9k>q2DQblUC?HW4DTi75fR)wje+M)3~x#x!9+U-{YCDGZ_=# zU!xxt*?+gLXtGKx4dk#$Hk1^~36V2`zKoBRxgGWm%=`tzehh6&v!mB;SuJWil#8+& zx+Mi>=jX#@5}V?K>4}U})Gp`}Zn6izp8=*1LF}2+7nwAQ$ga=RDu^#=AxCe_T-9?y(E}VXl>^ zAY3<>O!*(L3L~!f2Hq7zFjXRAiO0_rrkM*=Cim^`AB0lH#?v2pk%>5aFqWo*lYWp} zxyb!3aW95|9EwGb!fhv95za5B>ePyQs-*FV+8b$9N_^(k)fL`6GqM=j)KqtUdTfP9 zgS@4Zg~`F`nFT_JnGyM4zXm%s3leg)5_G--ue`4JUf*V#=K62o)P{dsJt2I^kz!h= zCS>?{-k=byBLq>$@83MpIg$Ra1XA+SFO0N<=Z~lZse>|8?!=OPLFimTz;P~+V!;d% ztC;upF%L_4)opt<`?Rd z8Wo+OV-(25xux^>H>qa$kCvvHAM%J3oMFMduOx;rQv@6GW1Pu!P<*&khgrl-`(Z9` zo4nc3Ksz{433G4JH?>4oXAF*I|K0abn87?lPHn8R`fzo7JA;JX(9p3|H!iLra=Y!> zjog5`_!3%Pa})IlRB*)f%2HQDa{}XaQEIc&eDjr{L%FfBaYi!}c^+IX zp++K)bW(v(^f9GT4&BE{Y9kI`jFwhqn=v0_J<^0IE|m({)0mxnGuPOqBp6_MZJA59 zb_xj6TPE$;7pMSi8=)YTC!=2HPI!om&}AO&(5xxZLAHcz+B7UIEJ=FP#X6+zwOp*$&h_7)3w2>ZP7adJ(Xjn@F$v$`%PSBuN}^xXtK##cqlB`G)YXU zq#1G zANcS&N$Ay`AXEAz6~EtYa{a#QfgO)O9XcGyE{Lc$i9eqa_lgYq*&ju{@8Y+lgzOEH ze-?4>*6oTs1r!vDp$ibByv85&5p(zkl-%rr#hy1GRAPOaL( zt$A_efA2uItB?h^n!u~S*(C}h$8!D&k#!qfU0;tU)snM&;(&V5ep1nV)XiM6i-MZ$ z4;kh!oE_TT|IT35kUaBw)4Qm0;78#8i}eN%{yP1=$AlgH<@OebhK%Dt-J7iS6bNK1 z-n{Ak@#9C+!GTwDMS)D-di*#Avk}{l*oV_Ft{0-2 zHtc+ijSG<$6nvaiI{7A`4AgbaHZfQ4=AytJLRddg+x+1%R3Jo0ZYR&8{oh zuboZPxJ8`4q@iVsEPIB?C9r+Lfkn&y1t8g4(b3U~6$^tro4%mn%EduUvC`@^I zdBt>5U-|}=Cy|I%)dWuWt1AFP)D5I)y^TMdi3$jgNF=oGZ>;pb5Hq=Zm&eC7OLrca z*?mPa?$X`z{ z)t@E9nL^{7cu~%&D6Y=mqu(Xdt8$(ey$95*s-wDV$h~=f+!zin4I6Sy<_>=HRifUS zIYBOqd9JCT%|VC72An}^f#SAqbL#QyCz{Rk(sjG+sdf6!EIaC zhrSFEa{ot6>mFFX+Uvs_^V5jL++A0BzMh{|)-3 zHt*R0?`LMi>gqi}Mt9xA(;{{6<`l(d`1;L09rRqLbbXf88nOkI+LFp8*8f4tW%+fL zvje+qYmcUKQ5(_~h{j(qy4$&4Ah{c=goZ$Vyz z$gEez&(>;sAk*umQ=BYbFY_>c!Mmxc{pIgo@9Xo;k%jYZpMB;||73sOxpg7y65z~y zTu3BhW8d|q{vqu}+iWaix!nQRn7gbq30^&O0j2oW!I)0aROy*ImfWV!^c=VZ%uoC7 zLcZPI(xDp?5k7TXz>PbyOrF$Y>P?p0fp1%Ai;hf)3Y;$6|FaZ>$v!7uq?L^eq)7`S)O;YBeq7?B~&0AE|25h>pXl6qM)|d+-aE&r**d3?E6YS&am79&Q)3whC9*Dj#TDO zEW~JjhLxOWS|>Mo@jxQL8>lyK-$*&D%SpmNp?3ThfBG z9+mOgRayyil6ex=pq{4j>uv~E*_FaE45F1SDJh9k2=yiEzdlu?n`;x`kGB?op!QPD zuQ>4Yj&J!BorJ=GQw;6qBGv27Fpn&9Wx}EW#G#4;r?mS3`3a=r+8TQ4YwBwwR=Z{M zs71}t|F5h!4~GK$-o}TBkgbI5gJhCDiWm$TOV$yxOeG>)*6fru`@UB8tz?g^qwM=y zvS(jQ7~2dpzek_X_5FR{_w5gtKf1;<&vTyh+~+>`IR~uvb>1>dtK4h%Nb5Adw&z{a zUiY0#rm62R&(B_Ix+Vx8B{;`iT!ov$TYSZrni482;Weud3x%q+e-V^Uaqe%HUZ+jiJv!Jvlt&qdYq>eVV&QRY*dRUixcr~{M#ABc_Oj)U<^LAi*}8? za4Z7qJ&w2MLrzlOK~l{RGUoWM?ubZ}h@MtAb+@TtP}YiNI@Vv$c(EHnCt$*y4z*v} z(1LmP&~7Y9b^-bYB)iVoaZ3yz;J70IBqkL~1VyzZ_qeWtAuN83B%fQX*zG*jmMm{H z8nyFd`o5t}H@x?qGb`}cJVQTOarGdizJA$DXX=bb3@3Sg&u2(Pu1jqZ5$KRrH}N@B zcJ(TTID7y8QPIAr*xfDItgj(ZYD{H=7j6GTG^bNSE-!3OP+IEtb(`}hCex2hGL)$r zdEjCCmZ@)DdFAAk9L+v086PgEWb~3=;+;CwHWoSg^U@)!SnVJtwX6B(>d`)rG{+lv z#_0S%AIqjc@7{1IZ@N!dJ#zCDSCreVr#P>FCNh4~S?BUhnp}neb>j))jwl~2zo?r{ z?-wf)Ye%mZYe@ek6(&xJ2-E9go}YNVCP67u!YhZT9Arm^EQJmsi069ma3KY|UfH#J z<*_FRTRSV)c;kP=!~eFTd#?DtSFBfz&ec>zKE3k<7267u`n7fJVstj-^B0E)S6x)| z#FzM>ee1qt*F|;>>Hqv9I)W}#TT*|j@HY*Lo$oC3*C-E9zWo``A(&`soBJs^0!e#l zmJM}SfQEl$*NBe)Anh+RD-+-~ocBrvDu&lV5@~Vdup!v(w=7?HQ=LBksmsig2DC#IybmS5`+4 z%Y<#d-c+z&*@5P3!B~-jn;VI^F$=x5UaZLE<@t-OnR7Dxebi`_R8|}?-lse zaF=%_d)3A*G9_$+Y7G+9Ev;mV632t(HH5WrcEh3czsq36B;uEEE|&+*9{(u%aAf%I z5Az0D%Qi-vyoE4KSP_JLXpugjM37P>n4lmi8^^SwyH6w2q^>~v?R3%{DPj2U*&}n} z_X1T41OVEtD~-JqWy5TH@f++lKV-Lp);6S-U@v#$363# zDxfaFaAoJ$K*~fR{%|}`uEzo06mJG*sc!w$5LsSVJ=`8#ZrFS__>_*z$Dn(a(4R4p zCOy}u1xB|`bkCjG9&~H_r*llyiV$T(>=%F2L*RsN?MhqKm=*o=T*Updy;C3DLd3*! zAVrmT9ldcW@$X0c#BuH1z-Ua27 zw0rrzMvy$=u(gnB#zL3AY}&ZOo}#cA=elc@hE7ivCMn}WCCT`cg9QVNDUvUJiaZz* z4E~HMkF383Q7M^Eb>+yR2=P*d(8QhV&a_ZEuf&bA39_J5(piHGsh&KRP38^Lr4XW? z(p8;5x=kBYejA-r$TQYH1+njz3UgP!6*0P@@B(rD30qL@?Wo4M$#D5yMgEICurX#| zIW6AZtDVa4=w?^MJHFEv81vO(ETU-=a=>clGDNm=jRx>P|GcR7y! zf|xKJ)L=~&=@5)e{6QXzrbjXu3u+^CBNN~Gjuv#i;JL^e>l^F;maCId`O%Wx3|DXZ zh%3jyjFQ!j-k=s{GO@N^57|%B3henaYbJ>|wH67=t}4+n$W)Tp}2bsyPF za#A|gu^9{Z&HGrQcrCa2&dN}k#c<^BRHb*~3?|;jmJ4hmC$((M_xg0y{l87b~q|`ub)}P^2 zo}0?~7?mXq=rRdyAzFgdz@WFeW z?)e`fn*S7!oA=5ePYgQ8#b7KP-op(A*~Ga(!w8weg;zGmrN@r`!vtRS4 z_~VL9@6AtktK*mf@_Rim_onN%X7@L{ac-g)OK1H_j)QEj#7Trz2FL1Z7Cy-172s*# zk>eIZAgN!oVQk;uUq{MxaVl>raYocCzP&I!Cv18ft+u$$jW2)yCuWzCA=-@|8z$QB ztjt|Q5|rr7T^HaAb#vP460i&Wig00WNeScY!P}EYotVMJed1CrD087C|2cI4X1{+6A_>&(+f^X$eB!&oZ48 zbPRiak0WGx8T*ZHZ(Vf~)niSu)vC%BW;`y(Oj7#tzO|2|g@xK~#-+%K|Zu?q((LUy`>VzalC)6!|4odoH zRK{$b1b1$nx5r#r`)T?dS~w>vWb%gTqp%`mLz%l*7V{C(wILi_0HZX`;Cn50ig zUOBQ+JVzB}Ts=u)5i#BAHTdsE z`H{Ix?m$?p$fy7p#bRi0n#H0ZjCPC-JW8_kqo@beqPM*c_Xev5V>o)X2nV%wLoYWD zF@w3k#F~Va-aDMr{N%mW&g_yFQ|$KUs>e2*DAC}%t|vUr@M(L*dwY5GcZhvyru;j{ zy@^gPBKMeFKN#2&KXcnfM)o8E{qz~(_gv31sV5gvJKNC;je7cgjbA?(JE=-17nd2|=## zdoSxX+R#ggLi~C(3Nf`K?G{dUZ|O!JUr)3(tLo*a_2$W7y0}K2B%?;)q#;BR1Xfzb z#71H_#8(KSm#JvYJqhilpN)No@(AEA2|j7vHTtob>MDERP`5OiXNud4hiP~&9FxYl z-)njo3cYq*3<*m$W2n(KLqESrw7~Go7dQI7QDO4#3C3y&6rG)OdQQD9ZPmti9r;f{CFuk@;OY1Dq>*H+{2; zBA)vhys7kmIOkSBa*myPoFh6a%=e*cK((qI)97pFC(js?cC>_xccfP>*0@Rro2g04 zt>Fbbz9Ngm0cDEWUKOQ8~k z`H)wzJ|@?TXcE0CKK?M+MH;&)@oZqL#-uA|nFsTm-#*45cYN6(p33gywWQ&dAbAl- zXz>wq4k2kcv$aak7mIOxS$JZpc|-G<`myPYFbE4!(HOlDI{mD2w8`9G7Jt zED|M81x)oi^ECZR>|QB{{9C!kmm+VL3d(6Wxp2pWRikB?s=(cCO3t8m}3lUNHdyu=ky=W_D!ciyR{l^^9t9#n; zPeT4Z*cQj;G!ERlc9pE5u)vhT50#^OPl<+;uN22(75zzp6bbuJ(#aIKD;b?H=a7q^ z7v-Y`so~uBRK*1aSCmfqqjs+`G zajmy!=~Y09G`lGA8YqgI|D>nK#N{ z$G&N*lgd&zM%2FsR}VQj@wG#CAE$~l7sqr(+7Fpy(?pj=r#587uxw;1GmbR+^Lich z%Q2R38<3Sqr?+h2Ggff>BD?Yj1pM~u@Whkin>tKbT;aZ1;SD*3DQC?@4u z21tMC6U1wna)_^}0@htIy-X1OV-fIULR*a=BZV3=xdJFT{Q+dUYt51B;|jk5K@a90ew~n>?GnZi{e%bCr4)ji@Z)9A z(B^e-wQu@t0$daE?$X2?L-X!EUi8fQu%(x-h7iqB3ovjRztA2$;@+L#)-dtzqak>A zIJ@1=eQ(Jgd_-H0N3&~jsW)LTIg{O_%iaW?>x4X0Mgz1N>mm9^gLTal9kl%McsZn2(P*eDl{8ge5+#cuJ_& zT@_R2FvYIBnx|@QLdvjRk{*qvGHhKrS)CX=98;w^X!a?$6l+AQd>vYUb+|1yxk$AQ zO7@<&4N@tV%Iv6ZGoDIP;Wuv-mBwrY&3BExu;cN#EV4hRsS} zcq`MWt|<6FmC^gb`^3zMkb-H`XDU3icHP=2br!155VBx)^;2>KePHh2F8qc62XU)+M>u%f{JYZ;LPsw_O zQraD$z=b7sTBXa5E661_d75k~5C_2VfE8PA5xkg$t|6_>?#!?Ok zjn6HRRwOC}+KA+Vy6Db zskI5#xKP*^iJ=9e@O5vENv{4EdOY?Hd4sktO2mmQI;U!k%)H3SrSpTf%ZJmV1G*gW z=Ltl0645SyH_}I^D2&_g+%@U|*z%`yOavh!Q;{TyuPOc~zQ*0k9zm!4^U%ca7Xs{c zAqBhB!axT;x9vB%(r%mo!wSwOi8D5>PbE%td#lEAILk4If*lLO|O+QH= z>1GoHgVrjKWVP@UgMP`q+`$l|6`-mdS+sw0oofUd&(zsdrGK}HFFr!vL~sdF4ciF9 ztotL~x&*<5_6-MDA?T}$QU|V~MUmZ7b83UXo9c9dvx)0najl-lvC&j_V%HN{*@?F1 zn8dhDr#1ypS+*AN>I+6^l}G%lzFon{w^36M>V>O}Xrt)VuFBQ40UV)8x%6DmeUmu2 zz7$0m`wjZ~uIXefQbZ7Z1RMv%3$X0}Nld^YNf znsHnsQWZ8@6Z)LvKzp-6%g`&pIvW{}MJ&nPFALmU?&R`+dq@ZU$#k0gHro8~eqPIv z-^r3=f0Y(gBfsvsw`+bUpq7x{ZxhmKl^tkwc>&v5Jp^!ku|~{hz9Yt=x9s94M+x>O zx{~)OSjHt>NsY~#%eRF@Vp#e0iX%fNNW^O1-#!CB-m>VIK~C?K2pZ%qdIXJNIMb=# zL>Ud$rJ^4H%}bEhqt7`?vogB#gS+TA>WGe1&qpLfedm*oL$Y$vmtd!0s%8;1iz=Xk zvWW2)N=MPrp-A-EKJw*2?Vtzi6XX}0yoQ81A+SDirjXj&9$@G z7O{N{&`00y@va70%X7&}nfLNOsWZ3TV6wy?CKGBov%lvuRVkFi@VFnJxX#~*aO3hd z03BGX51B^H)6soZoiQ%m^uya@j{XT|C!?9WYhKF42DbydW=u^Z=r!-2UQj-eoq597 z;Bu^2CV9T4o47JjRkszI>aih>=@xF@(-Kyc$IoZ(*K_w6d6f}`nKxqJ#fo9?Kz42@ zFUxxFE;&pB?(*fbq~G}6jFG`ic#4K4{@^!WvFk?dV;)hB7MM3TWL_04#ssS*kr`NzVd+`v z*P{ia;#|Xg^5f1S#t?oTfh&r$N)VcO3yy4z4uzrzNX)!wj&xM2V0p1U+hpbxRdZ44 zoEx%Oo~ud4&f!~V;);qfAiCFT1u_3`~skk6FXe)ik}7g#`HZPGl)U>3C( zX&*-D@XTFMgJef#!mh!>9$-~-+IYsD?b-=Fi-m(h$j~uzy_A)6_Zck>|AWEbX7X&z zd<~?y(W#$LPdwuI`elnNB_2%m<(Q1w6x`37T9dcdC^c4eUVLf4S&B^sG4${E3HLXh zwVXAvVo(|3%FI%?^bthUi~F0SWevO3I-$xkLby3|r0pi3Tw(wJkTeVaG(Uaxc0_={ z9%6LYBzXJX@=wIwd>|XELMx$pXA}45Evu1%+&%R16IG1RD*Bb}yZ`s*>{oPAv zhCe@>eJ7F*=LVZS4_sfq>!fR*WP%)`E4J zK6p&UIsGNh7dP!v*HUPsE_iJACn@B}BihCp?ZG39$In?B(sA~2ni8RSTj8hq$I`E! z<{u&y0u+Dp?6Ul3DBQWojdTR^_$2!$Uq1;C)?;JjaiW8^M8auZ9G+HLXNi`*qVQXNxJO9t|iFy-U>oHLO&a(CQk==7Nr zn1?^G#Qwl4-1b|#44nyHt~mPeIy1Z?owH407xDI7TZ++DWm?M77$~IU2{%Kp(ZJ=b zv8H?9-(+LBBLO!nCMPhZlaeh$uJ#v{)-~AQBVOngbS!#Va7~!(?T4qY5G`q*ZpQbz98i#Y<$jywVd_$bBqd9>XL z?$2=3x8EIb>suJR$ zov$s=H%8!9r)x?yo(`06gNkS+{IKJfd$ESd)wg_e<#fqBgXg=W=00!dF`7f`SugXe?YuY%fMI{$tbws+}gjLR*)*BVLT`JR_=uX)q zj1}vD9*?`ja0nlbk|*Zp4QjhUleVOolFp#`yd2cWUkGDHK~m20toRZHuYEWr4C(lm zsqQy3e7eF9`LI=JHB3MA$?~oYt#(?zz1%ut9a4r~aajHQM>2yu*z6EHvG|pr( zIqaP%X2ns|XAx=4!*m`H0T1lC(bL+utOynC-{2etPR{quma=3IV^cjI#c}oaQf;HBeY)k!PBcb ztGf5jmm$)4lEY%3W2d7><6?|LmQ=l+?v7CmS6MTI^i(t`V4R~TVR-x+2&Gjf8PiH) z-@fPHMGKMq*?QX*6Ij3av&_6HUgLJlHYI}cwxT+9Tz^+eSl}3wo`G1qqaX=XOiwF^ z0m{%JPQA-;9Op;$gN+!BZu76Z4Q+p`K!16`Q&y(KnS|hu_Um#IdnX*vd78fNnl_m# z83bQ~*6?T#FyUw!=+hXD760T6#u+v`PKt&lCMIn=KD>sz#Xye8%re#det+)zQnkx* za~N#Lv8$8QI++y%Y}0;(fW?* zv}3;X2E~X1>!{In+dLjB{ReGIHR}z&ZwGdCUp@?B*@*FbxV0C2VyZ}GH3yIl4yMHK z`F)?RG)aYcyJ8AXPl6zZO~o8!4QK-zuC_CndUekwYW+pG2x#@JW4#S!wER5nB(pq* zWf{;YAQ2f%A&fVkR8pPArv0Y$~)&ui!iyn+kZ1LzXAYY`g~& zD$$w!DZ|WE7sUHxa1p)V>bh``abBhQ58r=}|3TEzyJOF$miesjh2F4({)Juitqo8I z?)f9!5`#0&3wHv#4C>=DV~Ef)Mh{|_PN+48Y)Le2OOh)v;c-KTCsP{7j^9bMdXxZK zdi-Cslv4@N65-QBNF*RONnV7Ju@ITN=}|)xqe{W`#ltrt2Mh$1>!$W`<%6tsE1F5I z4m%Mq4vB(`99y?KQf+bu4_y#3<91iO$UqLjpJhlWugUp&l>i#vm3u&f*_7&Om3`@K z9J?R4P5+zI@7PkFX?tQEJs7fMp*gyGtJ#vfN9?;0DK+r_-vVn(7{84n zs^-aDVxTjWYUF)bFxEIoyp5yg_4K0wZSI;k@8g3lsKs4VrPAyL1;&NQq)Vyiul_xla$L24BigyIIy&(T zIlf5E-4UmKTcB8=X1;NuUU3fLh02a{NvjODj$d-x`dM+3{_WQ5O^fT)FF3CErWY9Y z;_my+6qsK(TpO>xp(9@>6Z&y)b23-3acZNS_h5Q9@sdf*Qmu6k8x4mwHF^0i?tN3{hMUBrfL0 zRB8jhe{QA6d)tzk_&0QG>0{XnhPWEXdwlt89(rz~c!FTenGHq+fJR)eUr|%gKApRJ zlaNij!H1Ezv9Mu;AlSIE+@9RGc^dv+5m$$e&Vn6ek=7Y_yy4bmH{O zPvBwlC7pis17Yd;$K$WMT5BGogU3ATa--J-hz1$vW1XXoC0&n8Vm!!}Vv0hyR8cAi zY{{4GV-6O*X-C+4zqupBm7Vl=M6Pw|?zo@$Vb_LDtFy~q*iq1NPQNRV3}d4-2~*0u z^f>;Md?EoEQnB=E`ku^Y2RF%;(^|Qv=ve8_fGy=ZK??4ROv9@B^L&XEx?&}RHI#m1 z%u~YxMgu!Riv=Qbhtnc13?g>S3Sf|#F+G_LTv@oMtdooWn7FL^4pGI zI5)+HxDb+UHLmtmsYh?0V%}2RUwumRo8!kt%WLV+4UOwZ5Cp7k>0-926NXj~x_N8a zkn&gUp4)BaI{6B@O6WrF0RqI}1L+lc;%01TD5`j9Jk$BZoH*3g!{KIT?YG143v8Zu z2s)ALqBD+)JcL`les05r4c=4G-n^F?a%4KDKc4vDCgj6)5Up_ii&o+s zufzT~$Mi`FVyaBa9!~YjiXGP1f05~^;|a--5cO|nDO~8xxketQaFoo-n zU%)voa}0n8y7I<0CbM-r-JC-Iw>f?(Ve14#^mYd#$lc77Q|xBh%TeLR{Ri%=BkfP8 zd@{8;pGj-I?`v1g1EYI*SVHzoGjG2a5fIPnc_8hF#MfW5r$I6(XO4O|edD%e72C*Y z^mTn_sq-h)H*uFk^pWOOIKbeE%IQ!gRG1NSkD7V9|0Q;9o&{GfwA)Pkf&R+Zv9Bte zJ3B$u**aIC3*07vC$(%lw@mXkwAjN9(o7%8xeBG zBOWhq22qA~RP_e6J=?A@^!K_<@s~?naEz@NJe)9EO~>tsOA$t2K0q`j#a$hBd!YDJ zgnQ<>m)bCek#?RJa^x$4!Ui#o>Av9B5!gf?nGhT(txnF$~bQ%S8OVb zin4>HN(k#!MUz@X$Erl}_%IwJ@15=&I99D_c~yfa<1TW;4~8Od=>!6$VV92?8O-A~> zHC)O9S@zZHb}?Axh&TS49`mVoW@yi|4-4Lpj(^v)(1o2daitDePF}^7eO6R z{A)Zo-1FnTc6hHpIqU+f#mbw13X3JS@NmETKw%LE`DsXsI&CXud&RmnevG6&(jT{3+{{E-;VLa=KA$soKeffQK`d{iKBvdoSLC=w?KJHGYrw}X9^ z;3mu5_*gNk_eK!ODn*s%?4q^tkZ}LrE09e-1>YAV>j4Ikk_3nW1o#D)j_PdE1*24{ zSIqjp!ykGi3>ef^s!$7?+8)MJ)YU>(Lg1NWIeX?1Ww{-8v^d4@K;vahPD3T{@s~TZ zN0=k*mPNLCF?vb3Y1~l;OBX%g_GWPce$onGdi|Xl?Gty%YW6ZbPjCK7(W9AQ+Hz@K znjeMEzjAVZ(W3~dq?9NwzoW;TB!8QLMy&Z{*Ik(WJZn*^{IRY)`ClNfP6LerL_mS0 zQv6`z@aBNH8u>?i?oSpH?7#J`Xx81PXjJ*@EVB-=pkEc@$}@)JvZH~Aei9-bJl~GA z5>5<7@ZUj3mF0!d$xY4)5vGIWsBmvzoi{+~29l^}8wYkx4~<6sF!{f%N8Qi9=xCgu zq*Mt)mIN^%Ly^2lWBetfo84z8O>^}xqj59J0A2b4vq^2Z-)>6@TkdE5UsvZJ<0Iyx z3~ynx_!0U(MxWexWjHsq?kFoT*Xs6|z`pwF^LN@L(en%K)SlJV{wJOOeTrG2ZuggIsSZl>@1B&!@(@HNU%@inr zr$-#<1qYRuT~J5nW|1U`i#OUMA2^L+R;>M(J*?3r<;DaP45Vmrf`n=BL6kbUP)p-M zXFCIcGSmKpS5zRHIR@`Z-+89vj{k7KZWjV7$clE+31mfd>TZmWKnX7tOd*nxt|xCn zT~=2q@j?ZBR4wHH;VN<2o(_<{bbX0PP_Z~Uxw5`3tF6Sjll-D&wXO0%UqVh%PbeB;lou=zdlwJ7kt*@XGZ5a@W z2O*MsPD^*m^l8)FX*S zB!9#Gd>^ag6ykzo-Lmwtb7L+H^5KL6QU_?yLmCkayb_Xg$bjDX;GJNtnEDXUZ|)Gsy-9*AEG4LfQ%{zGcs zf+6h3z5wln{7dZ5exquxbg?zhGoff;aYt%hP9UVij&Ty*4;5v>Vb>GxI&;8@xN%3n zUu6XeIi(A@T=~z@{Z=_jnK_%|*;B6BdXLy(lr`Dk!qoC(>Jq4o^aaiw=Wh|K+c49# zioAc+7n*G3Fi!=U=|bvep}SnW`Q$ElWL4rW`W?h5I=}dY!VFBr+C}p~Hjb+9O=zff zmN)2Ja1_z`T6QrBU$0YKCIZ{|M3od6DYn<~Pf)QF^-oZN(?=2XFX${|u3gaKYT4jx zsnCTK22fdAH9X$nkQYLsD;Jn=QiEc#&B;g=d{Y|ZS%l8fByjcY1X<}x)+ee8Juf#1 zX#aY%zT{+%9%I`tbd&MN-m!nU_Uk~$^=}h3N1G!;1!ItvGxR~{O^0Sw^|sKZ-y$vo zpU@JC;1ya#ZmYN`Z})#ZqxI6TtO8kse#q-rK2MaAnP+dY}o+50f_>Rf23O+uMo zcdsUe{WA&LrsPz?ICVR#+g@Dnxz^!=LQ2P``iCb5K83=a5UOL5D-Z+1xg?^(GUhSq zqm&bAFnqDI6rbfh3)8JAqdPkWrMaA+BW)|BdS-bTexnYb14JxdP#@tHOBz)|8BR>rDtCF|TE zIDts90)@t1MOsglR~NOov)F&$%N`=Dz9UR zZ0{F+xvZmD!kM(Y63N++#yE-TuO8Y=7W=&>H+;6!9a|T1Z>8*Ae|gi$=*%%QiQ#|> z=2|?Jl9hTMW54t8X_{q%xpbds^)?9d4!^l&9oi>=fkNN6>+bK)?dA~04%n#u&79Hb zIPKiO`FR!-WQ_C*T? zk(jz)3n>yYU+zt54$3crr0DrNX^i$K4jo8aAO~eF(uZHESoGBotqNE~rop^?B|1t- zIgU6Zdd{0grrqBI5s5(iZ3MdA!3Q|xBEadT_B6(wzQZRV^x}?dNun(eo6gpCWe*^xL2?qS< znZgJ7&l8Ydcr71vrraU+8+RrZJb8sO+BkL zj!mZD5l$j{k$Y5?kWmFGQksLFEi4Ium+-TNwf=WuDrZW$Bd{dC;b+a!Bd9U3enP6TR1rm8WGr$T+n$Rp&_IZH| zi%838FV_Z@TIv2g=Lz%FDTVK50{mmFXxXM-NC6E&%WJ?#w$O z_?yqXQ;52MFC!#HkmSP&0A!7k#sYJGc>9CXL&|{fDdiigHcTcTimrod;jkmfS)|Q2|a@a;L@6rzLkJ|Npo+;(~|u4_GE}a zchpl{M)?$bd)g}H->te^UD`i3wAY>bTV-4JpY3(@z1ol{>v`9UpjePjLJf%<=E;CaGgn~bvV8rhry8m04=Zxk; zeVO7rTWF8R=DlSu;2tdgyIKE2?z7GMolj=X@S;IC+u=DN2n1nPc?){Dksq3@&AzAB z#(jxH1S{~DXT+_%hw=4iXIc<3yV_r^Mlq2R+C#R-7xnsQh&t4&0f`@+%~}?>`m=VY zTo~JYn`>mX6e;Fnq&)VHY{s1xvEARtLDYLUK@bW*RguC2S{c!{rtrzqC4PiCDF zvL9SR%ao#yLTVH@k9}gk8Ig8%axT*5UYSXUoiwm4u$DgOVec}ri0r_Xk4pKMs``uW z)?5VYNC1Wmtz_~Jc_lbTR%cZNGhZ$^)_$+Z0JSeoF@#zei4J+ATW;m7xGssKi0*nP zi$x3Yzx=SjH_s)VOzO;Q>#l3R;Y!3lwj1SZxs&@XZ9=HV81h#3;kecFwd1ECeSFCA zpBwn#m3*jh_=+^`snjSPN6~g@4{NVVJBLNz#_-;d=7pwv8G_k|mY4M9SK9`)zdJ=O z_X0rc-t8X&9;^SFP#4?l@Ru0@R36@MsNfwem(JeS2r3^7-Lv44a5;$pWW__Fm6jU+ z;u#>plO7$IBSu4x;I~8yar1SA%X!F`gpeW7c0gfWI zNnu;NqlEFd|KjlWty3MIY%W-Kq{`l$5GqxCN(Dqa)yP2`i;W?CE^CB*p^(k$&JxPDP1aX}HwCT_hhMQ*cr;h0?!KwLucN+Y#WXLfXWr>m3Ltp(`b_Zx#P6XG#xS>&588Fx^ gFmoKR%UvQ#^w-&47R_qNQA_^yu~f2fg-6LI3~& diff --git a/docs/preview/winui3-mainwindow-dark.png b/docs/preview/winui3-mainwindow-dark.png deleted file mode 100644 index 0d401c6b9e1fc944660974ddc259277de4cf644f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64930 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 QPtYm!p00i_>zopr0B8%r7ytkO diff --git a/docs/preview/winui3-mainwindow-light.png b/docs/preview/winui3-mainwindow-light.png deleted file mode 100644 index b9c2023002717bf6383687def17bcc121d84cb48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64635 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 diff --git a/docs/preview/winui3-with-colored-pills.png b/docs/preview/winui3-with-colored-pills.png deleted file mode 100644 index 3739560cabfadf0ae7446c697f1cfe14be0e3077..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309786 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… (one row per saved preset), Save current as preset, Manage presets -- **Output** — Framerate 24 / 30 / 60, Resolution 1080p / 720p, Aspect Pillarbox / Letterbox / Stretch -- **Network** — Apply transcoder topology, Restore default NDI groups, Edit output name template -- **App** — Theme dark / light / system, Open settings, About TeamsISO, Help (F1) - -This is the keyboard-first surface broadcasters with Stream Decks already mentally use. - -### Settings — slide-over drawer - -Triggered from the header gear icon, or from `Open settings` in the palette, or hotkey `,` (comma). - -- 420px wide, slides in from the right -- 40% canvas scrim behind -- Three tabs: **OUTPUT** (framerate / resolution / aspect / audio + Reset to defaults), **NETWORK** (discovery / output groups + Apply transcoder topology + Restore defaults + output name template), **APP** (theme tri-state, minimize to tray, sort order, Launch Teams on startup, Auto-hide Teams windows) -- Apply Changes button pinned to drawer footer; Esc dismisses; click outside the drawer dismisses - -DISPLAY tab from v1 gets renamed APP and absorbs the theme tri-state. - -### Empty states - -- No participants yet: a single centered mono sentence, "no ndi sources yet — open teams and start a meeting", and one tertiary button "Refresh discovery (Ctrl+R)". No illustration, no mascot. -- Not in a call: meeting bar simply doesn't render. No placeholder. -- Discovery degraded: amber dot in transport strip's session timer position, mono text "NDI discovery — restarting". No banner. - -## Color, theme, motion - -**Color strategy:** Restrained (impeccable product default). Cyan accent earns its place — reserved for LIVE state, focus ring, active speaker tint. Coral reserved for destructive + error. Status amber for warnings. Green NOT used (would compete with cyan for "ok / live" semantics). - -**Theme default:** Follow Windows. Theme persists per-operator via `UIPreferences.Theme`. Implementation: split `WildDragonTheme.xaml` into a single style + token-shape file plus two color-only ResourceDictionary files (`Theme.Dark.xaml`, `Theme.Light.xaml`). At runtime `ThemeManager` swaps the merged dictionary entry. WPF analog of WinUI's `ThemeDictionary`. - -**Motion:** -- 120ms `cubic-bezier(0.16, 1, 0.3, 1)` (ease-out-quart) on the meeting bar slide-in/out -- 200ms ease-out on the drawer slide -- 180ms cross-fade on theme swap -- 90ms on focus + hover transitions -- No bounce, no elastic, no spring overshoots. Animate `RenderTransform` and `Opacity` only — never layout properties. - -## Typography commitments - -| Token | Family | Size | Weight | Used for | -|---|---|---|---|---| -| `text.timer` | JetBrains Mono | 14 | Medium | Session timer in transport strip — instrument-grade | -| `text.caption` | Inter | 11 | SemiBold (600) | UPPER + tracking 0.06em — transport-strip labels, "IN CALL", "SPEAKING" | -| `text.display` | Inter | 22 | SemiBold | Settings drawer headings only | -| `text.title` | Inter | 13 | Medium | Wordmark, table column headers | -| `text.body` | Inter | 13 | Regular | Participant display names | -| `text.mono.code` | JetBrains Mono | 12 | Regular | Output names, NDI IDs, meeting title | -| `text.mono.tech` | JetBrains Mono | 11 | Regular | Latency readouts, codec captions, transport-strip values | - -## What this is NOT - -- Not Fluent-styled. Default Fluent accent integration is generic Windows; TeamsISO is a broadcaster's tool. -- Not minimalism for its own sake. The participants table is *dense*. Density is the broadcaster's virtue. -- Not chromeless. Default system title bar stays. Chromeless windows break embarrassingly at 4K + DPI scaling. -- Not vanity-branded. The Wild Dragon mark sits small in the header as a quality cue, never as decoration. - -## Migration path - -The view-model surface in `src/TeamsISO.App/ViewModels/` is the contract. The redesign rewrites `MainWindow.xaml` and `Themes/*` but leaves view-models, the engine, the control surface server, and the OSC bridge untouched. - -Order of operations (each step builds clean before the next): - -1. **Theme split** — Refactor `WildDragonTheme.xaml` → `Themes/Theme.Tokens.xaml` (styles + key shape) + `Themes/Theme.Dark.xaml` + `Themes/Theme.Light.xaml` (color resources only). Port `ThemeManager` from the deleted WinUI project; wire system app-mode detection via registry (`HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize\AppsUseLightTheme`). -2. **Main window shell** — Replace MainWindow.xaml's outer Grid. Add 32px header, transport strip, full-width content area, conditional meeting bar. Delete the 72px rail, the 380px right pane, the footer. -3. **Participants table redesign** — 5 columns, LED state, instantaneous audio meter, ISO pill. -4. **Settings drawer** — Slide-over from right, dismissable; reuses existing settings view-model. -5. **Command palette** — `Ctrl+K` floating window with fuzzy command list. - -Each step is a self-contained commit so the v1 build remains shippable at any rollback point. - -## Anti-references — explicit on the "AI made that" failure - -These are the failure modes the redesign defends against: -- Card-grid-of-icons (the v1 in-call bar's seven identical ghost buttons) -- Always-visible side panel (the v1 380px settings sidebar) -- Decorative chrome (the v1 "by Wild Dragon" pill, the 72px nav rail, the six-column footer) -- Generic Inter at 13 for everything -- Default WPF DataGrid (Excel) -- Custom chromeless title bars that look generic -- Gradient text, glassmorphism, side-stripe borders (impeccable absolute bans) -- "Hero metric + supporting stats + gradient" SaaS dashboards -- Mascots, "Welcome!" copy, illustrated onboarding cards diff --git a/docs/superpowers/plans/2026-05-07-teamsiso-phase-a-engine-foundation.md b/docs/superpowers/plans/2026-05-07-teamsiso-phase-a-engine-foundation.md deleted file mode 100644 index 710947f..0000000 --- a/docs/superpowers/plans/2026-05-07-teamsiso-phase-a-engine-foundation.md +++ /dev/null @@ -1,2847 +0,0 @@ -# TeamsISO Phase A — Engine Foundation Implementation Plan - -> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. - -**Goal:** Stand up the TeamsISO solution and ship a fully unit-tested NDI engine library — domain model, source parser, participant tracker with rename heuristic, frame processor with closest-frame timing, config store, and the `INdiInterop` test fake — without a single line of P/Invoke. Phase A ends with green CI on Linux runners and ≥80% coverage on `TeamsISO.Engine`. - -**Architecture:** Six-project .NET 8 solution per the spec. The engine library targets cross-platform `net8.0` so unit tests run on Linux CI. Production NDI P/Invoke is deferred to Phase B; in Phase A every NDI surface is reached through `INdiInterop`, with a `FakeNdiInterop` exercising the engine's behavior. WPF app and integration tests get scaffold projects that compile but stay empty — they'll fill in later phases. - -**Tech Stack:** .NET 8, C# 12, xUnit, FluentAssertions, Microsoft.Extensions.Logging, Serilog (console sink for Phase A), `System.Threading.Channels`, `System.Reactive` for `IObservable` plumbing. Build via `dotnet`. CI on Forgejo Actions, Linux runner. - -**Source spec:** `docs/superpowers/specs/2026-05-07-teamsiso-v1-design.md` - -**Repo:** `forge.wilddragon.net/zgaetano/teamsiso` (private, default branch `main`) - ---- - -## File Structure - -``` -teamsiso/ -├── .editorconfig -├── .gitignore -├── .forgejo/workflows/ci.yml -├── Directory.Build.props -├── README.md -├── TeamsISO.sln -├── docs/ -│ └── superpowers/ -│ ├── specs/2026-05-07-teamsiso-v1-design.md (already committed) -│ └── plans/2026-05-07-teamsiso-phase-a-engine-foundation.md -└── src/ - ├── TeamsISO.Engine/ - │ ├── TeamsISO.Engine.csproj - │ ├── Domain/ - │ │ ├── NdiSource.cs (NdiSource record + Kind enum) - │ │ ├── Participant.cs (Participant record) - │ │ ├── IsoAssignment.cs (IsoAssignment record) - │ │ ├── IsoOutput.cs (IsoOutput record + IsoState enum) - │ │ ├── FrameProcessingSettings.cs (settings record + enums) - │ │ ├── IsoHealthStats.cs - │ │ ├── EngineConfig.cs - │ │ └── EngineAlert.cs - │ ├── Discovery/ - │ │ ├── DiscoveryEvent.cs (Added/Removed/Renamed) - │ │ ├── NdiSourceParser.cs - │ │ ├── ParticipantTracker.cs - │ │ └── NdiDiscoveryService.cs - │ ├── Pipeline/ - │ │ ├── RawFrame.cs - │ │ ├── ProcessedFrame.cs - │ │ ├── IFrameClock.cs - │ │ ├── PeriodicTimerFrameClock.cs - │ │ ├── SolidFrameRenderer.cs - │ │ └── FrameProcessor.cs - │ ├── Persistence/ - │ │ └── ConfigStore.cs - │ └── Interop/ - │ └── INdiInterop.cs (interface lives in Engine; impl in NdiInterop project) - ├── TeamsISO.Engine.NdiInterop/ - │ └── TeamsISO.Engine.NdiInterop.csproj (empty for Phase A) - ├── TeamsISO.App/ - │ ├── TeamsISO.App.csproj - │ ├── App.xaml / App.xaml.cs - │ └── MainWindow.xaml / MainWindow.xaml.cs (placeholder) - └── tests/ - ├── TeamsISO.Engine.Tests/ - │ ├── TeamsISO.Engine.Tests.csproj - │ ├── Fakes/ - │ │ ├── FakeNdiInterop.cs - │ │ └── FakeFrameClock.cs - │ ├── Domain/NdiSourceParserTests.cs - │ ├── Discovery/ParticipantTrackerTests.cs - │ ├── Discovery/NdiDiscoveryServiceTests.cs - │ ├── Pipeline/FrameProcessorTests.cs - │ └── Persistence/ConfigStoreTests.cs - └── TeamsISO.Engine.IntegrationTests/ - └── TeamsISO.Engine.IntegrationTests.csproj (empty for Phase A) -``` - -**Decomposition logic:** -- Domain types live next to each other under `Domain/` because they change together. -- Discovery (`NdiSourceParser`, `ParticipantTracker`, `NdiDiscoveryService`) is one cohesive subsystem; one folder. -- Pipeline (`FrameProcessor`, frame types, clock, slate renderer) is its own subsystem. -- `INdiInterop` lives in `Engine/Interop/` (the engine consumes it). The implementation project `TeamsISO.Engine.NdiInterop` references the engine and provides the production P/Invoke implementation in Phase B. -- WPF app and IntegrationTests projects exist as scaffolds so the .sln is complete and CI can validate the full graph builds. - ---- - -## Conventions used by every task - -- **TDD where applicable:** For any task that adds engine behavior, write the failing test first, run it to confirm failure, implement, run again to confirm pass, then commit. Tasks that scaffold projects skip the TDD loop. -- **Commits are small.** Each task ends with one commit. The commit message follows Conventional Commits: `feat(scope): subject` / `test(scope): subject` / `chore: subject`. -- **All code targets `net8.0`** unless explicitly noted (the WPF app needs `net8.0-windows`). -- **Nullable reference types are on** project-wide (set in `Directory.Build.props`). -- **TreatWarningsAsErrors is on** (set in `Directory.Build.props`). -- **Records are immutable.** Use positional records for simple value types and `with` for derived copies. - ---- - -## Task 1: Initialize repo working directory and global build props - -**Files:** -- Create: `.gitignore` -- Create: `.editorconfig` -- Create: `Directory.Build.props` -- Create: `README.md` - -- [ ] **Step 1: Confirm clone is up to date** - -Run: -``` -cd /Users/zacgaetano/Documents/Claude/Projects/Team\ Dragon/teamsiso -git status -``` -Expected: clean working tree on `main`, nothing to commit. (If the local clone is missing, clone via `git clone https://forge.wilddragon.net/zgaetano/teamsiso.git` after configuring credentials.) - -- [ ] **Step 2: Create `.gitignore`** - -Create `.gitignore` with the standard .NET ignore set: - -```gitignore -# .NET -bin/ -obj/ -*.user -*.suo -.vs/ -.vscode/ -*.swp -*.bak -*.tmp - -# Test outputs -TestResults/ -coverage*.xml -*.coverage -*.coveragexml - -# Tooling -.idea/ -*.DotSettings.user - -# Build artifacts -artifacts/ -publish/ -*.nupkg -*.snupkg - -# OS -.DS_Store -Thumbs.db -``` - -- [ ] **Step 3: Create `.editorconfig`** - -Create `.editorconfig` with .NET defaults: - -```ini -root = true - -[*] -charset = utf-8 -end_of_line = lf -indent_style = space -insert_final_newline = true -trim_trailing_whitespace = true - -[*.{cs,csx,vb,vbx}] -indent_size = 4 - -[*.{xml,csproj,props,targets}] -indent_size = 2 - -[*.{md,yml,yaml,json}] -indent_size = 2 - -[*.cs] -dotnet_sort_system_directives_first = true -csharp_style_namespace_declarations = file_scoped:warning -csharp_style_var_when_type_is_apparent = true:suggestion -dotnet_style_qualification_for_field = false:suggestion -dotnet_style_qualification_for_property = false:suggestion -dotnet_style_qualification_for_method = false:suggestion -dotnet_style_qualification_for_event = false:suggestion -``` - -- [ ] **Step 4: Create `Directory.Build.props`** - -Create `Directory.Build.props` so every project inherits the same settings: - -```xml - - - latest - enable - enable - true - true - latest - 1.0.0-alpha.0 - Wild Dragon LLC - Wild Dragon LLC - TeamsISO - Copyright © Wild Dragon LLC 2026 - - -``` - -- [ ] **Step 5: Create `README.md`** - -Create `README.md` with a project summary: - -```markdown -# 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. -``` - -- [ ] **Step 6: Commit** - -```bash -git add .gitignore .editorconfig Directory.Build.props README.md -git commit -m "chore: scaffold repo conventions and global build props" -git push origin main -``` - ---- - -## Task 2: Create the empty solution and src/tests folders - -**Files:** -- Create: `TeamsISO.sln` -- Create: `src/.gitkeep`, `src/tests/.gitkeep` - -- [ ] **Step 1: Create the solution file** - -Run: -``` -dotnet new sln -n TeamsISO -mkdir -p src src/tests -touch src/.gitkeep src/tests/.gitkeep -``` - -- [ ] **Step 2: Verify solution builds (empty)** - -Run: -``` -dotnet build TeamsISO.sln -``` -Expected: `Build succeeded. 0 Warning(s) 0 Error(s)`. - -- [ ] **Step 3: Commit** - -```bash -git add TeamsISO.sln src/.gitkeep src/tests/.gitkeep -git commit -m "chore: add empty TeamsISO solution" -git push origin main -``` - ---- - -## Task 3: Create `TeamsISO.Engine` class library - -**Files:** -- Create: `src/TeamsISO.Engine/TeamsISO.Engine.csproj` - -- [ ] **Step 1: Create the project** - -Run: -``` -cd src -dotnet new classlib -n TeamsISO.Engine -f net8.0 -cd .. -``` - -- [ ] **Step 2: Add NuGet dependencies** - -Run: -``` -cd src/TeamsISO.Engine -dotnet add package Microsoft.Extensions.Logging.Abstractions --version 8.0.0 -dotnet add package System.Reactive --version 6.0.0 -cd ../.. -``` - -- [ ] **Step 3: Delete the `Class1.cs` placeholder** - -Run: -``` -rm src/TeamsISO.Engine/Class1.cs -``` - -- [ ] **Step 4: Add to solution** - -Run: -``` -dotnet sln add src/TeamsISO.Engine/TeamsISO.Engine.csproj -``` - -- [ ] **Step 5: Build** - -Run: -``` -dotnet build TeamsISO.sln -``` -Expected: success, 0 warnings, 0 errors. - -- [ ] **Step 6: Commit** - -```bash -git add src/TeamsISO.Engine/ TeamsISO.sln -git commit -m "feat(engine): scaffold TeamsISO.Engine class library" -git push origin main -``` - ---- - -## Task 4: Create `TeamsISO.Engine.NdiInterop` class library (empty for Phase A) - -**Files:** -- Create: `src/TeamsISO.Engine.NdiInterop/TeamsISO.Engine.NdiInterop.csproj` -- Create: `src/TeamsISO.Engine.NdiInterop/Placeholder.cs` - -- [ ] **Step 1: Create the project** - -Run: -``` -cd src -dotnet new classlib -n TeamsISO.Engine.NdiInterop -f net8.0 -cd .. -rm src/TeamsISO.Engine.NdiInterop/Class1.cs -``` - -- [ ] **Step 2: Reference the engine** - -Run: -``` -cd src/TeamsISO.Engine.NdiInterop -dotnet add reference ../TeamsISO.Engine/TeamsISO.Engine.csproj -cd ../.. -``` - -- [ ] **Step 3: Add a placeholder file so the assembly has at least one type** - -Create `src/TeamsISO.Engine.NdiInterop/Placeholder.cs`: - -```csharp -namespace TeamsISO.Engine.NdiInterop; - -///

-/// Phase A placeholder. The production P/Invoke implementations of INdiInterop -/// will live in this assembly, added in Phase B. -/// -internal static class Placeholder -{ -} -``` - -- [ ] **Step 4: Add to solution and build** - -Run: -``` -dotnet sln add src/TeamsISO.Engine.NdiInterop/TeamsISO.Engine.NdiInterop.csproj -dotnet build TeamsISO.sln -``` -Expected: success. - -- [ ] **Step 5: Commit** - -```bash -git add src/TeamsISO.Engine.NdiInterop/ TeamsISO.sln -git commit -m "feat(interop): scaffold TeamsISO.Engine.NdiInterop project" -git push origin main -``` - ---- - -## Task 5: Create `TeamsISO.Engine.Tests` xUnit project - -**Files:** -- Create: `src/tests/TeamsISO.Engine.Tests/TeamsISO.Engine.Tests.csproj` -- Create: `src/tests/TeamsISO.Engine.Tests/SmokeTest.cs` - -- [ ] **Step 1: Create the project** - -Run: -``` -cd src/tests -dotnet new xunit -n TeamsISO.Engine.Tests -f net8.0 -cd ../.. -rm src/tests/TeamsISO.Engine.Tests/UnitTest1.cs -``` - -- [ ] **Step 2: Add references and packages** - -Run: -``` -cd src/tests/TeamsISO.Engine.Tests -dotnet add reference ../../TeamsISO.Engine/TeamsISO.Engine.csproj -dotnet add package FluentAssertions --version 6.12.0 -dotnet add package coverlet.collector --version 6.0.0 -cd ../../.. -``` - -- [ ] **Step 3: Add a smoke test** - -Create `src/tests/TeamsISO.Engine.Tests/SmokeTest.cs`: - -```csharp -namespace TeamsISO.Engine.Tests; - -public class SmokeTest -{ - [Fact] - public void TestProjectIsWired() - { - Assert.True(true); - } -} -``` - -- [ ] **Step 4: Add to solution and run tests** - -Run: -``` -dotnet sln add src/tests/TeamsISO.Engine.Tests/TeamsISO.Engine.Tests.csproj -dotnet test TeamsISO.sln -``` -Expected: `Passed: 1, Failed: 0`. - -- [ ] **Step 5: Commit** - -```bash -git add src/tests/TeamsISO.Engine.Tests/ TeamsISO.sln -git commit -m "test(engine): scaffold TeamsISO.Engine.Tests xUnit project" -git push origin main -``` - ---- - -## Task 6: Scaffold `TeamsISO.App` (WPF) and `TeamsISO.Engine.IntegrationTests` - -These are stubs for Phase A — they exist so the solution graph is complete and CI can validate it. - -**Files:** -- Create: `src/TeamsISO.App/TeamsISO.App.csproj` (and minimal WPF skeleton) -- Create: `src/tests/TeamsISO.Engine.IntegrationTests/TeamsISO.Engine.IntegrationTests.csproj` - -- [ ] **Step 1: Create the WPF app project** - -Run: -``` -cd src -dotnet new wpf -n TeamsISO.App -f net8.0 -cd .. -``` - -- [ ] **Step 2: Reference the engine** - -Run: -``` -cd src/TeamsISO.App -dotnet add reference ../TeamsISO.Engine/TeamsISO.Engine.csproj -dotnet add reference ../TeamsISO.Engine.NdiInterop/TeamsISO.Engine.NdiInterop.csproj -cd ../.. -``` - -- [ ] **Step 3: Create the integration tests project** - -Run: -``` -cd src/tests -dotnet new xunit -n TeamsISO.Engine.IntegrationTests -f net8.0 -cd ../.. -rm src/tests/TeamsISO.Engine.IntegrationTests/UnitTest1.cs -cd src/tests/TeamsISO.Engine.IntegrationTests -dotnet add reference ../../TeamsISO.Engine/TeamsISO.Engine.csproj -dotnet add reference ../../TeamsISO.Engine.NdiInterop/TeamsISO.Engine.NdiInterop.csproj -dotnet add package FluentAssertions --version 6.12.0 -cd ../../.. -``` - -- [ ] **Step 4: Add a placeholder fact in the integration test project so it has at least one test** - -Create `src/tests/TeamsISO.Engine.IntegrationTests/IntegrationTestsScaffold.cs`: - -```csharp -namespace TeamsISO.Engine.IntegrationTests; - -public class IntegrationTestsScaffold -{ - [Fact(Skip = "Phase A: integration tests require NDI runtime — added in Phase B.")] - [Trait("requires", "ndi")] - public void ScaffoldFactSkipsCleanly() - { - Assert.True(true); - } -} -``` - -- [ ] **Step 5: Add both to the solution and build** - -Run: -``` -dotnet sln add src/TeamsISO.App/TeamsISO.App.csproj -dotnet sln add src/tests/TeamsISO.Engine.IntegrationTests/TeamsISO.Engine.IntegrationTests.csproj -dotnet build TeamsISO.sln -dotnet test TeamsISO.sln -``` -Expected: build succeeds; `Passed: 1, Failed: 0, Skipped: 1` (the skipped one is the integration scaffold). - -- [ ] **Step 6: Commit** - -```bash -git add src/TeamsISO.App/ src/tests/TeamsISO.Engine.IntegrationTests/ TeamsISO.sln -git commit -m "chore: scaffold WPF app and integration test projects" -git push origin main -``` - ---- - -## Task 7: Set up Forgejo Actions CI on Linux - -**Files:** -- Create: `.forgejo/workflows/ci.yml` - -- [ ] **Step 1: Create the CI workflow** - -Create `.forgejo/workflows/ci.yml`: - -```yaml -name: CI - -on: - push: - branches: [main] - pull_request: - branches: [main] - -jobs: - build-and-test: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup .NET 8 - uses: actions/setup-dotnet@v4 - with: - dotnet-version: 8.0.x - - - name: Restore - run: dotnet restore TeamsISO.sln - - - name: Build (Release, treat warnings as errors) - run: dotnet build TeamsISO.sln --configuration Release --no-restore - - - name: Test (excluding requires=ndi) - run: > - dotnet test TeamsISO.sln - --configuration Release - --no-build - --logger "trx;LogFileName=test-results.trx" - --collect:"XPlat Code Coverage" - --filter "Category!=ndi&requires!=ndi" - - - name: Upload test results - if: always() - uses: actions/upload-artifact@v4 - with: - name: test-results - path: '**/test-results.trx' -``` - -- [ ] **Step 2: Commit and push to trigger first CI run** - -```bash -mkdir -p .forgejo/workflows -git add .forgejo/workflows/ci.yml -git commit -m "ci: add Forgejo Actions build-and-test workflow" -git push origin main -``` - -- [ ] **Step 3: Verify the run goes green** - -Open `https://forge.wilddragon.net/zgaetano/teamsiso/actions` in a browser. Confirm the latest run on `main` succeeded. - -If `actions/setup-dotnet@v4` is unavailable on the Forgejo Actions runner, swap to a manual setup step: - -```yaml - - name: Install .NET 8 - run: | - curl -sSL https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh - chmod +x dotnet-install.sh - ./dotnet-install.sh --channel 8.0 --install-dir $HOME/.dotnet - echo "$HOME/.dotnet" >> $GITHUB_PATH -``` - ---- - -## Task 8: Domain enums - -**Files:** -- Create: `src/TeamsISO.Engine/Domain/Enums.cs` -- Create: `src/tests/TeamsISO.Engine.Tests/Domain/EnumSanityTests.cs` - -- [ ] **Step 1: Write the failing sanity test** - -Create `src/tests/TeamsISO.Engine.Tests/Domain/EnumSanityTests.cs`: - -```csharp -using TeamsISO.Engine.Domain; - -namespace TeamsISO.Engine.Tests.Domain; - -public class EnumSanityTests -{ - [Fact] - public void NdiSourceKind_HasExpectedMembers() - { - var values = Enum.GetValues(); - values.Should().Contain(new[] - { - NdiSourceKind.Participant, - NdiSourceKind.ActiveSpeaker, - NdiSourceKind.Audio, - NdiSourceKind.ScreenShare - }); - } - - [Fact] - public void IsoState_HasExpectedMembers() - { - var values = Enum.GetValues(); - values.Should().Contain(new[] - { - IsoState.Idle, - IsoState.Receiving, - IsoState.Sending, - IsoState.NoSignal, - IsoState.Error - }); - } - - [Fact] - public void TargetFramerate_HasAllSupportedRates() - { - var values = Enum.GetValues(); - values.Should().HaveCount(8); // 23.976, 24, 25, 29.97, 30, 50, 59.94, 60 - } -} -``` - -- [ ] **Step 2: Run tests, expect failure** - -Run: -``` -dotnet test --filter "FullyQualifiedName~EnumSanityTests" -``` -Expected: compilation errors (`NdiSourceKind` etc. don't exist yet). - -- [ ] **Step 3: Implement the enums** - -Create `src/TeamsISO.Engine/Domain/Enums.cs`: - -```csharp -namespace TeamsISO.Engine.Domain; - -public enum NdiSourceKind -{ - Participant, - ActiveSpeaker, - Audio, - ScreenShare -} - -public enum IsoState -{ - Idle, - Receiving, - Sending, - NoSignal, - Error -} - -public enum AspectMode -{ - Pillarbox, - Letterbox, - Stretch -} - -public enum AudioMode -{ - Auto, - Isolated, - Mixed -} - -public enum TargetFramerate -{ - Fps23_976, - Fps24, - Fps25, - Fps29_97, - Fps30, - Fps50, - Fps59_94, - Fps60 -} - -public enum TargetResolution -{ - R720p, - R1080p, - R4K -} -``` - -- [ ] **Step 4: Run tests, expect pass** - -Run: -``` -dotnet test --filter "FullyQualifiedName~EnumSanityTests" -``` -Expected: 3 pass. - -- [ ] **Step 5: Commit** - -```bash -git add src/TeamsISO.Engine/Domain/Enums.cs src/tests/TeamsISO.Engine.Tests/Domain/EnumSanityTests.cs -git commit -m "feat(domain): add core enums (NdiSourceKind, IsoState, AspectMode, AudioMode, TargetFramerate, TargetResolution)" -git push origin main -``` - ---- - -## Task 9: `NdiSource` record + `NdiSourceParser` (TDD) - -**Files:** -- Create: `src/TeamsISO.Engine/Domain/NdiSource.cs` -- Create: `src/TeamsISO.Engine/Discovery/NdiSourceParser.cs` -- Create: `src/tests/TeamsISO.Engine.Tests/Domain/NdiSourceParserTests.cs` - -- [ ] **Step 1: Write the failing parser tests** - -Create `src/tests/TeamsISO.Engine.Tests/Domain/NdiSourceParserTests.cs`: - -```csharp -using TeamsISO.Engine.Discovery; -using TeamsISO.Engine.Domain; - -namespace TeamsISO.Engine.Tests.Domain; - -public class NdiSourceParserTests -{ - [Theory] - [InlineData("WORKSTATION-01 (Teams - Jane Doe)", "WORKSTATION-01", NdiSourceKind.Participant, "Jane Doe")] - [InlineData("PROD-PC (Teams - Élise O'Connor)", "PROD-PC", NdiSourceKind.Participant, "Élise O'Connor")] - [InlineData("HOST (Teams - Smith, Bob (PM))", "HOST", NdiSourceKind.Participant, "Smith, Bob (PM)")] - public void Parse_Participant_ExtractsMachineAndDisplayName( - string fullName, string expectedMachine, NdiSourceKind expectedKind, string expectedDisplay) - { - var result = NdiSourceParser.Parse(fullName); - - result.MachineName.Should().Be(expectedMachine); - result.Kind.Should().Be(expectedKind); - result.DisplayName.Should().Be(expectedDisplay); - result.FullName.Should().Be(fullName); - } - - [Theory] - [InlineData("HOST (Teams)", NdiSourceKind.ActiveSpeaker)] - [InlineData("HOST (Teams Audio)", NdiSourceKind.Audio)] - [InlineData("HOST (Teams Screen Share)", NdiSourceKind.ScreenShare)] - public void Parse_NonParticipantKinds_ClassifyCorrectly(string fullName, NdiSourceKind expectedKind) - { - var result = NdiSourceParser.Parse(fullName); - - result.Kind.Should().Be(expectedKind); - result.DisplayName.Should().BeNull(); - } - - [Theory] - [InlineData("Plain NDI Source")] // not a Teams source at all - [InlineData("HOST (Some Other Software)")] // wrong app prefix - [InlineData("(Teams - No Machine)")] // empty machine - public void Parse_NonTeamsSource_ReturnsNull(string fullName) - { - var result = NdiSourceParser.Parse(fullName); - result.Should().BeNull(); - } -} -``` - -- [ ] **Step 2: Run tests, expect failure** - -Run: -``` -dotnet test --filter "FullyQualifiedName~NdiSourceParserTests" -``` -Expected: compilation errors (types missing). - -- [ ] **Step 3: Implement `NdiSource`** - -Create `src/TeamsISO.Engine/Domain/NdiSource.cs`: - -```csharp -namespace TeamsISO.Engine.Domain; - -/// -/// Raw discovery record parsed from an NDI source string emitted by Microsoft Teams. -/// -public sealed record NdiSource( - string FullName, - string MachineName, - NdiSourceKind Kind, - string? DisplayName); -``` - -- [ ] **Step 4: Implement `NdiSourceParser`** - -Create `src/TeamsISO.Engine/Discovery/NdiSourceParser.cs`: - -```csharp -using TeamsISO.Engine.Domain; - -namespace TeamsISO.Engine.Discovery; - -/// -/// Parses NDI source strings emitted by Microsoft Teams. -/// -/// Examples Teams emits: -/// "MACHINE (Teams - Display Name)" -/// "MACHINE (Teams)" — auto-mixed active speaker -/// "MACHINE (Teams Audio)" — audio-only mix -/// "MACHINE (Teams Screen Share)" — screen share -/// -public static class NdiSourceParser -{ - public static NdiSource? Parse(string fullName) - { - if (string.IsNullOrWhiteSpace(fullName)) - return null; - - // Find the last '(' so machine names can themselves contain parens. - var openParen = fullName.LastIndexOf('('); - if (openParen <= 0 || !fullName.EndsWith(')')) - return null; - - var machine = fullName[..openParen].TrimEnd(); - if (machine.Length == 0) - return null; - - var inner = fullName.Substring(openParen + 1, fullName.Length - openParen - 2).Trim(); - - if (!inner.StartsWith("Teams", StringComparison.Ordinal)) - return null; - - // "Teams" alone → ActiveSpeaker - if (inner == "Teams") - return new NdiSource(fullName, machine, NdiSourceKind.ActiveSpeaker, DisplayName: null); - - if (inner == "Teams Audio") - return new NdiSource(fullName, machine, NdiSourceKind.Audio, DisplayName: null); - - if (inner == "Teams Screen Share") - return new NdiSource(fullName, machine, NdiSourceKind.ScreenShare, DisplayName: null); - - // "Teams - " → Participant - const string prefix = "Teams - "; - if (inner.StartsWith(prefix, StringComparison.Ordinal)) - { - var display = inner[prefix.Length..].Trim(); - if (display.Length == 0) - return null; - return new NdiSource(fullName, machine, NdiSourceKind.Participant, display); - } - - return null; - } -} -``` - -- [ ] **Step 5: Run tests, expect pass** - -Run: -``` -dotnet test --filter "FullyQualifiedName~NdiSourceParserTests" -``` -Expected: all 9 (3 + 3 + 3) pass. - -- [ ] **Step 6: Commit** - -```bash -git add src/TeamsISO.Engine/Domain/NdiSource.cs src/TeamsISO.Engine/Discovery/NdiSourceParser.cs src/tests/TeamsISO.Engine.Tests/Domain/NdiSourceParserTests.cs -git commit -m "feat(discovery): add NdiSource record and Teams source string parser" -git push origin main -``` - ---- - -## Task 10: `Participant`, `IsoAssignment`, `IsoOutput`, `IsoHealthStats` - -**Files:** -- Create: `src/TeamsISO.Engine/Domain/Participant.cs` -- Create: `src/TeamsISO.Engine/Domain/IsoAssignment.cs` -- Create: `src/TeamsISO.Engine/Domain/IsoOutput.cs` -- Create: `src/TeamsISO.Engine/Domain/IsoHealthStats.cs` - -These are pure data records; no behavior under test. We compile-check via the existing tests. - -- [ ] **Step 1: Implement `Participant`** - -Create `src/TeamsISO.Engine/Domain/Participant.cs`: - -```csharp -namespace TeamsISO.Engine.Domain; - -/// -/// Operator-facing identity for a single human in the meeting. -/// Id is engine-assigned and stable across the rename heuristic. -/// -public sealed record Participant( - Guid Id, - string DisplayName, - NdiSource? CurrentSource, - DateTimeOffset FirstSeen, - DateTimeOffset LastSeen); -``` - -- [ ] **Step 2: Implement `IsoAssignment`** - -Create `src/TeamsISO.Engine/Domain/IsoAssignment.cs`: - -```csharp -namespace TeamsISO.Engine.Domain; - -/// -/// Operator's intent for an ISO output. Persisted to config.json. -/// -public sealed record IsoAssignment( - Guid ParticipantId, - bool IsEnabled, - string? CustomOutputName); -``` - -- [ ] **Step 3: Implement `IsoHealthStats`** - -Create `src/TeamsISO.Engine/Domain/IsoHealthStats.cs`: - -```csharp -namespace TeamsISO.Engine.Domain; - -public sealed record IsoHealthStats( - long FramesIn, - long FramesOut, - long FramesDropped, - long FramesDuplicated, - DateTimeOffset? LastFrameAt, - double IncomingFps, - int IncomingWidth, - int IncomingHeight) -{ - public static readonly IsoHealthStats Empty = - new(0, 0, 0, 0, null, 0, 0, 0); -} -``` - -- [ ] **Step 4: Implement `IsoOutput`** - -Create `src/TeamsISO.Engine/Domain/IsoOutput.cs`: - -```csharp -namespace TeamsISO.Engine.Domain; - -public sealed record IsoOutput( - Guid ParticipantId, - string EffectiveOutputName, - IsoHealthStats Stats, - IsoState State); -``` - -- [ ] **Step 5: Verify the solution still builds** - -Run: -``` -dotnet build TeamsISO.sln -``` -Expected: success. - -- [ ] **Step 6: Commit** - -```bash -git add src/TeamsISO.Engine/Domain/Participant.cs src/TeamsISO.Engine/Domain/IsoAssignment.cs src/TeamsISO.Engine/Domain/IsoOutput.cs src/TeamsISO.Engine/Domain/IsoHealthStats.cs -git commit -m "feat(domain): add Participant, IsoAssignment, IsoOutput, IsoHealthStats records" -git push origin main -``` - ---- - -## Task 11: `FrameProcessingSettings`, `EngineConfig`, `EngineAlert` - -**Files:** -- Create: `src/TeamsISO.Engine/Domain/FrameProcessingSettings.cs` -- Create: `src/TeamsISO.Engine/Domain/EngineConfig.cs` -- Create: `src/TeamsISO.Engine/Domain/EngineAlert.cs` - -- [ ] **Step 1: Implement `FrameProcessingSettings`** - -Create `src/TeamsISO.Engine/Domain/FrameProcessingSettings.cs`: - -```csharp -namespace TeamsISO.Engine.Domain; - -public sealed record FrameProcessingSettings( - TargetFramerate Framerate, - TargetResolution Resolution, - AspectMode Aspect, - AudioMode Audio) -{ - public static readonly FrameProcessingSettings Default = - new(TargetFramerate.Fps30, TargetResolution.R1080p, AspectMode.Pillarbox, AudioMode.Auto); - - /// Returns the framerate enum value as a numeric frames-per-second. - public double FramerateHz => Framerate switch - { - TargetFramerate.Fps23_976 => 24000.0 / 1001.0, - TargetFramerate.Fps24 => 24.0, - TargetFramerate.Fps25 => 25.0, - TargetFramerate.Fps29_97 => 30000.0 / 1001.0, - TargetFramerate.Fps30 => 30.0, - TargetFramerate.Fps50 => 50.0, - TargetFramerate.Fps59_94 => 60000.0 / 1001.0, - TargetFramerate.Fps60 => 60.0, - _ => throw new InvalidOperationException($"Unknown framerate: {Framerate}") - }; - - /// Returns the resolution as (width, height). - public (int Width, int Height) ResolutionSize => Resolution switch - { - TargetResolution.R720p => (1280, 720), - TargetResolution.R1080p => (1920, 1080), - TargetResolution.R4K => (3840, 2160), - _ => throw new InvalidOperationException($"Unknown resolution: {Resolution}") - }; -} -``` - -- [ ] **Step 2: Implement `EngineConfig`** - -Create `src/TeamsISO.Engine/Domain/EngineConfig.cs`: - -```csharp -namespace TeamsISO.Engine.Domain; - -public sealed record EngineConfig( - FrameProcessingSettings Global, - IReadOnlyList Assignments) -{ - public static readonly EngineConfig Default = - new(FrameProcessingSettings.Default, Array.Empty()); -} -``` - -- [ ] **Step 3: Implement `EngineAlert`** - -Create `src/TeamsISO.Engine/Domain/EngineAlert.cs`: - -```csharp -namespace TeamsISO.Engine.Domain; - -/// -/// Structured engine alerts for UI banner display and ops logging. -/// -public abstract record EngineAlert(string Message) -{ - public sealed record NdiRuntimeMismatch(string DetectedVersion, string ExpectedVersion) - : EngineAlert($"NDI runtime version mismatch: detected {DetectedVersion}, expected {ExpectedVersion}."); - - public sealed record OutputNameCollision(string Name) - : EngineAlert($"Another TeamsISO instance on the LAN is emitting an output named '{Name}'."); - - public sealed record PipelineError(Guid ParticipantId, string Reason) - : EngineAlert($"Pipeline {ParticipantId} entered Error: {Reason}"); - - public sealed record ConfigSaveFailed(string Reason) - : EngineAlert($"Failed to save configuration: {Reason}"); -} -``` - -- [ ] **Step 4: Build the solution** - -Run: -``` -dotnet build TeamsISO.sln -``` -Expected: success. - -- [ ] **Step 5: Commit** - -```bash -git add src/TeamsISO.Engine/Domain/FrameProcessingSettings.cs src/TeamsISO.Engine/Domain/EngineConfig.cs src/TeamsISO.Engine/Domain/EngineAlert.cs -git commit -m "feat(domain): add FrameProcessingSettings, EngineConfig, EngineAlert" -git push origin main -``` - ---- - -## Task 12: `ConfigStore` — JSON persistence with atomic writes (TDD) - -**Files:** -- Create: `src/TeamsISO.Engine/Persistence/ConfigStore.cs` -- Create: `src/tests/TeamsISO.Engine.Tests/Persistence/ConfigStoreTests.cs` - -- [ ] **Step 1: Write the failing tests** - -Create `src/tests/TeamsISO.Engine.Tests/Persistence/ConfigStoreTests.cs`: - -```csharp -using Microsoft.Extensions.Logging.Abstractions; -using TeamsISO.Engine.Domain; -using TeamsISO.Engine.Persistence; - -namespace TeamsISO.Engine.Tests.Persistence; - -public class ConfigStoreTests : IDisposable -{ - private readonly string _dir; - - public ConfigStoreTests() - { - _dir = Path.Combine(Path.GetTempPath(), $"teamsiso-tests-{Guid.NewGuid():N}"); - Directory.CreateDirectory(_dir); - } - - public void Dispose() => Directory.Delete(_dir, recursive: true); - - private ConfigStore NewStore() => - new(Path.Combine(_dir, "config.json"), NullLogger.Instance); - - [Fact] - public void Load_WhenFileMissing_ReturnsDefault() - { - var store = NewStore(); - - var config = store.Load(); - - config.Should().Be(EngineConfig.Default); - } - - [Fact] - public void SaveThenLoad_RoundTripsExactly() - { - var store = NewStore(); - var input = new EngineConfig( - new FrameProcessingSettings(TargetFramerate.Fps59_94, TargetResolution.R720p, - AspectMode.Letterbox, AudioMode.Isolated), - new[] - { - new IsoAssignment(Guid.NewGuid(), IsEnabled: true, CustomOutputName: "TEAMSISO_A"), - new IsoAssignment(Guid.NewGuid(), IsEnabled: false, CustomOutputName: null), - }); - - store.Save(input); - var loaded = store.Load(); - - loaded.Should().BeEquivalentTo(input); - } - - [Fact] - public void Load_WhenFileCorrupt_ReturnsDefault() - { - var path = Path.Combine(_dir, "config.json"); - File.WriteAllText(path, "not valid json {{{"); - - var store = NewStore(); - - var config = store.Load(); - config.Should().Be(EngineConfig.Default); - } - - [Fact] - public void Save_WritesAtomically_NoPartialFileVisible() - { - var store = NewStore(); - var path = Path.Combine(_dir, "config.json"); - - // Pre-existing valid config - store.Save(EngineConfig.Default); - var firstWrite = File.ReadAllText(path); - - // Save a new value; verify the file is replaced atomically (no temp files left behind) - store.Save(new EngineConfig( - FrameProcessingSettings.Default with { Framerate = TargetFramerate.Fps60 }, - Array.Empty())); - - File.Exists(path).Should().BeTrue(); - File.ReadAllText(path).Should().NotBe(firstWrite); - - // No leftover temp files - Directory.GetFiles(_dir).Should().HaveCount(1); - } -} -``` - -- [ ] **Step 2: Run tests, expect failure** - -Run: -``` -dotnet test --filter "FullyQualifiedName~ConfigStoreTests" -``` -Expected: compilation errors (`ConfigStore` doesn't exist). - -- [ ] **Step 3: Implement `ConfigStore`** - -Create `src/TeamsISO.Engine/Persistence/ConfigStore.cs`: - -```csharp -using System.Text.Json; -using System.Text.Json.Serialization; -using Microsoft.Extensions.Logging; -using TeamsISO.Engine.Domain; - -namespace TeamsISO.Engine.Persistence; - -/// -/// Loads and saves as JSON. -/// Writes are atomic: serialize to a temp file in the same directory, then File.Move with overwrite. -/// -public sealed class ConfigStore -{ - private static readonly JsonSerializerOptions Options = new() - { - WriteIndented = true, - PropertyNamingPolicy = JsonNamingPolicy.CamelCase, - Converters = { new JsonStringEnumConverter() } - }; - - private readonly string _path; - private readonly ILogger _logger; - - public ConfigStore(string path, ILogger logger) - { - _path = path; - _logger = logger; - } - - public EngineConfig Load() - { - if (!File.Exists(_path)) - { - _logger.LogInformation("Config file not found at {Path}; using defaults.", _path); - return EngineConfig.Default; - } - - try - { - var json = File.ReadAllText(_path); - var loaded = JsonSerializer.Deserialize(json, Options); - return loaded ?? EngineConfig.Default; - } - catch (JsonException ex) - { - _logger.LogWarning(ex, "Config file at {Path} is not valid JSON; using defaults.", _path); - return EngineConfig.Default; - } - } - - public void Save(EngineConfig config) - { - Directory.CreateDirectory(Path.GetDirectoryName(_path)!); - var temp = _path + ".tmp"; - var json = JsonSerializer.Serialize(config, Options); - File.WriteAllText(temp, json); - File.Move(temp, _path, overwrite: true); - } -} -``` - -- [ ] **Step 4: Run tests, expect pass** - -Run: -``` -dotnet test --filter "FullyQualifiedName~ConfigStoreTests" -``` -Expected: all 4 pass. - -- [ ] **Step 5: Commit** - -```bash -git add src/TeamsISO.Engine/Persistence/ConfigStore.cs src/tests/TeamsISO.Engine.Tests/Persistence/ConfigStoreTests.cs -git commit -m "feat(persistence): add ConfigStore with atomic JSON writes and corruption-safe load" -git push origin main -``` - ---- - -## Task 13: `INdiInterop` interface - -**Files:** -- Create: `src/TeamsISO.Engine/Interop/INdiInterop.cs` -- Create: `src/TeamsISO.Engine/Interop/NdiFindHandle.cs` -- Create: `src/TeamsISO.Engine/Interop/NdiReceiverHandle.cs` -- Create: `src/TeamsISO.Engine/Interop/NdiSenderHandle.cs` - -The interface is the test seam: every NDI SDK call routes through it. In Phase A we have only a fake; in Phase B `TeamsISO.Engine.NdiInterop` ships the real P/Invoke. - -- [ ] **Step 1: Define the handle marker types** - -Create `src/TeamsISO.Engine/Interop/NdiFindHandle.cs`: - -```csharp -namespace TeamsISO.Engine.Interop; - -/// Opaque handle to an NDI Find instance. Implementation-private. -public abstract class NdiFindHandle : IDisposable -{ - public abstract void Dispose(); -} -``` - -Create `src/TeamsISO.Engine/Interop/NdiReceiverHandle.cs`: - -```csharp -namespace TeamsISO.Engine.Interop; - -public abstract class NdiReceiverHandle : IDisposable -{ - public abstract void Dispose(); -} -``` - -Create `src/TeamsISO.Engine/Interop/NdiSenderHandle.cs`: - -```csharp -namespace TeamsISO.Engine.Interop; - -public abstract class NdiSenderHandle : IDisposable -{ - public abstract void Dispose(); -} -``` - -- [ ] **Step 2: Define the interface** - -Create `src/TeamsISO.Engine/Interop/INdiInterop.cs`: - -```csharp -using TeamsISO.Engine.Domain; -using TeamsISO.Engine.Pipeline; - -namespace TeamsISO.Engine.Interop; - -/// -/// Test seam over the NDI SDK. Production: P/Invoke shim. Tests: FakeNdiInterop. -/// All methods are synchronous; the engine threads are responsible for orchestration. -/// -public interface INdiInterop -{ - // ----- Discovery ----- - NdiFindHandle CreateFinder(); - - /// Snapshots the currently-known sources visible to the finder. - IReadOnlyList GetCurrentSources(NdiFindHandle finder); - - // ----- Receive ----- - NdiReceiverHandle CreateReceiver(string sourceFullName); - - /// - /// Blocks for up to waiting for a frame. - /// Returns null on timeout. Returned ownership transfers to the caller. - /// - RawFrame? CaptureFrame(NdiReceiverHandle receiver, int timeoutMs); - - // ----- Send ----- - NdiSenderHandle CreateSender(string outputName); - void SendFrame(NdiSenderHandle sender, ProcessedFrame frame); - - // ----- Runtime probe ----- - string GetRuntimeVersion(); -} -``` - -- [ ] **Step 3: Build to confirm types resolve (will fail because RawFrame/ProcessedFrame don't exist yet)** - -Run: -``` -dotnet build TeamsISO.sln -``` -Expected: errors about `RawFrame` and `ProcessedFrame`. Continue to next task without committing — Task 14 introduces those types. - ---- - -## Task 14: `RawFrame`, `ProcessedFrame`, `IFrameClock` - -**Files:** -- Create: `src/TeamsISO.Engine/Pipeline/RawFrame.cs` -- Create: `src/TeamsISO.Engine/Pipeline/ProcessedFrame.cs` -- Create: `src/TeamsISO.Engine/Pipeline/IFrameClock.cs` -- Create: `src/TeamsISO.Engine/Pipeline/PeriodicTimerFrameClock.cs` - -- [ ] **Step 1: Implement `RawFrame`** - -Create `src/TeamsISO.Engine/Pipeline/RawFrame.cs`: - -```csharp -namespace TeamsISO.Engine.Pipeline; - -/// -/// A frame as captured from an NDI receiver. Pixel buffer is opaque to the engine — its -/// shape is determined by the NDI receive format. Timestamp is the source's reported time. -/// -public sealed record RawFrame( - int Width, - int Height, - long TimestampTicks, - ReadOnlyMemory Pixels, - PixelFormat Format); - -public enum PixelFormat -{ - Bgra, - Uyvy, - Rgba -} -``` - -- [ ] **Step 2: Implement `ProcessedFrame`** - -Create `src/TeamsISO.Engine/Pipeline/ProcessedFrame.cs`: - -```csharp -namespace TeamsISO.Engine.Pipeline; - -/// -/// A frame after framerate, resolution, and aspect normalization. Ready to send. -/// -public sealed record ProcessedFrame( - int Width, - int Height, - long TimestampTicks, - ReadOnlyMemory Pixels, - PixelFormat Format); -``` - -- [ ] **Step 3: Implement `IFrameClock`** - -Create `src/TeamsISO.Engine/Pipeline/IFrameClock.cs`: - -```csharp -namespace TeamsISO.Engine.Pipeline; - -/// -/// Test seam over the wall clock. Production: . -/// Tests: FakeFrameClock in TeamsISO.Engine.Tests. -/// -public interface IFrameClock -{ - /// Current monotonic time as ticks (100 ns). - long NowTicks { get; } - - /// Awaits the next tick at the current period. - ValueTask WaitForNextTickAsync(CancellationToken cancellationToken); -} -``` - -- [ ] **Step 4: Implement the production clock** - -Create `src/TeamsISO.Engine/Pipeline/PeriodicTimerFrameClock.cs`: - -```csharp -namespace TeamsISO.Engine.Pipeline; - -public sealed class PeriodicTimerFrameClock : IFrameClock, IDisposable -{ - private readonly PeriodicTimer _timer; - - public PeriodicTimerFrameClock(double framesPerSecond) - { - if (framesPerSecond <= 0) - throw new ArgumentOutOfRangeException(nameof(framesPerSecond)); - var periodMs = 1000.0 / framesPerSecond; - _timer = new PeriodicTimer(TimeSpan.FromMilliseconds(periodMs)); - } - - public long NowTicks => DateTime.UtcNow.Ticks; - - public ValueTask WaitForNextTickAsync(CancellationToken cancellationToken) => - _timer.WaitForNextTickAsync(cancellationToken); - - public void Dispose() => _timer.Dispose(); -} -``` - -- [ ] **Step 5: Build the solution** - -Run: -``` -dotnet build TeamsISO.sln -``` -Expected: success. - -- [ ] **Step 6: Commit** - -```bash -git add src/TeamsISO.Engine/Pipeline/RawFrame.cs src/TeamsISO.Engine/Pipeline/ProcessedFrame.cs src/TeamsISO.Engine/Pipeline/IFrameClock.cs src/TeamsISO.Engine/Pipeline/PeriodicTimerFrameClock.cs src/TeamsISO.Engine/Interop/INdiInterop.cs src/TeamsISO.Engine/Interop/NdiFindHandle.cs src/TeamsISO.Engine/Interop/NdiReceiverHandle.cs src/TeamsISO.Engine/Interop/NdiSenderHandle.cs -git commit -m "feat(pipeline,interop): add RawFrame, ProcessedFrame, IFrameClock and INdiInterop test seam" -git push origin main -``` - ---- - -## Task 15: `FakeNdiInterop` and `FakeFrameClock` - -**Files:** -- Create: `src/tests/TeamsISO.Engine.Tests/Fakes/FakeNdiInterop.cs` -- Create: `src/tests/TeamsISO.Engine.Tests/Fakes/FakeFrameClock.cs` - -- [ ] **Step 1: Implement `FakeNdiInterop`** - -Create `src/tests/TeamsISO.Engine.Tests/Fakes/FakeNdiInterop.cs`: - -```csharp -using System.Collections.Concurrent; -using TeamsISO.Engine.Interop; -using TeamsISO.Engine.Pipeline; - -namespace TeamsISO.Engine.Tests.Fakes; - -/// -/// In-memory test double for . Tests configure source lists and frame -/// queues; the fake feeds those into engine code as if a real NDI runtime were present. -/// -public sealed class FakeNdiInterop : INdiInterop -{ - public List Sources { get; } = new(); - public ConcurrentDictionary> ReceiverFrames { get; } = new(); - public ConcurrentDictionary> SentFrames { get; } = new(); - public string RuntimeVersion { get; set; } = "6.0.0"; - public Dictionary ReceiverCreatedCount { get; } = new(); - public Dictionary SenderCreatedCount { get; } = new(); - - public NdiFindHandle CreateFinder() => new FakeFindHandle(); - public IReadOnlyList GetCurrentSources(NdiFindHandle finder) => Sources.ToArray(); - - public NdiReceiverHandle CreateReceiver(string sourceFullName) - { - ReceiverCreatedCount[sourceFullName] = ReceiverCreatedCount.GetValueOrDefault(sourceFullName) + 1; - ReceiverFrames.GetOrAdd(sourceFullName, _ => new ConcurrentQueue()); - return new FakeReceiverHandle(sourceFullName); - } - - public RawFrame? CaptureFrame(NdiReceiverHandle receiver, int timeoutMs) - { - var key = ((FakeReceiverHandle)receiver).Source; - if (ReceiverFrames.TryGetValue(key, out var q) && q.TryDequeue(out var frame)) - return frame; - return null; // simulate timeout - } - - public NdiSenderHandle CreateSender(string outputName) - { - SenderCreatedCount[outputName] = SenderCreatedCount.GetValueOrDefault(outputName) + 1; - SentFrames.GetOrAdd(outputName, _ => new List()); - return new FakeSenderHandle(outputName); - } - - public void SendFrame(NdiSenderHandle sender, ProcessedFrame frame) - { - var key = ((FakeSenderHandle)sender).Output; - SentFrames[key].Add(frame); - } - - public string GetRuntimeVersion() => RuntimeVersion; - - private sealed class FakeFindHandle : NdiFindHandle - { - public override void Dispose() { } - } - - private sealed class FakeReceiverHandle : NdiReceiverHandle - { - public string Source { get; } - public FakeReceiverHandle(string source) => Source = source; - public override void Dispose() { } - } - - private sealed class FakeSenderHandle : NdiSenderHandle - { - public string Output { get; } - public FakeSenderHandle(string output) => Output = output; - public override void Dispose() { } - } -} -``` - -- [ ] **Step 2: Implement `FakeFrameClock`** - -Create `src/tests/TeamsISO.Engine.Tests/Fakes/FakeFrameClock.cs`: - -```csharp -using TeamsISO.Engine.Pipeline; - -namespace TeamsISO.Engine.Tests.Fakes; - -/// -/// Manual-tick clock. Tests advance the clock and trigger the awaiter explicitly. -/// -public sealed class FakeFrameClock : IFrameClock -{ - private long _nowTicks; - private TaskCompletionSource? _pendingTick; - private readonly object _gate = new(); - - public long NowTicks => Interlocked.Read(ref _nowTicks); - - public void Advance(TimeSpan by) - { - Interlocked.Add(ref _nowTicks, by.Ticks); - TaskCompletionSource? toSignal; - lock (_gate) - { - toSignal = _pendingTick; - _pendingTick = null; - } - toSignal?.TrySetResult(true); - } - - public ValueTask WaitForNextTickAsync(CancellationToken cancellationToken) - { - TaskCompletionSource tcs; - lock (_gate) - { - _pendingTick ??= new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); - tcs = _pendingTick; - } - cancellationToken.Register(() => tcs.TrySetResult(false)); - return new ValueTask(tcs.Task); - } -} -``` - -- [ ] **Step 3: Build to make sure tests compile** - -Run: -``` -dotnet build TeamsISO.sln -``` -Expected: success. - -- [ ] **Step 4: Commit** - -```bash -git add src/tests/TeamsISO.Engine.Tests/Fakes/ -git commit -m "test(fakes): add FakeNdiInterop and FakeFrameClock" -git push origin main -``` - ---- - -## Task 16: `DiscoveryEvent` type - -**Files:** -- Create: `src/TeamsISO.Engine/Discovery/DiscoveryEvent.cs` - -- [ ] **Step 1: Implement the discriminated union** - -Create `src/TeamsISO.Engine/Discovery/DiscoveryEvent.cs`: - -```csharp -using TeamsISO.Engine.Domain; - -namespace TeamsISO.Engine.Discovery; - -public abstract record DiscoveryEvent -{ - public sealed record Added(NdiSource Source) : DiscoveryEvent; - public sealed record Removed(NdiSource Source) : DiscoveryEvent; -} -``` - -- [ ] **Step 2: Build** - -Run: -``` -dotnet build TeamsISO.sln -``` -Expected: success. - -- [ ] **Step 3: Commit** - -```bash -git add src/TeamsISO.Engine/Discovery/DiscoveryEvent.cs -git commit -m "feat(discovery): add DiscoveryEvent (Added/Removed)" -git push origin main -``` - -> Note: the spec mentions `Renamed` events. We model rename as Removed-then-Added because Teams emits a fresh source string on rename — the parser sees no link between them, but `ParticipantTracker` (Task 18) reconstitutes identity via the rename heuristic. - ---- - -## Task 17: `ParticipantTracker` rename heuristic (TDD) - -**Files:** -- Create: `src/TeamsISO.Engine/Discovery/ParticipantTracker.cs` -- Create: `src/tests/TeamsISO.Engine.Tests/Discovery/ParticipantTrackerTests.cs` - -- [ ] **Step 1: Write the failing tests** - -Create `src/tests/TeamsISO.Engine.Tests/Discovery/ParticipantTrackerTests.cs`: - -```csharp -using TeamsISO.Engine.Discovery; -using TeamsISO.Engine.Domain; - -namespace TeamsISO.Engine.Tests.Discovery; - -public class ParticipantTrackerTests -{ - private static NdiSource Source(string machine, string display) => - new($"{machine} (Teams - {display})", machine, NdiSourceKind.Participant, display); - - private static DateTimeOffset T0 => DateTimeOffset.UnixEpoch; - - [Fact] - public void Added_CreatesParticipant() - { - var tracker = new ParticipantTracker(renameWindow: TimeSpan.FromSeconds(5), now: () => T0); - - tracker.Apply(new DiscoveryEvent.Added(Source("PC1", "Jane"))); - - tracker.Participants.Should().HaveCount(1); - var p = tracker.Participants[0]; - p.DisplayName.Should().Be("Jane"); - p.CurrentSource!.MachineName.Should().Be("PC1"); - } - - [Fact] - public void Removed_NullsCurrentSourceButKeepsParticipant() - { - var time = T0; - var tracker = new ParticipantTracker(TimeSpan.FromSeconds(5), () => time); - tracker.Apply(new DiscoveryEvent.Added(Source("PC1", "Jane"))); - - time = T0.AddSeconds(1); - tracker.Apply(new DiscoveryEvent.Removed(Source("PC1", "Jane"))); - - tracker.Participants.Should().HaveCount(1); - tracker.Participants[0].CurrentSource.Should().BeNull(); - } - - [Fact] - public void RenameWithinWindow_TransfersParticipantId() - { - var time = T0; - var tracker = new ParticipantTracker(TimeSpan.FromSeconds(5), () => time); - tracker.Apply(new DiscoveryEvent.Added(Source("PC1", "Jane"))); - var originalId = tracker.Participants[0].Id; - - time = T0.AddSeconds(1); - tracker.Apply(new DiscoveryEvent.Removed(Source("PC1", "Jane"))); - - time = T0.AddSeconds(3); - tracker.Apply(new DiscoveryEvent.Added(Source("PC1", "Jane (PM)"))); - - tracker.Participants.Should().HaveCount(1); - tracker.Participants[0].Id.Should().Be(originalId); - tracker.Participants[0].DisplayName.Should().Be("Jane (PM)"); - } - - [Fact] - public void RenameAfterWindow_TreatsAsNewParticipant() - { - var time = T0; - var tracker = new ParticipantTracker(TimeSpan.FromSeconds(5), () => time); - tracker.Apply(new DiscoveryEvent.Added(Source("PC1", "Jane"))); - var originalId = tracker.Participants[0].Id; - - time = T0.AddSeconds(1); - tracker.Apply(new DiscoveryEvent.Removed(Source("PC1", "Jane"))); - - time = T0.AddSeconds(20); // way past the 5s window - tracker.Apply(new DiscoveryEvent.Added(Source("PC1", "Bob"))); - - tracker.Participants.Should().HaveCount(2); - tracker.Participants.Should().Contain(p => p.Id == originalId); - tracker.Participants.Should().Contain(p => p.DisplayName == "Bob" && p.Id != originalId); - } - - [Fact] - public void DifferentMachine_DoesNotInheritIdentity() - { - var time = T0; - var tracker = new ParticipantTracker(TimeSpan.FromSeconds(5), () => time); - tracker.Apply(new DiscoveryEvent.Added(Source("PC1", "Jane"))); - - time = T0.AddSeconds(1); - tracker.Apply(new DiscoveryEvent.Removed(Source("PC1", "Jane"))); - - time = T0.AddSeconds(2); - tracker.Apply(new DiscoveryEvent.Added(Source("PC2", "Jane (PM)"))); - - tracker.Participants.Should().HaveCount(2); - } - - [Fact] - public void NonParticipantSources_AreIgnored() - { - var tracker = new ParticipantTracker(TimeSpan.FromSeconds(5), () => T0); - var screen = new NdiSource("PC1 (Teams Screen Share)", "PC1", NdiSourceKind.ScreenShare, null); - - tracker.Apply(new DiscoveryEvent.Added(screen)); - - tracker.Participants.Should().BeEmpty(); - } -} -``` - -- [ ] **Step 2: Run tests, expect failure** - -Run: -``` -dotnet test --filter "FullyQualifiedName~ParticipantTrackerTests" -``` -Expected: compilation errors (ParticipantTracker missing). - -- [ ] **Step 3: Implement `ParticipantTracker`** - -Create `src/TeamsISO.Engine/Discovery/ParticipantTracker.cs`: - -```csharp -using TeamsISO.Engine.Domain; - -namespace TeamsISO.Engine.Discovery; - -/// -/// Maintains the operator-facing participant list, applying the rename heuristic -/// from the v1 spec: if a participant source disappears and another participant -/// source with the same MachineName appears within , -/// the existing transfers to the new source. -/// -public sealed class ParticipantTracker -{ - private readonly TimeSpan _renameWindow; - private readonly Func _now; - private readonly List _participants = new(); - private readonly List _recentlyRemoved = new(); - - public ParticipantTracker(TimeSpan renameWindow, Func now) - { - _renameWindow = renameWindow; - _now = now; - } - - public IReadOnlyList Participants => - _participants.Select(m => m.ToRecord()).ToList(); - - public void Apply(DiscoveryEvent ev) - { - switch (ev) - { - case DiscoveryEvent.Added a when a.Source.Kind == NdiSourceKind.Participant: - HandleAdded(a.Source); - break; - case DiscoveryEvent.Removed r when r.Source.Kind == NdiSourceKind.Participant: - HandleRemoved(r.Source); - break; - } - } - - private void HandleAdded(NdiSource source) - { - var now = _now(); - PruneRecentlyRemoved(now); - - var match = _recentlyRemoved.FirstOrDefault(rr => rr.MachineName == source.MachineName); - if (match is not null) - { - // Transfer identity - var existing = _participants.First(p => p.Id == match.Id); - existing.DisplayName = source.DisplayName!; - existing.CurrentSource = source; - existing.LastSeen = now; - _recentlyRemoved.Remove(match); - return; - } - - _participants.Add(new MutableParticipant( - Id: Guid.NewGuid(), - DisplayName: source.DisplayName!, - CurrentSource: source, - FirstSeen: now, - LastSeen: now)); - } - - private void HandleRemoved(NdiSource source) - { - var now = _now(); - var existing = _participants.FirstOrDefault(p => - p.CurrentSource is not null && p.CurrentSource.FullName == source.FullName); - if (existing is null) - return; - - existing.CurrentSource = null; - _recentlyRemoved.Add(new RecentlyRemoved(existing.Id, source.MachineName, now)); - } - - private void PruneRecentlyRemoved(DateTimeOffset now) - { - _recentlyRemoved.RemoveAll(rr => now - rr.RemovedAt > _renameWindow); - } - - private sealed class MutableParticipant - { - public Guid Id { get; init; } - public string DisplayName { get; set; } - public NdiSource? CurrentSource { get; set; } - public DateTimeOffset FirstSeen { get; init; } - public DateTimeOffset LastSeen { get; set; } - - public MutableParticipant(Guid Id, string DisplayName, NdiSource? CurrentSource, - DateTimeOffset FirstSeen, DateTimeOffset LastSeen) - { - this.Id = Id; - this.DisplayName = DisplayName; - this.CurrentSource = CurrentSource; - this.FirstSeen = FirstSeen; - this.LastSeen = LastSeen; - } - - public Participant ToRecord() => - new(Id, DisplayName, CurrentSource, FirstSeen, LastSeen); - } - - private sealed record RecentlyRemoved(Guid Id, string MachineName, DateTimeOffset RemovedAt); -} -``` - -- [ ] **Step 4: Run tests, expect pass** - -Run: -``` -dotnet test --filter "FullyQualifiedName~ParticipantTrackerTests" -``` -Expected: 6 pass. - -- [ ] **Step 5: Commit** - -```bash -git add src/TeamsISO.Engine/Discovery/ParticipantTracker.cs src/tests/TeamsISO.Engine.Tests/Discovery/ParticipantTrackerTests.cs -git commit -m "feat(discovery): add ParticipantTracker with rename heuristic" -git push origin main -``` - ---- - -## Task 18: `NdiDiscoveryService` (TDD against `FakeNdiInterop`) - -**Files:** -- Create: `src/TeamsISO.Engine/Discovery/NdiDiscoveryService.cs` -- Create: `src/tests/TeamsISO.Engine.Tests/Discovery/NdiDiscoveryServiceTests.cs` - -The service polls `INdiInterop.GetCurrentSources` on a background loop and emits `DiscoveryEvent`s on a channel. We test by stepping the loop manually rather than running the background thread. - -- [ ] **Step 1: Write the failing tests** - -Create `src/tests/TeamsISO.Engine.Tests/Discovery/NdiDiscoveryServiceTests.cs`: - -```csharp -using System.Threading.Channels; -using Microsoft.Extensions.Logging.Abstractions; -using TeamsISO.Engine.Discovery; -using TeamsISO.Engine.Domain; -using TeamsISO.Engine.Tests.Fakes; - -namespace TeamsISO.Engine.Tests.Discovery; - -public class NdiDiscoveryServiceTests -{ - [Fact] - public void PollOnce_AddsNewParticipantSources_AndIgnoresMalformedStrings() - { - var interop = new FakeNdiInterop(); - interop.Sources.Add("PC1 (Teams - Jane)"); - interop.Sources.Add("PC1 (Teams)"); - interop.Sources.Add("Just A Camera"); // not a Teams source - interop.Sources.Add("BAD (Teams - )"); // empty display name - var channel = Channel.CreateUnbounded(); - - var svc = new NdiDiscoveryService(interop, channel.Writer, NullLogger.Instance); - - svc.PollOnce(); - - var emitted = DrainChannel(channel.Reader); - emitted.OfType().Select(a => a.Source.FullName) - .Should().BeEquivalentTo(new[] { "PC1 (Teams - Jane)", "PC1 (Teams)" }); - } - - [Fact] - public void PollOnce_EmitsRemoved_WhenSourceDisappears() - { - var interop = new FakeNdiInterop(); - interop.Sources.Add("PC1 (Teams - Jane)"); - var channel = Channel.CreateUnbounded(); - - var svc = new NdiDiscoveryService(interop, channel.Writer, NullLogger.Instance); - svc.PollOnce(); - DrainChannel(channel.Reader); // first poll: Added - - interop.Sources.Clear(); - svc.PollOnce(); - - var emitted = DrainChannel(channel.Reader); - emitted.OfType().Select(r => r.Source.FullName) - .Should().BeEquivalentTo(new[] { "PC1 (Teams - Jane)" }); - } - - [Fact] - public void PollOnce_NoChange_EmitsNothing() - { - var interop = new FakeNdiInterop(); - interop.Sources.Add("PC1 (Teams - Jane)"); - var channel = Channel.CreateUnbounded(); - - var svc = new NdiDiscoveryService(interop, channel.Writer, NullLogger.Instance); - svc.PollOnce(); DrainChannel(channel.Reader); - - svc.PollOnce(); - - DrainChannel(channel.Reader).Should().BeEmpty(); - } - - private static List DrainChannel(ChannelReader reader) - { - var list = new List(); - while (reader.TryRead(out var ev)) list.Add(ev); - return list; - } -} -``` - -- [ ] **Step 2: Run tests, expect failure** - -Run: -``` -dotnet test --filter "FullyQualifiedName~NdiDiscoveryServiceTests" -``` -Expected: compilation errors (`NdiDiscoveryService` missing). - -- [ ] **Step 3: Implement `NdiDiscoveryService`** - -Create `src/TeamsISO.Engine/Discovery/NdiDiscoveryService.cs`: - -```csharp -using System.Threading.Channels; -using Microsoft.Extensions.Logging; -using TeamsISO.Engine.Domain; -using TeamsISO.Engine.Interop; - -namespace TeamsISO.Engine.Discovery; - -/// -/// Polls at a fixed cadence, diffs the -/// resulting set against the previous poll, and emits s -/// on a channel for downstream consumers. -/// -public sealed class NdiDiscoveryService -{ - private readonly INdiInterop _interop; - private readonly ChannelWriter _writer; - private readonly ILogger _logger; - private readonly NdiFindHandle _finder; - private readonly HashSet _previous = new(); - - public NdiDiscoveryService( - INdiInterop interop, - ChannelWriter writer, - ILogger logger) - { - _interop = interop; - _writer = writer; - _logger = logger; - _finder = interop.CreateFinder(); - } - - /// - /// Runs a single poll cycle. Public for unit testing; production uses . - /// - public void PollOnce() - { - var current = _interop.GetCurrentSources(_finder); - var currentSet = new HashSet(current); - - // Added - foreach (var name in currentSet.Except(_previous)) - { - var parsed = NdiSourceParser.Parse(name); - if (parsed is null) - { - _logger.LogTrace("Ignoring unrecognized source: {Name}", name); - continue; - } - _writer.TryWrite(new DiscoveryEvent.Added(parsed)); - } - - // Removed - foreach (var name in _previous.Except(currentSet)) - { - var parsed = NdiSourceParser.Parse(name); - if (parsed is null) continue; - _writer.TryWrite(new DiscoveryEvent.Removed(parsed)); - } - - _previous.Clear(); - foreach (var name in currentSet) _previous.Add(name); - } - - /// Long-running poll loop. Cancel the token to stop. - public async Task RunAsync(TimeSpan pollInterval, CancellationToken cancellationToken) - { - using var timer = new PeriodicTimer(pollInterval); - try - { - while (await timer.WaitForNextTickAsync(cancellationToken)) - { - try { PollOnce(); } - catch (Exception ex) { _logger.LogWarning(ex, "Discovery poll failed; will retry on next tick."); } - } - } - catch (OperationCanceledException) { /* expected */ } - finally - { - _finder.Dispose(); - } - } -} -``` - -- [ ] **Step 4: Run tests, expect pass** - -Run: -``` -dotnet test --filter "FullyQualifiedName~NdiDiscoveryServiceTests" -``` -Expected: 3 pass. - -- [ ] **Step 5: Commit** - -```bash -git add src/TeamsISO.Engine/Discovery/NdiDiscoveryService.cs src/tests/TeamsISO.Engine.Tests/Discovery/NdiDiscoveryServiceTests.cs -git commit -m "feat(discovery): add NdiDiscoveryService with diff-based event emission" -git push origin main -``` - ---- - -## Task 19: `SolidFrameRenderer` (no-signal slate) - -**Files:** -- Create: `src/TeamsISO.Engine/Pipeline/SolidFrameRenderer.cs` -- Create: `src/tests/TeamsISO.Engine.Tests/Pipeline/SolidFrameRendererTests.cs` - -- [ ] **Step 1: Write the failing test** - -Create `src/tests/TeamsISO.Engine.Tests/Pipeline/SolidFrameRendererTests.cs`: - -```csharp -using TeamsISO.Engine.Pipeline; - -namespace TeamsISO.Engine.Tests.Pipeline; - -public class SolidFrameRendererTests -{ - [Fact] - public void Render_ProducesBgraFrameOfTargetSize_FilledWithColor() - { - var renderer = new SolidFrameRenderer(); - var frame = renderer.Render(width: 1920, height: 1080, b: 0x80, g: 0x80, r: 0x80, a: 0xFF, timestampTicks: 12345); - - frame.Width.Should().Be(1920); - frame.Height.Should().Be(1080); - frame.Format.Should().Be(PixelFormat.Bgra); - frame.Pixels.Length.Should().Be(1920 * 1080 * 4); - frame.TimestampTicks.Should().Be(12345); - - // Spot-check first and last pixel - var span = frame.Pixels.Span; - span[0].Should().Be(0x80); span[1].Should().Be(0x80); span[2].Should().Be(0x80); span[3].Should().Be(0xFF); - var last = span.Length - 4; - span[last].Should().Be(0x80); span[last + 3].Should().Be(0xFF); - } -} -``` - -- [ ] **Step 2: Run tests, expect failure** - -Run: -``` -dotnet test --filter "FullyQualifiedName~SolidFrameRendererTests" -``` -Expected: compilation error. - -- [ ] **Step 3: Implement** - -Create `src/TeamsISO.Engine/Pipeline/SolidFrameRenderer.cs`: - -```csharp -namespace TeamsISO.Engine.Pipeline; - -/// -/// Generates a solid-color BGRA frame for use as a "no signal" slate. -/// -public sealed class SolidFrameRenderer -{ - public ProcessedFrame Render(int width, int height, byte b, byte g, byte r, byte a, long timestampTicks) - { - var pixels = new byte[width * height * 4]; - for (var i = 0; i < pixels.Length; i += 4) - { - pixels[i + 0] = b; - pixels[i + 1] = g; - pixels[i + 2] = r; - pixels[i + 3] = a; - } - return new ProcessedFrame(width, height, timestampTicks, pixels, PixelFormat.Bgra); - } -} -``` - -- [ ] **Step 4: Run tests, expect pass** - -Run: -``` -dotnet test --filter "FullyQualifiedName~SolidFrameRendererTests" -``` -Expected: 1 pass. - -- [ ] **Step 5: Commit** - -```bash -git add src/TeamsISO.Engine/Pipeline/SolidFrameRenderer.cs src/tests/TeamsISO.Engine.Tests/Pipeline/SolidFrameRendererTests.cs -git commit -m "feat(pipeline): add SolidFrameRenderer for no-signal slate" -git push origin main -``` - ---- - -## Task 20: `IFrameScaler` interface and identity scaler - -We separate the scaling step behind an interface so Phase A doesn't need libyuv. The Phase A scaler is "identity" — copy and emit at the requested size by truncating or padding. This lets us write the FrameProcessor's timing tests without the real libyuv dependency. Phase B replaces the implementation with a real libyuv-backed scaler. - -**Files:** -- Create: `src/TeamsISO.Engine/Pipeline/IFrameScaler.cs` -- Create: `src/TeamsISO.Engine/Pipeline/PassthroughFrameScaler.cs` - -- [ ] **Step 1: Define the interface** - -Create `src/TeamsISO.Engine/Pipeline/IFrameScaler.cs`: - -```csharp -using TeamsISO.Engine.Domain; - -namespace TeamsISO.Engine.Pipeline; - -public interface IFrameScaler -{ - ProcessedFrame Scale(RawFrame source, int targetWidth, int targetHeight, AspectMode aspect, long timestampTicks); -} -``` - -- [ ] **Step 2: Implement the passthrough scaler (Phase A)** - -Create `src/TeamsISO.Engine/Pipeline/PassthroughFrameScaler.cs`: - -```csharp -using TeamsISO.Engine.Domain; - -namespace TeamsISO.Engine.Pipeline; - -/// -/// Phase A scaler. Copies the source frame's pixel buffer through unchanged and tags the -/// output with the requested target dimensions. Real scaling is added in Phase B against libyuv. -/// -public sealed class PassthroughFrameScaler : IFrameScaler -{ - public ProcessedFrame Scale(RawFrame source, int targetWidth, int targetHeight, AspectMode aspect, long timestampTicks) - { - return new ProcessedFrame( - Width: targetWidth, - Height: targetHeight, - TimestampTicks: timestampTicks, - Pixels: source.Pixels, - Format: source.Format == PixelFormat.Bgra ? PixelFormat.Bgra : PixelFormat.Bgra); - } -} -``` - -- [ ] **Step 3: Build** - -Run: -``` -dotnet build TeamsISO.sln -``` -Expected: success. - -- [ ] **Step 4: Commit** - -```bash -git add src/TeamsISO.Engine/Pipeline/IFrameScaler.cs src/TeamsISO.Engine/Pipeline/PassthroughFrameScaler.cs -git commit -m "feat(pipeline): add IFrameScaler interface and PassthroughFrameScaler (Phase A)" -git push origin main -``` - ---- - -## Task 21: `FrameProcessor` timing logic (TDD against `FakeFrameClock`) - -This is the heart of Phase A's behavior coverage: closest-frame timing, frame duplication, and the slate fallback. - -**Files:** -- Create: `src/TeamsISO.Engine/Pipeline/FrameProcessor.cs` -- Create: `src/tests/TeamsISO.Engine.Tests/Pipeline/FrameProcessorTests.cs` - -- [ ] **Step 1: Write the failing tests** - -Create `src/tests/TeamsISO.Engine.Tests/Pipeline/FrameProcessorTests.cs`: - -```csharp -using System.Threading.Channels; -using Microsoft.Extensions.Logging.Abstractions; -using TeamsISO.Engine.Domain; -using TeamsISO.Engine.Pipeline; -using TeamsISO.Engine.Tests.Fakes; - -namespace TeamsISO.Engine.Tests.Pipeline; - -public class FrameProcessorTests -{ - private static readonly FrameProcessingSettings Settings1080p30 = - new(TargetFramerate.Fps30, TargetResolution.R1080p, AspectMode.Pillarbox, AudioMode.Auto); - - private static RawFrame MakeFrame(int width, int height, long ts) => - new(width, height, ts, new byte[width * height * 4], PixelFormat.Bgra); - - private static FrameProcessor NewProcessor( - FakeFrameClock clock, - Channel input, - Channel output, - FrameProcessingSettings? settings = null) - => new( - settings: settings ?? Settings1080p30, - scaler: new PassthroughFrameScaler(), - slateRenderer: new SolidFrameRenderer(), - clock: clock, - input: input.Reader, - output: output.Writer, - slateThreshold: TimeSpan.FromSeconds(2.5), - logger: NullLogger.Instance); - - [Fact] - public async Task ProcessOnce_NewFrameAvailable_EmitsScaledFrame() - { - var clock = new FakeFrameClock(); - var input = Channel.CreateBounded(4); - var output = Channel.CreateUnbounded(); - var proc = NewProcessor(clock, input, output); - - input.Writer.TryWrite(MakeFrame(640, 360, ts: 100)); - clock.Advance(TimeSpan.FromMilliseconds(34)); // 1 tick at ~30fps - await proc.ProcessOnceAsync(CancellationToken.None); - - output.Reader.TryRead(out var frame).Should().BeTrue(); - frame!.Width.Should().Be(1920); - frame.Height.Should().Be(1080); - } - - [Fact] - public async Task ProcessOnce_NoNewFrame_ReEmitsLastFrame() - { - var clock = new FakeFrameClock(); - var input = Channel.CreateBounded(4); - var output = Channel.CreateUnbounded(); - var proc = NewProcessor(clock, input, output); - - input.Writer.TryWrite(MakeFrame(640, 360, ts: 100)); - clock.Advance(TimeSpan.FromMilliseconds(34)); - await proc.ProcessOnceAsync(CancellationToken.None); - output.Reader.TryRead(out _).Should().BeTrue(); - - // Second tick, no new input - clock.Advance(TimeSpan.FromMilliseconds(34)); - await proc.ProcessOnceAsync(CancellationToken.None); - - output.Reader.TryRead(out var second).Should().BeTrue(); - second!.Width.Should().Be(1920); - proc.Stats.FramesDuplicated.Should().Be(1); - } - - [Fact] - public async Task ProcessOnce_NoFrameForLongerThanSlateThreshold_EmitsSlate() - { - var clock = new FakeFrameClock(); - var input = Channel.CreateBounded(4); - var output = Channel.CreateUnbounded(); - var proc = NewProcessor(clock, input, output); - - input.Writer.TryWrite(MakeFrame(640, 360, ts: 100)); - clock.Advance(TimeSpan.FromMilliseconds(34)); - await proc.ProcessOnceAsync(CancellationToken.None); - output.Reader.TryRead(out _); - - // Advance 3 seconds without input - clock.Advance(TimeSpan.FromSeconds(3)); - await proc.ProcessOnceAsync(CancellationToken.None); - - output.Reader.TryRead(out var slate).Should().BeTrue(); - slate!.Width.Should().Be(1920); - slate.Height.Should().Be(1080); - // First pixel is mid-grey BGRA - slate.Pixels.Span[0].Should().Be(0x80); - } - - [Fact] - public async Task ProcessOnce_PicksNewestFrame_DropsOlder() - { - var clock = new FakeFrameClock(); - var input = Channel.CreateBounded(4); - var output = Channel.CreateUnbounded(); - var proc = NewProcessor(clock, input, output); - - // Three frames queued before the tick fires - input.Writer.TryWrite(MakeFrame(640, 360, ts: 100)); - input.Writer.TryWrite(MakeFrame(640, 360, ts: 200)); - input.Writer.TryWrite(MakeFrame(640, 360, ts: 300)); - clock.Advance(TimeSpan.FromMilliseconds(34)); - await proc.ProcessOnceAsync(CancellationToken.None); - - proc.Stats.FramesIn.Should().Be(3); - proc.Stats.FramesDropped.Should().Be(2); // we kept ts=300, dropped ts=100 and ts=200 - } -} -``` - -- [ ] **Step 2: Run tests, expect failure** - -Run: -``` -dotnet test --filter "FullyQualifiedName~FrameProcessorTests" -``` -Expected: compilation errors (`FrameProcessor` missing). - -- [ ] **Step 3: Implement `FrameProcessor`** - -Create `src/TeamsISO.Engine/Pipeline/FrameProcessor.cs`: - -```csharp -using System.Threading.Channels; -using Microsoft.Extensions.Logging; -using TeamsISO.Engine.Domain; - -namespace TeamsISO.Engine.Pipeline; - -/// -/// Per-ISO frame timing engine. Implements closest-frame strategy: at each tick, -/// pick the newest available raw frame (dropping older queued frames), scale and emit it. -/// If no new frame is available, re-emit the last frame. If no frame has arrived for -/// , emit a no-signal slate instead. -/// -public sealed class FrameProcessor -{ - private readonly FrameProcessingSettings _settings; - private readonly IFrameScaler _scaler; - private readonly SolidFrameRenderer _slateRenderer; - private readonly IFrameClock _clock; - private readonly ChannelReader _input; - private readonly ChannelWriter _output; - private readonly TimeSpan _slateThreshold; - private readonly ILogger _logger; - - private RawFrame? _lastRawFrame; - private long _lastFrameTickTicks; - private long _framesIn; - private long _framesOut; - private long _framesDropped; - private long _framesDuplicated; - private long _framesSlated; - - public FrameProcessor( - FrameProcessingSettings settings, - IFrameScaler scaler, - SolidFrameRenderer slateRenderer, - IFrameClock clock, - ChannelReader input, - ChannelWriter output, - TimeSpan slateThreshold, - ILogger logger) - { - _settings = settings; - _scaler = scaler; - _slateRenderer = slateRenderer; - _clock = clock; - _input = input; - _output = output; - _slateThreshold = slateThreshold; - _logger = logger; - } - - public IsoHealthStats Stats => - new( - FramesIn: Interlocked.Read(ref _framesIn), - FramesOut: Interlocked.Read(ref _framesOut), - FramesDropped: Interlocked.Read(ref _framesDropped), - FramesDuplicated: Interlocked.Read(ref _framesDuplicated), - LastFrameAt: _lastFrameTickTicks == 0 ? null : new DateTimeOffset(_lastFrameTickTicks, TimeSpan.Zero), - IncomingFps: 0, // computed downstream from FramesIn delta over time - IncomingWidth: _lastRawFrame?.Width ?? 0, - IncomingHeight: _lastRawFrame?.Height ?? 0); - - public Task ProcessOnceAsync(CancellationToken cancellationToken) - { - // Drain the input channel non-blockingly, keeping only the newest frame. - RawFrame? newest = null; - while (_input.TryRead(out var frame)) - { - if (newest is not null) - Interlocked.Increment(ref _framesDropped); - newest = frame; - Interlocked.Increment(ref _framesIn); - } - - var (targetW, targetH) = _settings.ResolutionSize; - var nowTicks = _clock.NowTicks; - - ProcessedFrame toEmit; - if (newest is not null) - { - _lastRawFrame = newest; - _lastFrameTickTicks = nowTicks; - toEmit = _scaler.Scale(newest, targetW, targetH, _settings.Aspect, nowTicks); - } - else if (_lastRawFrame is not null && (nowTicks - _lastFrameTickTicks) <= _slateThreshold.Ticks) - { - Interlocked.Increment(ref _framesDuplicated); - toEmit = _scaler.Scale(_lastRawFrame, targetW, targetH, _settings.Aspect, nowTicks); - } - else - { - Interlocked.Increment(ref _framesSlated); - toEmit = _slateRenderer.Render(targetW, targetH, b: 0x80, g: 0x80, r: 0x80, a: 0xFF, nowTicks); - } - - Interlocked.Increment(ref _framesOut); - _output.TryWrite(toEmit); - return Task.CompletedTask; - } -} -``` - -- [ ] **Step 4: Run tests, expect pass** - -Run: -``` -dotnet test --filter "FullyQualifiedName~FrameProcessorTests" -``` -Expected: 4 pass. - -- [ ] **Step 5: Commit** - -```bash -git add src/TeamsISO.Engine/Pipeline/FrameProcessor.cs src/tests/TeamsISO.Engine.Tests/Pipeline/FrameProcessorTests.cs -git commit -m "feat(pipeline): add FrameProcessor with closest-frame timing and slate fallback" -git push origin main -``` - ---- - -## Task 22: Coverage threshold gate in CI - -We promised 80% line coverage on `TeamsISO.Engine`. Wire that into the CI workflow so a regression caught in PR. - -**Files:** -- Modify: `.forgejo/workflows/ci.yml` -- Create: `coverlet.runsettings` - -- [ ] **Step 1: Add a `coverlet.runsettings`** - -Create `coverlet.runsettings`: - -```xml - - - - - - - cobertura,opencover - [*.Tests]*,[*.NdiInterop]*,[*.IntegrationTests]* - GeneratedCodeAttribute,CompilerGeneratedAttribute - - - - - -``` - -- [ ] **Step 2: Update `.forgejo/workflows/ci.yml`** - -Replace the test step in `.forgejo/workflows/ci.yml` with: - -```yaml - - name: Test (excluding requires=ndi) - run: > - dotnet test TeamsISO.sln - --configuration Release - --no-build - --logger "trx;LogFileName=test-results.trx" - --collect:"XPlat Code Coverage" - --settings coverlet.runsettings - --filter "Category!=ndi&requires!=ndi" - - - name: Install ReportGenerator - run: dotnet tool install --global dotnet-reportgenerator-globaltool - - - name: Generate coverage report - run: | - export PATH="$PATH:/root/.dotnet/tools:$HOME/.dotnet/tools" - reportgenerator \ - -reports:"**/coverage.cobertura.xml" \ - -targetdir:coverage-report \ - -reporttypes:"Cobertura;TextSummary" \ - -assemblyfilters:"+TeamsISO.Engine;-TeamsISO.Engine.NdiInterop" - - - name: Enforce coverage threshold (80%) - run: | - summary=$(cat coverage-report/Summary.txt) - echo "$summary" - line_coverage=$(echo "$summary" | awk '/Line coverage/ {print $3}' | tr -d '%') - echo "Line coverage: $line_coverage%" - awk -v c="$line_coverage" 'BEGIN { if (c+0 < 80) { exit 1 } }' - - - name: Upload coverage report - if: always() - uses: actions/upload-artifact@v4 - with: - name: coverage-report - path: coverage-report/ -``` - -- [ ] **Step 3: Commit** - -```bash -git add coverlet.runsettings .forgejo/workflows/ci.yml -git commit -m "ci: enforce 80% line coverage gate on TeamsISO.Engine" -git push origin main -``` - -- [ ] **Step 4: Verify CI passes** - -Open `https://forge.wilddragon.net/zgaetano/teamsiso/actions`. Confirm the latest run is green and the coverage step reports ≥80% on `TeamsISO.Engine`. - ---- - -## Task 23: Logging bootstrap - -Provide a tiny, self-contained way for engine consumers to wire `Microsoft.Extensions.Logging` quickly. Phase A ships a console-only configuration so the smoke runner in Phase B has logs out of the box. - -**Files:** -- Create: `src/TeamsISO.Engine/Logging/EngineLogging.cs` - -- [ ] **Step 1: Add Serilog packages** - -Run: -``` -cd src/TeamsISO.Engine -dotnet add package Serilog --version 4.0.0 -dotnet add package Serilog.Extensions.Logging --version 8.0.0 -dotnet add package Serilog.Sinks.Console --version 6.0.0 -cd ../.. -``` - -- [ ] **Step 2: Implement the helper** - -Create `src/TeamsISO.Engine/Logging/EngineLogging.cs`: - -```csharp -using Microsoft.Extensions.Logging; -using Serilog; -using Serilog.Extensions.Logging; - -namespace TeamsISO.Engine.Logging; - -/// -/// Convenience factory for an wired to Serilog's console sink. -/// Phase A wires console-only; Phase C will add the rolling-file sink under %APPDATA%\TeamsISO\logs\. -/// -public static class EngineLogging -{ - public static ILoggerFactory CreateConsole(LogLevel minimum = LogLevel.Information) - { - var serilog = new LoggerConfiguration() - .MinimumLevel.Is(MapLevel(minimum)) - .Enrich.WithProperty("Component", "TeamsISO.Engine") - .WriteTo.Console(outputTemplate: - "[{Timestamp:HH:mm:ss} {Level:u3}] [{Component}] {Message:lj}{NewLine}{Exception}") - .CreateLogger(); - return new SerilogLoggerFactory(serilog, dispose: true); - } - - private static Serilog.Events.LogEventLevel MapLevel(LogLevel level) => level switch - { - LogLevel.Trace => Serilog.Events.LogEventLevel.Verbose, - LogLevel.Debug => Serilog.Events.LogEventLevel.Debug, - LogLevel.Information => Serilog.Events.LogEventLevel.Information, - LogLevel.Warning => Serilog.Events.LogEventLevel.Warning, - LogLevel.Error => Serilog.Events.LogEventLevel.Error, - LogLevel.Critical => Serilog.Events.LogEventLevel.Fatal, - _ => Serilog.Events.LogEventLevel.Information - }; -} -``` - -- [ ] **Step 3: Build** - -Run: -``` -dotnet build TeamsISO.sln -``` -Expected: success. - -- [ ] **Step 4: Commit** - -```bash -git add src/TeamsISO.Engine/Logging/EngineLogging.cs src/TeamsISO.Engine/TeamsISO.Engine.csproj -git commit -m "feat(logging): add EngineLogging.CreateConsole helper" -git push origin main -``` - ---- - -## Task 24: Phase A wrap-up — release tag and follow-up plan stubs - -**Files:** -- Create: `docs/test-playbook.md` -- Create: `docs/superpowers/plans/_NEXT.md` - -- [ ] **Step 1: Add the (Phase A) test playbook stub** - -Create `docs/test-playbook.md`: - -```markdown -# TeamsISO Manual Test Playbook - -This doc grows with each phase. Phase A is unit-test only — nothing to verify against live Teams yet. Phase B will fill in NDI runtime checks; Phase C will add the live-meeting end-to-end checklist. - -## Pre-checks (run before each release branch) - -- [ ] `dotnet build TeamsISO.sln` succeeds with zero warnings. -- [ ] `dotnet test TeamsISO.sln` reports all unit tests passing. -- [ ] CI run on `main` is green. - -## Live-meeting checklist (Phase C) - -(To be added.) -``` - -- [ ] **Step 2: Add a `_NEXT.md` index** - -Create `docs/superpowers/plans/_NEXT.md`: - -```markdown -# Plan Backlog - -Phase A is implemented (this file's siblings). After Phase A merges and CI is green: - -1. **Phase B — NDI Interop & Pipeline** — add real P/Invoke shim in `TeamsISO.Engine.NdiInterop`, real `IFrameScaler` against libyuv, `NdiReceiver` and `NdiSender`, `IsoPipeline`, `IsoController`, runtime version probe. Console smoke runner. Integration test suite goes live (Windows + NDI runtime required). -2. **Phase C — UI & Packaging** — WPF MVVM app on top of the engine. Settings view, participant list, alert banner, system health indicators. WiX MSI installer, release pipeline on tag, About dialog. - -Each phase gets its own `YYYY-MM-DD-teamsiso-phase-X-.md` plan written by `superpowers:writing-plans` once the previous phase is shipped. -``` - -- [ ] **Step 3: Commit** - -```bash -git add docs/test-playbook.md docs/superpowers/plans/_NEXT.md -git commit -m "docs: add Phase A test playbook stub and plan backlog" -git push origin main -``` - -- [ ] **Step 4: Tag the Phase A milestone** - -Run: -``` -git tag -a phase-a-complete -m "Phase A: Engine foundation complete (domain, parser, tracker, processor, config, fakes, CI)" -git push origin phase-a-complete -``` - -- [ ] **Step 5: Final verification** - -Run: -``` -dotnet build TeamsISO.sln -dotnet test TeamsISO.sln -``` -Expected: build succeeds; all unit tests pass; integration test scaffold reports 1 skipped. CI on `main` is green at HEAD with coverage ≥80%. - -Phase A is done. Phase B starts when you're ready — open a fresh chat and ask for a "phase B plan" referencing the spec and `_NEXT.md`. - ---- - -## Self-review (run by the author of the plan) - -**1. Spec coverage** — every spec section maps to at least one task: - -- Spec §2 Architecture (six-project layout, engine/UI split): Tasks 2–6. -- Spec §3 Domain model: Tasks 8, 10, 11. -- Spec §4 Components — `NdiDiscoveryService`, `ParticipantTracker`: Tasks 17, 18. `FrameProcessor`: Task 21. `ConfigStore`: Task 12. `SolidFrameRenderer`: Task 19. Logging: Task 23. The remaining components — `IsoPipeline`, `NdiReceiver`, `NdiSender`, `IsoController` — are in Phase B by design (they require real interop or are pure orchestration over interop-touching components). -- Spec §5 Data flow & threading: covered for the processor's logic in Task 21; Phase B will assemble the full pipeline with dedicated capture/send threads. -- Spec §6 Error handling: `ConfigStore` corruption (Task 12) and slate fallback (Task 21). Pipeline isolation, restart backoff, and runtime probe alerts move to Phase B because they're orchestration concerns over real interop. -- Spec §7 Testing: Tasks 8, 9, 12, 17–19, 21 build the unit test suite; Task 22 enforces coverage gate. Integration test project scaffolded (Task 6); real integration tests added in Phase B alongside the production interop. -- Spec §8 Build & packaging: solution layout (Tasks 2–6), CI (Tasks 7, 22). MSI installer is Phase C. -- Spec §9 Open tasks: tracked in `_NEXT.md` (Task 24). - -**2. Placeholder scan** — searched for "TBD", "TODO", "implement later". None remain in the plan body. Each step has full code or full command. - -**3. Type consistency** — cross-checked names: `NdiSourceKind` (used in Tasks 8, 9), `IsoState` (Tasks 8, 10), `NdiSource.FullName/MachineName/Kind/DisplayName` (Tasks 9, 17, 18 consistent), `Participant.Id/DisplayName/CurrentSource/FirstSeen/LastSeen` (Tasks 10, 17 consistent), `IsoHealthStats` field set (Tasks 10, 21 consistent — `FramesIn/FramesOut/FramesDropped/FramesDuplicated/LastFrameAt/IncomingFps/IncomingWidth/IncomingHeight`), `INdiInterop` method shape (Tasks 13, 15, 18 consistent), `IFrameClock.NowTicks/WaitForNextTickAsync` (Tasks 14, 15, 21 consistent), `FrameProcessor.ProcessOnceAsync` signature (Task 21 internally consistent and matches test invocations). - -**4. Ambiguity check** — each task names exact file paths, exact commands, and exact expected output. Tasks declared "Phase A scope" explicitly defer items the spec mentions but that depend on real NDI runtime (interop implementation, IsoPipeline orchestration, runtime probe alerts). - -No issues to fix. Plan ready for execution. diff --git a/docs/superpowers/plans/2026-05-07-teamsiso-phase-b-1-pipeline-orchestration.md b/docs/superpowers/plans/2026-05-07-teamsiso-phase-b-1-pipeline-orchestration.md deleted file mode 100644 index 5d642d4..0000000 --- a/docs/superpowers/plans/2026-05-07-teamsiso-phase-b-1-pipeline-orchestration.md +++ /dev/null @@ -1,167 +0,0 @@ -# TeamsISO Phase B-1 — Pipeline Orchestration Plan - -> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. - -**Goal:** Implement the engine-side pipeline orchestration on top of the `INdiInterop` test seam from Phase A — `NdiReceiver`, `NdiSender`, `ExponentialBackoff`, `NdiRuntimeProbe`, `IsoPipeline` (lifecycle + restart loop), and `IsoController` (top-level engine API). All testable on Linux against `FakeNdiInterop`. Phase B-2 (real Windows P/Invoke for `INdiInterop` + libyuv `IFrameScaler` + integration tests) follows. - -**Architecture:** Pure orchestration. Each `IsoPipeline` wires one `NdiReceiver` → existing `FrameProcessor` → one `NdiSender` via two bounded channels. The pipeline owns a restart loop driven by `ExponentialBackoff`. `IsoController` is the top of the engine — holds the pipeline dictionary, the `ParticipantTracker`, the `ConfigStore`, and exposes the contract the WPF host (Phase C) will bind to. - -**Tech Stack:** .NET 8, xUnit, FluentAssertions. No new external dependencies. - -**Source spec:** `docs/superpowers/specs/2026-05-07-teamsiso-v1-design.md` - ---- - -## File structure additions - -``` -src/TeamsISO.Engine/ -├── Pipeline/ -│ ├── NdiReceiver.cs (NEW) -│ ├── NdiSender.cs (NEW) -│ ├── ExponentialBackoff.cs (NEW) -│ ├── IsoPipeline.cs (NEW) -│ └── IsoPipelineConfig.cs (NEW) -├── Interop/ -│ └── NdiRuntimeProbe.cs (NEW) -└── Controller/ - ├── IIsoController.cs (NEW) - └── IsoController.cs (NEW) - -src/tests/TeamsISO.Engine.Tests/ -├── Pipeline/NdiReceiverTests.cs (NEW) -├── Pipeline/NdiSenderTests.cs (NEW) -├── Pipeline/ExponentialBackoffTests.cs (NEW) -├── Pipeline/IsoPipelineTests.cs (NEW) -├── Interop/NdiRuntimeProbeTests.cs (NEW) -└── Controller/IsoControllerTests.cs (NEW) -``` - ---- - -## Task 1: `NdiReceiver` - -Receiver that wraps `INdiInterop.CaptureFrame` and pushes results into a `ChannelWriter`. Exposes a `CaptureOnce` test seam mirroring `FrameProcessor.ProcessOnceAsync`. `RunAsync` is the production loop with `LongRunning` thread semantics. - -TDD assertions: -- `CaptureOnce` writes a captured frame to the output channel; counter increments. -- `CaptureOnce` does nothing on null capture (timeout); counter does not change. -- `RunAsync` honors cancellation and disposes the receiver handle on exit. - -Commit: `feat(pipeline): add NdiReceiver with channel-based output` - ---- - -## Task 2: `NdiSender` - -Sender that pulls from a `ChannelReader` and forwards to `INdiInterop.SendFrame`. `SendNextAsync` returns true if a frame was sent; false if the channel completed. `RunAsync` loops until cancellation. - -TDD assertions: -- `SendNextAsync` forwards a frame to the interop and increments the sent counter. -- Returns `false` when channel completes. -- `RunAsync` honors cancellation and disposes the sender handle. - -Commit: `feat(pipeline): add NdiSender with channel-based input` - ---- - -## Task 3: `ExponentialBackoff` - -Pure policy type. Given an attempt count, returns the next delay (1, 2, 4, 8, 16 s, capped at 30 s) and decides whether to give up after N consecutive failures (default 5). - -TDD assertions: -- Sequence at attempts 1..5 is 1, 2, 4, 8, 16 seconds. -- `ShouldGiveUp` returns true after the 5th attempt. -- Cap: at attempt 7 the delay is 30 s, not 64. - -Commit: `feat(pipeline): add ExponentialBackoff policy` - ---- - -## Task 4: `NdiRuntimeProbe` - -Reads the runtime version via `INdiInterop.GetRuntimeVersion()`, compares to an expected value (passed in by the engine for now; a real comparison against the SDK headers is Phase B-2). Returns either `Match` or `Mismatch` with both versions populated. The `IsoController` will surface `EngineAlert.NdiRuntimeMismatch` from a mismatch. - -TDD assertions: -- Match when versions equal. -- Mismatch carries detected and expected. - -Commit: `feat(interop): add NdiRuntimeProbe with version-mismatch result` - ---- - -## Task 5: `IsoPipeline` core lifecycle - -Owns one `NdiReceiver`, one `FrameProcessor`, one `NdiSender`, and the two channels between them. `StartAsync` creates the channels, instantiates the receiver/processor/sender, kicks off the three loops on long-running tasks. `StopAsync` cancels the token, awaits the loops, and disposes everything. - -`IsoState` transitions: `Idle` → `Receiving` (after start) → `Sending` (after first send) → `NoSignal` (handled by FrameProcessor's slate path and exposed via Stats). On exception the loop transitions to `Error`. - -The restart loop is in Task 6. - -TDD assertions: -- Start transitions Idle → Receiving. -- Stop transitions back to Idle and disposes interop handles. -- Receiver/sender handles are created on Start, disposed on Stop. - -Commit: `feat(pipeline): add IsoPipeline core lifecycle` - ---- - -## Task 6: `IsoPipeline` restart loop - -Wraps the running pipeline in a supervisory loop that catches unhandled exceptions, applies `ExponentialBackoff`, and either restarts or transitions to `Error` after exhausting retries. State observable updates accordingly. - -TDD assertions (using a fault-injecting INdiInterop): -- Pipeline that fails once, then runs cleanly, restarts and ends up Sending. -- Pipeline that fails 5+ consecutive times transitions to Error and stays there. -- Backoff delays are honored (using a fake delay primitive for fast tests). - -Commit: `feat(pipeline): add IsoPipeline restart supervisor with backoff` - ---- - -## Task 7: `IIsoController` interface + `IsoController` implementation - -The top-of-engine API the WPF host will bind to in Phase C. - -Surface: -- `IObservable> Participants { get; }` -- `IObservable Alerts { get; }` -- `IsoHealthStats GetStats(Guid participantId)` -- `Task EnableIsoAsync(Guid participantId, string? customName, CancellationToken ct)` -- `Task DisableIsoAsync(Guid participantId, CancellationToken ct)` -- `Task SetGlobalSettingsAsync(FrameProcessingSettings settings, CancellationToken ct)` - -Implementation owns: `ParticipantTracker`, `NdiDiscoveryService`, dictionary of `IsoPipeline`, the `ConfigStore`, the runtime probe. - -TDD assertions: -- `EnableIsoAsync` creates and starts a pipeline; `DisableIsoAsync` stops and removes it. -- `SetGlobalSettingsAsync` persists via ConfigStore and applies to existing pipelines. -- Discovery events flow through to the participants observable. -- `NdiRuntimeProbe` mismatch surfaces an alert. - -Commit: `feat(controller): add IIsoController and IsoController implementation` - ---- - -## Task 8: Wrap-up & milestone tag - -- Run full test suite, confirm all green. -- Confirm coverage threshold still ≥80%. -- Update `docs/superpowers/plans/_NEXT.md` to describe Phase B-2 (Windows-only). -- Tag `phase-b-1-complete`. - -Commit: `chore: phase-b-1 milestone wrap-up` -Tag: `phase-b-1-complete` - ---- - -## Self-review - -**Spec coverage:** Spec §4 components NdiReceiver, NdiSender, IsoPipeline, IsoController — Tasks 1, 2, 5, 6, 7. Spec §6 error handling restart/backoff — Task 6. Spec §6 NDI runtime mismatch — Task 4 + Task 7. ConfigStore integration in IsoController — Task 7. - -**Phase B-2 (deferred):** Real `NdiInteropPInvoke` shim, real `LibYuvFrameScaler`, console smoke runner, integration tests against NDI Test Pattern source. All require Windows + NDI runtime so they live in their own plan. - -**Type consistency:** All new types reference Phase A types unchanged. `INdiInterop` surface is sufficient — no additions needed. - -No issues to fix. Ready to execute. diff --git a/docs/superpowers/plans/2026-05-07-teamsiso-phase-b-2-ndi-interop.md b/docs/superpowers/plans/2026-05-07-teamsiso-phase-b-2-ndi-interop.md deleted file mode 100644 index 02604da..0000000 --- a/docs/superpowers/plans/2026-05-07-teamsiso-phase-b-2-ndi-interop.md +++ /dev/null @@ -1,30 +0,0 @@ -# TeamsISO Phase B-2 — Real NDI Interop Plan - -**Goal:** Production `INdiInterop` implementation in `TeamsISO.Engine.NdiInterop` against NDI SDK 6, a managed BGRA scaler with aspect modes, an NDI version constant, and a `TeamsISO.Console` headless smoke runner that wires up the engine end-to-end. After this phase the engine can drive real Teams NDI streams once run on a Windows box with the NDI runtime installed. - -**Architecture:** P/Invoke against `Processing.NDI.Lib.x64.dll`. Frame marshalling translates NDI's `video_frame_v2_t` to/from our managed `RawFrame`/`ProcessedFrame`. Receive in BGRA color space (`NDIlib_recv_color_format_e_BGRX_BGRA`) so the scaler doesn't need to handle UYVY in v1.0. Memory management: every captured frame is freed via `NDIlib_recv_free_video_v2` once we've copied its pixels into a managed buffer. - -**Tech Stack:** .NET 8, `System.Runtime.InteropServices`, plain C# scaler (managed BGRA nearest-neighbor; libyuv is a v1.5 perf optimization). The console runner uses the existing `EngineLogging.CreateConsole`. - -**Source spec:** `docs/superpowers/specs/2026-05-07-teamsiso-v1-design.md` - -## Tasks - -1. **NDI native bindings:** `NdiNative.cs` with all `[DllImport]` declarations needed (`initialize`, `destroy`, `find_create_v2/destroy/get_current_sources`, `recv_create_v3/destroy/capture_v3/free_video_v2`, `send_create/destroy/send_video_v2`, `version`). Define `NDIlib_video_frame_v2_t`, `NDIlib_source_t`, `NDIlib_recv_create_v3_t`, `NDIlib_send_create_t` structs with explicit layout. -2. **Handles:** `NdiPInvokeFindHandle`, `NdiPInvokeReceiverHandle`, `NdiPInvokeSenderHandle` deriving from the abstract Phase A handles, owning the unmanaged pointers. -3. **NdiInteropPInvoke:** the production `INdiInterop` implementation. Initializes NDI on construction; destroys on dispose. Marshals between native and managed frame structs. Allocates managed pixel buffers and copies; frees the native frame immediately. -4. **NdiVersion:** a constants class exposing the version string the engine probe compares against. -5. **ManagedNearestNeighborFrameScaler:** managed BGRA scaler with `Pillarbox`, `Letterbox`, `Stretch` aspect modes. Fully unit-tested. -6. **TeamsISO.Console:** a small console host. Constructs `IsoController` against `NdiInteropPInvoke` + `ManagedNearestNeighborFrameScaler`, prints participant updates, listens for `q\n` to quit. Useful for headless validation. -7. **Wire-up tests:** integration scaffold uses `RuntimeInformation.IsOSPlatform(OSPlatform.Windows)` to skip cleanly on non-Windows. Add a smoke integration test that constructs the interop and probes the version. -8. **Wrap-up:** tag `phase-b-2-complete`. - -## What this phase intentionally does NOT include - -- libyuv-backed scaler (deferred to v1.5 per spec — managed scaler is functionally complete). -- Actual integration test suite running against an NDI Test Pattern source. Those tests need the NDI runtime; they're authored here but stay tagged `requires=ndi` and skip in the Linux CI. -- Audio handling (passthrough video only in this phase; audio support added later if v1.0 needs it before ship). - -## Self-review - -Spec coverage: §4 NdiReceiver/NdiSender/IsoController already done in B-1; this phase fills in the actual NDI SDK calls under `INdiInterop`. §6 startup preflight via `NdiVersion` + the existing `NdiRuntimeProbe`. §8 console smoke runner is a Phase B-2 deliverable for first end-to-end Windows validation before WPF. diff --git a/docs/superpowers/plans/2026-05-07-teamsiso-phase-c-wpf-ui.md b/docs/superpowers/plans/2026-05-07-teamsiso-phase-c-wpf-ui.md deleted file mode 100644 index 1dbff3c..0000000 --- a/docs/superpowers/plans/2026-05-07-teamsiso-phase-c-wpf-ui.md +++ /dev/null @@ -1,43 +0,0 @@ -# TeamsISO Phase C — WPF MVVM UI Plan - -**Goal:** Operator-facing WPF UI bound to `IIsoController`. Displays the live participant list, lets operators enable/disable per-participant ISO outputs, set the global framerate / resolution / aspect / audio mode, view engine alerts, and see basic system health. Plus a WiX MSI installer and a release CI pipeline. - -**Architecture:** MVVM with no third-party MVVM framework — small managed `ObservableObject` and `RelayCommand` helpers. The view models bind directly to `IIsoController`'s observables. UI runs on the WPF dispatcher; observable subscriptions marshal back via a captured `SynchronizationContext`. App.xaml.cs constructs the engine on startup and disposes on exit. - -**Tech stack:** WPF on .NET 8, MVVM hand-rolled, no external UI library yet (MaterialDesignThemes can be added in a polish pass). - -## File structure additions - -``` -src/TeamsISO.App/ -├── App.xaml / App.xaml.cs (DI bootstrap) -├── MainWindow.xaml / MainWindow.xaml.cs -├── ViewModels/ -│ ├── ObservableObject.cs -│ ├── RelayCommand.cs -│ ├── MainViewModel.cs -│ ├── ParticipantViewModel.cs -│ ├── GlobalSettingsViewModel.cs -│ └── AlertBannerViewModel.cs -├── Converters/ -│ ├── BoolToVisibilityConverter.cs -│ └── EnumDescriptionConverter.cs -└── TeamsISO.App.csproj - -src/TeamsISO.Installer/ -└── TeamsISO.Installer.wixproj (MSI installer; v5) -``` - -## Tasks - -1. **MVVM helpers** — `ObservableObject` base implementing `INotifyPropertyChanged`; `RelayCommand` and `AsyncRelayCommand`. -2. **GlobalSettingsViewModel** — exposes Framerate, Resolution, Aspect, Audio as bindable selected values; `Apply` command calls `controller.SetGlobalSettingsAsync`. -3. **ParticipantViewModel** — wraps a `Participant`, exposes IsEnabled, CustomOutputName, and current status; `EnableCommand` and `DisableCommand` call the controller. -4. **AlertBannerViewModel** — collects `EngineAlert`s and exposes the most recent one with a "dismiss" command. -5. **MainViewModel** — top-level. Owns the controller. Exposes `ObservableCollection`, the settings VM, and the banner VM. -6. **MainWindow.xaml** — DataGrid for participants with toggle column, settings panel docked to the right, alert banner docked top. -7. **Converters** — bool→visibility, enum→display string. -8. **App.xaml.cs** — wires DI: build engine + controller + main view model, set MainWindow's DataContext, dispose on exit. -9. **WiX installer (Phase C-2)** — separate task; can ship after the UI is alive. - -Each step ships as its own commit. Tag `phase-c-complete` after MainWindow renders and the controller is bound. diff --git a/docs/superpowers/plans/_NEXT.md b/docs/superpowers/plans/_NEXT.md deleted file mode 100644 index 8053f1f..0000000 --- a/docs/superpowers/plans/_NEXT.md +++ /dev/null @@ -1,183 +0,0 @@ -# Plan Backlog - -## Completed phases - -- **Phase A — Engine Foundation** (tag: `phase-a-complete`) — domain model, parsers, participant tracker, frame processor, config, fakes, CI gate. -- **Phase B-1 — Pipeline Orchestration** (tag: `phase-b-1-complete`) — NdiReceiver, NdiSender, ExponentialBackoff, NdiRuntimeProbe, IsoPipeline supervisor, IsoController. -- **Phase B-2 — Real NDI Interop** (tag: `phase-b-2-complete`) — `NdiInteropPInvoke` against NDI 6 SDK, managed BGRA scaler, `TeamsISO.Console` headless smoke runner, `NdiVersion` constants. -- **Phase C — WPF UI** (tag: `phase-c-complete`) — MVVM helpers, ParticipantViewModel, GlobalSettingsViewModel, AlertBannerViewModel, MainViewModel, MainWindow XAML with participants DataGrid + settings sidebar + alert banner, App.xaml DI bootstrap. -- **Hardening + brand pass — May 2026** — see "Done since the May 2026 hand-off" below. -- **Phase D — WiX Installer & Forgejo release** — WiX v5 MSI scaffold, ARP icon wired, tag-push release workflow that builds + uploads MSI as a release asset. - -## Done since the May 2026 hand-off - -### Engine -- Forward-slash project paths in `TeamsISO.sln` so `.slnf` filters work on Windows MSBuild. -- `NdiNativeLibraryResolver` resolves `Processing.NDI.Lib.x64.dll` via `NDI_RUNTIME_DIR_V6` (with V5 / V4 fallbacks), so the engine starts on installs where the NDI dir isn't on PATH. -- `NdiVersion.ExpectedRuntimeVersionPrefix` updated to match the shipping NDI 6 banner format (`NDI SDK WIN64 …`). -- `NdiSourceParser` accepts current Teams desktop's `MS Teams - ` brand format (plus legacy `Teams` and defensive `Microsoft Teams`); reserved suffixes (`Active Speaker`, `Audio`, `Audio Mix`, `Screen Share`) are recognized in both legacy and dash-prefixed forms. -- NDI **groups** end-to-end (discovery + output): `INdiInterop.CreateFinder(string?)` and `CreateSender(string, string?)` populate `p_groups`; `IsoController` threads them through from `EngineConfig.NdiGroups`. -- `ParticipantTracker` surfaces `NdiSourceKind.ActiveSpeaker` as a synthetic routable row named "Active Speaker" with a deterministic v5-GUID Id derived from `auto-mix:`. -- `IsoHealthStats` wired end-to-end: live receiver/sender/processor refs published from the inner pipeline, frame counters / source resolution / running FPS (30-frame moving window) / drops + duplicates / pipeline state surfaced via `IsoController.GetStats`. -- Rolling daily file logging at `%LOCALAPPDATA%\TeamsISO\Logs\` via Serilog.Sinks.File. - -### UI -- WPF rebuilt around Wild Dragon brand × Microsoft Teams flush layout — left rail with real dragon-mark logo (clickable → About dialog), chromeless title bar with custom min/max/close caption controls, cyan accent. -- Inter Variable + JetBrains Mono Variable bundled as `` so typography matches wilddragon.net regardless of system fonts. -- App icon `teamsiso.ico` (7 sizes) on taskbar / window / About / WiX MSI ARP. -- Single-instance enforcement via per-user named Mutex with broadcast bring-to-front. -- Empty-state placeholder when no Teams sources are visible (faded dragon + checklist). -- Live frame counters in the Source / Live columns (in/out/drops, source resolution, running FPS). -- Per-pipeline state surfaced in the ISO toggle: `● LIVE` (cyan), `● ERROR` (coral), `● NO SIGNAL` (amber), `…` (processing). -- "Stop all ISOs" emergency button at the participants header. -- Hide-(Local) toggle so the user's own self-preview is filtered from the participants list. -- Window position / size / state persisted to `%LOCALAPPDATA%\TeamsISO\window.json`, multi-monitor safe. -- Tooltips on every interactive control in the settings panel + per-row textbox + ISO toggle. -- Toast feedback for settings actions (Apply / Apply Transcoder Topology / Stop All / Auto-disable). -- **Auto-disable on participant departure** (configurable, off by default): when a participant's NDI source disappears the engine tears down their pipeline; the toggle lives in `DISPLAY` settings. -- **Operator presets**: chromeless `Presets…` dialog from the participants header. Saves the current per-participant `IsEnabled` + `CustomName` set keyed by display name to `%LOCALAPPDATA%\TeamsISO\presets.json` (atomic write, schema-versioned). Apply walks the live participants and reconciles via `EnableIsoAsync` / `DisableIsoAsync`; participants in the preset who aren't in the current meeting are reported in the toast. -- **Auto-apply last preset on launch**: opt-in checkbox in `DISPLAY` settings. After the operator's first manual Apply, every subsequent TeamsISO launch silently re-applies the same preset once participants populate (30-second grace window before applying with whoever's online). State lives in `presets.json` next to the preset list. -- **Refresh discovery** affordance: header pill that rebuilds the underlying NDI finder on the next poll tick. `IIsoController.RefreshDiscovery` flips a flag the discovery loop honors before the next tick — old finder disposed, new finder created, seen-set cleared so all currently-visible sources re-fire as Added. `ParticipantTracker.HandleAdded` is idempotent: re-emitting the same FullName refreshes LastSeen rather than minting a duplicate row. -- **Settings tabs**: the settings sidebar is now a TabControl with `OUTPUT` / `NETWORK` / `DISPLAY` tabs and a single Apply Changes button below. Underline-on-active tab style lives in `WildDragonTheme.xaml` (`Wd.TabControl` + `Wd.TabItem`). -- **Crash diagnostics**: `App.OnStartup` wires `AppDomain.UnhandledException`, `Application.DispatcherUnhandledException`, and `TaskScheduler.UnobservedTaskException` into a unified Serilog.Critical log line + user-facing dialog that points at the log directory. Dispatcher exceptions are marked `Handled = true` so a single bad UI thunk doesn't take the app down; AppDomain crashes are terminal but at least the user gets the log path before exit. -- **First-launch onboarding**: chromeless welcome dialog walks users through the once-per-machine setup (NDI runtime, Teams admin permission, transcoder topology, presets, log location). Suppressed after dismissal via marker file at `%LOCALAPPDATA%\TeamsISO\onboarding.flag`. Re-openable from the About dialog via "Show welcome" button. -- **Reset output to defaults**: ghost button at the bottom of the OUTPUT settings tab restores framerate / resolution / aspect / audio to `FrameProcessingSettings.Default` after confirmation. Doesn't touch NDI groups (sticky per-machine) or display toggles. -- **Per-output recording**: `IRecorderSink` interface + `RawBgraRecorderSink` implementation. When the operator enables "Record ISOs to disk" in the DISPLAY tab, each newly-enabled ISO writes its normalized output to `//video.bgra` plus a sidecar `manifest.json` (width / height / fps / frame counts) and a `convert.cmd` one-liner that pipes the raw stream into FFmpeg to produce a final H.264 `output.mkv`. Recorder runs on its own bounded queue (240-frame `DropOldest` buffer) so disk pressure never blocks the live ISO; recorder failures are caught and ignored at the channel-write layer for the same reason. Already-running ISOs are not retroactively captured — operator disables + re-enables to start recording. Recording can be wired to a real-time H.264 encoder later via Vortice.MediaFoundation; the `IRecorderSink` interface is designed to swap implementations without touching the pipeline. -- **REST control surface**: `ControlSurfaceServer` — `System.Net.HttpListener` on `127.0.0.1:9755` (configurable). Endpoints for participant ISO toggle (by Id or display name), refresh discovery, stop-all, recording on/off, preset apply, and Teams in-call commands (mute / camera / share / leave / raise-hand). Off by default; toggle in the DISPLAY tab. Bitfocus Companion / Stream Deck plugins / OSC bridges drive it. Documented at `docs/CONTROL-SURFACE.md`. -- **PresetApplier**: extracted from `PresetsDialog.OnApply`. Single source of truth for "apply this preset to live participants" — used by the dialog, by `MainViewModel.TryAutoApplyPendingPreset` (auto-apply on launch), and by the REST `POST /presets/{name}/apply` endpoint. Marshals UI-bound writes (CustomName / IsEnabled) through an optional Dispatcher so off-thread callers don't crash WPF. -- **In-app preview thumbnails**: 160×90 WriteableBitmap per participant, fed from the engine's most recent `ProcessedFrame` at the existing 1Hz stats tick. Inline nearest-neighbor scaler in `ParticipantViewModel.UpdateThumbnail` writes directly into the bitmap's pinned BackBuffer (unsafe block, `true` in the .csproj) for ~10× perf vs. going through Span. Falls back to a `—` placeholder card when no pipeline is running. New "Preview" column in the participants DataGrid. -- **WebSocket live state push**: `ws://127.0.0.1:9755/ws` — clients connect, receive a participants snapshot immediately, and get fresh snapshots within 250ms whenever state changes. Snapshot diffing on JSON string keeps the wire quiet during steady-state. Used by Stream Deck / Companion buttons that want to light up when an ISO goes LIVE without polling. -- **OSC bridge over UDP**: `OscBridge` listens on `127.0.0.1:9000` (TouchOSC's default). Same command vocabulary as the REST endpoints — `/teamsiso/iso "Jane" 1`, `/teamsiso/preset "Friday Show"`, `/teamsiso/teams/mute`, etc. Minimal OSC 1.0 parser (int / float / string / T / F type tags; no bundles). TouchOSC layouts and Companion's Generic OSC surface can both drive it directly. -- **Manual update check**: "Check for updates" button in the About dialog. Asks `forge.wilddragon.net/api/v1/repos/zgaetano/teamsiso/releases?limit=1`, compares the newest tag's SemVer to the running version, prompts to open the releases page if newer. Manual only — no background polling for v1 so a long-running show doesn't get interrupted by a surprise installer. -- **Auto-update banner on launch**: opt-in (default on) silent check throttled to once per 24h via `%LOCALAPPDATA%\TeamsISO\last-update-check.txt`. When a newer release is found, a non-modal banner appears above the body with "Get update" / "Dismiss" buttons. Suppression via flag file at `no-update-check.flag` for fleets that prefer central rollout. New `UpdateBannerViewModel` distinct from the engine alert banner. -- **Preset import / export**: Export / Import buttons in the Presets dialog footer, backed by `OperatorPresetStore.ExportAllAsJson` / `ImportBundle`. Bundle format is `teamsiso-presets-bundle/v1` JSON. On name collision the importer asks once (Overwrite/Keep/Cancel) rather than per-preset; deliberately doesn't include the operator's `LastAppliedName` / `AutoApplyOnStartup` since those are machine-local. -- **Recording markers**: `IRecorderSink.AddMarker(label)` plus `IIsoController.AddRecordingMarker(label)` fan-out to every active recorder. Surfaced via "Marker" button in the IN-CALL bar (auto-labels with timestamp), `POST /recording/marker` in the REST surface, and `/teamsiso/recording/marker "Label"` in OSC. Markers land in `manifest.json` under `markers[]` with `offsetMs` + `label` fields for post-production chaptering. -- **Custom NDI output name template**: `OutputNameTemplate` static helper persisted to `output-name-template.txt` with `{name}` / `{guid}` / `{machine}` / `{timestamp}` tokens. Default `TEAMSISO_{guid}` preserves the engine's hard-coded behavior; operator can switch to `TEAMSISO_{name}` for human-readable downstream switcher names. UI editor in the NETWORK settings tab. -- **Enriched footer status bar**: rec badge (coral dot + count) when at least one ISO is being recorded; control-surface badge (cyan dot + "REST :9755 + OSC :9000") when those services are running. Computed at the existing 1Hz stats tick from `IIsoController.RecordingEnabled` × running pipeline count and `App.ControlSurface.IsRunning` / `App.OscBridge.IsRunning`. -- **Disk space watcher**: `DiskSpaceWatcher` polls the recording drive every 5s while recording is on. Coral toast at <10GB free; auto-disables recording at <1GB so an unattended long show doesn't crash the host on disk-full. -- **Diagnostic bundle export**: "Export diagnostics" button in About zips logs + config + presets + window state + version metadata into a `teamsiso-diagnostics-.zip` in `~/Downloads`. Excludes screenshots / memory dumps; only files the user already wrote. -- **Per-participant recording opt-out**: new `Rec` column in the DataGrid lets the operator choose which ISOs get recorded when global recording is on. `IIsoController.EnableIsoAsync` gained an optional `bool? recordOverride` parameter — null = follow global flag, true = force on, false = force off. -- **Window-scoped keyboard shortcuts**: F1 (help), Ctrl+M (drop marker), Ctrl+Shift+S (stop all), Ctrl+R (refresh discovery). InputBindings on MainWindow → MainViewModel commands; F1 opens the new `HelpWindow` cheat sheet. -- **Help cheat sheet**: chromeless `HelpWindow` lists keyboard shortcuts, file locations (`%LOCALAPPDATA%\TeamsISO\Logs\`, `%APPDATA%\TeamsISO\config.json`, etc.), and links to the public docs. Reduces support friction. -- **Bulk enable**: header `Enable all` button (green dot) enables ISOs for every online + non-enabled participant. Per-participant best-effort with a count toast. -- **Live participant filter**: textbox above the DataGrid filters by display-name substring as you type. Backed by an `ICollectionView` Filter callback so the underlying `ObservableCollection` isn't mutated (preserving identity-tracking). -- **Right-click context menu** on participant rows: Toggle ISO, toggle Record-this-participant, Copy NDI source name to clipboard. Uses the existing per-row commands so the menu is just another binding surface. -- **CLI: `--apply-preset NAME`**: launch-time flag that auto-applies the named preset once participants populate. Same code path as the persisted auto-apply preference. Useful for `Friday Show.lnk` desktop shortcuts that drive recurring routings. -- **Dynamic status text**: footer's center text now reads "3/5 ISOs live · 2 recording" once routing starts, instead of the static "Engine running at X fps target." Composed in `OnStatsTick` from running participant + recording counts. -- **Embedded HTML control panel** at `GET /ui`: self-contained ~6KB page with WebSocket-driven live state and buttons for the common control actions. Open in a phone or second-monitor browser to drive TeamsISO without context-switching from the show. No external dependencies, no build step. -- **Session timer** in footer: shows `MM:SS` (or `HH:MM:SS` past an hour) elapsed since the first ISO went live this session. Resets when all ISOs go offline. Green dot indicator for at-a-glance status. -- **Show notes service**: `POST /notes` and `/teamsiso/notes "..."` (OSC) append timestamped lines to `%LOCALAPPDATA%\TeamsISO\Notes\.md`. Operators wire a Stream Deck button to drop notes during a live show without leaving the production app. Markdown format renders cleanly in any editor. -- **NotesWindow inline viewer**: chromeless dialog that displays today's notes file with 2s polling so REST/OSC-driven appends surface live. "Notes" button in the IN-CALL bar. -- **Duplicate-preset action**: "Duplicate" footer button in the Presets dialog. Custom inline prompt suggests ` (copy)` / `(copy 2)` / etc. names. -- **CHANGELOG.md**: project-wide changelog following keep-a-changelog format. Captures the full May 2026 batch under `[Unreleased]`. -- **README rewrite**: top-level README now lists what TeamsISO does, build instructions, doc links, keyboard shortcuts table, file-locations table. -- **Confirm-before-Stop-All**: stop-all button now requires Yes confirmation, preventing accidental mid-show clicks. Default-No so Enter cancels. - -### Networking automation -- One-click **transcoder topology** button in Settings: writes `%APPDATA%\NDI\ndi-config.v1.json` so all local senders broadcast on `teamsiso-input` and local receivers see both `public` + `teamsiso-input`. Engine settings auto-flip to receive-from `teamsiso-input` and emit-on `public`. Atomic write with timestamped backup of the prior config. - -### Phase E — embedded Teams orchestration -Spec at `docs/superpowers/specs/2026-05-08-embedded-teams-orchestration.md`. All three sub-phases shipped in May 2026: -- **E.1 — Launcher.** Rail "Launch / Stop Teams" toggle: launches via `ms-teams:` URI → `ms-teams.exe` → classic `Update.exe --processStart`, asks to confirm `WM_CLOSE` of all running Teams windows when toggled while Teams is up. -- **E.2 — Window orchestration.** Rail eye-icon button hides every visible top-level Teams window via `EnumWindows` + `ShowWindow(SW_HIDE)`. Click again to restore + foreground. Lets the operator drive Teams from TeamsISO without ever seeing the Teams UI. -- **E.3 — In-call controls.** UIAutomation-driven Mute / Camera / Share / Leave buttons in a new `IN-CALL` card at the top of the participants area. `TeamsControlBridge` walks Teams' automation tree by candidate Name list (`Mute`, `Unmute`, `Microphone`, `Toggle mute` …) and tries Invoke or Toggle pattern. Tolerant lookup: when a Teams update renames a button we extend the candidate list, no crash. Toasts reflect the four outcomes (Invoked / TeamsNotRunning / ControlNotFound / InvokeFailed). Bridge also exposes (UI-not-yet-wired) `ToggleRaiseHand`, `ToggleChat`, `OpenBackgroundEffects`. Candidate name lists localized for English/German/Spanish/French/Portuguese/Japanese — all locales matched in a single pass; the first match wins. -- **PostMessage shortcut forwarding fallback.** `TeamsLauncher.SendShortcut(modifiers, vk)` posts WM_KEYDOWN/UP to the most-recently-used hidden Teams HWND. Best-effort — modern WebView2-hosted Teams sometimes ignores synthesized key messages at the app-shortcut layer; UIA is preferred when a button exists for the action. - -### Diagnostics -- `TeamsISO.Console --list-sources` enumerates raw NDI source names visible to the local finder for ~5 seconds; debugging tool for setup issues. -- `TeamsISO.Console --version` prints engine version + build SHA + .NET + OS + NDI runtime banner + exit-code legend, for support tickets. -- About dialog inside the WPF host with the same info. - -### CI / Release / Docs -- Forgejo CI is green: `actions/upload-artifact@v3` (Forgejo doesn't support v4 yet). -- `.forgejo/workflows/release.yml`: tag-push (`v*.*.*`) builds + tests + publishes + builds the MSI on a Windows runner and attaches it to the auto-created Forgejo release via the REST API. -- **Optional code-signing** wired into `release.yml`: when `SIGN_CERT_PFX_BASE64` + `SIGN_CERT_PASSWORD` Forgejo secrets are set, the workflow signs both `TeamsISO.exe` (before MSI build) and the MSI (after) with SHA-256 + RFC 3161 timestamp. Skipped silently when the cert isn't configured. `docs/RELEASING.md` documents the OV vs EV trade-offs and the Azure Trusted Signing migration path. - -### Tests -- 78 unit tests passing; 9 NDI integration tests gated behind `--filter requires=ndi` (runtime probe, finder + sender lifecycle on default and custom groups, loopback discovery, full pipeline frame round-trip asserting 1080p normalization). - -## Done since May 10 hand-off - -### Engine -- **Audio peak metering wired end-to-end.** `IsoHealthStats.PeakAudioLevel` - now reports real values from a sibling NDI audio capture loop in - `NdiReceiver`. New `INdiInterop.CaptureAudioPeak` method (default- - implemented for FakeNdiInterop, overridden in NdiInteropPInvoke). - `AudioPeakComputer` handles FLTP / FLT / PCM s16 with 14 unit tests - covering edge cases. UI VU bars in the participants DataGrid now - animate; the existing decay logic in `ParticipantViewModel` was - already in place waiting for real values. - -### Control surface -- **LAN-reachable mode.** New checkbox in DISPLAY tab toggles whether the - REST/WebSocket surface and OSC bridge bind to `127.0.0.1` only or to all - interfaces (`http://+:port/`, `IPAddress.Any`). Settings panel surfaces - the routable URL with a Copy button (picker prefers physical NICs and - skips Tailscale / VPN tunnels / APIPA addresses). Use case: headless - host PC + thin client on the same LAN — operator runs Teams + TeamsISO - on a quiet machine, drives it from anywhere on the production network. - No auth — documented as a trusted-LAN-only mode. First-time bind - requires a one-shot `netsh http add urlacl`; the diagnostic warning - fires the exact remediation command if the bind fails. - -### "I only see TeamsISO" — Phase E.1+E.2 follow-ups -- **Launch + auto-hide Teams** preferences in DISPLAY tab. Teams runs in the - background; window appears briefly then hides automatically; operator - drives everything from the IN-CALL bar + participants DataGrid. -- **Quick-join from URL** in the IN-CALL bar. Paste a Teams meeting link, - click Join, Teams launches into the meeting. Eliminates the open-Teams - → Calendar → find → click join dance. -- **Teams meeting state pill** — `IN CALL · ` / `READY` / - empty. UIA probe at 1Hz for the Leave button; meeting title from - Teams' window title with the brand suffix stripped. -- **Launch Teams click semantics** — left-click = launch / surface / restore; - right-click = stop. Was previously ambushing operators with a stop-Teams - dialog when Teams was hidden via the eye-toggle. -- **Auto-record on meeting start** preference. Recording auto-flips ON when - Teams transitions into a call (UIA Leave button appears) and OFF when - the call ends — completes the unattended-show story. -- **MUTED / CAM OFF pills** in the IN-CALL bar via UIA — local-user state - visible at a glance without restoring Teams. -- **Phase E.4 (experimental) — Teams window embedding via SetParent.** - Reparents Teams' main window into a TeamsISO-owned host so Teams appears - visually INSIDE TeamsISO. WebView2 in modern Teams may render glitches - after reparent; if so operator unticks and falls back to auto-hide mode. - Live in `TeamsEmbedWindow` + `TeamsLauncher.EmbedTeamsInto` / `RestoreEmbed`. -- **Loudest sort mode** + **active speaker row highlight** (3px cyan left - border) — operators react to who's talking without scanning every VU bar. -- **NumPad 1-9 hotkeys** toggle Nth visible participant's ISO. Generic - `RelayCommand` added so XAML CommandParameter strings convert cleanly. -- **Snapshot frame to PNG** (per-participant via right-click + bulk header - action). Saves under `%USERPROFILE%\Pictures\TeamsISO\`. -- **Recording drive free space** in the footer (`· 245 GB free`). Coral - tint below 10GB; existing DiskSpaceWatcher still auto-disables at 1GB. -- **Recording elapsed duration** in the footer next to the count - (`REC 3 · 12:45`). -- **Quick-join meeting URL** + **IN-CALL pill with meeting title** for the - headless workflow — paste link, click Join, see what meeting you're in. - -### UI polish -- Visible hover affordances on every themed button (Ghost / Caption / - RailIcon / IsoToggle / Primary). Cyan accent borders + brighter fills - so mouse-hover and tab-focus give an unmistakable affordance regardless - of which dark surface the button sits on. -- Keyboard focus rings (`IsKeyboardFocused` triggers) so tab-cycling - through the UI gives visual feedback (was nothing — `FocusVisualStyle` - was `x:Null` with no replacement). -- ScrollBar restyled to slim transparent track + tinted thumb (Edge / VS - Code pattern) in place of the chunky Win9x default. -- ContextMenu / MenuItem styled to match the dark canvas — right-click on - a participant row no longer shows the cream-colored Notepad popup. -- ToolTip restyled: SurfaceElevated card with rounded corner + 320px - text wrap, replacing the cream Win98 popup. -- Wd.Button.Primary disabled state distinct (was identical to enabled). - -## Next - -1. **Smoke-test on real Teams.** Most of May's work hasn't run against a live meeting yet: the UIA in-call commands (mute / camera / share / leave) need their candidate-Name lists validated against the current Teams build, and the auto-apply-on-launch flow needs a real recurring meeting to confirm the 30-second grace window is right. Pin the AutomationIds for buttons we find — Name-based lookup is a starting point, AutomationId is what survives Teams UI updates. Now also includes: validate the audio peak metering against real Teams audio (check that FLTP decoding is correct for whatever sample rate Teams is broadcasting; the `--filter requires=ndi` integration tests don't exercise audio). - -2. **Acquire a code-signing cert.** Pipeline is wired (see "CI / Release / Docs" above); just needs `SIGN_CERT_PFX_BASE64` + `SIGN_CERT_PASSWORD` set in Forgejo Secrets. OV cert (~$200/yr) gets us signed but SmartScreen builds reputation slowly; EV cert (~$300/yr, hardware token) is SmartScreen-trusted immediately. Azure Trusted Signing is the cloud-native path if a token-on-runner is fiddly. - -3. **Port MediaFoundationRecorderSink to Vortice 3.6.2 API.** NuGet package added but the May 9 scaffold targeted an older Vortice API. Port pass needed before `MF_AVAILABLE` can be defined; see `docs/REAL-TIME-RECORDING.md` "Status — May 2026" section for the specific API gaps (MFVersion / MF_LOW_LATENCY / IMFMediaType setters / IMFMediaBuffer.Lock signature / IMFSinkWriter.Finalize_ rename). Once ported, gives ~10× recording disk-pressure reduction. - -4. **Forward Teams keyboard shortcuts via SendInput.** Phase E.2 hides the Teams window but doesn't forward Ctrl+Shift+M / Ctrl+Shift+O / Ctrl+Shift+H to it. UIA covers mute/camera/share/leave/raise-hand/chat/background already; SendInput would let us pass arbitrary global hotkeys through to a hidden Teams for actions UIA can't reach. Lower priority now that UIA covers the core actions. diff --git a/docs/superpowers/specs/2026-05-07-teamsiso-v1-design.md b/docs/superpowers/specs/2026-05-07-teamsiso-v1-design.md deleted file mode 100644 index 89f55e1..0000000 --- a/docs/superpowers/specs/2026-05-07-teamsiso-v1-design.md +++ /dev/null @@ -1,213 +0,0 @@ -# TeamsISO v1.0 — Implementation Spec - -**Status:** Draft, ready for plan-writing -**Date:** 2026-05-07 -**Owner:** Zac Gaetano (Wild Dragon LLC) -**Source design doc:** `TeamsISO Design Document.docx` v0.1 DRAFT (May 2026) - -This spec turns the source design document into an implementable plan for the v1.0 release. The product vision, problem statement, and feature matrix in the source document remain authoritative; this spec adds the architectural and operational decisions needed to start building. - -## 1. Scope - -v1.0 ships the feature set in §6 of the source document, exactly as written: - -- NDI participant discovery (auto) -- Per-participant ISO NDI output -- Global framerate lock (23.976 / 24 / 25 / 29.97 / 30 / 50 / 59.94 / 60 fps) -- Global resolution normalize (720p / 1080p / 4K) -- Custom output stream naming -- Isolated audio per ISO with mixed-audio fallback -- Screen share as ISO output - -Deferred to v1.5: per-stream framerate override, thumbnail previews, GPU-accelerated scaling. -Deferred to v2.0: multi-machine cluster coordination, OSC/WebSocket control API. - -Out of scope for v1.0: automatic peer discovery between TeamsISO instances, audio resampling, code signing of the installer. - -## 2. Architecture - -**Pattern:** engine/UI separation from day one. The NDI engine is a class library with no UI dependency; the WPF app is a thin host that binds to the engine through a typed C# API. v2.0's control APIs and multi-machine coordinator drop in cleanly because the boundary already exists. - -**Solution layout:** - -- `TeamsISO.Engine` — class library. Discovery, receive, frame processing, send, configuration, logging abstraction. Exposes `IIsoController` and observable streams. Owns all threading. -- `TeamsISO.Engine.NdiInterop` — internal P/Invoke shim for `NDIlib_*` and libyuv. Kept separate so the rest of the engine speaks managed types and unit tests can fake the interop surface. -- `TeamsISO.App` — WPF + MVVM host. Instantiates the engine, binds view models to engine observables, persists window layout. Zero NDI knowledge. -- `TeamsISO.Engine.Tests` — xUnit unit tests against `FakeNdiInterop`. Pure managed. -- `TeamsISO.Engine.IntegrationTests` — xUnit integration tests against the real NDI runtime. Tagged `[Trait("requires", "ndi")]`. -- `TeamsISO.Installer` — WiX v5 project producing the MSI. - -**Engine ↔ App contract:** `IIsoController` exposes `IObservable>`, `IObservable` per output, `IObservable`, and async command methods (`EnableIsoAsync`, `SetTargetFramerate`, `SetCustomName`, `SetGlobalSettings`, etc.). All commands are cancellable. - -## 3. Domain model - -Defined in `TeamsISO.Engine.Domain`. All types are immutable records unless noted. - -- **`NdiSource`** — raw discovery record. `string FullName`, parsed `MachineName`, `Kind` (`Participant | ActiveSpeaker | Audio | ScreenShare`), `DisplayName` (null for non-participant kinds). -- **`Participant`** — operator-facing identity. `Guid Id` (engine-assigned, stable across rename heuristic), `string DisplayName` (last seen), `NdiSource? CurrentSource`, `DateTimeOffset FirstSeen / LastSeen`. Mutable via the engine; observable. -- **`IsoAssignment`** — operator's intent. `Guid ParticipantId`, `bool IsEnabled`, `string? CustomOutputName`. Persisted to `config.json`. Reserves room for v1.5 per-stream overrides. -- **`IsoOutput`** — runtime state. `Guid ParticipantId`, `string EffectiveOutputName`, `IsoHealthStats Stats`, `IsoState State` (`Idle | Receiving | Sending | NoSignal | Error`). -- **`FrameProcessingSettings`** — `TargetFramerate`, `TargetResolution`, `AspectMode` (`Pillarbox | Letterbox | Stretch`), `AudioMode` (`Isolated | Mixed | Auto`). -- **`IsoHealthStats`** — `FramesIn`, `FramesOut`, `FramesDropped`, `FramesDuplicated`, `LastFrameAt`, `IncomingFps`, `IncomingResolution`. -- **`EngineConfig`** — root persisted record: `FrameProcessingSettings Global`, `IReadOnlyList Assignments`. Stored at `%APPDATA%\TeamsISO\config.json`. -- **`EngineAlert`** — discriminated union: `NdiRuntimeMismatch | OutputNameCollision | PipelineError | ConfigSaveFailed`. - -**Participant identity across rename / disconnect.** Teams source strings change when a participant renames. Engine policy: if a source disappears and within 5 seconds a new participant source with the same `MachineName` appears, the engine transfers the existing `Participant.Id` (and any `IsoAssignment` bound to it) to the new source. The UI shows a brief rename toast. Operators can opt out per-meeting in settings. - -## 4. Components - -Eight subsystems inside `TeamsISO.Engine`. Each has one responsibility. - -**`NdiDiscoveryService`** — owns one `NDIlib_find_create_v2` instance on a long-running background thread. Polls every ~500 ms, diffs the source list, classifies each source, pushes `DiscoveryEvent` (`Added | Removed | Renamed`) onto a `Channel`. - -**`ParticipantTracker`** — consumes `DiscoveryEvent`s, applies the rename heuristic, maintains the canonical `IObservable>`. Stateful, pure-managed, unit-testable without NDI. - -**`IsoPipeline`** — per-ISO unit. Owns one receiver, one frame processor, one sender, all health stats. Lifecycle methods `Start`, `Stop`. Created by `IsoPipelineFactory` when the operator enables an ISO. - -**`NdiReceiver`** — wraps `NDIlib_recv_create_v3`. Dedicated thread loops on `NDIlib_recv_capture_v3`. Pushes captured frames into a bounded `Channel` (capacity 4, drop-oldest under backpressure). Records dropped-frame count. - -**`FrameProcessor`** — driven by `PeriodicTimer` at the target framerate. At each tick: read newest frame from the channel non-blocking; if available, scale via libyuv to target resolution + aspect mode, recalculate timecodes, hand to sender; if unavailable, re-emit `lastFrame`; if `lastFrame` is older than 2.5 s, emit a no-signal slate (`SolidFrameRenderer`, mid-grey). - -**`NdiSender`** — wraps `NDIlib_send_create`. Dedicated thread sends video on its tick and audio passthrough on its own queue. Audio mode `Auto` probes for isolated audio at startup and falls back to mixed if unavailable. - -**`IsoController`** — top of engine. Holds the pipeline dictionary, the `ParticipantTracker`, the `ConfigStore`. Exposes the `IIsoController` API. Translates "operator enabled this participant" into pipeline creation and start. - -**`ConfigStore`** — load/save `EngineConfig` to `%APPDATA%\TeamsISO\config.json`. Atomic writes via temp file + rename. - -**Logging:** Serilog file sink at `%APPDATA%\TeamsISO\logs\teamsiso-{Date}.log`, 14-day retention, structured. Engine code logs through `ILogger` from `Microsoft.Extensions.Logging`. - -## 5. Data flow and threading - -Per ISO: - -``` -NDI source on LAN - │ - ▼ -[Capture thread] (1 dedicated thread) - NDIlib_recv_capture_v3, blocking loop - │ - ▼ Channel (capacity 4, drop-oldest) - │ -[Processor tick] (PeriodicTimer on ThreadPool, target framerate) - pick newest frame → libyuv scale/aspect → retimecode - │ - ▼ ProcessedFrame - │ -[Send thread] (1 dedicated thread) - NDIlib_send_send_video_v2 + audio - │ - ▼ -ISO output on LAN -``` - -System-wide threads at 3 active ISOs: 3 capture + 3 send (dedicated, blocking-friendly), 1 discovery, 1 participant-tracker async loop on ThreadPool, 1 UI dispatcher, processor work on ThreadPool. Approximately 9 dedicated threads plus ThreadPool work — within budget for the recommended hardware. - -**Why dedicated threads for capture and send:** NDI capture and send calls block. Mixing them onto the .NET ThreadPool risks starving worker threads. Processing is short-lived per frame and fits the ThreadPool model. - -**Frame timing strategy (closest-frame):** simple, deterministic, works across all supported framerates without interpolation. Frame duplication = re-send `lastFrame`. After 2.5 s of no incoming frames, slate. - -**Audio:** v1.0 forwards audio passthrough on its own NDI queue, no resampling. Isolated audio is forwarded as-is when available; mixed audio is forwarded on the active-speaker stream only as fallback. - -**Cancellation:** every loop respects a per-ISO `CancellationToken`. Stopping an ISO triggers cancellation, joins capture and send threads (1 s timeout), disposes NDI handles. - -## 6. Error handling and recovery - -**Pipeline isolation.** Each `IsoPipeline` runs independently. One pipeline failing never affects others. - -**Per-pipeline failure recovery.** Unhandled exception → pipeline transitions to `Error`, releases NDI handles, logs with full context, auto-restarts after 1 s. Exponential backoff: 1, 2, 4, 8, 16 s, capped at 30 s. After 5 consecutive failures, stays `Error` and waits for operator action. Participant remains visible in the UI list so the operator can re-enable manually. - -**Source disconnect (expected, not error).** Pipeline transitions to `NoSignal` after 2.5 s, keeps the assignment bound, keeps emitting the slate. If the source returns within 60 s, reconnects automatically. After 60 s the pipeline stops the sender to free NDI bandwidth; reconnects when the source reappears. - -**NDI runtime version mismatch.** Detected at startup by `NdiRuntimeProbe`. Surfaces `EngineAlert.NdiRuntimeMismatch`. UI shows a banner with instructions to re-download Teams' NDI binaries (per source doc §7.2). Engine still attempts to run — it's a warning, not a hard fail. - -**Output name collision on the LAN.** Logged and surfaced as `EngineAlert.OutputNameCollision`. v1.0 does not auto-rename; the operator picks unique names. - -**Startup preflight.** Run before the UI accepts commands: - -- NDI runtime present and queryable -- Smoke test: create + destroy one `NDIlib_send_create` instance -- Config file readable; corrupt or missing → fall back to defaults and log -- libyuv DLL loadable -- Write access to `%APPDATA%\TeamsISO\` - -A failing preflight surfaces a single error dialog with a copyable diagnostic string; the app does not enter the main UI. - -**Engine alert channel.** `IObservable` exposes structured alerts to the UI for banner display and to the log for ops. - -## 7. Testing - -**Three layers, three test projects.** - -**Unit (`TeamsISO.Engine.Tests`)** — pure managed, no NDI runtime, fast (<1 s). Covers: - -- `ParticipantTracker` rename heuristic (synthetic event streams). -- `FrameProcessor` timing logic against fake clock and fake interop. Asserts: 30 fps target / 24 fps incoming yields 30 frames/s with appropriate duplication; 60 fps target / 30 fps incoming doubles each frame; 2.5 s of silence triggers slate. -- `IsoPipeline` lifecycle (start → run → stop → restart on simulated fault, with backoff schedule asserted). -- `ConfigStore` round-trip (missing → defaults; save → reload identical; corrupt JSON → defaults + log). -- `NdiSourceParser` against a corpus of real Teams source strings (participant, active speaker, audio, screen share, multi-word names with parens, unicode). - -**Integration (`TeamsISO.Engine.IntegrationTests`)** — Windows-only, real NDI runtime. Tagged `[Trait("requires", "ndi")]`. - -- Spin up a NewTek NDI Test Pattern source as a synthetic participant; route through `IsoPipeline`; receive on a second NDI receiver; assert output stream existence, naming, framerate (measured over 5 s), resolution. -- Source disappear / reappear: stop the test pattern source mid-stream, assert pipeline transitions through `NoSignal`, restart the source, assert pipeline resumes. -- Output name collision: spin two pipelines with the same name, assert `EngineAlert.OutputNameCollision`. - -**Manual / live test playbook (`docs/test-playbook.md`)** — checklist for verifying against real Teams meetings before each release. - -**TDD discipline.** Every behavior in the engine starts as a failing unit test against fakes. NDI interop has an `INdiInterop` interface; production wires `NdiInteropPInvoke`, tests wire `FakeNdiInterop`. - -**Coverage target.** 80% line coverage on `TeamsISO.Engine`, excluding the P/Invoke shim. Enforced in CI. - -## 8. Build, packaging, distribution - -**Source repo.** `forge.wilddragon.net/zgaetano/teamsiso`. Default branch `main`. Trunk-based with feature branches; PR review for engine-touching changes. - -**Build.** MSBuild via `dotnet build` and `dotnet publish`. Solution targets `net8.0-windows` with `TargetPlatformVersion=10.0.19041.0`. `TeamsISO.App` publishes self-contained, single-file, ReadyToRun: - -``` -dotnet publish -c Release -r win-x64 --self-contained -p:PublishSingleFile=true -p:PublishReadyToRun=true -``` - -**CI.** Forgejo Actions (GitHub-Actions-compatible). Two pipelines: - -- `ci.yml` — every push and PR. Builds, runs unit tests, enforces coverage threshold, lints (treat-warnings-as-errors). Linux runner. Integration tests skip cleanly because `requires=ndi` is absent. -- `release.yml` — on tag push (`v*`). Windows runner with NDI runtime preinstalled. Builds release, runs unit + integration, builds WiX installer, attaches `.msi` to a Forgejo release. - -**Versioning.** SemVer in `Directory.Build.props`. Flows to assembly metadata and installer. Tag `v1.0.0` triggers the release pipeline. - -**Installer (WiX v5).** Produces `TeamsISO-x.y.z.msi`. Behavior: - -- Detects NDI runtime via registry probe; if absent or older, prompts the operator to download from `ndi.video/tools/`. The runtime is not bundled — NDI's redistribution license requires user consent. -- Installs to `%ProgramFiles%\TeamsISO\`. -- Creates Start Menu shortcut, optional desktop shortcut. -- `%APPDATA%\TeamsISO\` is created on first run, not at install (per-user data, per-machine MSI). -- Adds Add/Remove Programs entry. - -**NDI redistribution.** Per NDI SDK License v5 the runtime is not bundled. Detection is by registry key. Mismatches show a dialog with the official download link. Captured open task: legal review of NDI SDK License v5 before public v1.0 release. - -**Distribution.** v1.0 ships as MSI from Forgejo releases. No auto-update in v1.0. The About dialog shows the current version and links to the Forgejo releases page. - -## 9. Open tasks blocking v1.0 release - -- Legal review of NDI SDK License v5 (per source doc §7.3) — required before public release; not required for development. -- Confirmation that the Microsoft Teams tenant has the admin policy enabling NDI broadcast (the relevant Teams meeting-policy setting; current name varies by Teams admin center version — verified against the live tenant during development). -- Selection of code-signing approach for v1.0 vs. v1.5 (currently deferred). - -## 10. Out of scope for v1.0 (deferred) - -- Per-stream framerate override (v1.5) -- Thumbnail previews (v1.5) -- GPU-accelerated frame scaling (v1.5) -- Multi-machine cluster auto-coordination (v2.0) -- OSC / WebSocket control API (v2.0) -- Code signing of the installer -- Auto-update -- Audio resampling - -## 11. Glossary - -- **NDI** — Network Device Interface (Vizrt/NewTek). LAN video transport protocol used by Teams' broadcast mode. -- **ISO** — In live production, an "isolated" feed of a single source, separate from the program mix. ZoomISO and TeamsISO produce per-participant ISO feeds. -- **Active speaker** — Teams' auto-mixed feed that follows whoever is talking. A separate NDI source from individual participant streams. -- **Slate** — a static frame (typically a solid color or "no signal" graphic) emitted when the source has stopped delivering frames. diff --git a/docs/superpowers/specs/2026-05-08-embedded-teams-orchestration.md b/docs/superpowers/specs/2026-05-08-embedded-teams-orchestration.md deleted file mode 100644 index 9fa9635..0000000 --- a/docs/superpowers/specs/2026-05-08-embedded-teams-orchestration.md +++ /dev/null @@ -1,106 +0,0 @@ -# Spec: Embedded Teams meeting orchestration - -**Status:** Draft. Authored 2026-05-08. - -## Problem - -Operators currently run two apps side by side: Microsoft Teams (which broadcasts -NDI from its meetings) and TeamsISO (which consumes those NDI sources, normalizes -them, and re-emits clean ISOs). Two issues fall out: - -1. **Two interfaces, one workflow.** Switching between Teams to drive the meeting - and TeamsISO to drive ISO routing is friction during a live show. -2. **Teams' raw NDI bleeds into the production network.** Even with - TeamsISO running, Teams broadcasts its at-source-resolution / at-source-framerate - feeds on the same `Public` NDI group that switchers and recorders subscribe to. - Operators see "garbage" NDI sources alongside the clean TeamsISO outputs unless - they manually configure NDI groups (which most don't). - -The user's stated north star: **let me host the meeting from inside TeamsISO. Run -Teams in the background. Show me one interface; expose only the proper outputs.** - -## Constraints - -- Microsoft Teams' NDI broadcast feature is desktop-only — the web client does not - broadcast NDI. We cannot replace Teams with a WebView2 view of `teams.microsoft.com`. -- We do not have a native Teams SDK. The Microsoft Graph API exposes some meeting - control (create/join/end), but in-call operations (mute, share, react) are largely - out of scope or behind enterprise tenant configuration. -- Win32 window embedding (`SetParent`) of a foreign process's window is technically - possible but produces a fragile UX — Teams will break out, render incorrectly, or - fail to honor parent-window inputs. -- NDI group routing is the standard primitive for hiding noisy producers. We - shipped this in commit `909237f`. It works. - -## Architecture - -A three-phase rollout. Each phase is shippable on its own. - -### Phase E.1 — Teams launcher (launches Teams as a subprocess) - -The minimum viable embed. TeamsISO grows a "Launch Teams" affordance on the rail. -Clicking it: - -1. Reads the global `NdiGroupSettings.DiscoveryGroups` from `EngineConfig`. If - empty, defaults to `teamsiso-input`. -2. Opens **NDI Access Manager** (or programmatically writes its config) so Teams - broadcasts on `teamsiso-input` rather than `Public`. -3. Launches `ms-teams:` URI (or the `MSTeams.exe` directly for the new client) in - the background. -4. Marks Teams as "owned by TeamsISO" — the rail icon flips to "Stop Teams"; on - click, sends WM_CLOSE to the Teams main window. -5. Surfaces meeting health in the existing engine-status pill (e.g. "Teams running - • 2 participants"). - -Implementation effort: **a few hours.** Pure WPF + ProcessStartInfo + a small -NdiAccessManagerHelper that reads/writes Teams' config. - -### Phase E.2 — Window orchestration - -Teams' main window is repositioned + minimized when launched, so the user's -foreground experience is the TeamsISO window. Optional: - -- Pin Teams to a hidden virtual desktop with `IVirtualDesktopManager`. -- Forward keyboard shortcuts (mute, camera, share) from TeamsISO into Teams via - `SendInput` while Teams' window is hidden. - -Implementation effort: **a day.** Mostly Win32 plumbing. - -### Phase E.3 — Meeting controls in TeamsISO's UI - -A "Meeting" panel in the left rail that shows the active call's participant list -(with their mute / video state) and exposes Join/Leave/Mute/Share controls. Two -ways to plumb this: - -- **Microsoft Graph API for the chrome.** Auth as the user via OAuth (interactive - device-code flow), poll `/me/onlineMeetings` for active meetings, render in - TeamsISO's UI. In-call mute/cam state is not exposed via Graph as of writing — - Phase E.3 would surface participant *presence* but not mic/cam controls. -- **Teams' UI Automation tree.** Walk Teams' window with `UIAutomation` to read - call state. Brittle but usable; what other "Teams remote" tools do. - -Implementation effort: **a week per route.** Recommend Graph for read paths, -UIAutomation for write paths. - -## Out of scope (for now) - -- Hosting the actual meeting media stack (audio/video render, mixer, network). - Teams owns this and we don't want to. -- Replacing Teams entirely with our own SIP/WebRTC stack. That's a different - product. - -## Decision required - -User to confirm: - -1. Phase E.1 first (just launcher + group routing). Yes/no. -2. Whether to use `ms-teams:` URI launch or the new MSTeams.exe binary path - (`%LOCALAPPDATA%\Microsoft\WindowsApps\ms-teams.exe`). -3. Whether to ship NDI Access Manager config writes, or just document the manual - steps and trust the user to set them once. - -## Implementation log - -- 2026-05-08: First version of this spec drafted while user is asleep. -- 2026-05-08: Phase E.1 partial — "Launch Teams" rail button shipped (commit - pending). Group-routing automation deferred until user confirms approach. diff --git a/docs/test-playbook.md b/docs/test-playbook.md deleted file mode 100644 index 7f0a204..0000000 --- a/docs/test-playbook.md +++ /dev/null @@ -1,34 +0,0 @@ -# TeamsISO Manual Test Playbook - -## Phase A — Engine foundation (CI) - -- [ ] `dotnet build TeamsISO.Linux.slnf` succeeds with zero warnings. -- [ ] `dotnet test TeamsISO.Linux.slnf --filter "Category!=ndi&requires!=ndi"` passes. -- [ ] CI on Forgejo Actions is green at HEAD. -- [ ] Code coverage on `TeamsISO.Engine` is ≥80%. - -## First Windows validation (after Phase B-2 ships) - -Prerequisite: Windows 10/11 + NDI Runtime installed (https://ndi.video/tools/) + .NET 8 SDK. - -- [ ] Clone the repo on the Windows machine: `git clone https://forge.wilddragon.net/zgaetano/teamsiso.git`. -- [ ] `dotnet build TeamsISO.sln --configuration Release` succeeds. -- [ ] `dotnet test --filter "requires=ndi"` passes against an NDI Test Pattern source (start the test pattern from the NDI Tools menu before running). -- [ ] Run `dotnet run --project src/TeamsISO.Console` — confirm the engine starts, version probe matches, and Ctrl+C exits cleanly. - -## Live-meeting validation (after Phase C ships) - -- [ ] Configure a Teams meeting with 3+ participants, with NDI broadcast enabled in Teams. -- [ ] `dotnet run --project src/TeamsISO.App` launches the WPF UI without an NDI runtime warning banner. -- [ ] Participants list populates within ~2 seconds of opening the app. -- [ ] Participant rename mid-meeting transfers the row's identity (the rename heuristic). -- [ ] Toggle ISO on for one participant. Confirm the named output appears in vMix / OBS / Studio Monitor on the same LAN. -- [ ] Change global framerate to 59.94 fps; click Apply. New ISOs honor the new rate. -- [ ] Disconnect one participant; confirm their ISO transitions to the no-signal slate within 2.5 s. -- [ ] Run for 30 minutes; check FramesDropped / FramesDuplicated counters in the engine log are reasonable. - -## Pre-release checklist - -- [ ] Legal review of NDI SDK License v5 complete (per spec §7.3). -- [ ] Code-signing decision confirmed (yes/no for v1.0). -- [ ] WiX installer produces a working MSI on a clean Windows machine. diff --git a/installer/Package.wxs b/installer/Package.wxs index 42add94..911a206 100644 --- a/installer/Package.wxs +++ b/installer/Package.wxs @@ -24,12 +24,23 @@ Compressed="yes" InstallerVersion="500"> - + + @@ -52,10 +63,15 @@ - + + + @@ -115,23 +131,13 @@

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