# Where we left off — v2 "Studio Terminal" shell complete (2026-05-15) ## What's done on main **v2 shape locked.** Approved brief at `docs/shapes/2026-05-13-teamsiso-v2-studio-terminal.md`. Aesthetic register: "broadcast-engineering instrument" — Linear's keyboard-first density × Avid console legibility. Goes hard against the "screams AI" failure mode. **WinUI 3 replatform: abandoned.** The early-May scoping concluded that the redesign is purely view-layer (XAML + theme tokens + view-models); doing it in WPF is strictly less work than fighting WinUI 3 activation + DataGrid replacement. The migration plan + bootstrap probe are archived under `docs/archive/` for the record. **Shell:** - Default Windows title bar (no custom chromeless caption buttons). - 32px header — Wild Dragon mark + "TeamsISO" wordmark left; three icon buttons right (⌘K command palette, theme toggle, settings gear). - 40px transport strip — single mono line: `● 02:14:32 PART 4 · LIVE 2 CTRL :9755`. Cyan dot + timer only when at least one ISO live. - Body — alert banner + update banner + action toolbar + participants DataGrid + (conditional) meeting bar at the bottom. - Settings — slide-over drawer (420px from right) with OUTPUT / NETWORK / APP tabs. Scrim click or Esc dismisses. - v1 leftovers (72px rail, 380px permanent settings panel, six-column footer) are gone. **Theme system:** - `Themes/Theme.Dark.xaml` + `Themes/Theme.Light.xaml` — color brushes only. - `Themes/WildDragonTheme.xaml` — styles + control templates (no color brushes; every brush ref is `DynamicResource`). - `Services/ThemeManager.cs` — swaps the merged dictionary at runtime; reads `HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize\AppsUseLightTheme` for System mode; subscribes to `SystemEvents.UserPreferenceChanged`; persists via `UIPreferences.Theme`. **Task 39 — participants table v2 (LANDED).** 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-stripe). **Task 40 — Ctrl+K command palette (LANDED).** `Views/CommandPaletteWindow.xaml` + `ViewModels/CommandPaletteViewModel.cs` ship a centered 560×360 floating window with fuzzy search across Quick / Teams / Presets / Output / Network / App categories. ↑/↓ navigates, Enter invokes, Esc closes. The header ⌘K button and Ctrl+K (also Ctrl+P) keyboard binding both open it. **Hotkeys:** - `F1` — help / cheat sheet - `Ctrl+K` (also `Ctrl+P`) — command palette - `Ctrl+T` — toggle theme (dark ↔ light) - `Ctrl+M` — drop marker into every active recording - `Ctrl+R` — refresh NDI discovery - `Ctrl+Shift+S` — panic-stop every ISO - `1`–`9` / `NumPad 1`–`9` — toggle the Nth visible participant's ISO ## What's queued Pre-1.0 cut is gated on: 1. Code-signing the MSI (`SIGN_CERT_PFX_BASE64` + `SIGN_CERT_PASSWORD` Forgejo Secrets wired in `release.yml`). 2. A real-meeting smoke pass on a host with a live NDI runtime. ## Build + run ```powershell dotnet build TeamsISO.Windows.slnf -c Release .\src\TeamsISO.App\bin\Release\net8.0-windows\TeamsISO.exe ``` The shipped helpers `build-and-test.ps1` and `commit-and-push.ps1` wrap the build + test + push flow. If something regresses, `1d1ce6a` is the rollback point for the WPF v1 shell (recording was axed at that commit), and `c271303` is the v2 shell-without-table-redesign rollback point.